Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь КАТЕГОРИИ: АрхеологияБиология Генетика География Информатика История Логика Маркетинг Математика Менеджмент Механика Педагогика Религия Социология Технологии Физика Философия Финансы Химия Экология ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Організація програм, що містять підпрограми
(процедури) У практиці програмування часто доводиться робити ті самі обчислення, але при різних вхідних даних. Щоб виключити повторення однакових записів і зробити програму простіше і зрозуміліше, можна виділити ці повторювані обчислення в самостійну частину програми, що може бути використана багаторазово в міру необхідності. Автономна частина програми, що реалізує визначений алгоритм і допускає звертання до неї з різних частин загальної програми, називається підпрограмою. Підпрограми оформляються у вигляді замкнутих ділянок програми, що мають чітко позначені вхід і вихід. Підпрограми дозволяють більш повно реалізувати в програмах метод структурного програмування. Рисунок 1 - Класифікація підпрограм
У мові Турбо-Паскаль виділяють два види підпрограм: процедури (Procedure) і функції (Function). Будь-яка програма може містити кілька процедур і функцій. Процедури і функції з'являються в розділі опису слідом за розділом змінних. Будь-яка процедура оформляється аналогічно програмі, тобто містить заголовок, розділ описів і розділ операторів:
Розділ операторів У заголовку вказується службове слово PROCEDURE, далі йде ім'я процедури і параметри, що називаються формальними. Допускається використання процедур без параметрів. Розділ описів процедури, подібно основній програмі, складається з розділів міток, констант, типів, змінних і, у свою чергу, процедур і функцій. Розділ операторів заключається в дужки BEGIN...END, причому після END, на відміну від основної програми, ставиться крапка з комою. Виконання програми починається з операторів основної програми. Як тільки з'вляється необхідність виконати дію процедури, вона викликається по її імені і починає виконуватися. Дані з основної програми передаються в процедуру (вхідні параметри). Після виконання процедури її результати (вихідні параметри) передаються в основну програму. Потім продовжує виконуватися основна програма з оператора, наступного за викликом процедури. Program UIPA; Розділ описів глобальних змінних Procedure P1; Розділ описів процедури P1 Begin Розділ операторів процедури P1
End; Procedure P2; Розділ описів процедури Р2 Begin Розділ операторів процедури Р2 End; BEGIN Розділ операторів основної програми END. Область дії імен Імена, оголошені в розділі опису основної програми, діють у розділі операторів основної програми й у будь-якій підпрограмі (процедурі чи функції). Ці імена називаються глобальними. Імена, оголошені в підпрограмі, у тому числі і формальні параметри, діють тільки в цій підпрограмі й у будь-якій оголошеній у ній чи процедурі функції. Такі імена називаються локальними. Вони недоступні для операторів основної програми. Формальні параметри являють собою список перемінних із указівкою їхнього типу. Для виділення вихідних параметрів перед ними ставиться слово Var. Приклад оформлення програми що містить процедуру: Утворити блок-схему алгоритму, програму, що містить програму та підпрограму (процедуру) для обчислення значення функції. Дано дійсні числа t,s. Обчислити D = max(t,-2 s,1.17) + max(2.2, t, s - t), ДЄ t=1.3, s=0.8 Складемо блок -схему алгоритму: {Підпрограма Користувача PROCEDURE} Program myProgram; Var t,s,d,m: real; procedure Max1(a,b,c: real; var f: real); Begin f:= a; if b > a then f:= b; if c > a then f:= c; end; Begin writeln (' BeAiTb значення змінних t,s'); read (t,s); Max1(t, -2*s, 1.17, m); d:= m; Max1(2.2, t, s - t, m); d:= d + m; writeln (' Результат '); writeln ('d=',d:6:2); End. Реакція ЕОМ:
В процедурі: а, в і с - вхідні параметри, їхні значення передаються з основної програми в цю процедуру. Результатами процедури (вихідними параметрами) є максимальне значення, що передається з процедури в основну програму і там використовується. У загальному випадку процедури можуть містити один чи кілька вхідних і вихідних параметрів, або взагалі не мати їх. Виклик процедури в основній програмі має форму: Ім'я процедури (фактичні параметри); Ті з фактичних параметрів, що передаються в процедуру, можуть бути перемінними, чи константами вираженнями. Організація програм, що містять підпрограми, Процедури - функції
Відомо, що функції користувача, як і процедури, являють собою відносно самостійні фрагменти Pascal-програми, оформлені особливим чином, та мають свої імена. Згадка цього імені у тексті програми називається викликом функції користувача.
Різниця між функцією то процедурою полягає в тому, що функція повертає результат. Результатом виконання операторів, що утворюють тіло функції, завжди є єдиним значенням того чи іншого типу, тому звертання до функції можна використовувати в арифметичних виразах поряд зі змінними та константами. Тобто виклик функції користувача виконується простим записом її імені в арифметичному виразі. Функція користувача, як і процедура, являє собою інструмент, за допомогою якого будь-яка Pascal-програма може бути поділеною на ряд незалежних одна ви одної частин. Таке розбиття необхідне з двох причин. По-перше, це засіб економії пам'яті - кожна функція користувача існує в Р-програми в єдиному екземплярі, у той час як звертатися до неї можна багаторазово з різних точок програми. Під час виклику функції користувача активізується послідовність операторів, які її повторюють, а за допомогою переданих їй параметрів модифікується її алгоритм. Процес поділення Р-програми - це творчий процес, що проходить у декілька етапів. Спочатку проробляють найбільш загальний, генеральний алгоритм, не зупиняючись на технічних деталях його реалізації. Така розробка алгоритму подається у вигляді послідовності відносно великих частин програми (блоків), які реалізують більш-менш самостійні смислові частини алгоритму Блоки, у свою чергу, можуть розбиватися на менші під блоки, а ті. в свою чергу - на блоки нижнього рівня тощо. Процес послідовного структурування Р-програми продовжується доти, поки блоки, що реалізують алгоритм, не стануть простими та легко програмованими. Перевага такого низхідного програмування очевидна: блоки підвищують надійність Р-програми (кожен блок можна реалізувати незалежно від інших та автономно його тестувати), полегшують її розуміння та дозволяють вести розробку Р-програми колективом програмістів. Наведемо основні особливості функції користувача. 1) Вона має тільки один результат виконання (але може мати декілька вхідних параметрів). 2) Результат позначається іменем функції і передається в P-програму, яка її викликала. Функція користувача має вигляд:
Викликається функція її іменем при наявності фактичних параметрів. При цьому виклик функції користувача можна робити безпосередньо в арифметичному виразі. Область дії імен Імена, оголошені в розділі опису основної програми, діють у розділі операторів основної програми й у будь-якій підпрограмі (процедурі чи функції). Ці імена називаються глобальними. Імена, оголошені в підпрограмі, у тому числі і формальні параметри, діють тільки в цій підпрограмі й у будь-якій оголошеній, у ній чи процедурі функції. Такі імена називаються локальними. Вони недоступні для операторів основної програми. Формальні параметри являють собою список перемінних з вказівкою їхнього типу. Для виділення вихідних параметрів перед ними ставиться слово Var. Приклад оформлення програми що містить процедуру: Утворити блок-схему алгоритму, програму, що містить програму та підпрограму (функцію) для обчислення значення функції:
Складемо блок - схему алгоритму: {Підпрограма Користувача FUNCTION} Program myProgram; var a,b,c,d,x,y,v,z:real; Function F1(p,q,s: real): real; begin F1:=Sqrt(Abs(p*q+s)); end; Begin writeln('Введіть значення змінних a,b,c,d,x,y,v '); read(a,b,c,d,x,y,v); z:=Ln(F1(a+c,v,-(b+d))) / (F1(a,x,b)*F1(c,y,d)); writeln('Результат'); writeln('начення функції Z=',z:6:2); End.
Реакція ЕОМ:
Хід роботи: 1. Вивчити теоретичний матеріал. 2. Виконати індивідуальне завдання. 3. Скласти звіт, в якому відповісти на теоретичні питання, описати алгоритм, описати програму, привести контрольний приклад виконання програми. Контрольні запитання: 1. Які види підпрограм використовують у мові Pascal? 2. Що таке функція? 3. Як викликається функція? 4. Що таке процедура? 5. Як викликається процедура? 6. Що таке формальні параметри? 7. Що таке фактичні параметри? 8. Що таке глобальні змінні? 9. Що таке локальні змінні? 10. Чи можна використовувати функції як процедури у мові Pascal? Індивідуальні завдання: Скласти програми для розв'язання таких завдань із використанням функцій або процедур: 1. Задані цілі числа n0, d0, n1, d1,..., n7, d7, a, b (d0 d1... d7b¹0). Обчислити за схемою Горнера , визначивши процедури повного скорочення раціонального числа, яке задано чисельником та знаменником, а також процедури додавання та множення раціональних чисел. 2. Задано натуральне n, цілі числа a1,a2,..., an. Розглянути відрізки послідовності a1,a2,..., an (підпослідовності елементів, які ідуть підряд), які складаються з а) степенів натурального m б) простих чисел. В кожному випадку одержати найбільших з довжин відрізків, які розглядаються. 3. Описати функцію, що зчитує першу літеру, відмінну від пробілу, і оголошує її своїм значенням. Використовувати цю функцію для подрахунку k- кількості відмінних від пробілу літер тексту. 4. Дано координати вершин трикутника і координати деякої точки усередині нього. Знайти відстань від даної точки до найближчої сторони трикутника. (При визначенні відстані врахувати, що площа трикутника обчислюється і через три його сторони, і через основу і висоту.) 5. Знайти найменше спільне кратне n заданих натуральних чисел. 6. Два натуральних числа називаються "дружніми", якщо кожне з них дорівнює сумі всіх дільників іншого, за винятком його самого (такі, наприклад, число 220 и 284). Надрукувати всі пари "дружніх" чисел, що не перевищують заданого натурального числа.
7. По дійсному числу a>0 обчислити величину Корені обчислювати з точністю e=0.0001 по наступній ітераційній формулі: yo=1; yn+1 =yn+(x/yk-1 -yn)/k, прийнявши за відповідь наближення y(n+1), для якого ïyn+1-ynï <e. 8. Задане натуральне число n (n³2). Знайти всі прості числа, які менше за n, використовуючи решето Ерастофена (Виписати всі цілі числа від 2 до n. Перше просте число 2. Підкреслити його, а всі більші числа, які кратні 2, закреслити. Перше з чисел, що зосталися - 3. Підкреслити його, а всі числа, які кратні 3, закреслюємо. І т.д.). 9. Нехай задана квадратна матриця порядка m та натуральне число n. Треба знайти Аn. Використати алгоритм: якщо n=2k, то Аn= (А2)k. Якщо n=2k+1, то Аn= (А2)kА. Для k далі застосовують той же алгоритм. 10. Задане натуральне число n. Записати його подання у системі счислення з основою k. 11. Задано три цілі матриці розміром 9*4. Надрукувати ту з них, де більше нульових рядків (якщо таких матриць декілька, надрукувати їх усі). 12. Дано натуральне число p і дійсні квадратні матриці A,B і С 3-го порядку. Обчислити (ABC)p. 13. Задане парне число n>2. Перевірити для цього числа гіпотезу Гольбаха: кожне парне n>2 можна подати у вигляді суми двох простих чисел. 14. Нехай задана квадратна матриця порядка m та натуральне число n. Треба знайти Аn. Використати алгоритм: якщо n=2k, то Аn= (А2)k. Якщо n=2k+1, то Аn= (А2)kА. Для k далі застосовують той же алгоритм. 15. Задані цілі числа a1,a2,..., an, b1, b2,...,bm, k. Якщо в послідовності a1,a2,..., an нема жодного елементу з значенням k, то перший по порядку елемент цієї послідовності, не менший всіх інших елементів, замінити на значення k. За цим же правилом перетворити послідовність b1, b2,...,bm. стосовно до значення 10.
Лабораторна робота №10.
|
|||||||||||||||||||
Последнее изменение этой страницы: 2016-04-18; просмотров: 769; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.17.150.89 (0.031 с.) |