Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
МАТЕМАТИКА.docx
Скачиваний:
237
Добавлен:
26.01.2018
Размер:
2.6 Mб
Скачать

5. Алгоритмы и их свойства.

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

Свойства алгоритмов:

  • Универсальность (массовость)

применимость алгоритма к различным наборам исходных данных.

  • Дискретность

процесс решения задачи по алгоритму разбит на отдельные действия.

  • Однозначность

правила и порядок выполнения действий алгоритма имеют единственное толкование.

  • Конечность

каждое из действий и весь алгоритм в целом обязательно завершаются.

  • Результативность

по завершении выполнения алгоритма обязательно получается конечный результат.

  • Выполнимость

результата алгоритма достигается за конечное число шагов.

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

Классы алгоритмов:

  • вычислительные алгоритмы,

работающие со сравнительно простыми видами данных, такими как числа и матрицы, хотя сам процесс вычисления может быть долгим и сложным;

  • информационные алгоритмы,

представляющие собой набор сравнительно простых процедур, работающих с большими объемами информации (алгоритмы баз данных);

  • управляющие алгоритмы,

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

6. Классификация языков программирования. Компоненты системы программирования.

Язык программирования — язык (знаковая система), предназначенный для записи компьютерных программ.

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

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

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

Существуют различные классификации языков программирования, например:

  • низкого уровня

Если язык ближе к машинным командам, – он язык низкого уровня

В группу языков низкого уровня входят машинные языки и языки символического кодирования: Автокод, Ассемблер.

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

  • высокого уровня.

Если язык близок к естественному языку программирования, то он называется языком высокого уровня

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

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

Языки программирования также можно разделять на поколения:

  • языки первого поколения

машинно–ориентированные с ручным управлением памяти на компьютерах первого поколения.

  • языки второго поколения

с мнемоническим представлением команд, так называемые автокоды.

  • языки третьего поколения

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

  • языки четвертого поколения

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

  • языки программирования пятого поколения

языки декларативные, объектно–ориентированные и визуальные, например, Пролог, ЛИСП (используется для построения программ с использованием методов искусственного интеллекта), Си++, Visual Basic, Delphi.

Компоненты системы программирования

  • Языки системы программирования.

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

  • Служебные программы системы программирования.

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

2.1. Текстовые редакторы, предназначенные для набора и исправления текстов программ на

языках программирования (обычно это исходные модули).

2.2. Трансляторы (компиляторы) для перевода с одного языка на другой (например, про- грамма

Ассемблера транслирует исходный модуль с языка Ассемблер на язык объект- ных модулей).

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

счѐта со статической загрузкой и статическим связыванием.

2.4. Статические и динамические загрузчики, запускающие программы на счѐт.

2.5. Отладчики, помогающие пользователям в диалоговом режиме искать и исправлять ошибки в

своих программах.

2.6. Оптимизаторы, позволяющие автоматически улучшать программу, написанную на оп-

ределѐнном языке. Бывают оптимизаторы программ как на исходном языке программи- рования

(например, на Фортране), так и на машинном языке (оптимизация загрузочных модулей).

2. 7. Профилировщики, которые определяют, какой процент времени выполняется та или иная

часть программы. Это позволяет выявить наиболее интенсивно используемые фрагменты

программы и оптимизировать их или на исходном языке, или, например, пе- реписав эти

фрагменты на Ассемблер.

2. 8. Библиотекари, которые позволяют создавать и изменять файлы-библиотеки процедур

(например, библиотеки динамически загружаемых процедур DLL), файлы-библиотеки

макроопределений (они скоро будут изучаться), и т.д.

2.9. Интерпретаторы, которые могут выполнять программы без перевода их на другие язы- ки

(точнее, с построчным переводом на машинный язык и последующим выполнени- ем каждого

такого переведѐнного фрагмента программы).

2.10. И другие служебные программы

  • Информационное обеспечение системы программирования.

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