Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Паскаль-конспект ИНФОРМАТИКА.doc
Скачиваний:
59
Добавлен:
09.04.2015
Размер:
639.49 Кб
Скачать

1.8.4. Цикл с постусловием - цикл repeat

Он имеет вид:

REPEATоператор1;

оператор2;

оператор3;

……………

оператор n

UNTILусловие;

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

Заметим, что если в операторе WHILEусловие проверяется до очередного выполнения цикла, то в оператореREPEAT- после очередного выполнения.

Таким образом, оператор REPEAT- оператор с постусловием) всегда выполняется, по крайней мере, 1 раз, в то время как операторWHILE(оператор с постусловием) может не выполняться ни разу.

Еще одна особенность цикла REPEAT- в нем разрешается использовать произвольное число операторов.

Пример (тот же).

Repeat

Writeln(‘n=’,n,’sqr(n)’,sqr(n),’sqrt(n)’,sqrt(n));

N: =N+1

Untiln>100;

Когда переменная NUMBERпринимает последовательно значения 1,2,…,100, значение условияN>100 остается ложным и для них цикл выполняется (UNTIL- до тех пор, пока не). Как только переменнаяNUMBERпринимает значение 101, то условиеN>100 становится истинным (101>100) и выполнение цикла прекращается.

Заметьте, что при использовании как цикла WHILE, так и циклаREPEAT.

Необходимо принудительно увеличить значение переменной N. Если этого не делать, то цикл никогда не завершится, т.к. переменнаяNтак и остается равным единице. УсловиеN<=100 никогда не станет ложным, а условиеN>100 никогда не станет истинным. В результате оба цикла будут выполняться бесконечно долго. В этом случае говорят, что программа зацикливается. Оба этих цикла применяются, когда число повторений неизвестно(хотя это число можно сосчитать).

Пример. Лист бумаги разрезан пополам. Одну из полученных половинок снова делят пополам и т.д. Сколько понадобится делений, чтобы получить частицы размером с атом? Масса листа 1 грамм(М), масса атома 1Е-24 грамма.

Решение:

ProgramList;

Var m: real;

I: integer;

Begin

I:=1;m:=1;

While m>1E-24 do

Begin

M:=m/2;

I:=I+1;

End;

Writeln(‘I=’,I,’ делений’);

Writeln;

End.

1.9. Оператор выбора варианта

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

Пусть перед нами стоит следующая задача.

Пример. Числами от 1 до 7 пронумерованы дни недели от понедельника до воскресенья. Необходимо преобразовать числовое значение соответствующего дня недели в его название и вывести на печать.

Задача легко решается с использованием последовательности условных операторов:

If day =1 then writeln(‘понедельник’) else

If day =2 then writeln(‘вторник’) else

………….

………….

If day =7 then writeln(‘воскресенье’);

Вместе с тем в языке программирования Паскаль имеется оператор, позволяющий проще, короче, и нагляднее записать решение этой задачи. Он называется оператором выбора и дает возможность выбрать для выполнения один из произвольного числа операторов, входящих в его состав. Теперь решение будет таким:

Casedayof

1: writeln(‘понедельник’);

2: writeln(‘вторник’) ;

3: ………………….

……………………..

7: writeln(‘воскр.’);

else writeln(‘ошибка….’);

end;

Если переменная dayпринимает значение 1, то выполняется оператор, перед которым стоит 1:. Еслиdayравно 2, то выполняется оператор, перед которым стоит 2: и т.д. Если же переменная принимает значение вне диапазона1…7, скажем 0 или 8, то выполняется следующий оператор.

Общий вид оператора выбора варианта:

Caseселекторof

метка1:оператор1;

…………………….

метка n: операторN;

End; {ofcase}

Другой вид оператора выбора:

Caseселекторof

Метка1:оператор1;

………………………….

Метка n: операторN;

Else оператор M;

End; {of case}