- •НИУ ВШЭ – Пермь
- •Интуитивное понятие алгоритма
- •Интуитивное понятие алгоритма
- •Интуитивное понятие алгоритма
- •Исполнение алгоритма
- •Исполнение алгоритма
- •Свойства алгоритмов
- •Свойства алгоритмов
- •Свойства алгоритмов
- •Свойства алгоритмов
- •Свойства алгоритмов
- •Свойства алгоритмов
- •Свойства алгоритмов
- •Пример 1 анализа свойств алгоритма
- •Пример 1 анализа свойств алгоритма
- •Пример 1 анализа свойств
- •Пример 1 анализа свойств
- •Пример 1 анализа свойств
- •Пример 1 анализа свойств
- •Пример 1 анализа свойств
- •Пример 1 анализа свойств
- •Пример 2 анализа свойств
- •Пример 2 анализа свойств
- •Способы записи алгоритмов
- •Способы записи алгоритмов:
- •Способы записи алгоритмов:
- •Способы записи алгоритмов:
- •Способы записи алгоритмов:
- •Способы записи алгоритмов:
- •Способы записи алгоритмов:
- •Способы записи алгоритмов:
- •Способы записи алгоритмов:
- •Способы записи алгоритмов:
- •Способы записи алгоритмов:
- •Способы записи алгоритмов:
- •Способы записи алгоритмов:
- •Способы записи алгоритмов:
- •Способы записи алгоритмов:
- •Способы записи алгоритмов:
- •Способы записи алгоритмов:
- •Способы записи алгоритмов:
- •Способы записи алгоритмов:
- •Способы записи алгоритмов:
- •Способы записи алгоритмов:
- •Способы записи алгоритмов:
- •Способы записи алгоритмов:
- •Пример пошаговой разработки алгоритма решения квадратного уравнения
- •Пример пошаговой разработки алгоритма решения квадратного уравнения
- •Пример представления алгоритма: сравнение
- •Понятие данных
Свойства алгоритмов
Перечень наиболее важных
свойств алгоритма:
1.Элементарность (понятность) шагов.
2.Дискретность.
3.Определенность (детерминированность).
4.Конечность (финитность).
5.Массовость.
Дискретность – следующее важное свойство.
Алгоритм состоит из конечного числа описаний шагов и эти шаги выполняются в дискретном времени, т.е. любые два последовательных шага разделены при исполнении конечным, ненулевым отрезком времени.
Можно считать, что шаги выполняются мгновенно в моменты времени t0, t1, t2,..., а между этими моментами ничего не происходит, обрабатываемые данные не изменяются.
11
Свойства алгоритмов
Перечень наиболее важных
свойств алгоритма:
1.Элементарность (понятность) шагов.
2.Дискретность.
3.Определенность
(детерминированность).
4.Конечность (финитность).
5.Массовость.
12
Определенность (детерминированность) алгоритма – это свойство, которое означает,
что для каждого шага могут быть по набору исходных для этого шага данных однозначно вычислены результаты выполнения шага и эти результаты не зависят ни от каких случайных факторов.
Последовательность шагов также точно определена, шаги не могут быть пропущены, порядок из выполнения не может меняться.
Соответственно этому и алгоритм в целом по окончании работы исполнителя выдает вполне определенный результат.
При этом для одного и того же набора входных данных результат выполнения алгоритма всегда будет одним и тем же.
Свойства алгоритмов
Перечень наиболее важных
свойств алгоритма:
1.Элементарность (понятность) шагов.
2.Дискретность.
3.Определенность (детерминированность).
4.Конечность (финитность).
5.Массовость.
Конечность алгоритма означает, что для получения результата нужно выполнить конечное число шагов, т.е. исполнитель в некоторый момент времени обязательно останавливается.
Требуемое число шагов, вообще говоря, зависит от входных данных алгоритма (они могут определять количество повторений операций в цикле, выбор различных ветвей в зависимости от выполнения условий) и не мажорируется константой.
13
Свойства алгоритмов
Перечень наиболее важных
свойств алгоритма:
1.Элементарность (понятность) шагов.
2.Дискретность.
3.Определенность (детерминированность).
4.Конечность (финитность).
5.Массовость.
Массовость – свойство алгоритма, означающее, что входные данные для алгоритма могут быть выбраны из некоторого множества значений, т.е. алгоритм может выполняться не для одного набора входных данных, а для целого класса.
При реализации вычислений то, насколько широким будет множество данных, для которых применим разработанный алгоритм, определяет эффективность вложений в разработку программы, возможность ее настройки на меняющиеся условия, возможность расширенного использования, адаптируемость (это свойство обеспечивает «живучесть» программы).
14
Пример 1 анализа свойств алгоритма
Исходные данные – положительное число N, определяющее количество элементов массива A и целочисленные элементы A[1], A[2], . . . , A[N] массива A; значения всех чисел находятся в пределах непосредственно представимых в вычислительной машине.
Кроме исходных данных вводятся целочисленные переменные Max,
Min, i.
Первые две по окончании работы алгоритма определяют его результаты, третья является вспомогательной.
15
Пример 1 анализа свойств алгоритма
Действия алгоритма состоят в выполнении следующих шагов:
1.Установить значения Max = A[1], Min = A[1], i = 2.
2.Пока i <= N повторять шаг 3.
3.Если Max < A[i], то положить Max = A[i]. Если Min > A[i], то положить Min = A[i]. Увеличить i на 1.
4.Вывести результаты Max и Min.
16
Пример 1 анализа свойств
Проверим наличие основных свойств: 1. Дискретность очевидна.
17
Пример 1 анализа свойств
Проверим наличие основных свойств:
2. Элементарность шагов.
Шаг 1 содержит три оператора присваивания значений.
Вшаге 2 – одно сравнение чисел.
Вшаге 3 – два сравнения чисел, два оператора присваивания значений (выполняется каждый раз только одно из них), одно увеличение значения на единицу.
Шаг 4 – вывод на экран или на печать данных ограниченного объема.
Эти шаги понятны, могут быть записаны с использованием не только языка высокого уровня, но и машинных команд
процессора с традиционной архитектурой фон Неймана.
18
Пример 1 анализа свойств
Эти шаги понятны, могут быть записаны с использованием не только языка высокого уровня, но и машинных команд процессора с
традиционной архитектурой фон Неймана: |
|
… |
|
||
program P; |
|
|
|
MOV |
AX, A ; MAX |
|
|
|
|||
|
|
|
MOV |
DX, A ; MIN |
|
const N = 10; |
|
|
|
MOV |
CX,10 ; N=10 |
|
|
|
MOV |
BX, Offset A + 2 |
|
var A: array [1..N] of integer; |
|
|
|
||
|
|
LB: |
CMP |
AX, [BX] |
|
Max, Min, I: integer; |
|
|
|
JLE CM |
|
|
|
|
MOV |
AX, [BX] |
|
Begin … {Ввод массива…} |
|
|
|
||
|
|
CM: |
CMP |
DX, [BX] |
|
Max = A[1]; Min = A[1], |
|
|
|
JGENEXT |
DX, [BX] |
for I := 2 to N do |
|
|
|
MOV |
|
|
|
NEXT: |
ADD |
BX,2 |
|
If Max < A[I] then Max := A[I] |
|
|
|
LOOP |
LB |
else If Min > A[I] then Min := A[I] |
|
|
|
MOV |
MAX, AX |
|
|
|
MOV |
MIN, AX |
|
writeln(…) |
|
|
|
… |
|
… |
|
|
A |
DW 2,2,3,4,5,7,5,9,8,1 |
|
|
|
MAX |
DW ? |
|
|
19 end. |
|
|
|
||
|
|
MIN |
DW ? |
|
|
|
|
Пример 1 анализа свойств
3.Определенность. Каждый шаг и алгоритм в целом заканчивается определенным результатом; строго определена последовательность шагов.
20