Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ОАиП.doc
Скачиваний:
26
Добавлен:
15.11.2018
Размер:
435.2 Кб
Скачать

Операторы организации циклов

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

Если число повторений оператора (составного оператора) заранее неизвестно, а задано лишь условие его повторения (или окончания), используются операторы while, repeat. Оператор for используется, если число повторений заранее известно.

Оператор повтора for

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

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

for <параметр цикла> := <начальное значение> to <конечное значение>

do <оператор>

for, to, doзарезервированные слова (для, до, выполнить, ); <параметр цикла> - параметр цикла, которым является переменная типа Integer (точнее любого порядкового типа); <оператор> - произвольный оператор Турбо Паскаль.

Шаг наращивания параметра цикла строго постоянен и равен (+1). Существует другая форма оператора:

for <параметр цикла> := <начальное значение> downto <конечное значение>

do <оператор>

Замена зарезервированного слова to словом downto означает, что шаг наращивания параметра цикла равен (-1), а управляющее условие приобретает вид for <параметр цикла> = <конечное значение>.

Пример использования оператора for:

for I:= 1 to 100 do Read(M[I]); {Чтение элементов массива}

for I:= 100 downto 1 do Write(M[I]); {Вывод элементов массива}

program DemoFor;

var

A: integer;

begin

for A:= 255 downto 0 do {Цикл с убыванием параметра}

Writeln('код символа = ',А, ' символ == ',Chr(A));

Readln

end.

11. Назовите операторы организации циклов с неизвестным числом повторений в языке программирования Паскаль (Delphi). Опишите их структуру и принцип работы. Покажите с помощью блок-схемы цикл с предусловием.

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

Циклы с неизвестным числом повторений

Когда число повторений в цикле неизвестно, а задано только некоторое условие его продолжения или окончания, следует использовать оператор цикла с предусловием или оператор цикла с постусловием.

Оператор цикла с предусловием имеет следующий синтаксис:

while <логическое выражение> do

<оператор>

Здесь внутренний <оператор> выполняется в цикле до тех пор, пока условие продолжения цикла (<логическое выражение>) истинно. Если же <логическое выражение> становится ложным, то цикл прекращает функционировать и выполняется оператор, следующий за оператором while. Если условие продолжения цикла ложно с самого начала, то внутренний оператор не выполняется ни разу. Условие продолжения цикла вычисляется и анализируется перед каждым шагом выполнения цикла, отсюда и термин «предусловие». Если в теле цикла необходимо выполнять несколько операторов, то эту группу следует объединить в один составной оператор с помощью операторных скобок begin и end.

Оператор цикла с постусловием имеет следующую структуру:

repeat

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

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

…….

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

until <логическое выражение>

Этот цикл будет выполняться, пока логическое выражение после слова until (до тех пор пока) ЛОЖНО. Как только результат выражения станет истинным, произойдет выход из цикла. Вычисление выражения выполняется в конце каждой итерации цикла.

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

program DemoRepeat;

var

X: integer;

Sum: real;

begin

Sum:=0;

repeat {Повторять}

Write('Значение X= '); {Начало тела цикла}

Readln(X); {Считать очередное значение Х с клавиатуры}

if X <> 999 then

Sum:= Sum+X ;

until X = 999; {Условие окончания цикла (пока Х не станет равным 999)}

Writeln('Сумма введенных чисел= ',Sum) ;

end.

12. Дайте определение понятий «массив», «элемент массива», «размерность массива». Опишите структуру объявления одномерного массива в языке программирования Паскаль (Delphi). Приведите пример ввода-вывода одномерного массива на экран.

Разработать программу нахождения произведения элементов массива A, состоящего из n элементов