Що таке тіло цикл

Що таке тіло цикл thumbnail

Мова програмування Pascal

Вивчаємо Pascal самостійно

Що таке тіло цикл

Урок 7. Цикли

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

Цикли бувають арифметичні та ітеративні. В арифметичних циклах число повторень визначається на основі зміни параметра циклу; в ітеративних циклах – цикл повторюється доти, доки не буде виконана умова виходу з циклу.

В мові Паскаль є три спеціальні оператори організації циклів: WHILE, REPEAT та FOR.

Циклічними програмами називають програми, в яких реалізовано команди циклу.У Паскалі передбачено три різновиди операторів циклу: цикл із передумовою, цикл з післяумовою, цикл із лічильником (із покроковою зміною аргументу). Також реалізована робота із вкладеними циклами. Вкладені цик­ли – циклічні процеси, що допускають укладеність одних циклів в інші.Цикл із передумовою (або цикл-«поки») – це цикл, у якому тіло циклу виконується тільки у разі виконання умови, заданої перед тілом циклу. Якщо умова стає невірною, то робота циклу припиняється і керування передається оператору, наступному за оператором циклу.На мові Паскаль оператор циклу з перед­умовою ще називається «циклом While-Do».

WHILE <умова> DO <оператор>;Приклад: обчислення суми перших 100 натуральних чисел методом послідовного додавання.m:=1; S: =0;

WHILE m<=100 DO

begin

S:=S+m;

m:=m+1;

end;

Приклад. Вивести таблицю чисел від 20 до 30, їхні квадрати та куби за допомогою команди можна while так:

i := 20;

while i <= 30 do

begin

writeln(i:4, i*i:6, i*i:8);

i :=i+1

end;

Приклад. Визначити дійсне додатне число а, для якого виконується співвідношення а/2=0 в комп’ютерній арифметиці дійсних чисел. Таке число характеризує нижню додатну межу типу даних real.

program MinRealNumber;

uses Crt;

var a : real;

begin

clrscr;

a := 1;

while a/2>0 do a := a/2;

writeln(‘a =’, a); {Відповідь: а = 2.9Е-39}

readln

end.

Цикл із післяумовою (або цикл-«до») – це цикл, у якому тіло циклу виконується доти, поки умова, задана після тіла циклу, не стане правильною. Якщо умова стає правильною, то робота циклу припиняється й управління передається оператору, наступному за оператором циклу.На мові Паскаль оператор циклу з після­умовою ще називається «цикл Repeat-Until».

REPEAT <оператор> UNTIL <умова>;Приклад: обчислення суми перших 100 натуральних чисел методом послідовного додавання.

m:= 0; S: = 0;

REPEAT

m:=m +1;

S:=S+m;

UNTIL m >= 100;

Цикл із лічильником (із покроковою зміною аргумен­ту) – це цикл, у якому тіло циклу виконується заздалегідь відому кількість разів. У різних алгоритмічних мовах реалізація цього циклу може передбачати використання аргументів різних типів, зміну аргументу на різний крок, діапазон зміни аргументу і т. д.Цикл із лічильником аргументу реалізовується таким чином:1) аргументу надається початкове значення;

2) якщо значення входить у заданий діапазон, то виконується тіло циклу;

3) аргумент змінюється на заданий крок; виконується 2);

4) якщо значення не входить у заданий діапазон, то виконання циклу припиняється і керування передається оператору, наступному за оператором циклу.У мові Паскаль реалізовано два оператори циклу з покроковою зміною аргументу: «цикл For-То» і «цикл For-DownТо».

Загальний вигляд оператора циклу з параметром (з лічильником):

for <параметр циклу>:=N1 to N2 do <тіло циклу >;

де N1 та N2 – початкове та кінцеве значення параметра циклу, тіло циклу може бути простим або складеним оператором. <Параметр циклу > ще називають лічильником циклу. Оператор for забезпечує виконання тіла циклу до тих пір, поки не будуть перебрані всі значення параметра циклу від початкового до кінцевого. Параметр циклу, його початкове та кінцеве значення повинні бути одного і того ж скалярного типу. При цьому можливий будь який стандартний тип, крім real. Якщо N1 та N2 цілі числа, а параметр циклу – цілочисельна змінна, то крок завжди рівний одиниці.

Приклад.

s:=0; for i:=1 to 20 do s:=s+i;

Для i=1, 2, 3,… , 20 буде виконуватись оператор присвоєння

S:=S+i, який накопичує в змінній S суму перших 20 натуральних чисел. Якщо N1 та N2-символьного типу, а їх значення відповідно рівні ‘A’ та ‘Z’, то параметр циклу прийматиме послідовні значення, які співпадають з алфавітом: A, B, C, D E .., Z.

Цикл по спадних значеннях параметра від N2 до N1 має вигляд:

for <параметр циклу> := N2 downto N1 do <тіло циклу>;

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

Приклад.

S:=0;for i:=20 to 1 do S:=S+i;

Параметр і змінюється від 20 до 1 з кроком -1.

Для оператора циклу з параметром існують деякі обмеження:оскільки параметр циклу не може бути дійсного типу, то задати крок відмінний від 1 або -1 не можна; значення параметра циклу, початкового та кінцевого значень параметрів циклу змінювати в процесі виконання не можна; увійти в цикл можна тільки через його початок, а вийти за допомогою оператора переходу по мітці, яка розташована зовні даного циклу або за допомогою однієї з процедур Exit i Halt.

Приклади: обчислення суми перших 100 натуральних чисел методом послідовного додавання.

а) S: =0;

for m:=1 to 100 do

S:=S+m;

б) S: =0;

for m:=100 downto 1 do

S:=S+m;

Під час реалізації циклу з покроковою зміною аргументу в Паскалі необхідно заздалегідь знати про кількість повторень тіла циклу і пам’ятати про можливість зміни лічильника циклу тільки на 1 або -1.

Наприклад, роздрукувати символи латинського алфавіту можна так (за алфавітом):

S := ‘A’;

repeatwrite(S);

S := succ(S) {беремо наступне значення для S}until S > ‘Z’;

Висновок. Для розв’язування переважної більшості типових задач не має значення, який цикл застосовувати: while чи repeat. Треба лише пам’ятати, що умови (логічні вирази) в цих командах є протилежні: у команді while логічний вираз описує умову продовження обчислень у циклі, а в команді repeat – умову виходу з циклу.

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

Часто буває так, що при повтореннях змінюється не одна величина, а дві (чи навіть більше). І при кожному значенні однієї величини інша величина «пробігає» усі свої значення.У деяких випадках важливо повторити підзадачу кілька разів усередині більш загальної задачі. Один зі способів написання такої програми – включити цикл у набір інструкцій, що повторюються всередині іншого циклу. Така структура, що складається з циклу в циклі, називається вкладеними циклами.

Вкладення циклів використовується зокрема при розв’язуванні таких задач:

  • задачі на перебір варіантів;
  • табулювання функцій;
  • обробка двовимірних масивів.

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

Правило вкладення циклів: внутрішній цикл цілком укладається в тіло зовнішнього циклу.

Приклад № 1. Обчислити значення змінної Y=2*K+N при всіх значеннях змінних N=1, 2, 3 і K=2, 4, 6, 8

.Якщо перебирати всі значення N і K, ми повинні отримати 12 значень змінної Y.Скласти програму можна в такий спосіб: для кожного значення N перебрати всі значення К від 2 до 8, тобто N використати як параметр зовнішнього циклу, К – як параметр внутрішнього циклу.Текст програми:

Program priklad_1;

var n, k, y:integer;

begin

for n:=1 to 3 do

begin

k:=2;

while k<=8 do

begin

y:=2*k+n;

writeln(n:3, k:3,y:3);

k:=k+2;

end;

end;

end.Параметр N змінюється з кроком 1, тому зовнішній цикл організований з використанням оператора For; параметр К змінюється з кроком 2, тому внутрішній цикл є циклом While.Приклад № 2. Старовинна задача. Скільки можна купити биків, корів та телят, якщо вартість одного бика – 10 руб, однієї корови – 5 руб, а за одного теля платять 0,5 рубля. І якщо на 100 рублів потрібно купити 100 голів скоту.Розв’язування:Позначимо через b кількість биків; k – кількість корів; t – кількість телят. Після цього можна записати два рівняння:10b + 5k + 0.5t = 100 і b + k + t = 100На 100 рублів можна купити:

не більше 10 биків, тобто 0<=b<=10;

не більше 20 корів, тобто 0<=k<=20;

не більше 200 телят, тобто 0<=t<=200.Отже отримуємо:

Program Priklad_2;

var b, k, t:integer;

begin

for b:=0 to 10 do

for k:=0 to 20 do

for t:=0 to 200 do

if (10b + 5k + 0.5t = 100) and (b + k + t = 100) then

writeln(‘биків – ‘, b, ‘ корів – ‘, k,’ телят – ‘,t);

end.

Источник

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

Багатократно виконувана послідовність одних і тих самих інструкцій називається циклом. Наведемо приклади циклічних подій в нашому житті: зміна дня і ночі, робочий день школяра або дорослої людини, рух автобусу протягом дня по маршруту і т.д. Взагалі, важко привести приклад, в якому не було б циклів. Навіть читаючи текст цієї книги ви багатократно знаходите однакові символи українського алфавіту, зустрічаєте однакові слова, перегортаєте сторінки і т.п.

Нас будуть цікавити цикли, які використовуються в програмуванні, їх організація, правила використання і способи застосування.

Існує можливість утворити цикл всередині тіла другого циклу. Такий цикл зветься вкладеним циклом. Вкладений цикл щодо циклу в тіло якого він вкладений буде йменуватися внутрішнім циклом, і навпаки цикл в тілі якого існує вкладений цикл буде йменуватись зовнішнім щодо вкладеного. Всередині вкладеного циклу може бути наступний вкладений цикл, утворюючи наступний рівень вкладеності і так далі. Кількість рівнів вкладеності, як правило, не обмежується. Одна з проблем, пов’язаних із вкладеними циклами – організація дострокового виходу з них. В багатьох мовах програмуванняє оператор дострокового завершення циклу (break у Сі, exit у Паскалі, last в Perl і т. п.), але він, як правило, забезпечує вихід лише з циклу того рівня, звідки викликаний. Виклик його у вкладеному циклі призведе до завершення лиш цього вкладеного циклу, зовнішній цикл продовжить виконання. Проблема може здатися надуманою, але вона дійсно іноді виникає при програмуванні складної обробки даних, коли алгоритм вимагає негайного переривання за певних умов, наявність яких можна перевірити тільки в глибоко вкладеному циклі.

Вкладення циклів використовується зокрема при розв’язуванні таких задач:

задачі на перебір варіантів;

  • табулювання функцій;

Обробка двовимірних масивів.

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

Загальний вигляд оператора циклу з параметром:

for <параметр циклу>:=N1 to N2 do <тіло циклу >;

де N1 та N2 – початкове та кінцеве значення параметра циклу, тіло циклу може бути простим або складеним оператором. <Параметр циклу >ще називають лічильником циклу. Оператор for забезпечує виконання тіла циклу до тих пір, поки не будуть перебрані всі значення параметра циклу від початкового до кінцевого. Параметр циклу, його початкове та кінцеве значення повинні бути одного і того ж скалярного типу. При цьому можливий будь який стандартний тип, крім real. Якщо N1 та N2 цілі числа, а параметр циклу – цілочисельна змінна, то крок завжди рівний одиниці.

Приклад.

s:=0; for i:=1 to 20 do s:=s+i;

Для i=1, 2, 3,… , 20 буде виконуватись оператор присвоєння

S:=S+i, який накопичує в змінній S суму перших 20 натуральних чисел. Якщо N1 та N2-символьного типу, а їх значення відповідно рівні ‘A’ та ‘Z’, то параметр циклу прийматиме послідовні значення, які співпадають з алфавітом: A, B, C, D E .., Z.

Цикл по спадних значеннях параметра від N2 до N1 має вигляд:

for <параметр циклу> := N2 downto N1 do <тіло циклу>;

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

Приклад.

S:=0;for i:=20 to 1 do S:=S+i;

· Параметр і змінюється від 20 до 1 з кроком -1.

Для оператора циклу з параметром існують деякі обмеження:оскільки параметр циклу не може бути дійсного типу, то задати крок відмінний від 1 або -1 не можна; значення параметра циклу, початкового та кінцевого значень параметрів циклу змінювати в процесі виконання не можна; увійти в цикл можна тільки через його початок, а вийти за допомогою оператора переходу по мітці, яка розташована зовні даного циклу або за допомогою однієї з процедур Exit i Halt.

В тому випадку , коли крок параметра циклу відмінний від 1 і -1, або наперед невідома кількість повторень тіла циклу, необхідно використовувати один з двох інших типів оператора циклу: з передумовою чи післяумовою.

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

While <умова> do <тіло циклу>

Виконання оператора починаючи з перевірки умови. Якщо вона істинна (відповідний логічний вираз приймає значення true), то виконується тіло циклу. Виконання операторів циклу повторюється до тих пір, поки умова не тане хибною. Якщо ж умова була хибною при першому входженні до циклу, то тіло циклу не виконується ні разу. Зрозуміло, що в тілі циклу повинен бути оператор, який впливає на умову. В противному випадку, якщо умова істинна, то цикл буде виконуватись нескінченну кількість разів. (Таку ситуацію називають зацикленням або “вічним циклом”).

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

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

Repeat <тіло циклу>

Until <умова>;

Виконання оператора <repeat> починається з виконання операторів тіла циклу. потім перевіряється умова і, якщо вона істинна, то здійснюється вихід з циклу. Якщо ж умова хибна, то знову виконується тіло циклу та перевіряється умова. Відмітимо, що на відміну від циклу з передумовою вихід з циклу з післяумовою здійснюється при істинності умови. Зарезервовані слова repeat та until грають роль операторних дужок. Тому операторні дужки begin та end є зайвими (хоч їх наявність не є помилковою). Який з циклів використовувати?

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

Який з циклів використовувати – справа особистого смаку програміста, але в деяких ситуаціях краще використовувати конкретну структуру. Так, при обробці повідомлень з клавіатури краще всього використовувати цикл repeat … until.

Цикл з післяумовою найчастіше і використовують саме при обробці повідомлень з клавіатури, ми це з вами побачимо при вивченні розділу “Робота с символьними величинами”. Але і при вирішенні інших задач цей цикл досить часто використовують.

Цикл for рекомендується використовувати тільки в тих випадках, коли точно відомо, що в процесі виконання параметр циклу повинен приймати саме ці конкретні значення і змінювати значення параметру ми ні за яких умов не будемо. Така ситуація може виникнути, наприклад, при заповненні таблиць (див. розділ “Масиви”), побудові сітки системи координат і т.д.

Найбільш часто досвідчені програмісти використовують саме цикл while і зрозуміло чому. Адже використання цього циклу забезпечує перевірку умови виконання циклу і є найбільш раціональним способом трактувати свої думки з точки зору саме машинної логіки.

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

Источник

1. Які процеси називають циклічними? Наведіть приклади.

2. Що таке цикл в алгоритмі? Що таке тіло циклу?

3. Який вигляд має команда циклу Повторити N разів? Як вона виконується?

КОМАНДА ЦИКЛУ З ЛІЧИЛЬНИКОМ В OBJECT PASCAL

Що таке тіло цикл

У мові програмування Object Pascal є кілька команд, які можуть реалізувати цикл. Одна з них – команда циклу з лічильником. Її доцільно використовувати в тих випадках, коли кількість повторень команд тіла циклу відома ще до початку виконання команди циклу. Загальний вигляд цієї команди такий: for <ім’я змінної> := <вираз1> to <вираз2> do begin

<команди тіла циклу> end;

Рядок for <ім’я змінної> := <вираз1> to <вираз2> do (англ. for – для, to – до, do – робити, виконувати) називають рядком заголовка команди циклу з лі-

чильником. Змінну в рядку заголовка команди циклу з лічильником, що стоїть перед знаком присвоювання, називають лічильником циклу. Блок-схему команди циклу з лічильником показано на малюнку 6.30. Лічильник циклу, виразі і вираз2 мають набувати тільки цілих значень. Якщо тіло циклу складається лише з однієї команди, операторні дужки begin і end можна не ставити.

Виконується команда циклу з лічильником так:

1. Надати лічильнику циклу і значення виразі.

2. Обчислити значення логічного виразу і J вираз2.

3. Якщо значення логічного виразу true, то виконати команди тіла циклу і перейти до виконання команди 4, якщо false – перейти до виконання команди, наступної за командою циклу.

4. Збільшити значення лічильника циклу на 1.

5. Перейти до виконання команди 2.

Для ілюстрації виконання команди циклу з лічильником розглянемо фрагмент проекту, в якому обчислюється сума 12 + 22 + 32 + 42. var s, і: integer; begin s := 0;

for і := 1 to 4 do begin

s := s + i*i; end;

Labell.Caption := IntToStr (s); end;

Виконаємо цей фрагмент програми.

Команда

Результат виконання

s := 0

s = 0

i := 1

i = 1

i <= 4

(1 <= 4) = true

s := s + i*i

s = 0 + 1*1 = 1

i := i + 1

i = 2

i <= 4

(2 <= 4) = true

s := s + i*i

s = 1 + 2*2 = 5

i := i + 1

i = 3

i <= 4

(3 <= 4) = true

s := s + i*i

s = 5 + 3*3 = 14

i := i + 1

i = 4

i <= 4

(4 <= 4) = true

s := s + i*i

s = 14 + 4*4 = 30

i := i + 1

i = 5

i <= 4

(5 <= 4) = false

Labell.Caption := IntToStr (s)

Labell.Caption = 30

Звертаємо вашу увагу, що після закінчення виконання команди циклу з лічильником значення лічильника циклу (змінної і) на 1 більше, ніж значення вираз2, і це значення, за потреби, можна використовувати в наступних командах.

Існує різновид команди циклу з лічильником, у якому лічильник не збільшується на 1, а зменшується на 1:

For <ім’я змінної> := <вираз1> downto <вираз2> do begin

<команди тіла циклу> end;

(англ. down to – униз до).

Цей цикл продовжує виконуватися, якщо значення лічильника циклу більше або дорівнює (не менше) значенню вираз2.

Загальний вигляд команди циклу з лічильником такий: for <ім’я змінної> := <вираз1> to <вираз2> do begin

<команди тіла циклу> end;

Рядок for <ім’я змінної> := <вираз1> to <вираз2> do називають рядком заголовка команди циклу з лічильником. Змінну в рядку заголовка команди циклу з лічильником, що стоїть перед знаком присвоювання, називають лічильником циклу. Лічильник циклу, виразі і вираз2 мають набувати тільки цілих значень.

Дайте відповіді на запитання

1°. Що таке цикл в алгоритмі?

2°. Який вигляд має команда циклу з лічильником в Object Pascal?

3*. Як виконується команда циклу з лічильником в Object Pascal?

4*. Який вигляд має блок-схема циклу з лічильником? Поясніть виконання фрагмента алгоритму.

5*. Чи можуть команди тіла циклу з лічильником виконуватися тільки один раз? Поясніть свою відповідь. Наведіть приклад.

6*. Чи можуть команди тіла циклу з лічильником не виконуватись жодного разу? Поясніть свою відповідь. Наведіть приклад.

7*. Чи може виконання циклу з лічильником ніколи не закінчитися? Поясніть свою відповідь. Наведіть приклад.

8*. У чому полягають відмінності у виконанні основних алгоритмічних структур: слідування, розгалуження, цикл.

1*. Складіть блок-схему фрагмента алгоритму і виконайте його. a) n := 1; б) р := 0; a := 2;

for i := 1 to 4 do for i := 1 to 5 do

n := n*i; begin

a := 3*a + 1; р := р + a; end;

2*. Складіть блок-схему фрагмента алгоритму і виконайте його. а) n := 0; б) р := 0; a := 4;

for i := 1 to 4 do for i := 1 to 5 do

n := n + i*i*i; begin

a := 2*a – 1; р := р + a; end;

3°. Складіть блок-схему алгоритму знаходження суми п’яти чисел, перше з яких дорівнює 7, а кожне із чотирьох наступних на 3 більше від попереднього. Виконайте алгоритм.

4°. Складіть блок-схему алгоритму знаходження суми шести чисел, перше з яких дорівнює 100, а кожне з п’яти наступних у 5 разів менше від попереднього. Виконайте алгоритм.

5*. Складіть блок-схему алгоритму розв’язання задачі: Визначити, на скільки квадратів можна розрізати прямокутну смужку паперу із заданими довжиною та шириною, якщо на кожному кроці від смужки відрізати квадрат, сторона якого дорівнює меншій зі сторін смужки, що залишилася після попереднього відрізу. Виконайте алгоритм для двох різних значень початкових даних. Підберіть ці значення так, щоб команди тіла циклу виконались кілька разів; один раз.

6*. Створіть проект для обчислення суми n чисел, перше з яких дорівнює х, а кожне наступне на 5 більше від попереднього. Збережіть проект у папці Завдання 6.6.6, створеній у вашій папці.

7*. Створіть проект для обчислення суми n чисел, перше з яких дорівнює х, а кожне наступне дорівнює квадрату попереднього. Збережіть проект у папці Завдання 6.6.7, створеній у вашій папці.

8*. Створіть проект для розв’язання задачі: Клієнт поклав у банк певну суму грошей. Щорічно банк додає до суми 20 % від суми, що зберігається на рахунку після попереднього року. Визначити суму, яка буде на рахунку через n років. Збережіть проект у папці Завдання 6.6.8, створеній у вашій папці.

9*. Створіть проект для розв’язання задачі: Клієнт поклав у банк певну суму грошей. Щорічно банк додає до суми заздалегідь визначений відсоток від суми, що зберігається на рахунку після попереднього року. Визначити, на скільки збільшиться сума на рахунку через n років. Збережіть проект у папці Завдання 6.6.9, створеній у вашій папці.

Це матеріал з підручника Інформатика 8 клас Ривкінд

Источник

Читайте также:  Цикл в миф for