Конструкции цикла в языке PASCAL, страница 2

г) for b:=False to True do writeln(b);

д) for Col:=Red to White do writeln(ord(Col);

2. Вычисление сумм и произведений.

Ниже приводится пример программы, вычисляющей сумму квад­ратов первых N целых чисел, SUM=1*1+2*2+...+N*N Пр.1.

program SUM;

uses crt;

var  N,sum,I:integer;

begin                                                          - начало тела главной программы

clrscr;

writeln;

writeln('<<< вычисления суммы квадратов первых N чисел >>>');

writeln;

write('N = ? ');

readln(N);

sum:=0;

FOR I:=1 TO N DO sum:=sum+I*I;

writeln('сумма квадратов первых ',N,' чисел  pавна ',sum);

readln;

end.

Пр.2 Подсчитать произведение Р= 1*2*3*...*N. program Proizv;

uses crt;

var

P:real;

N,I:integer;

begin                                                          - начало тела главной программы

clrscr;

writeln;

writeln('<<< вычисление произведения N чисел >>>');

writeln; write('N = ? ');

readln(N);

P:=1;

FOR I:=1 TO N DO

P:=P*I;

writeln('произведение ',N,' чисел  pавно ',P);

readln;

end.

В практике программирования достаточно часто возникает пот­ребность использовать вложенные циклы. Примером такого использо­вания вложенных циклов может быть программа, вычисляющая и печа­тающая таблицу Пифагора:

Пр.3

program PIFAGOR;

uses Crt;

var  I,J:integer;

begin                                                             - начало тела главной программы

clrscr;

gotoXY(10,5);

TextColor(Blue);

writeln('<<< ТАБЛИЦА ПИФАГОРА >>>');

writeln;

for I:=1 to 10 do                                 по вертикали

begin

for J:=1 to 10 do    по горизонтали

write((I*J):4);

writeln                                    переход на следующую горизонталь

end;

readln

end.

3. Максимымы и минимумы.

Еще одна часто встречающаяся задача - выбрать наибольшее число из вводимой последовательности. Идею алгоритма можно проиллюстрировать на такой ситуации: идет строй юношей, нам нужно определть рост самого высокого из них. Мы устанавливаем планку на высоте роста первого из них, а дальше действуем так: если юноша не проходит под планкой - поднимаем планку на высоту его роста, если же проходит - планка остается на месте. После того, как строй закончился, высота планки соответствует наибольшему росту.

Вот, как это записывается на языке Pascal: var i,max,a:real;

begin

Write('Введите рост: ');

readln(a);                    вводим первое число  

max := a;                  устанавливаем "планку"

for i:=2 to n do  начинаем с 2, т.к. первое

число уже обработано

begin

write('Введите рост:');

readln(a);                              вводим очередное число                   

if a > max                 если "не прошел под планкой"

then max := a;    "подняли планку"

end;

 max - наибольшее число

ReadLn end.

Если кроме самого числа нас интересует его номер, то нужно в цикле запоминать номер каждого "подозрительного на наибольший" элемента:

readln(a);                    вводим первое число  

max := a;                  устанавливаем "планку"

k := 1;                                   запоминаем номер               

for i:=2 to n do  начинаем с 2, т.к. первое

число уже обработано

begin

readln(a);                                       вводим очередное число                   

if a > max then    если "не прошел под планкой"

begin

max := a;    "подняли планку"

k := i;                   запомнили номер 

end;

 max - наибольшее число, k - его номер 

4.  Цикл с предусловием WHILE

Если какое-то действие или несколько действий необходимо выполнить много раз, но заранее неизвестно сколько раз и это за­висит от какого-то условия, то тогда следует воспользоваться циклом с предусловием, имеющим вид:

WHILE <условие> DO <оператор>;

Конструкция читается: пока выполняется условие делать ... Условие - это  логическое  выражение,  истинность  которого

проверяется в начале каждой итерации.

Оператор, следующий за ключевым словом DO называется телом цикла. На месте тела цикла может быть записан составной оператор BEGIN ... END. В этом случае цикл с предусловием будет иметь вид: