
- •Алгоритм
- •Способы записи алгоритмов
- •Следует избегать пересечение линий
- •Графические обозначения в СА (ГОСТ 19.701-90)
- •Разветвляющийся алгоритм
- •Пример. Найти min из 3 чисел
- •Составной оператор
- •ПОСТРОЕНИЕ СТРУКТУРНЫХ СХЕМ
- •Пример. Вычислить сумму из N элементов x, которые составляют входную последовательность (ввод). Математическая

Алгоритм
"алгоритм" (algorithm)
ал-Хорезми (из Хорезма) 1Х веке
алгоритм представляет собой последовательность арифметических и логических действий над данными, приводящую к получению решения задачи (вычислению результата, если данные числовые) при изменениях исходных данных в достаточно широких пределах.
Алгоритм обладает следующими свойствами:
1.Дискретность
2.Определенность
3.Связность
4.Конечность
5.Результативность
6.Массовость
7.Эффективность
1

Способы записи алгоритмов
1)Словесно-формульная запись на естественном языке;
2)Схемы алгоритмов (СА)
3)Специальные языки ( алгоритмические языки и
псевдокоды )
Пример. Найти наименьшее из трех чисел А, В и С. Словесная форма записи алгоритма
1.Ввести числа А, В, С.
2.Присвоить MIN=A (значение 1-го числа)
3.Сравнить MIN>B? Если "да", то выполнить присваивание
MIN=B
(иначе останется MIN=A)
4. Сравнить MIN>C? Если "Да", то присвоить MIN=C, иначе перейти к следующему шагу
5. Вывести на печать значение, полученное под именем MIN.
Конец. (Прекратить решение задачи)
ГОСТ 19.701-90. ЕСПД. Схемы алгоритмов, программ, данных и систем. М. 1991 (см. приложение 1 МУ).
2

Следует избегать пересечение линий
Пример:
А>В |
Сравнение |
|
А и В |
А=В
Выражение
|
|
|
|
|
|
|
|
|
|
|
|
1 |
|
2 |
|
3 |
|
4 |
|
5 |
|
|
||||||||||
|
|
|
|
|
|
А <В |
|
|
Логич. |
|
|
||
|
Нет |
выражение |
|
|
|
Да
Значение
выражения
12 |
|
|
|
|
|
|
|
|
3 |
|
|
|
|
|
|
|
|
4 |
|
|
|
|
|
|
|
|
5 |
|
|
|
|
|
B |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
|
a |
|
|
|
В=2а, |
|||
|
|
|
|
|||||
|
|
|
|
А:b=2:3 |
||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
3

Графические обозначения в СА (ГОСТ 19.701-90)
Символ |
Наименование |
Назначение |
|
||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Данные |
Символ отображает данные, |
||
|
|
|
|
|
|
носитель данных не определен |
|||
|
|
|
|
|
|
Процесс |
Отображает функцию обработки |
||
|
|
|
|
|
|
данных: (выполнение отдельной |
|||
|
|
|
|
|
|
|
операции или группы операций). |
||
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
Предопределен |
Отображает предопределённый |
||
|
|
|
|
|
|
||||
|
|
|
|
|
|
процесс, состоящий из одной или |
|||
|
|
|
|
|
|
ный процесс |
нескольких операций программы, |
||
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
которые определены в другом |
||
|
|
|
|
|
|
|
месте (подпрограмме, модуле) |
||
|
|
|
|
|
|
Подготовка |
Отражает инициализацию и моди- |
||
|
|
|
|
|
|
|
фикацию параметра для управ- |
||
|
|
|
|
|
|
|
ления циклом со счетчиком |
||
|
|
|
|
|
|
Решение |
Отображает функцию |
||
|
|
|
|
|
|
переключательного типа, имеющую |
|||
|
|
|
|
|
|
|
один вход и ряд альтернативных |
||
|
|
|
|
|
|
|
выходов, один из которых может |
||
|
|
|
|
|
|
|
быть активизирован после |
||
|
|
|
|
|
|
|
вычисления условия внутри символа |
|
|
|
|
|
|
|
|
|
4 |

|
|
|
|
|
|
|
|
|
|
|
|
Граница цикла |
Состоит из двух частей: начала и |
|
|
|
|
|
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
конца цикла. Обе части имеют |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
один и тот же идентификатор. |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
Изменение значения |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
идентификатора, условия для |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
выполнения или завершения |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
помещаются внутри символов в |
|
|
|
|
|
|
|
|
|
|
|
|
|
Соединитель |
начале или конце |
|
|
|
|
|
|
|
|
|
|
|
|
|
Используется для обрыва линии и |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
продолжения её в другом месте. |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Должен содержать уникальное |
|
|
|
|
|
|
|
|
|
|
|
|
|
Терминатор |
обозначение |
|
|
|
|
|
|
|
|
|
|
|
|
|
Определяет начало и конец |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
структурной схемы алгоритма |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
программы или подпрограммы. |
|
|
|
|
|
|
|
|
|
|
|
|
|
Комментарий |
Используется для добавления |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
|
|
пояснительных записей. |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
Связывается с символом или |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
группой символов, обведённых |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
пунктиром |
|
|
|
|
|
|
|
|
|
|
|
|
|
Основная |
Отображает последовательность |
|
|
|
|
|
|
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
|
линия |
выполнения действий в алгоритме |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
5 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|

|
АЛГОРИТМЫ |
|
Линейные |
Разветвляющиеся |
Циклические |
Линейный алгоритм - алгоритм, в котором результат получается |
||||||
путем однократного выполнения одной последовательности |
||||||
действий при любых исходных данных |
Начало |
|||||
Пример: Построить СА вычисления |
||||||
|
|
|
|
|
||
функции z tg(Ax B) |
Ввод |
|||||
А, В, х |
||||||
2(B Ax) |
|
|
|
|
|
|
|
|
|
|
|
||
В циклических алгоритмах решение |
y=Ax -B |
|
||||
|
|
|
|
|
||
|
|
|
|
|
||
задачи сводится к многократному |
|
|
|
|
|
|
z |
|
tgy |
|
|
||
повторению некоторой |
|
|
|
|||
2y |
|
|||||
последовательности действий |
|
|
||||
|
|
|
|
|
||
(некоторых участков алгоритма, которые |
|
|
|
|
|
|
Печать |
||||||
называются циклами) |
||||||
z |
||||||
|
||||||
|
|
|
||||
|
Конец |
6

Разветвляющийся алгоритм |
|
|
|
|
Начало |
|
|
|
|
|
|
|||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
предусматривает выбор одной из |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Ввод |
|
|
|
|
|
|
||||||
нескольких возможных |
|
|
|
|
А,В,С |
|
|
|
|
|
|
|||||
последовательностей действий (в |
|
нет |
|
|
|
|
|
|
|
|
|
да |
||||
|
|
|
|
|
|
|
|
|
|
|||||||
зависимости от значений исходных |
|
|
А>В |
|
|
|
||||||||||
|
|
|
|
|
|
|
|
|
|
|||||||
данных или промежуточных |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Min=A |
|
|
|
|
|
|
|
|
|
|
Min=B |
|||||
|
|
|
|
|
|
|
|
|
|
|||||||
результатов). |
|
|
|
|
|
|
|
|
|
|
||||||
|
|
Min>C |
|
|
|
|||||||||||
|
|
|
|
|
|
|
|
|
|
|||||||
|
|
|
|
|
|
|
|
|
|
|||||||
нахождение наименьшего из трех чисел |
|
|
|
|
нет |
|||||||||||
|
|
|
|
|
|
|
|
|
|
да |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
ОПЕРАТОР УСЛОВНОГО ПЕРЕХОДА IF |
|
|
|
|
Min=C |
|
|
|
|
|
|
|||||
Структура условного оператора в полной форме: |
|
|
|
|
|
|
|
|
|
|
|
|||||
|
|
|
|
|
|
|
|
|
|
|
||||||
Вывод |
|
|
|
|
|
|
||||||||||
IF <условие> THEN <оператор1> |
|
|
|
|
|
|
|
|
|
|
||||||
(Если) |
(то) |
|
|
|
|
Min |
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
ELSE <оператор2>; |
|
|
|
|
Конец |
|
|
|
|
|
|
||||
|
(иначе) - зарезервированные слова. |
|
|
|
|
|
|
|
|
|
|
|
<Условие> - выражение логического типа : истина (TRUE) или
Пример. Найти min из 2 чисел |
ложь (FALSE). |
|
|
IF a>b THEN min:=b ELSE min:=a ; |
|
Сокращенная форма условного оператора: |
|
IF <условие> THEN <оператор>; |
7 |

Пример. Найти min из 3 чисел
IF a>b THEN min:=b ELSE min:=a ; IF min>c THEN min:=c ;
При применении вложенных условных операторов действует правило: любая встретившаяся часть ELSE соответствует ближайшей к ней "сверху“ части THEN:
IF <условие1> THEN
IF <условие2> THEN
IF <условие3> THEN <оператор3>
ELSE <оператор4>
ELSE <оператор2>
ELSE <оператор1>;
Пример: Для |
|
|
х4 |
при х 3 |
|
|
y= х3 |
3 < х 5 |
|
|
|
|
х2 |
5 < х 10 |
if x<=3 |
then |
|
х |
х > 10 |
y:=x*x*x*x |
{ exp(4*(ln(x)) } |
|||
else if x <=5 |
then |
y:=x*x*x |
|
|
|
|
else if |
x<=10 then y:=x*x |
|
|
|
else y:=x; |
8 |
|
|
|
|
|

Составной оператор
BEGIN <оператор1>; <оператор2>;
...;
END; <операторN>
Для составного оператора допускается любая глубина вложенности.
BEGIN
BEGIN
...
BEGIN
...
END;
END... Перед END ";" не ставится (это как скобка) END.
Пример.
BEGIN
s:=0; r:=r+2;
END;
22:; В этом фрагменте 4 (2 ;) оператора.
9

|
|
|
|
Опеpатоp выбоpа CASE |
|
CASE <ключ_выбора> OF |
|||
|
{Выбор} |
|
|
{из} |
|
|
<константа_выбора1>:<оператор1>; |
||
|
|
. . . |
|
<константа_выбора2>:<оператор2>; |
|
|
|
<константа_выбораN>:<операторN> |
|
|
|
|
|
ELSE <оператор> |
|
END; {Конец Case} {иначе} |
|||
Пpимеp: Выполнить операцию в зависимости от введенного |
||||
символа. |
|
|
|
|
VAR operation: char; |
|
|
||
|
x, y, z:real; |
|
||
BEGIN read(x,y); |
|
|
|
|
|
read(operation); |
|
||
|
CASE operation OF |
'+': z:= x+y; |
||
|
|
|
|
|
|
|
|
|
'-': z:= x-y; |
|
|
|
|
'*': z:= x*y; |
|
|
|
|
'/': z:= x/y; |
|
END; ...; |
ELSE write('нет такой опеpации') |
||
|
writeln(‘x’,operation,’y=’, z:8:2) |
|||
Пример: CASE <ключ> OF |
||||
END. |
|
|
1:<оператор1>; |
|
|
|
|
2,3:<оператор2>; |
|
|
|
|
4..6:<оператор3> |
|
END; |
|
|
ELSE <оператор> |
|
|
|
|
10 |