Оператор циклу з передумовою WHILE 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Оператор циклу з передумовою WHILE



Цикл з передумовою використовується у випадках, коли невідома кількість повторень циклу і тіло циклу може ні разу не використовуватися.

Дія оператора полягає в тому, що тіло циклу виконується до тих пір, поки значення логічного виразу є істиним (true). Як тільки значення умови стане хибне, відбувається вихід з циклу і виконуватиметься наступний оператор.

 

Синтаксис оператора циклу з передумовою:

while <умова продовження циклу> do <оператор>;

 


Тут whilе <умова продовження циклу>

do є заголовком циклу,

<оператор> його тілом, тілом циклу може бути операторним блоком і містити в собі будь-які оператори: циклу, вибору, присвоєння тощо.

Оператор циклу з передумовою виконується за таким алгоритмом.

Спочатку обчислюється умова продовження циклу, що записана в його заголовку. Якщо вона істинна, то виконується тіло циклу, інакше виконання циклу припиняється. Після виконання тіла циклу буде знову перевірена умова його продовження. Чер­гування виконання тіла циклу та перевірки умови продовження триває доти, до­ки умова не стане хибною.

Згідно з синтаксисом оператора while тіло циклу є одним оператором. Для того щоб в циклі виконувалося декілька операторів, їх треба оточити операторними дужками begin...end.

Оператору циклу з передумовою відповідає блок-схема.

П р и к л а д: Протабулювати функцію y = Sin x на проміжку [0; 3,1], з кроком h=0,1 і обчислити середнє арифметичне (s1) значень функції більших, ніж 0,1 і менших, ніж 0,6.

Program find;

Uses crt;

Var x,y,s,s1,h,xk:real;

n:integer;

Begin

Clrscr;

x:=0; xk:=3.1; h:=0.1;

s:=0; n:=0;

while x<=xk + h/2 do

Begin

y:=Sin(x);

Writeln (x:3:1, y:6:2);

If (y>0.1) and (y<0.6) then

Begin

s:=s+y; n:=n+1 end;

x:=x+h;

End;

If n>0 then

Begin

s1:=s/n;

writeln (‘Середнє =’, s1)

end

else writeln (‘Таких значень немає n=0’);

readln

end.

П р и к л а д. Роздрукувати символи латинського алфавіту

а) у звичайному порядку: .......................... s:=’a’; while s<=’z’ do begin write(s); s:=succ(s); end; …………………… б) у зворотньому порядку: .......................... s:=’z’; while s>=’a’ do begin write(s); s:=pred(s); end; ……………………

Оператор циклу з післяумовою REPEAT

Як і цикл із передумовою, цикл із післяумовою застосовують тоді, коли кількість ітерацій циклу є невідомою до початку його виконання. Умова завершення циклу з післяумовою записується після тіла циклу та вперше перевіряється після вико­нання операторів тіла. А отже, цикл з післяумовою за будь-яких обставин буде ви­конано принаймні один раз - в цьому і полягає його головна відмінність від цик­лу з передумовою.

Оператор циклу REPEAT аналогічний оператору WHILE, але перевірка умови виконується після виконання тіла циклу. Оператор циклу з післяумовою виконується в тому випадку, коли тіло циклу потрібно виконати не менше одного разу і заздалегідь невідома кількість повторень.

Синтаксис оператора циклу з післяумовою такий:

       
   
 


Repeat

<оператор1>;... <оператор N>;

until <умова завершення циклу>;

       
   
 


Тут repeat, until - зарезервовані слова,

<оператор1>;...<операторN>; тіло циклу;

<умова завершення циклу> деякий вираз логічного типу.

Тіло циклу складають оператори, розміщені між ключовими словами repeat та until. Операторні дужки begin … end в описі циклу не використовуються.

Оператор циклу з післяумовою працює за таким алгоритмом.

Спочатку вико­нуються оператори, що входять до складу тіла циклу. Потім обчислюється умова завершення циклу. Якщо вона хибна, тіло циклу виконується ще раз, якщо результат «істинна» завершує свою роботу, і виходить із циклу.

Зауважимо, що параметри циклу з післяумовою, як і циклу з передумовою, повинні змінюватись під час його виконання так, щоб не трапилось «зациклення».

Для того щоб зрозуміти різницю між операторами циклу While і Repeat, переглянемо фрагмент програми, яка вираховує степінь числа 3 в діапазоні між 1 і 300

 

Цикл While a:=3; while a<300 do begin writeln (a); a:=a*3 end; Цикл Repeat a:=3; repeat writeln (a); a:=a*3 until a>=300

 

П р и к л а д: Розробити програму табулювання функції.

h.

Значення аргументу х змінюється в діапазоні від а до b з постійним кроком h.

Program cycl;

Var a,b,c,h,x,y:real;

Begin

Writeln (“Введіть мінімальне і максимальне значення аргументу A і B”);

Readln (A, B);

Writeln (“Введіть значення параметра С”);

Readln (“Введіть значення кроку”);

Readln (h);

X:=A;

Repeat

If x>=c then y:=((1+x)/(1-x)+Exp(-x)

else y:=((1+x)/(1-x)+Cos(x/2);

Writeln (“x=”, x:4:2, “,”y=”, y:4:2);

X:=x+h; {збільшуємо х на h }

Until x>b; {перевіряємо умову виходу з циклу}

End.

 

ІТЕРАЦІЙНІ ЦИКЛИ.

В деяких задачах необхідно знайти послідовність значень x0, x1,…xn. Кожне наступне значення послідовності обчислюється через попереднє. Цикли, що реалізують таку послідовність наближень називаються ітераційними. Ітераційний цикл закінчується коли не виконується деяка умова.

П р и к л а д. Обчислення суми ряду , yn= !. Yn= yn-1*pn,

Pn=-x2/((2n-1)*2n); виконувати поки yn<= ;

Program ryad;

Var

X,yn,pn,s,eps:real;

n:integer;

begin

read(x,eps);

s:=0;yn:=1;n:=0;

while abs(yn)>=eps do

begin

s:=s+yn;n:=n+1;

pn:=-sqr(x)/(2*n*(2*n-1));

yn:=yn*pn;

end;

writeln(s);

end.

ВКЛАДЕНІ ЦИКЛИ.

Тілом циклу може бути знову циклічна структура. Такі цикли називають вкладеними. Цикл, що містить у собі інший цикл, називається зовнішним, а цикл, що міститься у тілі іншого циклу- внутрішнім. Внутріші та зовнішні цикли можуть бути циклами з параметром, постумовою та передумовою. Вкладені цикли характеризуються рівнями вкладення, зовнішній цикл має рівень –0, внутрішній –1. Параметри циклів у випадку вкладених циклів змінюються так: спочатку змінюється параметр внутрішнього циклу, набуаючи всіх своїх значень. Потім зовнішній цикл змінить значення на один крок і знову параметр внутрішнього циклу набуде всіх значень. Так триває доти, поки параметр зовнішнього циклу не набуде всіх своїх значень.

П р и к л а д. Відомо, що сума квадратів a та b катетів прямокутного трикутника дорівнює квадратові гіпотенузи c:

а2 + b2 = c2.

Трійка чисел, котра задовольняє таку рівність, називається "піфагоровими" числами. Скласти програму визначення "піфагорових" чисел в діапазоні від 1 до 100.

PROGRAM Pifagorovi_chysla;

USES crt;

CONST n=100;

VAR a,b,c,count,cx:LONGINT;

wait:CHAR;

BEGIN

CLRSCR;

WRITELN(' Пiфагоровi числа');

count:=0;

FOR a:=1 TO n DO

FOR b:=a TO n DO

BEGIN

cx:=a*a+b*b;

c:=1;

WHILE (c*c<=cx) DO

BEGIN

IF c*c=cx THEN BEGIN

count:=count+1;

WRITELN('a=',a:5,' b=',b:5,' c=',c:5);

END; {if}

c:=c+1;

END; {while}

END; {for b}

WRITELN;

WRITE('В діапазоні від 1 до ',n:5,' знаходиться ');

WRITELN(count:4,' трiйки піфагорових чисел');

END. {program}

Використання операторів циклу дозволяє складати різноманітні і достатньо складні програми.

Умова задачі. Знайти суму всіх натуральних чисел від 1 до 100.


Program Example_1;

Uses crt; Var Sum, i: integer; Begin Clrscr; Sum:= 0; For i:= 1 to 100 do Sum:= Sum + i; Writeln(‘Sum = ‘, Sum); Readkey; End.

Умова задачі. Перевірка коректності введення. Дано три числа, що задають величини кутів трикутника. Визначити, чи можна побудувати трикутник, що має задані кути. Якщо ні, примусити користувача ввести інші дані.

Program Example_2; Uses crt; Var a,b,c: real; Begin Clrscr; Repeat Write (‘Введіть довжини сторін трикутника: ’); Readln(a,b,c); Until (a>0) and (b>0) and (c>0) and (a+b+c)=180; End.

Умова задачі. Дано натуральне число N. Визначити кількість цифр в числі.

Program Example_3; Uses crt; Var N: longint; Counter: integer; Begin Clrscr; Write (‘Введіть число: ’); Readln(N); Counter:= 0; While N > 0 do Begin Counter:=Counter+1; {Підрахунок кількості цифр} N:=N div 10; {Відкидання останньої цифри} End; Writeln(‘Кількість цифр у заданому числі дорівнює’, N); Readkey; End.

Контрольні запитання:

1. Що таке цикл і як він працює?

2. Які види циклів існують і чим вони відрізняються?

3. Що таке цикл з передумовою і післяумовою? Чим вони відрізняються?

4. Які різновиди циклу FOR існують?

5. Що таке тіло циклу? Коли відбувається вихід з нього?

Домашні самостійні завдання:

1. Скласти блок-схему та написати програму на мові Pascal:

2. Знайти суму всіх натуральних чисел від 1 до 100.

3. Перевірка коректності введення. Дано три числа, що задають величини кутів трикутника. Визначити, чи можна побудувати трикутник, що має задані кути. Якщо ні, примусити користувача ввести інші дані.

4. Дано натуральне число N. Визначити кількість цифр в числі.

 

Лабораторнаробота № 9



Поделиться:


Последнее изменение этой страницы: 2016-09-13; просмотров: 398; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.117.107.90 (0.027 с.)