Часть
алгоритма от слова алг до слова
нач называется заголовком, а часть,
заключенная между словами нач и кон
— телом алгоритма.
4.
Программная форма
представления алгоритма
Это
тексты на языке программирования
Базовые
алгоритмические структуры
Алгоритмы
можно представлять
как некоторые
структуры, состоящие
из отдельных базовых (т.е.
основных) элементов.
Логическая
структура любого
алгоритма может быть
представлена комбинацией
трех базовых структур: следование,
ветвление, цикл.
Характерной
особенностью базовых структур является
наличие в них одного
входа и одного выхода.
1.
Базовая структура "следование". Образуется последовательностью
действий, следующих одно за другим:
Псевдокод |
Язык блок-схем |
действие
1
действие 2
. . . . . . . . .
действие n |
|
2.
Базовая структура "ветвление". Обеспечивает в зависимости
от результата проверки условия (да
или нет) выбор одного из альтернативных
путей работы алгоритма. Каждый из путей
ведет к общему выходу, так что работа
алгоритма будет продолжаться независимо
от того, какой путь будет выбран.
Структура
ветвление существует
в четырех основных
вариантах:
Псевдокод |
Язык блок-схем |
1.
если—то |
если
условие
то действия
все |
|
2.
если—то—иначе |
если
условие
то действия 1
иначе действия 2
все |
|
3.
выбор |
выбор
при условие 1: действия 1
при условие 2: действия 2
. . . . . . . . . . . .
при условие N: действия N
все |
|
4.
выбор—иначе |
выбор
при условие 1: действия 1
при условие 2: действия 2
. . . . . . . . . . . .
при условие N: действия N
иначе действия N+1
все |
|
|
Примеры
структуры ветвление
Псевдокод |
Язык блок-схем |
если
x > 0
то y := sin(x)
все |
|
если
a > b
то a := 2*a; b := 1
иначе b := 2*b
все |
|
выбор
при n = 1: y := sin(x)
при n = 2: y := cos(x)
при n = 3: y := 0
все |
|
выбор
при a > 5: i := i+1
при a = 0: j := j+1
иначе i := 10; j:=0
все |
|
|
3.
Базовая структура "цикл". Обеспечивает многократное
выполнение некоторой
совокупности действий, которая называется
телом цикла.
Виды
циклов
Псевдокод |
Язык блок-схем |
Цикл
типа пока. Предписывает выполнять
тело цикла до тех пор, пока выполняется
условие, записанное после слова пока.
|
нц
пока условие
тело цикла
(последовательность
действий)
кц |
|
Цикл
типа для. Предписывает выполнять
тело цикла для всех значений некоторой
переменной (параметра цикла) в заданном
диапазоне. |
нц
для i от i1 до i2
тело цикла
(последовательность
действий)
кц |
|
|
Примеры
структуры цикл
Псевдокод |
Язык блок-схем |
нц
пока i <= 5
S := S+A[i]
i := i+1
кц |
|
нц
для i от 1 до 5
X[i] := i*i*i
Y[i] := X[i]/2
кц |
|
|
Вложенные
циклы
Возможны
случаи, когда внутри
тела цикла необходимо
повторять некоторую
последовательность
операторов, т. е. организовать
внутренний цикл. Такая
структура получила
название цикла
в цикле
или вложенных
циклов. Глубина
вложения циклов (то
есть количество вложенных
друг в друга циклов)
может быть различной.
При
использовании такой
структуры для
экономии машинного
времени необходимо
выносить из внутреннего
цикла во внешний
все операторы, которые
не зависят от параметра
внутреннего цикла.
Пример
вложенных циклов
«для»
Вычислить
сумму элементов заданной матрицы
А(5,3).
Матрица
А
|
|
S := 0;
нц
для i от 1 до 5
нц для j от 1
до 3
S:=S+A[i,j]
кц
кц |
Пример
вложенных циклов «пока»
Вычислить
произведение тех элементов заданной
матрицы A(10,10), которые расположены
на пересечении четных строк и четных
столбцов.
|
|
i:=2; P:=1
нц
пока i <= 10
j:=2
нц пока j <= 10
P:=P*A[i,j]
j:=j+2
кц
i:=i+2
кц |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
28 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 |
55 |
56 |
57 |
58 |
59 |
60 |
61 |
62 |
63 |
64 |
65 |
66 |
67 |
68 |
69 |
70 |
71 |
72 |
73 |
74 |
75 |
76 |
77 |
78 |
79 |
80 |
81 |
82 |
83 |
84 |
85 |
86 |
87 |
88 |
89 |
90 |
91 |
92 |
93 |
94 |
95 |
96 |
97 |
98 |
99 |
100 |
Строка –
I; Столбец – j; произведение - Р |
Отличие
программного способа
записи алгоритмов от
остальных способов
При
записи алгоритма
в словесной форме,
в виде блок-схемы
или на псевдокоде
допускается определенный
произвол при изображении
команд. Вместе с
тем такая запись
точна настолько,
что позволяет
человеку понять суть
дела и исполнить
алгоритм.
Однако
на практике в качестве
исполнителей алгоритмов
используются— компьютеры.
Поэтому алгоритм,
предназначенный
для исполнения на
компьютере, должен
быть записан на понятном
ему языке. И здесь
на первый план выдвигается
необходимость точной
записи команд, не оставляющей
места для произвольного
толкования их исполнителем.
Следовательно,
язык для записи алгоритмов
должен быть формализован. Такой язык
принято называть языком
программирования, а запись алгоритма
на этом языке — программой
для компьютера.
Основные
преимущества алгоритмических
языков перед машинными
языками
Основные
преимущества таковы:
- алфавит
алгоритмического языка
значительно шире алфавита
машинного языка, что существенно повышает
наглядность текста программы;
- набор
операций, допустимых для использования,
не зависит от набора
машинных операций, а выбирается из
соображений удобства формулирования
алгоритмов решения задач определенного
класса;
- формат
предложений достаточно гибок
и удобен для использования, что позволяет
с помощью одного предложения задать достаточно
содержательный этап обработки данных;
- требуемые
операции задаются с помощью общепринятых
математических обозначений;
- данным
в алгоритмических языках
присваиваются индивидуальные
имена, выбираемые программистом;
- в языке может
быть предусмотрен значительно более
широкий набор типов
данных по сравнению с набором машинных
типов данных.
Таким
образом, алгоритмические языки
в значительной мере являются машинно-независимыми.
Они облегчают работу
программиста и повышают
надежность создаваемых программ.
Компоненты
алгоритмического языка
- Алфавит
— это фиксированный
для данного языка
набор основных символов, т.е. "букв
алфавита", из которых должен состоять
любой текст на этом языке — никакие другие
символы в тексте не допускаются.
- Синтаксис
— это правила построения
фраз, позволяющие определить, правильно
или неправильно написана та или иная
фраза. Точнее говоря, синтаксис
языка представляет
собой набор правил,
устанавливающих, какие
комбинации символов
являются осмысленными
предложениями на этом
языке.
- Семантика
определяет смысловое значение предложений
языка. Являясь системой правил истолкования
отдельных языковых конструкций,
семантика устанавливает,
какие последовательности
действий описываются
теми или иными фразами
языка и, в конечном итоге, какой
алгоритм определен
данным текстом на алгоритмическом
языке.
Понятия
алгоритмического языка
Каждое
понятие алгоритмического
языка подразумевает
некоторую синтаксическую
единицу (конструкцию)
и определяемые ею свойства
программных объектов
или процесса обработки
данных.
Понятие
языка определяется
во взаимодействии синтаксических
и семантических правил.
Синтаксические правила
показывают, как образуется
данное понятие из других
понятий и букв алфавита,
а семантические правила
определяют свойства
данного понятия
Основными
понятиями в алгоритмических
языках обычно являются
следующие.
1.
Имена (идентификаторы) — употpебляются
для обозначения объектов
пpогpаммы (пеpеменных, массивов, функций
и дp.).
2.
Опеpации. Типы операций:
- аpифметические
опеpации + , — , * , / и дp. ;
- логические
опеpации и , или ,
не ;
- опеpации
отношения < , > , <= , >= , = ,
<> ;
- опеpация
сцепки (иначе, "присоединения",
"конкатенации" ) символьных значений
дpуг с другом с образованием одной длинной
строки; изображается знаком "+".
3.
Данные — величины,
обpабатываемые пpогpаммой. Имеется тpи
основных вида данных: константы,
пеpеменные и массивы.
- Константы
— это данные, которые зафиксированы в
тексте программы и не изменяются в процессе
ее выполнения.
Пpимеpы
констант:
- числовые
7.5 , 12 ;
- логические
да (истина), нет
(ложь);
- символьные
(содержат ровно один символ) "А"
, "+" ;
- литеpные
(содержат произвольное количество символов)
"a0", "Мир", "" (пустая строка).
- Пеpеменные
обозначаются именами и могут изменять
свои значения в ходе выполнения пpогpаммы.
Пеpеменные бывают целые,
вещественные, логические,
символьные и литерные.
- Массивы
— последовательности
однотипных элементов,
число которых фиксировано
и которым присвоено
одно имя. Положение элемента в массиве
однозначно определяется его индексами
(одним, в случае одномерного массива,
или несколькими, если массив многомерный).
Иногда массивы называют таблицами.