Правила применения оператора цикла For

1. Тело цикла – всегда один оператор. Если нужно, чтобы тело цикла состояло из нескольких операторов, то их объединяют в один составной оператор с помощью операторных скобок begin, end.

For i:=l to n do

Begin

S:=S+sin(x)/cos(x);

x=x+0.01;

writeln('S=' ,S)

end.

Операторы, взятые в операторные скобки begin – end, считаются одним составным оператором.

2. Начальное и конечное значения параметра цикла в общем случае являются выражениями. Тип этих выражений и тип параметра цикла должны совпадать. Здесь допускается применение любых типов, которые упорядочены с каким-либо фиксированным шагом (порядковые типы), это может быть любой скалярный тип, кроме вещественного, т.е. байтовый, целый, символьный, перечисляемый, интервальный, булевский. На практике чаще всего применяют целочисленный тип.

3. В теле цикла параметр цикла не должен изменяться.

4. Нельзя с помощью оператора перехода goto войти в тело цикла, минуя заголовок.

5. Выйти из тела цикла в программу можно по if..goto, не дожидаясь полного перебора параметров цикла.

Оператор Repeat

Repeat – оператор цикла с постусловием.

Общий вид. В отличие от for, оператор repeat (а также while) применяют тогда, когда неизвестно точно, сколько раз будет выполняться тело цикла. Общий вид оператора:

Repeat

оператор1;

оператор2;

– – – – – – – –

until <булевское выражение>;

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

Явного перебора параметров в Repeat не предусмотрено, поэтому изменение параметров осуществляется в теле цикла. Здесь же необходимо позаботиться, чтобы рано или поздно булевское выражение стало истиной.

Замечания:

1. Тело оператора repeat выполняется по меньшей мере один раз. Оператор repeat еще называют циклом с постусловием.

2. Перед until ';' не ставится.

Пример: найти сумму четных чисел в интервале от 0 до 100.

Program Prim;

Var i,s:integer;

BEGIN i:=0; s:=0;

Repeat

i:=i+2; s:=s+i

until i>100;

writeln('s=',s);

END.

Оператор While

While – оператор цикла с предусловием.

Общий вид оператора: While <булевское выражение> do тело цикла.

Работа оператора. Вначале вычисляется булевское выражение, и если оно истинно, то выполняется тело цикла; если оно ложно, то происходит выход из цикла.

Тело цикла – один оператор, как правило, составной. Мы должны позаботиться о том, чтобы булевское выражение в теле цикла на каком-то этапе стало ложным, иначе цикл никогда не закончится. Цикл можно сделать умышленно бесконечным, написав: while true do оператор;

Пример: найти сумму четных чисел в интервале от 0 до 100.

Program Prim;

Var i,s:integer;

BEGIN

i:=0; s:=0;

while i<100 do

Begin i:=i+2; s:=s+i; end;

writeln('s=',s);

END.

Поскольку тело любого цикла состоит из операторов или составного оператора, то можно в теле цикла располагать другие операторы цикла. Пример программы:

Program Prim;

Var

i,j: integer;

BEGIN

for i:=1 to 5 do

Begin

writeln;

for j:=20 to 23 do

write('i=',i,' j=',j);

end;

END.

Для цикла

for i:=1 to 5 do

телом цикла является

begin for j:=20 to 23 do

write(' i= ', i, ' , j = ', j);

writeln;

end;

Вкладывать циклы друг в друга можно любое количество раз, необходимо лишь помнить, что количество выполнений самого внутреннего тела цикла при этом будет расти в геометрической прогрессии.

ТЕМА 9. Массивы

Цель лабораторной работы: научиться правильно описывать различные массивы в разделах описания типов и объявления переменных; уметь инициализировать массивы, заполнять и выводить на экран содержимое массива; научится решать задачи с использованием массивов.

На языке ПАСКАЛЬ можно обрабатывать не только отдельные переменные, но и их совокупности. Одной из таких совокупностей является массив. Массив – это структурированный тип данных, состоящий из фиксированного числа элементов, имеющих один и тот же тип. Можно использовать и любой другой ранее описанный тип, поэтому вполне правомерно существование массивов записей, массивов указателей, массивов строк, массивов и т. д. Элементами массива могут быть данные любого, но только одного типа, включая структурированные. Тип элементов массива называется базовым, число элементов массива фиксируется при описании и в процессе выполнения программы не меняется.

Доступ к каждому отдельному элементу осуществляется путем индексирования элементов массива. Индекс массива по смыслу тождествен понятию индекса элемента вектора. Индексы представляют собой выражения любого скалярного типа, кроме вещественного, тип индекса определяет границы изменения значений индекса.

Линейные массивы. Описание типа

Дли описания массива предназначено словосочетание

Array [нач.индекс .. конечный индекс ] of <Типкомпонент>

Формат:

Туре

<имя типа> = аrrау [тип индекса] of <тип компонент>;

Var

<идентификатор,…> : <имя типа>;

Массив может быть описан и без представления типа в разделе описания типов данных:

Var

< идентификатор,….> : аrrау [тип индекса] of <тип компонент>

Пример1:

Туре Znak = array[1.. 255] of char;

Var alf: Znak;

Пример2:

Var alf: array[1.. 255] of char;

Наши рекомендации