Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Algoritmy.doc
Скачиваний:
3
Добавлен:
27.04.2019
Размер:
550.91 Кб
Скачать

Алгоритмы

Определение. Алгоритм - описание последовательности действий для решения поставленной задачи. Близкие по смыслу слова: рецепт, метод, способ, процедура.

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

  1. Дискретность (алгоритм состоит из отдельных действий, следующих одно за другим).

  2. Элементарность действий (шаги не могут подразделяться на более мелкие шаги).

  3. Определенность действий (каждый шаг имеет ясную и однозначную трактовку).

  4. Конечность (завершимость).

  5. Результативность (после завершения алгоритма известно, что считать результатом).

  6. Массовость (алгоритм применим для множества наборов исходных данных).

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

Пример. Найти max из чисел x, y, z.

Алгоритм 1. (Словесное описание)

Если x>=y и x>=z, то положить max:=x и завершить алгоритм Если y>=x и y>=z, то положить max:=y и завершить алгоритм Если z>=x и z>=y, то положить max:=z и завершить алгоритм

Алгоритм 2. (Описание на псевдокоде)

max:=x Если y>max то max:=y Если z>max то max:=z

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

Способы описания алгоритмов

1. Словесный.

2. Псевдокод.

3. C помощью блок-схем.

Пример. (алгоритм 2, представленный блок-схемой)

Альтернативная современная нотация - диаграмма деятельности (Activity Diagram) в языке UML (Universal Modelling Language).

4. C помощью языка программирования.

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

Язык программирования (ЯП) характеризуется используемым алфавитом, синтаксисом и семантикой. Элементарные действия в языке программирования называют инструкциями, операторами или командами.

Синтаксис ЯП определяет правила записи основных конструкций ЯП и устанавливает, какие фрагменты текста программы следует считать неделимыми (например, :=, <=, for, 3.14, 'abc'). Такие фрагменты называют лексемами или терминальными символами (терминалами).

Семантика ЯП определяет смысловое значение синтаксических конструкций.

Множество всех лексем образует словарь языка.

Способы описания синтаксиса языка программирования

При описании синтаксиса используются БНФ, РБНФ (разработаны в 1960 году для описания Алгола-60 Джоном Бэкусом и Петером Науром) и синтаксические диаграммы (разработаны Н. Виртом).

1. Бнф (Бэкуса-Наура форма)

Примеры.

условный оператор ::= if логическое условие then оператор                | if логическое условие then оператор1 else оператор2

цифра ::= 0 | 1 | 2 | ... | 9

имя ::= буква  |  имя буква  |  имя цифра

В формах Бэкуса-Наура, помимо терминальных, присутствуют так называемые нетерминальные символы или нетерминалы (будем записывать нетерминалы наклонным шрифтом Arial, а терминалы - шрифтом Courier), а также значки ::= (есть по определению) и | (или). Нетерминалы определяются через терминалы и другие нетерминалы.

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

2. РБНФ (Расширенная БНФ)

Помимо значков ::= и |, используются значки:

[ ] - необязательная часть (0 или 1 повторение)

{ } - 0 или более повторений

Примеры.

условный оператор ::= if логическое выражение then оператор [ else оператор ]

вызов процедуры ::= имя [( параметр {, параметр} )]

список ::= элемент [, список ]

3. Синтаксическая диаграмма

Примеры.

Архитектура и принцип работы компьютера

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

Архитектура компьютера фон Неймана

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

Регистры - быстрые ячейки памяти. Их около десятка, так как подобная память - очень дорогая.

Программа и данные хранятся в оперативной памяти (ОП). ОП однородна, состоит из ячеек единого типа, каждая из которых имеет адрес.

Счетчик команд хранит адрес текущей команды.

Алгоритм выполнения программы

  1. Очередная команда выбирается в регистр команд и увеличивается счетчик команд.

  2. Параметры команды записываются в регистр операндов.

  3. Сумматор (арифметико-логическое устрйство, АЛУ) выполняет операцию над операндами и сохраняет результат в памяти/регистрах.

  4. Если не встречена команда завершения, то осуществляется переход к п.1.

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

По степени приближенности к машинному языку языки программирования делятся на две группы.

1. Языки программирования низкого уровня (ассемблеры)

Пример. MOV AX,1 (записать в регистр АХ число 1)

Эти команды один в один переводятся в машинные коды.

Преимущества языков программирования низкого уровня: эффективность.

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

2. Языки программирования высокого уровня

Пример. if x<y then max:=y else max:=x

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]