- •1.7. Алгоритмы. Основные понятия
- •1.7.1. Определение алгоритма. Запись алгоритма. Свойства алгоритмов
- •1.7.3. Примеры алгоритмов. Способы, используемые при записи алгоритмов: рекурсия, итерация, разбор случаев, иерархическое построение
- •1.7.5. Объекты, типы объектов
- •1.7.7. Псевдокод для записи алгоритмов
- •1.7.9. Неструктурированная форма записи алгоритмов
- •1.7.11. Структурированная форма записи алгоритмов
- •1.7.13. Последовательный оператор
- •1.7.15. Условный оператор
- •1.7.17. Оператор цикла
-
1.7.17. Оператор цикла
Оператор цикла является составным оператором, используемым для реализации одного из способов построения алгоритмов - итерации (см.
1.7.3). Оператор цикла (циклический оператор) задает многократное выполнение заданных действий. Основная форма циклического оператора имеет вид:
циклпока УСЛОВИЕ
ОПЕРАТОР
конеццикла
и эквивалентна в неструктурированной форме следующему фрагменту записи:
Пункт 1. Определить истинность логического выражения УСЛОВИЕ.
Если оно истинно, то перейти к пункту 2, иначе перейти к пункту 3.
Пункт 2. ОПЕРАТОР.
Перейти к пункту 1.
Пункт 3. Перейти к следующему пункту алгоритма,
частью которого является данный фрагмент.
Циклический оператор определяет многократное выполнение действия, задаваемого оператором "ОПЕРАТОР". Действия повторяются до тех пор, пока истинно логическое выражение "УСЛОВИЕ". Как только оно становится ложным, выполнение циклического оператора прекращается.
1. Для конструирования циклического оператора используются два ключевых слова: "циклпока" и "конеццикла". Еще раз отметим необходимость применения отступов для большей наглядности записи.
2. "ОПЕРАТОР" может быть ни разу не выполнен, если окажется, что выражение "УСЛОВИЕ" ложно при первом же вхождении в цикл.
3. Предполагается, что при выполнении оператора "ОПЕРАТОР" изменяется состояния некоторых объектов, которые используются в выражении "УСЛОВИЕ", таким образом, что рано или поздно выражение "УСЛОВИЕ" станет ложным и выполнение циклического оператора прекратится. В противном случае, если выражение "УСЛОВИЕ" всегда будет оставаться истинным, произойдет так называемое "зацикливание" - бесконечное выполнение данного циклического оператора.
Использование циклического оператора проиллюстрируем на примере записи алгоритма нахождения остатка от деления двух целых положительных чисел a и b:
1 2 3 4 5 6 7 8 |
числовой объект A числовой объект B A ¬ a B ¬ b циклпока A ³ B A ¬ A - B конеццикла Выдать ответ: остатком является значение объекта с именем a |
Отметим, что данный алгоритм обладает свойством результативности, так как какими бы ни были первоначальные значения положительных чисел a и b, с каждым повторением внутреннего оператора в цикле значение объекта A уменьшается. Рано или поздно условие A ³ B станет ложным и выполнение прекратится. Например, проиллюстрируем выполнение алгоритма для двух целых положительных чисел 10 и 3 :
Последовательность выполнения операторов алгоритма. Номера соответствуют номерам |
Значения после выполнения оператора |
||
строк записи |
объект A |
объект B |
условие A ³ B |
1 |
? |
? |
? |
2 |
? |
? |
? |
3 |
10 |
? |
? |
4 |
10 |
3 |
истина |
5 |
10 |
3 |
истина |
6 |
7 |
3 |
истина |
7 |
7 |
3 |
истина |
5 |
7 |
3 |
истина |
6 |
4 |
3 |
истина |
7 |
4 |
3 |
истина |
5 |
4 |
3 |
истина |
6 |
1 |
3 |
ложь |
7 |
1 |
3 |
ложь |
1 |
1 |
3 |
ложь |
8 |
1 |
3 |
ложь |
Кроме вышеприведенной формы циклического оператора используются и некоторые другие варианты. Некоторые из них будут приведены позднее на примере конкретного языка программирования.
На этом завершим рассмотрение основных черт нашего псевдоязыка записи алгоритмов.