Сдам Сам

ПОЛЕЗНОЕ


КАТЕГОРИИ







Использование циклических структур.





Операторы цикла с предусловием и с постусловием

При разработке алгоритмов большинства задач возникает необходимость повторения какого-либо оператора или последовательности операторов. Для организации таких повторов (циклов) при записи алгоритмов на 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.

 

Исходные данные:

 

x нач=1, x кон=3, hx =1,
y нач=2, y кон=6, hy =2.

 

Полученный результат:

 

x =1, y =2 z =0.64
x =1 y =4 z =0.21
x =1 y =6 z =0.10
     
x =2 y =2 z =3.69
x =2 y =4 z =1.23
x =2 y =6 z =0.58
     
x =3 y =2 z =17.71
x =3 y =4 z =5.90
x =3 y =6 z =2.81

 

Тема 4

Использование циклических структур.

Оператор цикла с параметром

Оператор цикла с параметромудобно использовать, когда необходимо выполнить оператор заранее известное число раз. Существует два варианта оператора цикла с параметром

for к:= n 1to n 2do S;

или

for к:= п 1downto n 2do S;

где к – параметр цикла;

пп 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 г. начинался, по сути, с программного заявления редакции журнала...

Живите по правилу: МАЛО ЛИ ЧТО НА СВЕТЕ СУЩЕСТВУЕТ? Я неслучайно подчеркиваю, что место в голове ограничено, а информации вокруг много, и что ваше право...





Не нашли то, что искали? Воспользуйтесь поиском гугл на сайте:


©2015- 2024 zdamsam.ru Размещенные материалы защищены законодательством РФ.