Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Чернов Шафеева.doc
Скачиваний:
47
Добавлен:
21.05.2015
Размер:
1.39 Mб
Скачать

2.3.5. Составной и пустой операторы

Составной оператор используется в том случае, когда по правилам синтаксиса сложного оператора должен стоять только один оператор, а в алгоритме необходимо выполнить некоторую последовательность действий. Составной оператор объединяет эту последовательность в единый по син­таксису оператор путем заключения в операторные скобки begin и end:

ВEGIN

<оператор1>;

<оператор2>;

... ;

<операторN>

END;

Для составного оператора допускается любая глубина вложенности:

BEGIN

BEGIN

...

BEGIN

...

END;

...

END;

END.

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

Пpимеpы пустых опеpатоpов:

1) ;; 2) <метка>: ;

2.3.6. Операторы цикла

Существует три разновидности операторов цикла:

1) счетный оператор цикла (оператор цикла с параметром);

2) оператор цикла с предусловием;

3) оператор цикла с постусловием.

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

Счетный оператор цикла реализует циклический процесс с известным числом повторений и имеет две формы записи:

Первая форма позволяет наращивать параметр цикла на единицу:

FOR <параметр_цикла>:= <min_значение> TO <max_значение> DO <оператор>;

<Параметр_цикла>  это переменная целого либо любого порядкового типа,

<min> и <max> значения  это выражения, определяющие соответственно начальное и конечное значения параметра цикла. Их типы должны быть совместимыми для присваивания с параметром цикла.

Вторая форма позволяет уменьшать на единицу значение параметра цикла:

FOR <параметр цикла>:=<max значение> DOWNTO <min значение> DO <оператор>;

Пример. Вычислить Y=1+1/2+1/3+...+1/N.

Для реализации программы необходимо многократно произвести вычисления по формуле Y=Y+1/I при изменении параметра I от одного до N.

Реализация 1: Y:=0;

FOR I:=1 TO N DO Y=Y+1/I;

Реализация 2: Y:=0;

FOR I:=N DOWNTO 1 DO Y=Y+1/I;

Значение параметра цикла в теле цикла может не использоваться, а лишь выполнять функцию счетчика. Например, пусть необходимо вычислить Y=Xn. Тогда фрагмент тела программы запишется в следующем виде:

Y:=1;

FOR I:=1 TO N DO Y=Y*X;

Два других оператора цикла (с пpедусловием и постусловием) прове­ряют условия повторения или окончания цикла, но не изменяют значения параметра цикла. Они организуют выполнение цикла с неизвестным заранее числом повторений.

Оператор цикла с предусловием используется в случае, когда число повторений цикла заранее не известно и действия в цикле по условию могут ни разу не выполниться. Структура этого оператора имеет вид:

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

где <условие> – это любое логическое выражение, истинность которого проверяется в начале каждой итерации (условие выполнения тела цикла), <оператор> – произвольный оператор языка, в том числе и составной.

Если условие истинно, то выполняется оператор, стоящий за ключе­вым словом DO, если условие ложно, то производится выход из цикла.

После выполнения <оператора> вновь вычисляется и анализируется <условие>, и вновь, в случае его истинности, выполняется <оператор>. Эти действия повторяются до тех пор, пока <условие> не станет ложным.

Пример. Вычислить Y=1+1/2+1/3+...+1/N. Фpагмент пpогpаммы с применением оператора WHILE может быть составлен в следующем виде

BEGIN

Y:=0; I:=1; WHILE I<= N DO begin Y:=Y+1/I; I:=I+1 end;

END.

Оператор цикла с постусловием производит проверку условия после выполнения операторов тела цикла, которые должны выполниться хотя бы один раз. Его стpуктуpа следующая:

REPEAT <оператор1>;

...

<операторN>

UNTIL <условие_выхода>;

При истинности значения логического выражения <условие_выхода> выполняется выход из цикла. В данном операторе ключевые слова REPEAT и UN­TIL выполняют роль операторных скобок, поэтому точку с запятой перед словом UNTIL не ставят.

Пример фрагмента программной реализации вычисления значения Y=1+1/2+1/3+...+1/N при использовании оператора цикла с постусловием:

BEGIN

Y:=0; I:=1;

REPEAT Y:=Y+1/I;

I:=I+1

UNTIL I>N;

END.