Выбрать
< условие 1 > : < команда 1 > ;
< условие 2 > : < команда 2 > ;
…
< условие N > : < команда N >
Иначе
< команда 0 > ;
Этот порядок предусматривает, что выполняется команда i, если соответствующее условие i ВЕРНО; или, если ни одно из условий i (i = 1,2, … ,n) неверно, выполняется команда 0 (при наличии ветви иначе). При использовании МНОГОЗНАЧНОГО ВЕТВЛЕНИЯ следует учитывать тот факт, что либо никакие два из условий не являются верными одновременно, либо несколько условий являются верными одновременно.
2.3. КОМАНДА ПОВТОРЕНИЯ (ЦИКЛА)
Многие алгоритмы содержат серии команд, которые должны реализовываться исполнителем многократно. Если такие алгоритмы записывать в виде составной команды следования, то каждую повторяемую команду пришлось бы записать столько раз, сколько раз она повторяется (если вообще известно количество повторений). Однако это неэффективный способ записи алгоритмов. Поэтому для обозначения многократно повторяемых действий используют специальную конструкцию – ЦИКЛ. Составная КОМАНДА ЦИКЛА, называемая также КОМАНДОЙ ПОВТОРЕНИЯ, содержит условие, значение которого определяет количество повторений.
2.3.1. БЕСКОНЕЧНЫЙ ЦИКЛ
В некоторых случаях целесообразно использовать так называемый БЕСКОНЕЧНЫЙ ЦИКЛ:
повторять
< команда > ;
команда
БЕСКОНЕЧНЫЙ ЦИКЛ играет фундаментальную роль в области процессов реального времени, операционных систем и т.д.
2.3.2. КОМАНДА ПОВТОРЕНИЯ С ПРЕДУСЛОВИЕМ (ЦИКЛ-ПОКА )
Обычно бывает необходимо повторять некоторое действие не бесконечно, а только ПОКА верно некоторое условие. В этом случае используют КОМАНДУ ПОВТОРЕНИЯ С ПРЕДУСЛОВИЕМ или ЦИКЛ – ПОКА:
пока < условие >повторять
< команда >; условие ложь
истина
команда
где условие – выражение, принимающее значение логических констант истина или ложь. Вычислительный процесс, представленный в виде ЦИКЛА – ПОКА, будет обладать свойством конечности, если команда предусматривает действия, изменяющие значение условия или если изначально значение условия - ложь.
Главная проблема, которая возникает в связи с использованием ЦИКЛА – ПОКА, это проблема его ОКОНЧАНИЯ: как можно гарантировать, что цикл завершится после некоторого числа итераций, для некоторого класса данных? Эта проблема не имеет решения в общем случае; на практике, однако, часто бывает возможно найти свойства условия и команды, обеспечивающие окончание циклического процесса.
2.3.2. КОМАНДА ЦИКЛА С ПОСТУСЛОВИЕМ (ЦИКЛ – ДО)
В отличие от предыдущего случая, когда команда может не выполниться ни разу, ЦИКЛ С ПОСТУСЛОВИЕМ или ЦИКЛ – ДО предусматривает выполнение команды по крайней мере один раз:
команда 1
повторять
< команда 1 > ; команда2
< команда 2 > ; . . .
. .
< команда N > команда N
до < условие >;
ложь истина
условие
2.3.3. ЦИКЛ С ПАРАМЕТРОМ
Значительный интерес с практической точки зрения представляет базовая конструкция – ЦИКЛ С ПАРАМЕТРОМ, которая может использоваться в различных модификациях:
для всякого элемента х принадлежащего М выполнить
< команда > ;
для х принадлежащего М пока < условие > повторять
< команда > ;
для х от m до n повторять
< команда > ;
для х от m до n шаг h повторять
< команда > ;
3. КОМПОЗИЦИИ БАЗОВЫХ СТРУКТУР
В соответствии с так называемой «структурной теоремой», изложенной в классической работе итальянских математиков К.Бома и Г.Джакопини (1965 г.), всякая программа (алгоритм) может быть построена с использованием только трех управляющих конструкций (структур): следование, развилка и цикл. Каждая из этих конструкций имеет один вход и один выход. В силу этого развилка или цикл могут рассматриваться как обобщенный функциональный блок, т.е. «черный ящик» с одним входом и одним выходом. Таким образом, в конструкциях цикл и развилка функциональные блоки сами могут быть конструкциями такого же типа, поэтому возможны вложенные конструкции. При этом какова бы ни была глубина вложенности, важно, что любая конструкция в конечном итоге имеет один вход и один выход.
Также можно утверждать, что конструкции следование и цикл-пока принципиально достаточны, чтобы описать действие любой программы (алгоритма). Не пытаясь доказать этот общий результат, посмотрим, например, как можно обойтись без АЛЬТЕРНАТИВЫ если … то … иначе:
если < условие >
то < команда 1 >
иначе < команда 2 >
все;
Пусть лог1 и лог2 – логические переменные. Тогда конструкция
лог1 : = < условие > ;
лог2 : = ~ < условие > ;
пока лог1 повторять
Начало
< команда 1 > ;
лог1 : = ложь
конец ;
пока лог2 повторять
Начало
< команда 2 > ;
лог2 : = ложь
конец;
эквивалентна предыдущей конструкции.
Дата добавления: 2015-04-15; просмотров: 914;