Призначення та використання підпрограм.
Підпрограми являють собою важливий інструмент, я кий дозволяє розробляти добре структуровані програми. У таких програмах значно легше проглядається основний алгоритм. Їх не важко зрозуміти користувачеві, вони простіші у відлагодженні і менш сприятливі до помилок при створенні. Усі ці властивості забезпечуються тим, що кожна підпрограма являє собою самостійний фрагмент програми зв’язаний з основною програмою лише за допомогою кількох параметрів.
Підпрограми призначені для реалізації алгоритмів опрацювання окремих частин деякої складної задачі. Вони дають змогу реалізовувати концепцію структурного програмування, суть якого полягає в розкладанні складної задачі на послідовність простих підзадач і в складанні для алгоритмів розв’язування кожної підзадачі відповідних підпрограм. Розрізняють два види підпрограм — підпрограми-процедури та підпрограми-функції. Підпрограми поділяються на: стандартні та підпрограми користувача. Стандартні підпрограми створювати не потрібно — вони містяться у стандартних модулях System, Crt, Dos, Graph тощо. Підпрограма користувача — це пойменована група команд, яку створюють і описують в основній програмі в розділах procedure або function і до якої звертаються з будь-якого місця програми потрібну кількість разів. 1. Процедури (procedure). Загальний опис процедури:
У списку формальних параметрів перераховують змінні разом із зазначенням їхніх типів. Розрізняють параметри-аргументи (інший термін: параметри-значення) — вхідні дані для процедури, і параметри-результати (інший термін: параметри-змінні), через які можна повертати результати роботи процедури в основну програму. Перед списками параметрів-результатів кожного типу записують слово var.
Зауважимо, що масиви фіксованих розмірів у списках формальних параметрів не можна описувати за допомогою слова array (див. зразки програм). Розділи описів і оголошень у підпрограмах мають таку саму структуру як і в основній програмі. Приклад1. Розглянемо процедуру з назвою Cina, яка визначає с — вартість k хвилин телефонної розмови з похвилинною оплатою 0.6 грн. + 20% ПДВ. procedure Cina(k:integer; var c:real); Begin c:=k*0.6; c:=c+0.2*c; end; У наведеному прикладі k є формальним параметром-значенням, с — формальним параметром-змінною. До процедури звертаються з розділу команд основної програми або іншої підпрограми. Звернення до процедури:
Параметри, які записують у команді виклику процедури, називаються фактичними. Фактичними параметрами-аргументами можуть бути сталі, змінні, вирази, а параметрами-результатами — лише змінні. Типи даних тут не зазначають. Між фактичними і формальними параметрами має бути відповідність за кількістю й типами. Зверніть увагу, відповідні фактичні та формальні параметри можуть мати різні імена. Команда виклику функціонує так: значення фактичних параметрів присвоюються відповідним формальним параметрам процедури, виконується процедура, визначаються параметри-результати, значення яких надаються (повертаються) відповідним фактичним параметрам у команді виклику. Змінні, описані в розділі описів основної програми, називаються глобальними. Вони діють у всіх підпрограмах, з яких складається програма. Змінні, описані в розділі описів конкретної процедури, називаються локальними. Вони діють тільки в межах даної процедури. Процедури можуть отримувати і повертати значення не тільки через параметри-результати, але й через глобальні змінні. Тому списків параметрів у процедурі може і не бути.
2. Функції (function). Функція, на відміну від процедури, може повертати в місце виклику лише один результат простого стандартного типу. Загальний опис функції:
У розділі команд функції має бути команда присвоєння значення деякого виразу назві функції. Результат функції повертається в основну програму через її назву (як і випадку використання стандартних функцій, таких як sin, cos). Звернення до функції:
Приклад1. Створимо функцію для обчислення tg(x) та обчислимо значення виразу tg(x)+ctg(x)+tg2(x). program Myfunc; uses Crt; var x,y:real; function tg(x:real):real; Begin tg:=sin(x)/cos(x) end; begin clrscr; writeln ('Введіть х'); readln (x); y:=tg(x)+1/tg(x)+sqr(tg(x)); writeln ('y=', y:5:2); readln End.
Читайте также: A. Призначення альдостерону Воспользуйтесь поиском по сайту: ©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...
|