2. Разработка модели: информационная модель, компьютерная модель
3. Компьютерный эксперимент – план эксперимента, проведение исследования
4. Анализ результатов моделирования
28. Виды моделей по области использования, по временному фактору, по форме и способу представления.
Признаки классификаций моделей :
1) по области использования;
2) по фактору времени;
3) по отрасли знаний;
4) по форме представления
1) Классификация моделей по области использования:
Учебные модели – используются при обучении;
Опытные – это уменьшенные или увеличенные копии проектируемого объекта. Используют для исследования и прогнозирования его будущих характеристик
Научно - технические - создаются для исследования процессов и явлений
Игровые – репетиция поведения объекта в различных условиях
Имитационные – отражение реальности в той или иной степени (это метод проб и ошибок)
2) Классификация моделей по фактору времени:
Статические – модели, описывающие состояние системы в определенный момент времени (единовременный срез информации по данному объекту). Примеры моделей: классификация животных…., строение молекул, список посаженных деревьев, отчет об обследовании состояния зубов в школе и тд.
Динамические – модели, описывающие процессы изменения и развития системы (изменения объекта во времени). Примеры: описание движения тел, развития организмов, процесс химических реакций.
3) Классификация моделей по отрасли знаний - это классификация по отрасли деятельности человека: Математические, биологические, химические, социальные, экономические, исторические и тд
4) Классификация моделей по форме представления :
Материальные – это предметные (физические) модели. Они всегда имеют реальное воплощение. Отражают внешнее свойство и внутреннее устройство исходных объектов, суть процессов и явлений объекта-оригинала. Это экспериментальный метод познания окружающей среды. Примеры: детские игрушки, скелет человека, чучело, макет солнечной системы, школьные пособия, физические и химические опыты
Абстрактные (нематериальные) – не имеют реального воплощения. Их основу составляет информация. это теоретический метод познания окружающей среды. По признаку реализации они бывают: мысленные и вербальные; информационные
Мысленные модели формируются в воображении человека в результате раздумий, умозаключений, иногда в виде некоторого образа. Это модель сопутствует сознательной деятельности человека.
Вербальные – мысленные модели выраженные в разговорной форме. Используется для передачи мыслей
Информационные модели – целенаправленно отобранная информация об объекте, которая отражает наиболее существенные для исследователя свойств этого объекта.
Типы информационных моделей :
Табличные – объекты и их свойства представлены в виде списка, а их значения размещаются в ячейках прямоугольной формы. Перечень однотипных объектов размещен в первом столбце (или строке), а значения их свойств размещаются в следующих столбцах (или строках)
Иерархические – объекты распределены по уровням. Каждый элемент высокого уровня состоит из элементов нижнего уровня, а элемент нижнего уровня может входить в состав только одного элемента более высокого уровня
Сетевые – применяют для отражения систем, в которых связи между элементами имеют сложную структуру
По степени формализации информационные модели бывают образно-знаковые и знаковые. Напримеры:
Образно-знаковые модели :
Геометрические (рисунок, пиктограмма, чертеж, карта, план, объемное изображение)
Структурные (таблица, граф, схема, диаграмма)
Словесные (описание естественными языками)
Алгоритмические (нумерованный список, пошаговое перечисление, блок-схема)
Знаковые модели:
Математические – представлены матем.формулами, отображающими связь параметров
Специальные – представлены на спец. языках (ноты, хим.формулы)
Алгоритмические – программы
Признаки классификаций моделей:Классификация моделей по области использования
29. Этапы решения задач на ПК
Процесс решения задачи на компьютере - это совместная деятельность человека и ЭВМ. Этот процесс можно представить в виде нескольких последовательных этапов. На долю человека приходятся этапы, связанные с творческой деятельностью - постановкой, алгоритмизацией, программированием задач и анализом результатов, а на долю компьютера - этапы обработки информации в соответствии с разработанным алгоритмом.
Первый этап - Постановка задачи. На этом этапе участвует человек, хорошо представляющий предметную область задачи. Он должен четко определить цель задачи, дать словесное описание содержания задачи и предложить общий подход к ее решению.
Второй этап - Математическое или информационное моделирование. Цель этого этапа - создать такую математическую модель решаемой задачи, которая может быть реализована в компьютере. Существует целый ряд задач,где математическая постановка сводиться к простому перечислению формул и логических условий. Этот этап тесно связан с первым этапом, и его можно отдельно не рассматривать, однако возможно, что для полученной модели известны несколько методов решения, и тогда предстоит выбрать наиболее эффективный.
Третий этап - Алгоритмизация задачи. На основе математического описания необходимо разработать алгоритм решения. Более подробно этот этап будет рассмотрен в пункте "1.1.2 Основы алгоритмизации" данной главы.
Четвертый этап - Программирование. Программой называется план действий, подлежащих выполнению некоторым исполнителем, в качестве которого выступает компьютер. Составление программы обеспечивает возможность выполнения алгоритма соответственно поставленной задачи исполнителем - компьютером. Во многих задачах при программировании на алгоритмическом языке часто пользуются заменой блока алгоритма на один или несколько операторов, введением новых блоков, заменой одних блоков другими. Процесс программирования заканчивается вводом программы и исходных данных в ЭВМ с клавиатуры с помощью редактора текстов, и для постоянного хранения осуществляется их запись на носитель.
Пятый этап - Тестирование и отладка программы. На этом этапе производят выполнение алгоритма с помощью ЭВМ, поиск и исключение ошибок. При этом программисту приходиться выполнять рутинную работу по проверке работы программы, поиску и исключению ошибок, и поэтому для сложных программ этот этап часто требует гораздо больше времени и сил, чем написание первоначального текста программы.
Отладка программы - сложный и нестандартный процесс. Исходный план отладки заключается в том, чтобы протестировать программу на контрольных примерах. Контрольные примеры стремятся выбрать так, чтобы при работе с ними программа прошла все основные пути блок-схемы алгоритма, поскольку на каждом из путей могут быть свои ошибки, а детализация плана зависит от того, как поведет себя программа на этих примерах: на одном она может зациклиться (то есть бесконечно повторять одно и то же действие), на другом - дать явно неверный или бессмысленный результат и так далее. Сложные программы отлаживают отдельными фрагментами.
После тестирования и отладки происходит исполнение программы и анализ результатов. Полученные в результате решения выходные данные анализируются постановщиком задачи, и на основании этого анализа вырабатываются соответствующие решения, рекомендации, выводы.
Возможно, что по итогам анализа результатов потребуются просмотр самого подхода к решению задачи и возврат к первому этапу для повторного выполнения всех этапов с учетом приобретенного опыта. Таким образом, в процессе создания программы некоторые этапы будут повторяться до тех пор, пока мы получим алгоритм и программу, удовлетворяющие указанным свойствам.
Вывод:
Решение задач с помощью компьютера - трудоемкий творческий процесс, который можно представить в виде следующих этапов: постановка задачи, математическое или информационное моделирование, алгоритмизация, программирование, тестирование и отладка программы.
На этапе постановки задачи выявляются исходные данные и результат. При моделировании составляются математические формулы и логические условия решения задачи. После алгоритмизации разработчик должен иметь последовательность конкретных действий, которые должен выполнить исполнитель. При программировании эти действия вводятся в компьютер в виде операторов языка программирования. На этапе тестирования и отладки исправляются ошибки, допущенные на предыдущих этапах и анализируется результат.
30. Языки программирования.
Язык программирования — формальный язык, предназначенный для записи компьютерных программ. Язык программирования определяет набор лексических, синтаксических и семантических правил, определяющих внешний вид программы и действия, которые выполнит исполнитель (обычно — ЭВМ) под её управлением.
Со времени создания первых программируемых машин человечество придумало более восьми тысяч языков программирования (включая эзотерические, визуальные и игрушечные). Каждый год их число увеличивается. Некоторыми языками умеет пользоваться только небольшое число их собственных разработчиков, другие становятся известны миллионам людей. Профессиональные программисты могут владеть десятком и более разных языков программирования.
Язык программирования предназначен для написания компьютерных программ, которые представляют собой набор правил, позволяющих компьютеру выполнить тот или иной вычислительный процесс и организовать управление различными объектами, и т. п. Язык программирования отличается от естественных языков тем, что предназначен для управления ЭВМ, в то время как естественные языки используются, прежде всего, для общения людей между собой. Большинство языков программирования использует специальные конструкции для определения и манипулирования структурами данных и управления процессом вычислений.
Как правило, язык программирования определяется не только через спецификации стандарта языка, формально определяющие его синтаксис и семантику, но и через воплощения (реализации) стандарта — программные средства, обеспечивающих трансляцию или интерпретацию программ на этом языке; такие программные средства различаются по производителю, марке и варианту (версии), времени выпуска, полноте воплощения стандарта, дополнительным возможностям; могут иметь определённые ошибки или особенности воплощения, влияющие на практику использования языка или даже на его стандарт.
Первыми Я. п. принято считать двоичные машинные коды, алфавит которых состоит из символов 0 и 1, а первой машиной, управляемой такими кодами (нанесёнными на перфокарты), – ткацкий станок, который создал в 1804–08 Ж. М. Жаккар. В компьютерной индустрии (с 1940-х гг.) программа на машинном коде предназначалась для выполнения процессором конкретного типа и не переносилась на процессоры др. архитектур. Этот же недостаток имели появившиеся в 1950-х гг. языки ассемблера, более удобные для программиста за счёт легко читаемых обозначений машинных команд (напр., англ. ADD – «сложить») и возможности именования адресов оперативной памяти.
Первым Я. п. высокого уровня (ЯПВУ) считается планкалкюль (нем. Plankalkü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. По среде обитания различают вирусы сетевые, файловые, загрузочные и файлово-загрузочные.