Лабораторна робота № 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 Все права принадлежат авторам размещенных материалов.
|