Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Algoritmizatsia_i_programmirovanie_ShPOR.doc
Скачиваний:
6
Добавлен:
26.04.2019
Размер:
376.83 Кб
Скачать

23.Циклы в Pascal.

Цикл – это организованное повторение некоторой последовательности операторов. Реализовать его в Pascal можно следующим образом:

…..

Label Me1,Me2;

….

Me1 : P1;

P2;

.

.

Pn;

Goto Me1;

….

Me2 : Pk;

Me1 и Me2 – метки, которые описываются в разделе объявлений программы. Оператор перехода Goto Me1; передает управление на оператор, перед которым стоит метка Me1: . Для того, чтобы приведенный алгоритм не длился бесконечно, требуется с помощью одного из повторяемых операторов организовать условие выхода из цикла. Для данного примера, можно записать оператор Pn, как:

If <условие> Goto Me2;

Такой способ организации циклов характерен для языков Бейсик и Фортран. В языке Pascal для организации циклов и выхода из них используются операторы While, Repeat, For, а использование оператора Goto считается дурным тоном.

Оператор Repeat …Until (цикл с постусловием).

Этот оператор организует проверку выхода из цикла после каждого выполнения всех повторяемых операторов:

…..

Repeat

P1:

P2;

.

Pn;

Until B1;

…..

Здесь B1 – условие, записанное с помощью оператора логического типа.

Оператор Repeat организует выполнение повторяемых операций хотя бы один раз и хотя бы один повторяемый оператор должен влиять на значение B1. Это отслеживается на этапе трансляции и, если такого влияния нет, выдается сообщение об ошибке.

Оператор While …do (цикл с предусловием).

Иногда удобнее организовать проверку условия выхода из цикла перед выполнением первого повторяемого оператора. Это осуществляется с помощью оператора цикла While …do:

While B1 do

Begin

P1;

P2;

Pn;

End;

……

Если повторяется только один оператор, то скобки begin …end; можно не писать. Как и в операторе Repeat, хотя бы один повторяемый оператор должен влиять на значение условия B1.

Оператор for …do (цикл с параметром).

Часто встречается ситуация, когда переменная цикла относится к целому типу и ее значение изменяется на единицу. В таком случае используется оператор for …do:

…..

for i:=m to n do

begin

P1;

P2;

….

Pn;

end;

……

Здесь переменные i,m,nцелого типа (m и n могут быть арифметическими выражениями целого типа). При m>n операторы P1,P2,...,Pn не выполняются ни разу. Если повторяется только один оператор, то скобки begin …end можно опустить.

Для организации цикла, в котором переменная уменьшается на единицу, существует разновидность оператора for:

For i:=m downto n do

Где m>=n.

Операторы цикла во многих случаях (но не во всех) взаимозаменяемы. Например, пусть нам необходимо посчитать сумму чисел от 1 до 10.

Используем Repeat

s:=0;

i:=1;

repeat

s:=s+i;

inc(i);

until i>10;

Используем While

s:=0;i:=1;

while (i<=10) do

begin

s:=s+i;

inc(i);

end;

3. Используем For

s:=0;

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

В данном случае использование оператора For является предпочтительным, но так бывает не всегда. Оператор For всегда можно заменить операторами Repeat и While, в то время как заменить операторы Repeat и While на For в некоторых случаях достаточно проблематично (приходится использовать специальные конструкции прерывающие работу цикла).

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]