|
Использование циклических структур.Операторы цикла с предусловием и с постусловием При разработке алгоритмов большинства задач возникает необходимость повторения какого-либо оператора или последовательности операторов. Для организации таких повторов (циклов) при записи алгоритмов на Turbo Pascal используются три разновидности операторов цикла: ¾ с параметром, ¾ с предусловием, ¾ с постусловием. Оператор цикла с предусловием Оператор цикла с предусловием имеет вид: while A do S; где А – выражение логического типа; S – простой или составной оператор. Выполнение оператора начинается с вычисления значения выражения А. Если оно имеет значение true (истина), то выполняется оператор S. Затем выполнение оператора цикла повторяется до тех пор, пока значение выражения А не станет равным false (ложь). Тогда управление передается оператору, следующему за оператором цикла, а оператор S внутри цикла выполняться не будет. Если А ложно при первом входе в цикл, то оператор S не выполняется ни разу. Очевидно, что один из операторов, находящихся внутри цикла, должен изменять значение выражения А, так как иначе цикл будет повторяться бесконечно. Пример. Вычислить и вывести на экран значения аргумента х и функции у = х 2при изменении х от 0 до 1 с шагом 0.1 (этот пример был рассмотрен выше, но с использованием оператора цикла с предусловием). х:= 0; while х <= 1 do begin y:= sqr(x); write(x:5:2, у:5:2); х:= x + 0.1; end. Оператор цикла с постусловием Оператор цикла с постусловием имеет вид: repeat S 1; S 2;... SN until A; где S 1, S 2,…, SN – операторы тела цикла, A – выражение логического типа. Оператор цикла с постусловием начинается с выполнения операторов в теле цикла. Затем вычисляется значение логического выражения А, и, если получается истинное значение, то осуществляется выход из цикла. Если же значение А ложно, то выполнение операторов S 1, S 2, …, SN повторяется, а затем снова вычисляется выражение А. Следует отметить, что в отличие от цикла с предусловием выход из цикла с постусловием осуществляется при истинности выражения А.
Пример. Вычислить и вывести на экран значения аргумента х и функции у = х 2при изменении х от 0 до 1 с шагом 0.1. (Это пример, рассмотренный выше, но с использованием оператора цикла с постусловием). х:= 0; repeat у:=sqr(x); write(x:5:2, у:5:2); х:= х + 0.1 until x > 1;
Операторы цикла с пред- и постусловием применяются тогда, когда число повторений тела цикла заранее неизвестно. При этом тело оператора цикла с постусловием всегда будет выполняться хотя бы один раз, а тело оператора цикла с предусловием может не выполняться ни разу. Среди операторов цикла в Turbo Pascal оператор цикла с предусловием является наиболее универсальным. В теле цикла среди операторов может находиться и оператор цикла, такие циклы называются вложенными (внешний и внутренний циклы). При использовании вложенных циклов необходимо помнить, что тело внутреннего цикла должно находиться внутри внешнего. Пример выполнения задания 3 Вычислить значение функции двух переменных с использованием двойного оператора цикла: внешний оператор цикла с предусловием while, а внутренний – оператор цикла с постусловием. Значение переменных x и y изменяются соответственно от x нач до x кон с шагом h, и от y нач до y кон с шагом h, и вводятся с клавиатуры. Все переменные относятся к вещественному типу. Вывести на экран таблицу значений х, y, z. Примечание. В программе фиксируется значение одной из переменных (например, х нач) во внешнем цикле, затем во внутреннем цикле берется первое значение у начи для пары хнач, у начвычисляется значение z по заданной формуле, выводятся на экран значения х, у, z, далее у увеличивается на шаг hy. Внутренний цикл будет работать, пока у не станет больше у кон, затем выход во внешний цикл, увеличение х на шаг hx и т. Д. Двойной цикл закончится, когда х станет больше х кон.
рrogram Iab3; uses crt; var x, xn, xk, hx, y, yn, yk, hy, z:real; begin clrscr; writeln(¢Bвeдитe xn, xk, hx, yn, yk, hy ¢); readln(xn, xk, hx, yn, yk, hy); x:= xn; while x < xk + hx/ 2do begin у: =уп; repeat z:=sqrt(x * x * x + l)*exp(x)/(y * y + 2); writeln (¢ х =¢, x:6:2,¢ y =¢, y:6:2,¢ z =¢, z:6:2); y:= y + hy until у > yk x:= x + hx; writeln; end; readkey; end.
Исходные данные:
Полученный результат:
Тема 4 Использование циклических структур. Оператор цикла с параметром Оператор цикла с параметромудобно использовать, когда необходимо выполнить оператор заранее известное число раз. Существует два варианта оператора цикла с параметром for к:= n 1to n 2do S; или for к:= п 1downto n 2do S; где к – параметр цикла; п 1и п 2 –выражения, задающие начальное и конечное значения параметра цикла соответственно; S –простой или составной оператор (тело цикла). Тип параметра цикла обязательно должен совпадать с типом начального и конечного значений цикла. Можно использовать любой из стандартных скалярных типов, кроме действительного. Шаг параметра цикла к при выполнении оператора цикла с параметром для целого типа равен 1 (для цикла to) и –1 (для цикла downto). Следует запомнить и то, что для обоих вариантов записи цикла с параметром справедливо: если начальное и конечное значения равны, то тело цикла (оператор S) выполнится один раз. Если в цикле необходимо выполнить несколько операторов, то пользуются составным оператором. Для оператора цикла с параметром имеются некоторые ограничения. ¾ Оператор цикла с параметром применяется, если число повторений тела цикла заранее известно. ¾ Войти в цикл можно только через его начало, а выйти – либо при достижениипараметром цикла его конечного значения, либо при выполнении оператора break, который прекращает выполнение цикла, причем следующим будет выполняться оператор, расположенный за циклом. ¾ Для каждого значения параметра цикл выполняется только 1 раз. ¾ Значения параметра цикла запрещено изменять операторами в теле цикла. Пример1. Вычислить сумму квадратов натуральных чисел с 1 до 10. S:= 0; for i:=1 to 10 do s:= s +sqr (i); Примечание. Произведение n последовательных натуральных чисел обозначают n! (произносится n факториал), то есть . Пример 2. Вычислить 8!. P:=1; for i:=2 to 8 do p:= p * i; Заметим так же, что параметр цикла может и не использоваться в теле цикла, так что основное его назначение – это управление числом повторений цикла. Пример 3 Значение y=x n, где n >=0 – целое, можно вычислить по следующему алгоритму: предварительно положить y =1, а затем n раз домножить это значение на x: Readln(n); Readln(x); y:=1; for i:=1 to n do y:= y * x; Как видно, здесь параметр цикла i служит лишь для того, чтобы тело цикла (оператор y:= y * x) выполнилось нужное число раз. Пример 4. Вычислить сумму . sum:= 0; for i:=1 to 12 do sum:= sum +(sqr (i)+1)/(i * i*i); Пример 5. Вычислить произведение . P:= 1; for i:=1 to 7 do p:= p*i /(i* i-2* i+5); В теле цикла с параметром среди операторов может находиться и оператор цикла, такие циклы называются вложенными (внешний и внутренний циклы). При использовании вложенных циклов необходимо помнить, что тело внутреннего цикла должно находиться внутри внешнего. Пример выполнения задания 4 Вычислить значение выражения . program lab4; uses crt; var c,p,sum:real; k,i:integer; begin p:=1; for k:=1 to 5 do begin sum:=0; a:=1; b:=1; for i:=1 to k do begin a:= a *2; {вычисляем 2 i } b:= b *I; {вычисляем i!} sum:= sum + a/b; {вычисляем сумму} end; p:= p *(sqr(k +2)+ sum; {вычисляем произведение} end; writeln(‘ p =’, p:0:2); readkey; end.
Тема 5 ЧТО ПРОИСХОДИТ ВО ВЗРОСЛОЙ ЖИЗНИ? Если вы все еще «неправильно» связаны с матерью, вы избегаете отделения и независимого взрослого существования... Живите по правилу: МАЛО ЛИ ЧТО НА СВЕТЕ СУЩЕСТВУЕТ? Я неслучайно подчеркиваю, что место в голове ограничено, а информации вокруг много, и что ваше право... Что делает отдел по эксплуатации и сопровождению ИС? Отвечает за сохранность данных (расписания копирования, копирование и пр.)... ЧТО И КАК ПИСАЛИ О МОДЕ В ЖУРНАЛАХ НАЧАЛА XX ВЕКА Первый номер журнала «Аполлон» за 1909 г. начинался, по сути, с программного заявления редакции журнала... Не нашли то, что искали? Воспользуйтесь поиском гугл на сайте:
|