Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Оператори циклу




Структура повторення.

§ Оператор циклу з параметром

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

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

3. Ітераційні цикли.

4. Вкладені цикли.

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

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

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

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

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

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

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

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

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

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

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

Список літератори:

Т.В. Ковалюк «Основи програмування» - стор. 98 - 106.

Б.Г. Пекарський «Основи програмування» - стор.79 – 90.

В.В. Шищчук «Основи програмування на алгоритмічній мові Pascal»- стор. 53 – 67.

__________________________________________________________1. СТРУКТУРА ПОВТОРЕННЯ.

В розглянутих раніш програмах кожен оператор виконувався один або кілька разів. Для розв'язування таких задач недоцільно використовувати персональний комп'ютер, оскільки на складання та відлагоджування програми затрачується достатньо багато часу. Але для розв’язування деяких задач використання комп'ютера просто необхідне. В таких задачах доводиться виконувати обчислення за одними і тими ж залежностями, однак для різних значень величин, що є в цих залежностях. Такий процес називається циклічним. Групи операторів програми, виконання котрих повторюється неодноразово, називаються циклами.

Циклічна структура програми позволяє проводити багатократні повторення групи операторів при зміні одного чи кілька параметрів одночасно. Алгоритм циклічної структури повинен містити такі етапи:

- задання початкових значень змінних циклу;

- дії, що виконуються в ньому;

- модифікацію значень змінних циклу перед кожним новим його повторенням;

- перевірку умови продовження циклу і перехід на початок циклу чи вихід з циклу залежно від виконання умови.

Простим циклічним процесом може бути табулювання функції y=f(x) для xє [x0,xn] з кроком h. Цю задачу можна реалізувати за допомогою операторів присвоєння, умовного та безумовного переходів.

х:=x0;

2:y=…;

x:=x+xh;

if x<xn then goto 2;

В мові Паскаль є три можливості організувати циклічний процес – це оператори циклу з передумовою, з післяумовою та з параметром.

_______________________________________________________________ 2.ОПЕРАТОРИ ЦИКЛУ.

Оператори циклу використовуються для реалізації обчислень, що багаторазово повторюються.

 

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

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

ü Оператор циклу з лічильником – FOR.

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

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

Оператор циклу з лічильником – FOR – використовується у випадках, коли заздалегідь відома кількість повторень (ітерацій).

Є два види оператора циклу FOR: при збільшенні значення параметра, при зменшенні значення параметра.

§ при збільшенні значення параметра:

FOR <змінна> := <початкове значення> TO <кінцеве значення> DO <оператор>;

           
   
 
   
 
 


<змінна> — змінна, якій спочатку присвоюється початкове значення, виконує роль лічильника і при кожному повторенні збільшується на одиницю;

<початкове значення> та <кінцеве значення> — вирази, що визначають відповідно початкове та кінцеве значення параметра циклу;

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

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

Збільшення лічильника здійснюється автоматично, тобто на кожній ітерації циклу, неявно виконується оператор <лічильник>:=<лічильник>+1, а отже, цей оператор не потрібно записувати до тіла циклу в явному вигляді. Цикл з лічильником не завершить своєї роботи, якщо поточне значення лічильника буде більшим за кінцеве значення.
 

§ при зменшенні значення параметра:

FOR <лічильник>:=<початкове значення> DOWNTO <кінцеве значення> DO <оператор>;

 

Якщо початкове значення лічильника циклу буде меншим за кінцеве, то цикл for…downtо не виконується жодного разу. Якщо ці значення рівні, то цикл виконується лише один раз.

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

  Значення параметра в середині циклу змінювати не можна.

 

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

Використовуючи оператор циклу з параметром, треба враховувати такі правила:

1. заборонено змінювати всередині циклу параметр циклу, вираз1, вираз2;

2. заборонено входити в цикл, оминувши оператор for, оскільки значення параметру циклу, вираз1 і вираз2 будуть невизначеними;

3. цикл не виконується взагалі, якщо початкове значення більше(менше) від кінцевого;

4. після закінчення виконання циклу значення параметру циклу не визначене і не може бути використане для подальших обчислень;

5. після службового слова do може стояти лише один оператор; якщо в циклі треба виконати групу операторів, то їх беруть в операторні дужки begin-end;

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

П р и к л а д:

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

PROGRAM stepin;

USES Crt;

VAR x,y:REAL;

a,i:INTEGER;

BEGIN

CLRSCR;

WRITE('Введiть основу ');

READLN(x);

WRITE('Введiть показник степеня ');

READLN(a);

y:=1;

FOR i:=1 TO a DO

y:=y*x;

WRITELN('Число ',x:12:6,' в ',a,' степені становить',y:12:6);

END.

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

Початкове значення аргументу хпоч=1; кінцеве значення хкінц=10; крок зміни аргументу h= 1;

В даному прикладі використовується оператор циклу FOR, тому що заздалегідь відома кількість ітерацій циклу і збільшення параметру циклу (аргументу х) відбувається на одиницю.

Лістинг програми.

Program tabul; Var x:byte; Y:real; Begin For x:=1 to 10 do Begin If x<5 then Y:=cos(sqr(x+1) else y:=Sqrt(Sqr(x)+1); Writeln (“x=”, x:3, “ ”, “y=”, y:5:2); End;

End.

Оператор циклу з передумовою 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, але перевірка умови виконується після виконання тіла циклу. Оператор циклу з післяумовою виконується в тому випадку, коли тіло циклу потрібно виконати не менше одного разу і заздалегідь невідома кількість повторень.

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

       
   
 





Поделиться с друзьями:


Дата добавления: 2014-01-07; Просмотров: 3032; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.062 сек.