Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Метод. пос.абит.ИИТ-2015.docx
Скачиваний:
1
Добавлен:
01.07.2025
Размер:
1.05 Mб
Скачать

2.1.24. Программирование. Циклы

Оператор цикла с параметрами

Счетный оператор цикла FOR имеет структуру:

FOR i:=a TO b DO <оператор>;

FOR, TO, DO – зарезервированные слова (для, до, выполнить);

i – переменная цикла типа INTEGER; (счётчик циклов)

a – начальное значение счётчика циклов (тип INTEGER);

b – конечное значение счётчика циклов (тип INTEGER);

<оператор> – произвольный оператор Турбо Паскаля.

Шаг изменения параметра цикла равен единице.

Алгоритм выполнения оператора цикла с параметрами при выполнении оператора FOR:

  1. счётчику циклов присваивается начальное значение i:=a;

  2. проверяется условие i > b (счётчик циклов больше конечного значения);

  3. если условие i > b выполняется, то на пункт 7, иначе на пункт 4

  4. выполняется тело цикла;

  5. счётчик увеличивается на единицу: i:=i + 1;

  6. переход на 2;

  7. при выполнении условия i > b цикл заканчивается.

Пример: Найти сумму значений переменной цикла.

Решение: Фрагмент программы с оператором цикла запишется в виде:

For i:= 1 to 10 do s:=s+i;

Writeln(‘s=’, s);

Счётный оператор цикл FOR может иметь такую структуру:

FOR i: = b DOWNTO a DO <оператор>;

Замена зарезервированного слова TO на DOWNTO означает, что шаг наращивания переменной цикла равен (-1).

Пример: Найти сумму значений переменной цикла.

Фрагмент программы с оператором цикла запишется в виде:

For i:=10 downto 1 do s:=s+i;

Writeln(‘s=’, s);

{Результат получится тот же, что и в примере с циклом For..to…do}.

При работе с оператором FOR следует соблюдать ряд правил:

  1. Нельзя войти в цикл, минуя оператор FOR.

  2. Нельзя изменять параметры цикла (a, b) внутри цикла.

  3. Параметры цикла и переменная цикла должны быть целыми.

  4. Шаг цикла может быть единица или минус единица.

  5. Естественное окончание цикла осуществляется при условии i > b при шаге=1.

  6. Из цикла можно выйти до естественного окончания цикла по условию.

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

Структура оператора имеет вид:

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

WHILE, DO – зарезервированные слова (WHILE –пока; DO – выполнить);

<условие> – выражение логического типа;

<оператор> – произвольный оператор Турбо Паскаля.

Если выражение <условие> имеет значение TRUE, то выполняется <оператор>, после чего вычисление выражения <условие> и его проверка повторяются. Если <условие> имеет значение FALSE, оператор WHILE прекращает свою работу.

Пример: Переписать фрагмент примера с циклом While…do, используя оператор цикла с предусловием.

Решение: Фрагмент программы с оператором цикла запишется в виде:

s:=0; i:=1;

while i<=10 do

Begin

s:=s+i;

i:=i+1;

End;

Writeln(‘s=’, s);

В примере рассматривается составной оператор цикла, тело цикла заключено в операторные скобки.

Оператор цикла REPEAT…UNTIL с постусловием

Структура оператора имеет вид:

REPEAT <тело_цикла> UNTIL <условие>;

REPEAT, UNTIL – зарезервированные слова (повторять до тех пор, пока не будет выполнено условие);

<тело_цикла> – произвольная последовательность операторов Турбо Паскаля; <условие> – выражение логического типа.

Операторы, входящие в <тело_цикла>, выполняются хотя бы один раз, после чего вычисляется выражение <условие>: если его значение есть FALSE, операторы <тело_цикла> повторяются, в противном случае оператор REPEAT…UNTIL завершает свою работу.

Пример: Переписать фрагмент примера с циклом While…do, используя оператор цикла с постусловием.

Решение: Фрагмент программы с оператором цикла запишется в виде:

s:=0; i:=1;

repeat

s:=s+i;

i:=i+1;

Until i>10;

Writeln(‘s=’,s);

В пример цикл выполняется пока переменная i  10, при i >10 цикл закончится.

Пример: Написать программу циклического алгоритма рис.11.

В цикле вычислить значение функции z= x* y при условии, что одна из переменных - x меняется в каждом цикле, а другая переменная- у не меняется и может быть любым целым числом.

Решение: Программа алгоритма цикла со счётчиком имеет вид:

PROGRAM PR5;

Var

x, y, z, i, n :integer;

begin

{циклический алгоритм}

writeln (‘ввести x, y, количество циклов-n’);

readln (x, y, n);

for i:=1 to n do {оператор цикла с параметрами}

begin

z:=x*y;

Writeln (‘x= ’, x, ‘ y= ’, y, ‘ z= ’, z);

x:=x+1;

End; {конец оператора цикла с параметрами}

End.

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

Пример: Пока y>x вычислить у=у-x, , если y=30, x=4. Вывести на экран количество циклов и значения переменной y в цикле. Алгоритм этой задачи представлен в виде блок-схемы рис.12.

Решение: Программа алгоритма цикла с предусловием имеет вид:

PROGRAM PR6;

Var

i, x, y: integer;

begin

{циклический алгоритм}

x:=4; y:=30; i:=0;

{оператор цикла с предусловием}

while y>x do

begin

y: = y – x;

i:=i+1;

readln (‘i=’, i, ‘x= ’, x, ‘y= ’, y);

end; {конец оператора}

end.

В примере используется оператор цикла с предусловием, который работает при условии y>x. Условие проверяется при входе в цикл.

Пример: Составить программу для алгоритма, представленного на рисунке 13, используя оператор цикла с постусловием. Цикл выполняется при условии y>x, но в конце оператора проверяется условие выхода из цикла (y<=x).

Решение: Программа алгоритма цикла с постусловием имеет вид:

PROGRAM PR7;

Var

i, x, y: integer;

begin

{циклический алгоритм}

x:=4; y:=30; i:=0;

{оператор цикла с постусловием}

repeat

y: = y – x;

i:=i+1;

readln (‘i=’, i, ‘x= ’, x, ‘y= ’, y);

until y<=x; {конец оператора}

end.