Оператор цикла for
Оценка 4.9

Оператор цикла for

Оценка 4.9
docx
информатика
03.05.2020
Оператор цикла for
0.1. Оператор цикла for
37.docx

0.1. Оператор цикла for

Выполняя программу печати чисел 3 5 7 9, оператор repeat выполнил цикл 4 раза. То же самое сделал и оператор while. Однако, обычно, когда мы пишем операторы repeat и while, нам совсем неважно знать, сколько раз они выполнят цикл. Тем не менее, существует много задач, для решения которых цикл нужно выполнить именно определенное количество раз. В этом случае удобно использовать оператор цикла for.

Задача: 200 раз напечатать слово ФУТБОЛ.

Попробуем сначала решить задачу при помощи оператора goto. Начнем с такого фрагмента:

metka: WriteLn('ФУТБОЛ');
            goto metka

Но здесь цикл будет повторяться бесконечно, а нам нужно только 200 раз. Мы уже видели, что для выхода из цикла оператор goto нужно включить в состав оператора if. Кроме этого нужна переменная, меняющая свое значение от одного выполнения цикла к следующему. Придумаем этой величине какое-нибудь имя, скажем i. Проще всего задачу решает такой фрагмент:

            i:=1;
metka:  WriteLn('
ФУТБОЛ');
            i:=i+1;                          {
увеличение i на 1}
            if  i<=200 then goto metka

END.

Здесь i вначале равно 1, но к каждому следующему выполнению цикла оно увеличивается на 1. В первый раз выполняя оператор if, компьютер проверяет условие 2<=200 и найдя его истинным, выполняет оператор goto metka. Во второй раз проверяется условие 3<=200 и т.д. В 199-й раз компьютер проверяет условие 200<=200 и найдя его истинным, выполняет оператор goto metka. В 200-й раз компьютер проверяет условие 201<=200 и найдя его ложным, выходит из цикла.

В нашем фрагменте "полезную" работу выполняет только одна строка из четырех - WriteLn('ФУТБОЛ'). Остальные три строки заняты тем, что обеспечивают выполнение "полезной" строки ровно 200 раз. Нам пришлось организовать специальную переменную, значение которой в каждый момент выполнения программы говорит о том, в какой раз выполняется цикл. Переменная с таким свойством называется счетчиком циклов.

А теперь запишем программу полностью, правда, несколько усложнив ее, так чтобы логика ее выполнения полностью соответствовала логике выполнения программы с оператором for, которую я привожу параллельно и поясняю немедленно.

LABEL             m1,m2;
VAR     i : Integer;
BEGIN i:=1;
    m1:   if  i>200 then goto m2;
            WriteLn('
ФУТБОЛ');
            i:=i+1;  
            goto m1;

     m2:
END.


VAR i : Integer;
BEGIN
            for i:=1 to 200 do 
                        WriteLn('
ФУТБОЛ')



END.

Слово for читается "фо", переводится "для". Слово to читается "ту", переводится "до". Слово do читается  "ду", переводится "делай". Конструкция for i:=1 to 200 do по-русски читается так: Для i, изменяющегося от 1 до 200, делай оператор, стоящий после слова do. Смысл повторения здесь такой же, как и в операторе while. Оператор, стоящий после do, тоже, конечно, может быть составным.

Синтаксис оператора for:

FOR   имя  :=  выражение1   TO выражение2   DO оператор

Пример записи: for j:=a+b to 2*s do k:=k+1.

              Пояснения к синтаксической схеме:

имя - это имя произвольной переменной порядкового типа (см. 5.7 и 12.8), в частности целочисленной, называемой переменной цикла,

выражение1 и выражение2 - произвольные выражения порядкового типа, в частности - целого.

              Работа оператора for:

Прежде всего вычисляется выражение1, и переменной цикла (пусть это будет i) присваивается его значение. Затем вычисляется выражение2 и сравнивается с i. Если i > выражения2, то оператор for завершает свою работу, так ничего и не сделав. В противном случае выполняется оператор, стоящий после do. После выполнения этого оператора значение i увеличивается на 1 и снова сравнивается с выражением2. Если i > выражения2, то оператор for завершает свою работу, иначе снова выполняется оператор, стоящий после do, снова i увеличивается на 1 и т.д.

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

10 ФУТБОЛ   11 ФУТБОЛ   12 ФУТБОЛ . . . . . 200 ФУТБОЛ

Вот программа:

VAR i : Integer;
BEGIN
     for i:=10 to 200 do 
          begin      Write(i);
                        Write('
ФУТБОЛ   ')
          end
END.

Здесь после do стоит уже составной оператор.

Можно ли удобно использовать оператор for для печати такой информации?:

 100 ФУТБОЛ   99 ФУТБОЛ   98 ФУТБОЛ . . . . . 40 ФУТБОЛ

Вполне, так как оператор for позволяет не только увеличивать, но и уменьшать переменную цикла. Однако, для этого нельзя писать   for i:=100 to 40, а нужно писать for i:=100 downto 40. Читается downto - "'даунту", переводится буквально "вниз до". Соответственно, для выхода из цикла должно быть истинным не условие   i > выражения2, а условие   i < выражения2.

Вот объединенный синтаксис оператора for:

FOR     имя    :=    выражение1     TO  DOWNTO     выражение2     DO    оператор

 

Вертикальная черта    между двумя элементами конструкции «TO и DOWNTO»  говорит о том, что в конструкции должен присутствовать один из этих элементов.

Задание 42: Напечатать с помощью оператора for:

Прямой счет:  -5 -4 -3 -2 -1 0 1 2 3 4 5 Обратный счет: 5 4 3 2 1 0 -1 -2 -3 -4 -5 Конец счета

 


 

Скачано с www.znanio.ru

Оператор цикла for Выполняя программу печати чисел 3 5 7 9 , оператор repeat выполнил цикл 4 раза

Оператор цикла for Выполняя программу печати чисел 3 5 7 9 , оператор repeat выполнил цикл 4 раза

Пример записи : for j:=a+b to 2*s do k:=k+1

Пример записи : for j:=a+b to 2*s do k:=k+1
Материалы на данной страницы взяты из открытых истончиков либо размещены пользователем в соответствии с договором-офертой сайта. Вы можете сообщить о нарушении.
03.05.2020
Посмотрите также: