|
|
§ 3. Формы представления алгоритмов
|
|
На практике наиболее распространены следующие
формы представления алгоритмов:
|
Вверх |
Словесный способ
записи алгоритмов представляет собой описание последовательных
этапов обработки данных в виде нумерованного списка (алгоритм
может задаваться в произвольном изложении на естественном
языке).
Например, алгоритм нахождения наибольшего общего делителя (НОД)
двух натуральных чисел может быть следующим:
1. задать два числа;
2. если числа равны, то взять любое из них в качестве ответа и
остановиться, в противном случае продолжить выполнение
алгоритма;
3. определить большее из чисел;
4. заменить большее из чисел разностью большего и меньшего из
чисел;
5. повторить алгоритм с шага 2.
Описанный алгоритм применим к любым натуральным числам и
приводит к решению поставленной задачи. (Убедись в этом
самостоятельно, определив с помощью этого алгоритма наибольший
общий делитель чисел 125 и 75.)
Словесный
способ не имеет широкого распространения, т.к. такие
представления страдают многословностью записей и допускают
неоднозначность толкования отдельных предписаний. |
Вверх |
В решении некоторых задач удобно не только записывать
последовательность команд, но и результат их выполнения на
каждом "шаге". В таких случаях алгоритмы целесообразно
представлять в
табличной форме.
Например, чтобы налить в ёмкость ровно 4 литра воды, имея только
два вёдра по 5 и по 7 литров соответственно, можно составить
такой алгоритм:
 |
Вверх |
Иногда алгоритмы представляют в
графической форме.
Например, алгоритм сбора детской игрушки выглядит как
упорядоченная последовательность изображений., следуя которой
ребёнок придёт к требуемому результату.
При графическом представлении алгоритм может быть представлен блок-схемой,
т.е. последовательностью
связанных между собой функциональных блоков, каждый из которых
соответствует выполнению одного или нескольких действий.
В блок-схеме каждому типу действий соответствует геометрическая
фигура, в ней записывается команда.
Наиболее часто встречающиеся фигуры в блок-схемах это:
- овал (начало или конец алгоритма),
- параллелограмм (ввод или вывод данных),
- прямоугольник (выполнение действия),
- ромб (проверка условия, принятие решения).
Фигуры (элементы блок-схемы) соединяются линиями переходов
(стрелками), определяющими очередность выполнения действий.
Например, алгоритм нахождения НОД двух чисел (см. выше) на языке
блок-схем будет выглядеть так:
 |
Вверх |
Псевдокод представляет собой систему обозначений и правил, предназначенную
для единообразной записи алгоритмов.
Он близок к обычному естественному языку, поэтому алгоритмы могут
на нем записываться и читаться как обычный текст. Но в
псевдокоде используются некоторые формальные конструкции и
математическая символика, что приближает запись алгоритма к
общепринятой математической.
В псевдокоде не приняты строгие синтаксические правила для записи
команд, и это существенно облегчает запись алгоритма на стадии
его разработки и дает возможность использовать больше команд,
рассчитанных на абстрактного исполнителя. Но в псевдокоде
имеются некоторые конструкции, присутствие которых
облегчает переход от записи на псевдокоде к записи алгоритма на
формальном языке. В частности, в псевдокоде есть служебные
слова, смысл которых определен раз и навсегда (они
выделяются в печатном тексте жирным шрифтом, а в рукописном
тексте подчеркиваются; прочитав такие слова обычно можно судить
об их назначении).
Возможны различные псевдокоды, отличающиеся набором служебных
слов и основных (базовых) конструкций. Примером псевдокода может
служить школьный алгоритмический язык (ШАЯ). Алгоритм
определения площади круга на ШАЯ выглядит так:
алг круг (цел
r, рез вещ
S)
дано r
> 0
надо
S
нач вещ
π
ввод
r
π=3,14
S = π
*r * r
вывод
S
кон |
Вверх |
При представлении
алгоритма в словесной или табличной форме, в виде блок-схемы или
на псевдокоде допускается определенный произвол при записи
команд. Однако такая запись точна настолько, что позволяет
человеку понять суть дела и исполнить алгоритм.
Но на практике
выполняют алгоритмы не только люди, но и другие исполнители.
Алгоритм,
предназначенный для исполнения на компьютере, должен быть
записан на "понятном" ему языке. Кроме того, запись команд
должна быть точной, не оставляющей места для произвольного
толкования их исполнителем. Поэтому, язык для записи алгоритмов
должен быть формализован. Такой язык принято называть языком
программирования, а запись алгоритма на этом языке —
программой для компьютера.
В языках
программирования есть зарезервированные служебные слова и
приняты строгие
правила синтаксиса (при ошибках в написании служебных слов, знаков препинания
и т.п. компьютер "не поймёт" программу и не сможет её
выполнить).
Например, описанный выше
алгоритм
определения площади круга на языке программирования
Паскаль выглядит так:
Program
krug;
var
pi, R, S: real;
begin
writeln ( 'vvod R’);
readln (R);
pi:=3,14;
S:=pi*R*R;
writeln (‘vivod S ’,S);
end. |
Вверх |
Задания
для самостоятельного выполнения
1) Запиши в словесной форме алгоритм посадки дерева.
2)
Выше описано, как налить в ёмкость ровно 4 литра воды, имея
только два вёдра по 5 и по 7 литров соответственно. Найди другой
алгоритм решения этой задачи и запиши его в табличной форме.
3) По аналогии с
приведёнными примерами запиши алгоритм определения площади
прямоугольника
на школьном алгоритмическом языке и/или на языке
программирования Паскаль.
4)
В
алгоритме, записанном ниже, используются целочисленные
переменные
a и
b, а также
следующие операции:
Обозначение
|
Тип операции
|
:=
|
Присваивание
|
+
|
Сложение
|
–
|
Вычитание
|
*
|
Умножение
|
/
|
Деление
|
Определи значение переменной
a после
исполнения данного алгоритма.
a := 8
b := 6+3*a
a := b/3*a
Порядок действий соответствует правилам
арифметики. В ответе укажи одно число – значение переменной
a.
5)
Определи значение
переменной с после выполнения фрагмента алгоритма, записанного в
виде блок-схемы:

Примечание:
знаком := обозначена операция присваивания. В ответе укажите
одно число — значение переменной с.
5) Определи значение
переменной a
после выполнения алгоритма, записанного на языке
блок-схем:
 |
© Марина
Валентина, 2011
При использовании материалов обязательна ссылка на владельца
|