четверг, 15 сентября 2011 г.

Использование оператора FOR - LOOP

Вчера я познакомил вас с классом StringBuilder языка Visual Basic. Это была первая статья в двухнедельной серии публикаций по программированию. Сегодня, а точнее – прямо сейчас будет опубликована уже вторая статья в этой серии. Посвящена она будет языку PL/SQL и использованию оператора FOR-LOOP (цикл со счетчиком).

Что-то эта неделя очень активно проходит – стараюсь публиковать по две статьи в день (чтобы наверстать упущенное время). Правда это довольно сильно вытягивает силы, посмотрим – к чему приведет такой марафон. Думаю – что стоит с такой частой публикацией статей завязывать, а то и совсем публиковать могу перестать.

Использование оператора FOR-LOOP:

Количество итераций (повторений) цикла FOR-LOOP указывается с помощью диапазона целых чисел. То есть, в отличие от других циклов – количество повторений данного цикла должно быть известно еще до входа в него. Диапазон задается с помощью специального оператора диапазона (нижнее двоеточие – «..»). Границы диапазона вычисляются лишь единожды – при первом входе в цикл FOR (после этого границы не пересматриваются). Если и нижняя и верхняя границы диапазона равны друг другу – то цикл выполняется лишь один раз.

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

BEGIN
  FOR i IN 1 .. 10
    LOOP
      dbms_output.put_line('Значение i = '||to_char(i));
    END LOOP;
END;

В результате получится следующее:

Значение i = 1
Значение i = 2
Значение i = 3
Значение i = 4
Значение i = 5
Значение i = 6
Значение i = 7
Значение i = 8
Значение i = 9
Значение i = 10

По умолчанию, пои выполнении цикла значения счетчика увеличиваются (от минимальной границы до максимальной). Но иногда необходимо чтобы счетчик не увеличивался – а уменьшался от максимального до минимального значения. Сделать это можно с помощью ключевого слова REVERSE (и данный счетчик будет работать в обратом направлении). Но – границы диапазона надо располагать точно также (как и в первом варианте – сначала минимальная и, через двоеточие, максимальная граница):

Для понимания ключевого слова REVERSE воспользуюсь тем же самым примером (что представлен выше), но результат его работы будет другим:

BEGIN
  FOR i IN REVERSE 1 .. 10
    LOOP
      dbms_output.put_line('Значение i = '||to_char(i));
    END LOOP;
END;

В результате получится следующее:

Значение i = 10
Значение i = 9
Значение i = 8
Значение i = 7
Значение i = 6
Значение i = 5
Значение i = 4
Значение i = 3
Значение i = 2
Значение i = 1

В самом теле цикла можно ссылаться на переменную-счетчик (как я например это делаю я). Но присваивать какие-либо значения этому счетчику – нельзя, если вы так сделаете – это приведет к возникновению ошибки.

На этом описание работы с циклом FOR-LOOP я закончу. В следующий раз (наверно – это будет на этой неделе, а может быть – в начале следующей) я расскажу о работе с операторами GOTO и NULL. И на этом закончу рассказ о управляющих конструкциях языка PL/SQL. И перейду уже к новой теме (пока не буду рассказывать к какой).

Комментариев нет:

Отправить комментарий