Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Операторы циклов while и repeat-until

Декрементный цикл с параметром

 

Существует аналогичный вариант цикла for, который позволяет производить обработку не от меньшего к большему, а в противоположном направлении:

 

for i:= first downto last do <оператор>;

 

Счетчик i (переменная), верхняя граница first (переменная, константа или выражение) и нижняя граница last (переменная, константа или выражение) должны иметь эквивалентные порядковые типы. Если тип нижней или верхней границы не эквивалентен типу счетчика, а лишь совместим с ним, то осуществляется неявное приведение типов.

 

Цикл for-downto работает следующим образом:

 

1. переменной i присваивается значение first;

2. производится проверка условия, что i>=last;

3. если условие истинна, то выполняется <оператор>;

4. значение переменной i уменьшается на единицу;

5. пункты 2-4 выполняются до тех пор, пока i не станет меньше, чем last; как только это произошло, выполнение цикла прекращается, а управление передается следующему за ним оператору.

 

Если при этом

 

first < last, то цикл вообще не будет работать;

first = last, то цикл отработает один раз;

first > last, то цикл будет работать first-last+1 раз.

 

Замечание о неопределенности значения счетчика после окончания работы цикла справедливо и в этом случае.

 

 

Если заранее неизвестно, сколько раз необходимо выполнить тело цикла, то удобнее всего пользоваться циклом с предусловием (while) или циклом с постусловием (repeat-until).

 

Общий вид этих операторов таков:

 

while <условие_1> do <оператор>;

 

repeat <операторы> until <условие_2>;

 

Условие окончания цикла может быть выражено переменной, константой или выражением, имеющим логический тип.

 

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

 

Так же, как циклы for-to и for-downto, циклы while и repeat-until можно назвать в некотором смысле противоположными друг другу.

 

Последовательности действий при выполнении этих циклов таковы:

 

Для while: Для repeat-until:
1. Проверяется, истинно ли <условие_1>. 1. Выполняются <операторы>.
2. Если это так, то выполняется <оператор>. 2. Проверяется, ложно ли <условие_2>
3. Пункты 1 и 2 выполняются до тех пор, пока <условие_1> не станет ложным. 3. Пункты 1 и 2 выполняются до тех пор, пока <условие_2> не станет истинным.

 

Таким образом, если <условие_1> изначально ложно, то цикл while не выполнится ни разу. Если же <условие_2> изначально истинно, то цикл repeat-until выполнится один раз.

 

Пример. Дана программа вычисления суммы S первых 100 членов ряда: 1+2+3+...+100.

 

program W;

var k,s: integer;

begin

s:=0;

k:=1;

while k<=100 do begin

s:=s+k;

k:=k+1;

end;

writeln('сумма=',s)

end.

 

<== предыдущая лекция | следующая лекция ==>
Инкрементный цикл с параметром | Аналитическая геометрия на плоскости
Поделиться с друзьями:


Дата добавления: 2014-01-11; Просмотров: 662; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.008 сек.