Рис. 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