В языке ПАСКАЛЬ имеются три конструкции операторов цикла.
Оператор цикла while
Организует цикл с предусловием, то есть условие продолжения цикла проверяется до выполнения тела цикла. Это наиболее универсальный оператор цикла. С его помощью можно описать любые циклические действия.
Общий вид:
while A do S ;
где A – логическое (булевское) выражение (условие продолжения цикла);
S – любой оператор (простой или составной) языка ПАСКАЛЬ (тело цикла).
Выражение A вычисляется перед каждой попыткой выполнения оператора S. Если значение A истинно (A = True), то оператор S выполняется, и снова предпринимается попытка выполнить оператор S, то есть, управление передается на вычисление значения A; если значение A оказывается ложным (A = False), то оператор S не выполняется, цикл заканчивается и выполняется следующий за while оператор.
Если при первой же попытке выполнить оператор S значение A окажется ложным (A = False), то оператор S не будет выполнен ни разу.
Если значение выражения A никогда не принимает значения лож (False), то тело цикла будет выполняться бесконечное число раз (происходит “зацикливание”). Таким образом, если необходимо получить такой бесконечный цикл, то достаточно задать условие типа 0 = 0.Остановить такую программу можно, нажав клавиши Ctrl+Break или Ctrl+C.
Оператор цикла repeat
Организует цикл с постусловием, то есть условие продолжения цикла проверяется после выполнения тела цикла. Обычно при помощи именно этого цикла описывают диалог с пользователем.
Общий вид:
repeat
S1;
S2;
…
SN
until A;
где S1, S2, …, SN – группа выполняемых в цикле операторов (тело цикла); A – логическое (булевское) выражение (условие продолжения цикла).
Выполняется оператор repeat в следующем порядке: сначала выполняются операторы S1, S2, …, SN, затем вычисляется выражение A; если значение A оказывается ложным (A = False), то вновь выполняются операторы S1, S2, …, SN, а если значение A истинно (A = True), цикл заканчивается и выполняется следующий за repeat оператор (оператор стоящий после выражения A).
Тело цикла repeatвыполняется как минимум один раз (если значение A оказывается истинно на первом же шаге).
Если значение выражения A никогда не принимает значения истина (True), то тело цикла будет выполняться бесконечное число раз (происходит “зацикливание”). Таким образом, если необходимо получить такой бесконечный цикл, то достаточно задать условие типа 0 = 1.Остановить такую программу можно, нажав клавиши Ctrl+Break или Ctrl+C.
Оператор цикла for
Оператор цикла с параметром (счетчиком). Используется в тех случаях, когда количество выполнений тела цикла можно вычислить. Обычно это операции с массивами.
Общий вид:
for I := E1 to E2 do S ;
или
for I := E1 downto E2 do S ;
где I –параметр цикла, часто называемый счетчиком цикла или цикловой переменной, это переменная любого скалярного типа, кроме типаreal;
E1 –начальное значение параметра цикла, выражение того же типа, что и переменнаяI;
E2 –конечное значение параметра цикла, выражение того же типа, что и переменнаяI;
S –любой оператор (простой или составной) языка ПАСКАЛЬ (тело цикла).
Оператор цикла выполняется следующим образом:
1)на первом шаге вычисляются значения выраженийE1иE2,переменнойIприсваивается результат вычисления выражения E1
2) выполняется оператор S (тело цикла);
3)затем переменнойIприсваивается следующее значение, вычисляется значение выраженияE2 ирезультат вычислений сравнивают с новым значением переменнойI.Если результат сравнения – истинна(True), то действия повторяются; если результат сравнения оказывается ложным(False), то операторSне выполняется, цикл заканчивается и выполняется следующий заforоператор.
Следующее значение параметра цикла вычисляется в операторе с ключевым словомtoкак
I := SUCC( I ) (приIцелого типаI := I + 1 ),а в операторе с ключевым словомdowntoкакI := PRED( I ) (приIцелого типаI := I — 1 ).
Выражения E1 и E2 вычисляются только один раз, в начале цикла!
Категорически запрещается в теле цикла for (в операторе S) изменять значение параметра цикла (переменной I)!
После завершения цикла значение параметра цикла ( переменной I) не определено, “портится”, и пользоваться им нельзя!
Если нужно обойти указанные ограничения, то операторfor I := E1 to E2 do Sможно заменить на последовательность операторов подобную:
I := E1;
while( IE2 )do
begin
S1;
I := SUCC( I )
end;
а операторforI :=E1downtoE2doSна:
I := E1;
while( IE2 )do
Begin
S;
I := PRED( I )
End;
Задача №1
Написать программу, которая вычисляет сумму первых N членов последовательности an. Число Nпрограмма должна запрашивать у пользователя.
Для какого максимального числа N программа позволяет получить верный результат?
1)Решить задачу с использованием оператор цикла for.
2)Решить задачу с использованием оператор цикла whileилиrepeat.
Задача №2
Написать программу которая вычисляет сумму первых N членов ряда с точностью доe( т.е. пока величина очередного вычисленного члена ряда не станет меньше e,где e0). Число eпрограмма должна запрашивать у пользователя.
Для какого минимального числа eпрограмма позволяет получить верный результат?
Статьи к прочтению:
- Краткое описание программы wireshark и рекомендации по работе с программой
- Краткое описание семантики языка
Паскаль с нуля [ч4]. Условные операторы
Похожие статьи:
-
Краткие теоретические сведения и методические указания к выполнению работы.
Метрики третьей группы базируются на оценке использования, конфигурации и размещения данных в программе. В первую очередь это касается глобальных…
-
Краткие теоретические сведения
Лабораторная работа №2 Низкоуровневое проектирование интерфейса: Количественная оценка и построение прототипа Цели работы 1.1. Закрепить теоретические…