Рис. 2. Синтаксическая диаграмма оператора цикла с параметром
Данный оператор называют «циклом с параметром», так как число повторений подсчитывается в переменной, называемой параметром цикла.
На синтаксической диаграмме:
идентификатор переменной – параметра цикла – это имя, описанное в разделе VAR дискретного типа (Boolean, integer, char, byte и т. д.). В ней подсчитывается число повторений цикла;
Выражение 1, Выражение 2 – выражения, определяющие соответственно начало и конец значения параметра цикла; по типу должны совпадать с типом параметра цикла (обозначим их соответственно Выр. 1 и Выр. 2) ;
to – означает возрастание параметра цикла (Выр. 1 > Выр. 2) с шагом 1;
downto – убывание параметра цикла (Выр. 1 > Выр. 2) с шагом 1;
оператор – любой оператор Р ( в том числе и составной).
Порядок выполнения цикла for:
1. Переменной – параметру цикла присваивается значение Выражения 1.
2. Выполняется оператор.
3. Параметр увеличивается (уменьшается ) на 1.
4. Значение параметра сравнивается с Выражением 2.
Цикл прекращается, выполняется следующий за ним оператор:
– если значение параметра < Выражения 1 (для to);
– если значение параметра > Выражения 2 (для downto);
иначе повторяются действия, начиная с п. 2.
П р и м е р 1. Вычислить n! (1* 2 * 3 * 4 … * n).
program fact_1;
var
i,n:integer; {i -пар-р цикла, n - его кон. занч.}
f:longint ; {результат}
begin
write(' Введите n ');
readln (n);
f: =1;
for i:=1 to n
do f:=f*i;
writeln(' при n= ',n,' n!=',f)
end.
П р и м е р 2. Распечатать буквы латинского алфавита в обратном
порядке.
program for_2 ;
var
c: char;
begin
for c:='Z'downto 'A'
do write (c)
end.
П р и м е р 3. Найти значение выражения
![]() |
![]() |
(сумму S и произведение П считать в одном цикле).
program for_3;
var
X, S,P;integer;
Begin
S:=0; P:=1;
for X:=1 to 10
do begin
S:=S+SQR(X);
P:=P*(1-SQR(X))/ABS(X)
end;
writeln('S=',S,'P=',P)
end.
Оператор цикла с предусловием
Проверка условия выполнения тела цикла с предусловием производится в самом начале оператора (следовательно, может не выполняться ни разу). Синтаксическая диаграмма оператора изображена на рис.3.
Рис. 3. Синтаксическая диаграмма цикла с предусловием
Выражение – условие логического типа.
Оператор – любой оператор Паскаля, простой или составной.
Оператор While задает многократное выполнение оператора, стоящего после do. Перед каждым выполнением тела цикла вычисляется значение выражения – условия. Если результат равен True (истина), то выполняется оператор после do, если False (ложь), то действие оператора while прекращается.
Программа вычисления факториала с использованием данного вида цикла будет выглядеть следующим образом:
{фрагмент программы}
begin
i:=1;
f:=1;
readln(n);
while i < =n
do begin
f:=f*i;
inc(i);
end;
П р и м е р. Подсчитать сумму чисел в интервале от 100 до 150, вводимых с клавиатуры. Как только введено отрицательное число, ввод и суммирование прекратить.
А л г о р и т м:
1. Запись в Summa 0.
2.
3. Начало цикла (пока А > = 0 ).
3.1. Проверка условия 100 < A < 150
3.1.1. Если условие истинно, Summa + A.
3.1.2. Ввод нового А
4. Конец цикла.
5. Печать суммы.
Составим таблицу переменных (табл. 6).
Таблица6
Пример составления таблицы переменных
Имя | Тип | Начальное значение | Смысл |
Amin | 100 | Минимальное значение интервала | |
Amax | 150 | Максимальное значение интервала | |
А | Real | Число, вводимое с клавиатуры | |
Summa | Real | Сумма чисел |
{Текст программы}
program while_2;
const
Amin=100; Amax=150;
Var A, Summa:real;
begin
Summa:=0;
Writeln(' Введите А ');
Readln (A);
while A>=0 {заголовок цикла}
do begin
if (A>100) and (A<150)
then Summa:=Summa+A;
inc (Summa, A);
Readln (A) {читаем новое значение А}
end; {конец цикла}
Writeln(' Значение суммы = ',Summa)
end.
Оператор цикла с постусловием
Синтаксическая диаграмма цикла с постусловием изображена на рис. 4.
![]() |
Рис. 4. Синтаксическая диаграмма цикла с постусловием
Оператор – любой оператор Паскаля.
Выражение – выражение логического типа.
Данный оператор аналогичен оператору цикла с предусловием. Отличия:
1) условие проверяется после выполнения оператора, следовательно, хотя бы один раз оператор выполнится;
2) цикл прекращает выполняться, когда значение выражения равно true (истина). Если результат логического выражения false (ложь), то тело цикла активизируется (выполняется) еще раз.
Факториал n! с помощью цикла Repeat можно вычислить следующим образом:
{фрагмент программы}
i := 1;
f:=1;
readln (n);
repeat
f:=f*i;
inc(i)
until i > n;
П р и м е р. С клавиатуры вводятся числа. Найти сумму этой последовательности. Как только введено число большее 999, суммирование выполнить последний раз и выдать результат на печать.
А л г о р и т м:
1. Сумма = 0.
2. Открываем цикл.
2.1. Ввод Х.
2.2. Summa = Summa + X.
3. Конец цикла; проверка X > PRK.
4. Печать суммы.
Перечень используемых переменных приведен в табл. 7.
Таблица 7
Таблица переменных
Имя | Тип | Начальное значение | Смысл |
PRK | Константа | 999 | Признак конца цикла |
Summa | Real | 0 | Cумма чисел |
Х | Real | 0 | Текущее значение |
{Программа подсчета суммы}
program sum;
const
PRK = 999;
Var
X, Summa:real;
Begin
Summa:=0;
repeat
readln(X);
Summa:=Summa+X
until X>PRK;
writeln(Summa:10:4)
end.
|
Из за большого объема этот материал размещен на нескольких страницах:
1 2 3 4 5 6 |





