2. Разработка модели: информационная модель, компьютерная модель

3. Компьютерный эксперимент – план эксперимента, проведение исследования

4. Анализ результатов моделирования

 

28. Виды моделей по области использования, по временному фактору, по форме и способу представления.

Признаки классификаций моделей :

1) по области использования;

2) по фактору времени;

3) по отрасли знаний;

4) по форме представления

1) Классификация моделей по области использования:

Учебные модели – используются при обучении;

Опытные – это уменьшенные или увеличенные копии проектируемого объекта. Используют для исследования и прогнозирования его будущих характеристик

Научно - технические - создаются для исследования процессов и явлений

Игровые – репетиция поведения объекта в различных условиях

Имитационные – отражение реальности в той или иной степени (это метод проб и ошибок)

 

2) Классификация моделей по фактору времени:

Статические – модели, описывающие состояние системы в определенный момент времени (единовременный срез информации по данному объекту). Примеры моделей: классификация животных…., строение молекул, список посаженных деревьев, отчет об обследовании состояния зубов в школе и тд.

Динамические – модели, описывающие процессы изменения и развития системы (изменения объекта во времени). Примеры: описание движения тел, развития организмов, процесс химических реакций.

 

3) Классификация моделей по отрасли знаний - это классификация по отрасли деятельности человека: Математические, биологические, химические, социальные, экономические, исторические и тд

 

4) Классификация моделей по форме представления :

Материальные – это предметные (физические) модели. Они всегда имеют реальное воплощение. Отражают внешнее свойство и внутреннее устройство исходных объектов, суть процессов и явлений объекта-оригинала. Это экспериментальный метод познания окружающей среды. Примеры: детские игрушки, скелет человека, чучело, макет солнечной системы, школьные пособия, физические и химические опыты

Абстрактные (нематериальные) – не имеют реального воплощения. Их основу составляет информация. это теоретический метод познания окружающей среды. По признаку реализации они бывают: мысленные и вербальные; информационные

Мысленные модели формируются в воображении человека в результате раздумий, умозаключений, иногда в виде некоторого образа. Это модель сопутствует сознательной деятельности человека.

Вербальные – мысленные модели выраженные в разговорной форме. Используется для передачи мыслей

Информационные модели – целенаправленно отобранная информация об объекте, которая отражает наиболее существенные для исследователя свойств этого объекта.

Типы информационных моделей :

Табличные – объекты и их свойства представлены в виде списка, а их значения размещаются в ячейках прямоугольной формы. Перечень однотипных объектов размещен в первом столбце (или строке), а значения их свойств размещаются в следующих столбцах (или строках)

Иерархические – объекты распределены по уровням. Каждый элемент высокого уровня состоит из элементов нижнего уровня, а элемент нижнего уровня может входить в состав только одного элемента более высокого уровня

Сетевые – применяют для отражения систем, в которых связи между элементами имеют сложную структуру

По степени формализации информационные модели бывают образно-знаковые и знаковые. Напримеры:

Образно-знаковые модели :

Геометрические (рисунок, пиктограмма, чертеж, карта, план, объемное изображение)

Структурные (таблица, граф, схема, диаграмма)

Словесные (описание естественными языками)

Алгоритмические (нумерованный список, пошаговое перечисление, блок-схема)

Знаковые модели:

Математические – представлены матем.формулами, отображающими связь параметров

Специальные – представлены на спец. языках (ноты, хим.формулы)

Алгоритмические – программы

Признаки классификаций моделей:Классификация моделей по области использования

29. Этапы решения задач на ПК

Процесс решения задачи на компьютере - это совместная деятельность человека и ЭВМ. Этот процесс можно представить в виде нескольких последовательных этапов. На долю человека приходятся этапы, связанные с творческой деятельностью - постановкой, алгоритмизацией, программированием задач и анализом результатов, а на долю компьютера - этапы обработки информации в соответствии с разработанным алгоритмом.

Первый этап - Постановка задачи. На этом этапе участвует человек, хорошо представляющий предметную область задачи. Он должен четко определить цель задачи, дать словесное описание содержания задачи и предложить общий подход к ее решению.

Второй этап - Математическое или информационное моделирование. Цель этого этапа - создать такую математическую модель решаемой задачи, которая может быть реализована в компьютере. Существует целый ряд задач,где математическая постановка сводиться к простому перечислению формул и логических условий. Этот этап тесно связан с первым этапом, и его можно отдельно не рассматривать, однако возможно, что для полученной модели известны несколько методов решения, и тогда предстоит выбрать наиболее эффективный.

Третий этап - Алгоритмизация задачи. На основе математического описания необходимо разработать алгоритм решения. Более подробно этот этап будет рассмотрен в пункте "1.1.2 Основы алгоритмизации" данной главы.

Четвертый этап - Программирование. Программой называется план действий, подлежащих выполнению некоторым исполнителем, в качестве которого выступает компьютер. Составление программы обеспечивает возможность выполнения алгоритма соответственно поставленной задачи исполнителем - компьютером. Во многих задачах при программировании на алгоритмическом языке часто пользуются заменой блока алгоритма на один или несколько операторов, введением новых блоков, заменой одних блоков другими. Процесс программирования заканчивается вводом программы и исходных данных в ЭВМ с клавиатуры с помощью редактора текстов, и для постоянного хранения осуществляется их запись на носитель.

Пятый этап - Тестирование и отладка программы. На этом этапе производят выполнение алгоритма с помощью ЭВМ, поиск и исключение ошибок. При этом программисту приходиться выполнять рутинную работу по проверке работы программы, поиску и исключению ошибок, и поэтому для сложных программ этот этап часто требует гораздо больше времени и сил, чем написание первоначального текста программы.
Отладка программы - сложный и нестандартный процесс. Исходный план отладки заключается в том, чтобы протестировать программу на контрольных примерах. Контрольные примеры стремятся выбрать так, чтобы при работе с ними программа прошла все основные пути блок-схемы алгоритма, поскольку на каждом из путей могут быть свои ошибки, а детализация плана зависит от того, как поведет себя программа на этих примерах: на одном она может зациклиться (то есть бесконечно повторять одно и то же действие), на другом - дать явно неверный или бессмысленный результат и так далее. Сложные программы отлаживают отдельными фрагментами.

После тестирования и отладки происходит исполнение программы и анализ результатов. Полученные в результате решения выходные данные анализируются постановщиком задачи, и на основании этого анализа вырабатываются соответствующие решения, рекомендации, выводы.

Возможно, что по итогам анализа результатов потребуются просмотр самого подхода к решению задачи и возврат к первому этапу для повторного выполнения всех этапов с учетом приобретенного опыта. Таким образом, в процессе создания программы некоторые этапы будут повторяться до тех пор, пока мы получим алгоритм и программу, удовлетворяющие указанным свойствам.

Вывод:

Решение задач с помощью компьютера - трудоемкий творческий процесс, который можно представить в виде следующих этапов: постановка задачи, математическое или информационное моделирование, алгоритмизация, программирование, тестирование и отладка программы.

На этапе постановки задачи выявляются исходные данные и результат. При моделировании составляются математические формулы и логические условия решения задачи. После алгоритмизации разработчик должен иметь последовательность конкретных действий, которые должен выполнить исполнитель. При программировании эти действия вводятся в компьютер в виде операторов языка программирования. На этапе тестирования и отладки исправляются ошибки, допущенные на предыдущих этапах и анализируется результат.

 

30. Языки программирования.

Язык программирования — формальный язык, предназначенный для записи компьютерных программ. Язык программирования определяет набор лексических, синтаксических и семантических правил, определяющих внешний вид программы и действия, которые выполнит исполнитель (обычно — ЭВМ) под её управлением.

Со времени создания первых программируемых машин человечество придумало более восьми тысяч языков программирования (включая эзотерические, визуальные и игрушечные). Каждый год их число увеличивается. Некоторыми языками умеет пользоваться только небольшое число их собственных разработчиков, другие становятся известны миллионам людей. Профессиональные программисты могут владеть десятком и более разных языков программирования.

Язык программирования предназначен для написания компьютерных программ, которые представляют собой набор правил, позволяющих компьютеру выполнить тот или иной вычислительный процесс и организовать управление различными объектами, и т. п. Язык программирования отличается от естественных языков тем, что предназначен для управления ЭВМ, в то время как естественные языки используются, прежде всего, для общения людей между собой. Большинство языков программирования использует специальные конструкции для определения и манипулирования структурами данных и управления процессом вычислений.

Как правило, язык программирования определяется не только через спецификации стандарта языка, формально определяющие его синтаксис и семантику, но и через воплощения (реализации) стандарта — программные средства, обеспечивающих трансляцию или интерпретацию программ на этом языке; такие программные средства различаются по производителю, марке и варианту (версии), времени выпуска, полноте воплощения стандарта, дополнительным возможностям; могут иметь определённые ошибки или особенности воплощения, влияющие на практику использования языка или даже на его стандарт.

Пер­вы­ми Я. п. при­ня­то счи­тать дво­ич­ные ма­шин­ные ко­ды, ал­фа­вит ко­то­рых со­сто­ит из сим­во­лов 0 и 1, а пер­вой ма­ши­ной, управ­ляе­мой та­ки­ми ко­да­ми (на­не­сён­ны­ми на пер­фо­кар­ты), – ткац­кий ста­нок, ко­то­рый соз­дал в 1804–08 Ж. М. Жак­кар. В ком­пь­ю­тер­ной ин­ду­ст­рии (с 1940-х гг.) про­грам­ма на ма­шин­ном ко­де пред­на­зна­ча­лась для вы­пол­не­ния про­цес­со­ром кон­крет­но­го ти­па и не пе­ре­но­си­лась на про­цес­со­ры др. ар­хи­тек­тур. Этот же не­дос­та­ток име­ли по­явив­шие­ся в 1950-х гг. язы­ки ас­семб­лера, бо­лее удоб­ные для про­грам­ми­ста за счёт лег­ко чи­тае­мых обо­зна­че­ний ма­шин­ных ко­манд (напр., англ. ADD – «сло­жить») и воз­мож­но­сти име­но­ва­ния ад­ре­сов опе­ра­тив­ной па­мя­ти.

Пер­вым Я. п. вы­со­ко­го уров­ня (ЯПВУ) счи­та­ет­ся план­кал­кюль (нем. Plankal­kül), соз­дан­ный К. Цу­зе в 1945. ЯПВУ зна­чи­тель­но по­вы­ша­ют про­из­во­ди­тель­ность тру­да про­грам­ми­стов: про­грам­мы дос­та­точ­но лег­ко чи­тае­мы спе­циа­ли­ста­ми и мо­гут ис­поль­зо­вать­ся в про­грам­ми­руе­мых ма­ши­нах с разл. ар­хи­тек­ту­ра­ми про­цес­со­ров – по­сле пе­ре­во­да в со­от­вет­ст­вую­щие ма­шин­ные ко­ды с по­мо­щью спец. про­грамм-транс­ля­то­ров (см. Ком­пи­ля­тор). Для пе­ре­во­да мно­же­ст­ва про­грамм, на­пи­сан­ных на од­ном ЯПВУ, в ма­шин­ные ко­ды для кон­крет­ной ар­хитек­ту­ры ис­поль­зу­ют­ся од­ни и те же транс­ля­то­ры, обыч­но вхо­дя­щие в со­став ин­ст­ру­мен­таль­ных сис­тем про­грам­ми­ро­ва­ния.

Зна­ко­вым со­бы­ти­ем ста­ло соз­да­ние в 1957 ЯПВУ фор­тран (англ. Fortran) и его ком­пи­ля­то­ра (Дж. Ба­кус, ком­па­ния IBM, США). Из по­лу­чив­ших ши­ро­кое рас­про­стра­не­ние ЯПВУ в кон. 1950-х гг. так­же бы­ли соз­да­ны ко­бол (Cobol), лисп (Lisp), ал­гол (Algol); в 1960–70-х гг. – ПЛ/1 (PL/1), бэй­сик (Basic), про­лог (Prolog), пас­каль (Pascal), си (C); в 1980–90-х гг. – си++ (C++), джа­ва (Java), джа­ва­ск­рипт (JavaScript), пи-эйч-пи (PHP), ру­би (Ruby).

Ны­не соз­да­ны ты­ся­чи Я. п. – как уни­вер­саль­ных, так и пред­мет­но-ори­ен­ти­ро­ван­ных (на­уч­но-тех­нич. вы­чис­ле­ния, обо­ро­на, биз­нес, веб-раз­ра­бот­ка и др.). Соз­да­ние пер­спек­тив­ных Я. п. не­раз­рыв­но свя­за­но с раз­ра­бот­кой их транс­ля­то­ров и ин­ст­ру­мен­таль­ных сис­тем про­грам­ми­ро­ва­ния.

Существуют различные классификации языков программирования. По наиболее распространенной классификации все языки программирования делят на языки низкого, высокого и сверхвысокого уровня.

В группу языков низкого уровня входят машинные языки и языки символического кодирования: (Автокод, Ассемблер). Операторы этого языка – это те же машинные команды, но записанные мнемоническими кодами, а в качестве операндов используются не конкретные адреса, а символические имена. Все языки низкого уровня ориентированы на определенный тип компьютера, т. е. являются машинно-зависимыми. Машинно-ориентированные языки – это языки, наборы операторов и изобразительные средства которых существенно зависят от особенностей ЭВМ (внутреннего языка, структуры памяти и т.д.).

Следующую, существенно более многочисленную группу составляют языки программирования высокого уровня. Это Фортран, Алгол, Кобол, Паскаль, Бейсик, Си, Пролог и т.д. Эти языки машинно-независимы, т.к. они ориентированы не на систему команд той или иной ЭВМ, а на систему операндов, характерных для записи определенного класса алгоритмов. Однако программы, написанные на языках высокого уровня, занимают больше памяти и медленнее выполняются, чем программы на машинных языках.

К языкам сверхвысокого уровня можно отнести лишь Алгол-68 и APL. Повышение уровня этих языков произошло за счет введения сверхмощных операций и операторов.

Другая классификация делит языки на вычислительные и языки символьной обработки. К первому типу относят Фортран, Паскаль, Алгол, Бейсик, Си, ко второму типу - Лисп, Пролог, Снобол и др.

В современной информатике можно выделить два основных направления развития языков программирования: процедурное и непроцедурное.

Процедурное программирование возникло на заре вычислительной техники и получило широкое распространение. В процедурных языках программа явно описывает действия, которые необходимо выполнить, а результат задается только способом получения его при помощи некоторой процедуры, которая представляет собой определенную последовательность действий.

Среди процедурных языков выделяют в свою очередь структурные и операционные языки. В структурных языках одним оператором записываются целые алгоритмические структуры: ветвления, циклы и т.д. В операционных языках для этого используются несколько операций. Широко распространены следующие структурные языки: Паскаль, Си, Ада, ПЛ/1. Среди операционных известны Фортран, Бейсик, Фокал.

Непроцедрное (декларативное) программирование появилось в начале 70-х годов 20 века, но стремительное его развитие началось в 80-е годы, когда был разработан японский проект создания ЭВМ пятого поколения, целью которого явилась подготовка почвы для создания интеллектуальных машин. К непроцедурному программированию относятся функциональные и логические языки.

В функциональных языках программа описывает вычисление некоторой функции. Обычно эта функция задается как композиция других, более простых, те в свою очередь разлагаются на еще более простые и т.д. Один из основных элементов в функциональных языках - рекурсия, то есть вычисление значения функции через значение этой же функции от других элементов. Присваивания и циклов в классических функциональных языках нет.

В логических языках программа вообще не описывает действий. Она задает данные и соотношения между ними. После этого системе можно задавать вопросы. Машина перебирает известные и заданные в программе данные и находит ответ на вопрос. Порядок перебора не описывается в программе, а неявно задается самим языком. Классическим языком логического программирования считается Пролог. Построение логической программы вообще не требует алгоритмического мышления, программа описывает статические отношения объектов, а динамика находится в механизме перебора и скрыта от программиста.

Можно выделить еще один класс языков программирования - объектно-ориентированные языки высокого уровня. На таких языках не описывают подробной последовательности действий для решения задачи, хотя они содержат элементы процедурного программирования. Объектно-ориентированные языки, благодаря богатому пользовательскому интерфейсу, предлагают человеку решить задачу в удобной для него форме. Примером такого языка может служить язык программирования визуального общения Object Pascal.

Языки описания сценариев, такие как Perl, Python, Rexx, Tcl и языки оболочек UNIX, предполагают стиль программирования, весьма отличный от характерного для языков системного уровня. Они предназначаются не для написания приложения с нуля, а для комбинирования компонентов, набор которых создается заранее при помощи других языков. Развитие и рост популярности Internet также способствовали распространению языков описания сценариев. Так, для написания сценариев широко употребляется язык Perl, а среди разработчиков Web-страниц популярен JavaScript.

 

31. Компьютерные вирусы и их классификация.

Компьютерный вирус - это специально написанная небольшая по размерам программа, имеющая специфический алгоритм, направленный на тиражирование копии программы, или её модификацию и выполнению действий развлекательного, пугающего или разрушительного характера.

Тем или иным способом вирусная программа попадает в компьютер и заражает их. Программа, внутри которой находится вирус, называется зараженной. Когда такая программа начинает работу, то сначала управление получает вирус. Вирус находит и заражает другие программы, а также выполняет какие-либо вредоносные действия. Например, портит файлы или таблицу размещения файлов на диске, занимает оперативную память и т.д. После того, как вирус выполнит свои действия, он передает управление той программе, в которой он находится, и она работает как обычно. Тем самым внешне работа зараженной программы выглядит так же, как и незараженной. Поэтому далеко не сразу пользователь узнаёт о присутствии вируса в машине.

Многие разновидности вирусов устроены так, что при запуске зараженной программы вирус остается в памяти компьютера и время от времени заражает программы и выполняет нежелательные действия на компьютере. Пока на компьютере заражено относительно мало программ, наличие вируса может быть практически незаметным.

К числу наиболее характерных признаков заражения компьютера вирусами относятся следующие:

Любая дискета, не защищённая от записи, находясь в дисководе заражённого компьютера, может быть заражена. Дискеты, побывавшие в зараженном компьютере, являются разносчиками вирусов. Существует ещё один канал распространения вирусов, связанный с компьютерными сетями, особенно всемирной сетью Internet. Часто источниками заражения являются программные продукты, приобретённые нелегальным путем.

Существует несколько классификаций компьютерных вирусов:

1. По среде обитания различают вирусы сетевые, файловые, загрузочные и файлово-загрузочные.