- •Алгоритмические языки и программирование Изучение условных и циклических конструкций
- •Брянск 2007
- •1. Цель работы
- •2. Теоретическая часть
- •2.1. Блок-схемы
- •Основные символы блок-схем
- •2.2. Операторы условного перехода
- •2.2.1. Оператор условия If
- •2.2.2. Оператор выбора Case
- •2.3. Операторы циклов
- •2.3.1. Оператор с предусловием While
- •2.3.2. Оператор с постусловием Repeat
- •2.3.3. Оператор со счетчиком For
- •2.4. Математические функции и константы
- •2.5. Примеры
- •3. Порядок выполнения работы
- •4. Список заданий
- •Список заданий
- •5. Контрольные вопросы
- •6. Список рекомендуемой литературы
2.3. Операторы циклов
Операторы повторения (циклов) обычно используют для многократного повторения некоторых действий.
Pascal поддерживает три управляющих конструкции повторения:
-
цикл с предусловием (While);
-
цикл с постусловием (Repeat);
-
цикл со счетчиком (For).
2.3.1. Оператор с предусловием While
Цикл While используется, как правило, в тех случаях, когда заранее неизвестно количество повторений цикла.
Синтаксис оператора While:
While выражение Do оператор;
Выражение должно быть булевского типа данных. Значение выражения вычисляется перед каждым выполнением оператора, поэтому цикл While называют еще циклом с предусловием. Оператор, составляющий тело цикла, выполняется, пока выражение равно true. Если значение выражения false, то оператор не выполняется и происходит выход из цикла.
Если первоначальное значение выражения равно false, то оператор не выполнится ни разу. Чтобы избежать бесконечного повторения (зацикливания), необходимо хотя бы одну переменную, входящую в выражение, изменять в теле оператора цикла. Более того, эти изменения должны быть такими, чтобы булевское выражение в ходе вычисления приняло значение false. Если же булевское выражение первоначально истинно и ни при каких обстоятельствах не становится ложным, то выполнение оператора цикла никогда не завершится.
Пример: вычисление суммы ряда, состоящего из 50 элементов.
S:=0; N:=1;
While N<=50 Do Begin
S:=S+1/N;
N:=N+1;
End;
2.3.2. Оператор с постусловием Repeat
Цикл Repeat, как правило, используется в тех случаях, когда заранее неизвестно количество повторений операторов тела цикла, но необходимо выполнить тело цикла хотя бы один раз. Синтаксис оператора цикла Repeat:
Repeat
оператор;
Until выражение;
В цикле Repeat вначале выполняется оператор (или операторы) тела цикла, затем вычисляется значение выражения; если его значение равно false, то вновь выполняется оператор, если значение выражения true, то цикл заканчивается. Если значение выражения равно true с самого начала, то оператор выполняется лишь один раз. Если выражение никогда не принимает значение true, то оператор выполняется бесконечное число раз, т.е. происходит «зацикливание».
Нижняя граница операторов циклической части обозначена словом Until, поэтому нет необходимости заключать операторы циклической части в операторные скобки begin … end.
Пример: вычисление суммы ряда, состоящего из 50 элементов.
S:=0; N:=1;
Repeat
S:=S+1/N; N:=N+1;
Until N>50; { пока значение N не превзойдет 50 }
2.3.3. Оператор со счетчиком For
Оператор цикла For служит для организации цикла в тех случаях, когда заранее известно, сколько раз должна повторяться циклическая часть программы, обычно цикл For используют при работе с массивами. Синтаксис оператора For по возрастающим значениям параметра:
For счетчик:=значение_1 To значение_2 Do оператор;
Счетчик – переменная порядкового типа.
Значение_1, значение_2 – начальное и конечное значения переменной счетчик.
Чтобы оператор в цикле выполнился хотя бы один раз, значение_2 должно быть равно либо больше, чем значение_1. Переменная цикла принимает последовательные значения данного типа от значения_1 до значения_2.
Например,
{для i=1,2,3,...,20 будет выполняться оператор А:=А+1}
For i:=1 To 20 Do A:=A+1;
Имеется возможность организовать цикл по убывающим значениям параметра. Для этого используется зарезервированное слово DownTo. Синтаксис оператора For по убывающим значениям параметра:
For счетчик:=значение_1 DownTo значение_2 Do оператор;
В этом случае переменная принимает последовательные убывающие значения данного типа от значения_1 до значения_2.
Например,
{для i=10,9,8,...,1 будет выполняться оператор А:=А+1}
For i:=10 DownTo 1 Do A:=A+1;