Здавалка
Главная | Обратная связь

Лабораторна робота № 25-26. Організація циклів.



Методичні рекомендації

У програмах, що зв'язані з обробкою даних чи обчисленнями, часто виконуються циклічно повторювані дії. Цикл - це послідовність операторів, що виконується неодноразово. У мові програмування Turbo Pascal є три різновиди циклу - цикл з післяумовою (інструкція repeat), цикл з передумовою (інструкція whіle) і цикл із лічильником (інструкція for).

 

Оператор REPEAT.

Оператор повтору repeat складається з заголовка (repeat), тіла і умови закінчення (untіl). Ключові слова repeat, untіl позначають "повторюй" і "поки" відповідно.

Repeat

{ Інструкції }

untіl Умова виходу з циклу;

Спочатку виконується тіло циклу - інструкції, що знаходяться між repeat і untіl, потім перевіряється значення Умови виходу з циклу. У тому випадку, якщо воно дорівнює false (хибне), тобто не виконується - інструкції циклу повторюються ще раз. Так продовжується доти, поки умова не стане true (істина). На рис.23 приведена блок-схема оператора повтору repeat.

Варто знати::

· число повторень операторів (інструкцій) циклу repeat визначається в ході роботи програми і у багатьох випадках заздалегідь невідомо;

· інструкції циклу repeat будуть виконуватися, поки умова, що стоїть після untіl, буде залишатися хибною;

· після слова untіl записується умова завершення циклу;

· умова - це вираз логічного типу: простий вираз відношення чи складний логічний вираз;

· для успішного завершення циклу repeat у його тілі обов'язково повинні бути інструкції, виконання яких впливає на умову завершення циклу, інакше цикл буде виконуватися нескінченно - програма зациклиться. Іншими словами, змінна, котра бере участь в умові виходу з циклу, обов'язково повинна змінюватися в тілі циклу.

· цикл repeat - це цикл з післяумовою (умова перевіряється після виконання тіла циклу), тобто інструкції тіла циклу будуть виконані хоча б один раз;

· цикл repeat зручно використовувати в тих випадках, коли тіло циклу гарантовано повинно виконуватися хоча б один раз;

· нижня границя операторів тіла циклу чітко позначена словом untіl, тому немає необхідності вкладати ці оператори в операторні дужки begіn і end. У той же час наявність операторних дужок не буде помилкою.

Приклад Гра “Вгадай число”.

 

var

comp: integer; { число, яке "задумав" комп’ютер }

igrok: integer; { варіант гравця }

begin

randomize; { ініціалізація датчика випадкових чисел }

comp:=random(1000); { комп’ютер задумав число }

repeat

write('Введіть число: '); readln(igrok);

if igrok>comp then writeln('Занадто велике...')

else if igrok<comp then writeln('Занадто мале...’)

else writeln ('Ви вгадали!');

until igrok=comp;

end.

 

Оператор WHILE

Оператор повтору whіle складається з заголовка і тіла циклу. Ключові слова whіle і do позначають "доти, поки" і "виконуй" відповідно.

whіle Умова виконання циклу do

Begіn

{ Інструкції }

end;

Оператор whіle аналогічний оператору repeat, але перевірка Умови виконання циклу відбувається на самому початку оператора - якщо значення умови дорівнює true (істина), то виконуються інструкції циклу, що знаходяться між, begіnта end і знову обчислюється вираз Умова виконання циклу. Так продовжується доти, поки значення Умова виконання циклу не стане рівною false (хибна). На рис.24 приведена блок-схема оператора повтору whіle.

Варто знати:

· число повторень операторів (інструкцій) циклу whіle визначається в ході роботи програми і, як правило, заздалегідь невідомо;

· після слова whіle записується умова продовження виконання інструкцій циклу, у цьому відмінність циклу whіle від циклу repeat;

· умова - це вираз логічного типу: простий вираз відношення чи складний вираз відношення, що може приймати одне з двох значень: true чи false;

· для успішного завершення циклу whіle у його тілі обов'язково повинні бути присутні інструкції, що впливають на умову виконання інструкцій циклу.

· цикл whіle - це цикл із передумовою, тобто інструкції тіла циклу взагалі можуть бути не виконані, якщо умова, що перевіряється, хибна з самого початку;

· цикл whіle зручно використовувати в тих випадках, коли можливі ситуації невиконання циклу;

· в операторі циклу whіle крапка з комою ніколи не ставиться після зарезервованого слова do.

Приклад Пошук суми чисел від 1 до 10.

var

s, i: integer;

begin

s:= 0; і:= 1;

whіle і<=10 do { знаходимо суму чисел від 1 до 10 }

begіn

s:=s+і;

і:=і+1; { зміна змінної керування циклом }

end;

writeln ('Сума = ', s:4);

end.

 

Оператор FOR

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

Варіант 1 (зі збільшенням лічильника).

for Лічильник := ПочатковеЗначення to КінцевеЗначення do

Begіn

{ Інструкції }

end;

Ключові слова for, do позначають "для", "виконуй" відповідно. Рядок, який містить for...do, називається заголовком циклу, оператор, що стоїть після do утворює його тіло. Дуже часто тіло циклу - складений оператор. Якщо тіло циклу представлене одним оператором, то begіn і end не пишуться. На блок-схемі алгоритму цикл із параметром позначають в спосіб зображений на рис. 25.

Інструкції між begіn і end виконуються стільки разів, скільки визначає вираз [(КінцевеЗначення- ПочатковеЗначення) +1]. Це відповідає всім значенням лічильника від початкового до кінцевого включно. Якщо ПочатковеЗначення більше, ніж КінцевеЗначення, то інструкції між begіn і end не виконуються жодного разу.

Варіант 2 (із зменшенням лічильника).

for Лічильник := ПочатковеЗначення downto КінцевеЗначення do

Begіn

{ Інструкції }

end;

Інструкції між begіn і end виконуються стільки разів, скільки визначає вираз [(ПочатковеЗначення - КінцевеЗначення) +1]. Якщо ПочатковеЗначення менше, ніж КінцевеЗначення, то інструкції між begіn і end не виконуються жодного разу.

Приклад. Обчислення факторіалу числа n

uses crt;

var k, n, f: іnteger;

begіn

clrscr; { очищення екрана }

wrіteln('Введіть число ?');

readln(n);

f:= 1;

for k:=l to n do

begіn

f:=f*k;

end;

wrіteln('факторіал числа ',n:4, ‘ рівний ’, f);

end.

Завдання 1.

1. 10 разів виконати таку дію: вивести на екран число 2

2. N разів виконати такі дії: значення змінної Е додати до значення змінної С і результат присвоїти змінній Е

3. Дванадцять разів виконати таки дії: вивести на екран число М.

4. С разів виконати такі дії: значення змінної Е додати до значення змінної С і результат присвоїти змінній С.

5. Сім разів виконати таку дію: змінній С присвоїти результат додавання значення змінної С і числа 2.

6. D разів виконати таку дію: вивести на екран суму значень змінних А і В.

7. Двадцять разів виконати таку дію: змінній Т присвоїти результат додавання змінної Т і числа 2.

8. К разів виконати такі дії: присвоїти змінній результат віднімання числа 5 від змінної С, вивести на екран значення змінної С.

9. 15 разів виконати таку дію: вивести на екран число 5.

10. N разів виконати такі дії: значення змінної Е помножити на значення змінної С і результат присвоїти змінній Е

11. 10 разів виконати таки дії: вивести на екран число (- М).

12. N разів виконати такі дії: значення змінної Е відняти від значення змінної С і результат присвоїти змінній С.

 

Завдання 2.

Дано натуральні числа а, b, с. Необхідно вивести таблицю відповідності:

1. маси в кілограмах і фунтах для значень фунтів від а до b з кроком с фунтів, знаючи що 1 фунт = 0,4 кг;

2. віддалі в дюймах і сантиметрах для значень дюймів від а до b з кроком с дюймів, знаючи що 1 дюйм = 2,54 см;

3. віддалі в футах i сантиметрах для значень фунтів від а до b з кроком с футів, знаючи що 1 фут = 30, 48 см;

4. віддалі в милях i кілометрах для значень миль від а до b з кроком с миль, знаючи що 1 миля = 1,6 км;

5. вартості порції масла масою від а до b кілограм з кроком с кілограм, знаючи що 1 кг масла коштуе 11,7 грн.

6. вартості молока об'ємом від а до b літрів з кроком с літрів, знаючи що 1 літр молока коштуе 1,65 грн.

7. вартості бензину об'ємом від а до b літрів з кроком с літрів, знаючи що 1 літр бензину коштуе 3,95 грн.

8. об’єму пам’яті в кБ та байтах від a до b кБ з кроком с кБ, знаючи, що 1 кБ =1024 байт.

9. маси в грамах та каратах для значень грамів від а до b з кроком с грамів, знаючи що 1 карат = 0,2 г;

10. маси в кілограмах і пудах для значень пудів від а до b з кроком с пудів, знаючи що 1 пуд = 16,38 кг;

11. віддалі в кабельтов і метрах для значень кабельтов від а до b з кроком с кабельтов, знаючи що 1 кабельтов = 185,2 м;

12. віддалі в морських милях i кілометрах для значень миль від а до b з кроком с миль, знаючи що 1 морська миля = 1,852 км;

 

Завдання 3.

Скласти і вивести на екран таблицю значень функції для заданих значень аргументу від а до b з кроком с. Результат вивести у вигляді таблиці:

1. 2. 3. y = x3 / 2 + 2;

4. y = (x – 1) / x 5. y = x2 + 2 x + 3 6. y = 3 – x2

Дано натуральне число n.

7. Обчислити 2n(без використання формули піднесення до степеня);

8. Обчислити 1/n! (1 2 3 ... n) (1<n< 10);

9. Обчислити суму s = 1 + 1/2 + 1/3 + ... + 1/n ;

10. Обчислити суму s = 1/2 + 2/3 + 3/4 + ....+ (n - 1)/n(2<n<30);

11. Обчислити добуток d = 2/1 • 3/2 • 4/3 • ... • n/(n-1) (2<n<15);

12. Обчислити добуток d = (1 + 1/12) • (1 + 1/22) • … • (1 + 1/n2)

 

Завдання 4.

1. У магазин надійшло N видів сиру. Про кожен вид сиру відомо: кількість голівок сиру, вага однієї голівки сиру (у кг), ціна 1 кг сиру (у грн.). Складіть програму для визначення вартості всього сиру, що надійшов.

2. Відомі річні оцінки учня з усіх навчальних предметів. Скласти програму для визначення, чи є цей учень «хорошистом» («хорошист» - це той учень, у якого всі оцінки не нижче «7» і не вище «9»).

3. На фермі працюють Т тракторів. Про кожен трактор відомо: скільки днів він працював на полі і скільки гектарів обробляв щодня. Складіть програму для визначення площі, обробленої всіма тракторами разом.

4. Відомо, скільки балів набрав учасник олімпіади на кожному з N турів, а також максимально можлива кількість балів за кожен тур. Складіть програму для визначення, чи може цей учасник стати призером олімпіади, якщо для цього необхідно набрати не менше, ніж 30 % максимально можливої кількості балів, а також ні за який тур не одержати 0 балів.

5. У басейн наливається вода з N труб. Про кожну трубу відомо: скільки літрів води в хвилину наливається з труби в басейн, скільки хвилин була відкрита труба. Складіть програму для визначення, скільки літрів води було налито в басейн.

6. Відомо, скільки балів набрав учасник олімпіади на кожному з N турів, а також максимально можлива кількість балів за кожен тур. Скласти програму для визначення, чи може цей учасник стати призером олімпі­ади, якщо для цього необхідно за кожен тур набрати не менше, ніж 25 % максимально можливої кількості балів, або за усі тури разом не менше, ніж 40 % балів.

7. У міській естафеті «Забіг на 10 км» брали участь N учнів школи. Про кожного учня відомо: відстань, що він пробіг, а також його середня швидкість. Складіть програму для визначення командного часу забігу.

8. Відомі річні оцінки учня з усіх навчальних предметів. Складіть про­граму для визначення, чи є цей учень «трієчником». «Трієчник» - це той учень, у якого всі оцінки не нижче «4», однак він не є «хороши-стом» чи «відмінником» (всі оцінки не нижче «7»).

9. Дано числа від 1 до 100. Визначити скільки з цих чисел діляться на 3.

10. Ви поклали гроші в банк під 10% у місяць. Скласти програму, яка б визначала яка сума буде знаходитись на Вашому рахунку через N місяців.

11. Визначити яким повинно бути N, щоб значення суми S = 1 + 2 + 3 + ... + Nбуло рівне або більше 1000.

12. У басейн наливається вода з N труб. Про кожну трубу відомо: скільки літрів води в хвилину наливається з труби в басейн, скільки хвилин була відкрита труба. Складіть програму для визначення, скільки часу потрібно для наповнення басейну ємністю L.

 

 







©2015 arhivinfo.ru Все права принадлежат авторам размещенных материалов.