Основные алгоритмические структуры: следование,
ветвление, цикл; изображение на блок-схемах. Разбиение задачи на
подзадачи. Вспомогательные алгоритмы.Алгоритмические конструкции
Внутри алгоритмов можно выделить группы шагов,
отличающиеся внутренней структурой – алгоритмические конструкции.
Основными алгоритмическими конструкциями
являются линейная последовательность шагов, ветвление и цикл.
Линейная последовательность шагов
Группа шагов алгоритма, всегда выполняемых последовательно друг
за другом без каких-либо условий, называется линейной
последовательностью. Если весь алгоритм представляет собой линейную
последовательность шагов, то его называют линейным.
На рисунке изображена блок-схема линейного
алгоритма, состоящего из двух шагов.
Язык
блок-схем |
Алгоритмический
язык |
|
нач
действие 1
действие 2
...................
кон
|
|
Пример программы на языке
программирования Pascal
{программа вычисляет площадь прямоугольника}
Program ploshad;
var a,b,s:word;
begin
write('a=');
read (a);
write ('b=');
read (b);
s:=a*b;
writeln ('площадь прямоугольника', s);
end.
Ветвление
Ветвление представляет собой алгоритмическую
конструкцию, в которой выполнение того или иного шага зависит от
истинности условия.
На рисунке приведена блок-схема ветвления
Язык
блок-схем |
Алгоритмический
язык |
|
если
условие
то действия 1
иначе действия 2
все
|
Если условие истинно, то
будет выполнено только действие1, в противном случае будет выполнено
только действие2.
В языках программирования высокого уровня
ветвление обычно реализуется с помощью оператора (команды) IF. (См.
оператор If в Паскале, оператор If в языке Basic.)
Пример программы на языке программирования Pascal
{Программа, которая находит наибольшее из трех чисел}
Program maximal;
var a,b,c,d:word;
begin
write ('a,b,c'');
read (a,b,c);
if a>b then d:=a
else d:=b;
if c>d tnen d:=c then
writeln ('наибольшее',d);
end.
Цикл
Цикл представляет собой алгоритмическую
конструкцию, в которой многократно выполняется одна и та же
последовательность шагов, называемая телом цикла. Каждое однократное
исполнение тела цикла называется итерацией. Если тело цикла было
выполнено N раз, говорят, что было произведено N итераций.
Для того, чтобы определить момент прекращения
выполнения тела цикла, используется условие цикла. Если при истинности
условия цикл продолжается, то такое условие называется условием
продолжения цикла. Иными словами, цикл продолжается, пока условие цикла
истинно.
Если при истинности условия цикл завершается, то
такое условие называется условием завершения цикла. В этом случае цикл
продолжается до тех пор, пока условие цикла не станет истинным.
Различают циклы с проверкой условия перед
выполнением очередной итерации и циклы с проверкой условия после
выполнения очередной итерации. Первые называются циклами с предусловием,
вторые – с постусловием.
|
|
Блок-схема
цикла с предусловием продолжения |
Блок-схема
цикла с постусловием завершения |
Тело цикла с постусловием
всегда выполнится хотя бы один раз.
|
|
Цикл типа Пока
|
Цикл типа Для
|
нц пока условие
тело цикла (последовательность действий) кц
|
нц для i от
i1 до i2
тело цикла (последовательность действий)
кц |
В языках программирования
высокого уровня существуют различные операторы циклов (см. циклы в
Паскале, циклы в Basic), в том числе реализующие циклы с заранее
заданным количеством итераций, так называемые циклы со счетчиком.
Цикл со счетчиком состоит из заголовка и тела
цикла. В заголовке указывается начальное и конечное значение счетчика.
На каждой итерации значение счетчика автоматически увеличивается. Цикл
завершается, когда счетчик достигнет конечного значения. Фактически,
цикл со счетчиком представляет собой разновидность цикла с предусловием
продолжения, заключающемся в том, что значение счетчика находится в
заданных границах.
Разработка алгоритмов методом
последовательной детализации. Вспомогательные алгоритмы
Процесс решения сложной задачи довольно часто
сводится к решению нескольких более простых подзадач. Соответственно при
разработке сложного алгоритма он может разбиваться на отдельные
алгоритмы, которые называются вспомогательными. Каждый такой
вспомогательный алгоритм описывает решение какой-либо подзадачи.
Процесс построения алгоритма методом
последовательной детализации состоит в следующем. Сначала алгоритм
формулируется в «крупных» блоках (командах), которые могут быть
непонятны исполнителю (не входят в его систему команд) и залисываются
как вызовы вспомогательных алгоритмов. Затем происходит детализация, и
все вспомогательные алгоритмы подробно расписываются с использованием
команд, понятных исполнителю.
Рассмотрим процесс создания алгоритма
Домик для исполнителя Чертежник методом последовательной детализации.
Пусть необходимо нарисовать домик с крышей.
Сначала запишем алгоритм, состоящий из
крупных блоков. Такими блоками, содержащими «непонятные» для исполнителя
Чертежник команды, являются блоки стена, крыша. Теперь детализируем эти
блоки и запишем их в виде вспомогательных алгоритмов, содержащих
понятные Чертежнику команды.
В результате мы имеем основной алгоритм (домик),
созданный методом последовательной детализации, в который входят как
составные части два вспомогательных алгоритма (стена, крыша) |