Студопедия

КАТЕГОРИИ:


Архитектура-(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. Общие черты и различия циклических операторов




 

Поскольку алгоритмы с циклической структурой применяются для решения почти любой серьёзной задачи, то в языке Pascal для реализации циклов предусмотрено 3 различных оператора. С одним из них – оператором For – мы познакомились на прошлом занятии. Теперь давайте познакомимся с двумя оставшимися – операторами While и Repeat.

 

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

 

while логическое условие do

 

тело цикла

 

Если расшифровать эту надпись простыми словами, оператор while имеет следующий смысл:

 

Делать (do) что-то - тело цикла, пока (while) будет выполняться логическое условие

 

Например, пока i<=10, будем прибавлять к числу a пятёрку:

 

i:=1;

 

while i<=10 do

 

begin

 

a:=a+5;

 

inc(i);//функция inc увеличивает значение i на 1 (i:=i+1)

 

end;

 

Как видим, мы сами задаём, как будет изменять наш счётчик цикла i. Причём совершенно необязательно, чтобы он изменялся ровно на 1. Например, мы можем задать шаг счётчика цикла (его изменение) равным 0,5 или 4.

 

Изменение в теле цикла счётчика цикла обязательно, иначе цикл будет выполняться бесконечно (в отличие от оператора For, при использовании которого компилятор сам автоматически прибавляет к счётчику цикла по единице (в случае For k:=x to y, если x<y) или убавляет на единицу (в случае For k:=y down to x, если x<y)). Итак, важная особенность применения операторов while и repeat заключается в необходимости следить за счётчиком цикла, чтобы в итоге выйти из цикла.

 

Кроме того, если оператор For можно использовать только в том случае, когда заранее или в процессе работы программы при подходе к циклу точно известно, сколько раз будет выполнен данный цикл, то операторы while и repeat можно использовать в любом случае, в том числе и вместо цикла с For.

 

Например, цикл

 

For k:=4 to 6 do sum:=sum+3

 

можно записать с помощью оператора while следующим образом:

 

k:=4;

 

while k<=6 do

 

begin

 

sum:=sum+3;

 

k:=k+1;

 

end;

 

Оба этих цикла будут выполнены 3 раза.

 

Также для задания циклической структуры используется и оператор Repeat:

 

Repeat

 

тело цикла

 

until логическое условие

 

Этот оператор можно трактовать следующим образом:

 

повторяем (repeat) что-то (тело цикла), пока (until) логическое условие не перестанет выполняться

 

Давайте посмотрим на фрагмент программы, представленный выше:

 

k:=4;

 

while k<=6 do

 

begin

 

sum:=sum+3;

 

k:=k+1;

 

end;

 

и запишем его с помощью оператора repeat:

 

k:=4;

 

repeat

 

sum:=sum+3;

 

k:=k+1

 

untilk>6

 

Заметьте, что операторы whileи repeat имеют противоположные задания условий: в случае while наше условие k<=6 (пока kменьше или равно 6), а в случае применения оператора repeatэто условие будет обратным: k>6 (до тех пор, пока k не станет больше 6).

 

Кроме этого, в операторе repeatнет необходимости ставить операторные скобки begin-end, так как тело цикла чётко ограничивается словами repeat-until и перед until «;» необязательна.

 

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

 

i:=7

 

while i>7 do

 

тело цикла;

 

i:=i-0.3;

 

end;

 

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

 

i:=7;

 

repeat

 

тело цикла;

 

i:=i-0.3;

 

until i<7

 

Во втором случае тело цикла выполнится 1 раз, так проверка (until i<7) производится уже после выполнения тела цикла.

 

Для лучшего понимания наших операторов давайте напишем одну простую программу, которая возводит введённое пользователем число xв степень, пока это число не станет большим некоторого второго введённого числа y(x2, x3, x4и т.д.):

 

Program Pr_17_18;

 

Var

 

x,y,z: real;

 

Begin

 

Writeln(‘Введитеx,y:’);

 

Readln(x,y);

 

z:=x;

 

while z<y do

 

begin

 

writeln(z);

 

z:=z*x;

 

end;

 

Readln;

 

End.

 

Если мы введём x=2, y=15, то программа выведет числа: 2, 4, 8.

 




Поделиться с друзьями:


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


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



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




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