Цикл с постусловием - цикл 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 Until n>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 грамма.
Решение: Program List; 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. 2.9. Оператор выбора варианта Условный оператор позволяет при выполнении программы выбирать одно из двух возможных действий. Если же необходимо сделать много взаимоисключающих проверок, то удобнее воспользоваться оператором выбора варианта. Пусть перед нами стоит следующая задача. Пример. Числами от 1 до 7 пронумерованы дни недели от понедельника до воскресенья. Необходимо преобразовать числовое значение соответствующего дня недели в его название и вывести на печать. Задача легко решается с использованием последовательности условных операторов: If day =1 then writeln(‘понедельник’) else If day =2 then writeln(‘вторник’) else …………. …………. If day =7 then writeln(‘воскресенье’); Вместе с тем в языке программирования Паскаль имеется оператор, позволяющий проще, короче, и нагляднее записать решение этой задачи. Он называется оператором выбора и дает возможность выбрать для выполнения один из произвольного числа операторов, входящих в его состав. Теперь решение будет таким: Case day of 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; {of case} Другой вид оператора выбора: Case селектор of Метка1:оператор1; …………………………. Метка n: оператор N; Else оператор M; End; {of case}
Читайте также: Воспользуйтесь поиском по сайту: ©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...
|