Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Функції користувача




Begin

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

Лабораторна робота № 31-33. Процедури та функції.

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

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

Структура процедури повторює структуру програми, вона також представлена заголовком та тілом. На відміну від програми, для процедур та функцій заголовок є обов’язковим. Заголовок складається із зарезервованого слова procedure, ідентифікатора (імені) процедури та необов’язкового, заключеного в круглі дужки, списку формальних параметрів із вказанням типу кожного параметра:

Procedure Ім’яПроцедури (ФормальніПараметри);

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

Procedure Ім’яПроцедури (ФормальніПараметри);

{Описова частина процедури}

{Інструкції виконуваної частини процедури}

end;

 

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

Ім’яПроцедури (ФактичніПараметри);

Параметри забезпечують механізм заміни, що дозволяє виконувати процедуру з різними початковими даними. Між фактичними параметрами в операторі виклику процедури і формальними параметрів у заголовку опису процедури встановлюється взаємо однозначна відповідність в результаті їх перебору зліва праворуч. Кількість і тип формальних параметрів рівні кількості і типу фактичних параметрів. Відповідні один одному параметри не обов'язково повинні однаково позначатися.

Якщо процедура повертає в програму якісь значення, відповідні змінні повинні бути описані як параметри - змінні з використанням слова var.

При виклику процедури робота головної програми припиняється і починає виконуватися викликана процедура. Коли процедура виконає свою задачу, програма продовжиться з оператора, що слідує за оператором виклику процедури.

Опис міток, констант, типів і т.п. дійсний тільки в межах даної користувальницької процедури. Для примусового виходу з процедури використовується оператор завершення exіt, що забезпечує вихід у зовнішній блок (зазвичай - основну програму).

Приклад. Запишемо процедуру, що виконує зведення до цілого ненегативного степеня будь-яке числа. За допомогою даної процедури обчислимо, скільки байтів міститься в кілобайті, мегабайті і гігабайті, використовуючи відомі співвідношення: 1Кбайт = 210 байт, 1 Мбайт =220 байт, 1 Гбайт =230 байт

 

procedure degree(x: real; n: byte; var res: real);

{ процедура приведення числа х до цілого невід’ємного степеня n, }

{ результатом є параметр-змінна res }

var i: integer;

begin

res:=l;

for i:=l to n do res:=res*x;

end;

{ основна программа }

var kb,mb,gb: real;

begin

degree(2,10,kb);

degree(2,20,mb);

degree(2,30,gb);

writeln('l Kb = ', kb:4:0, ' byte');

writeln('l Mb = ', mb:7:0, ' byte');

writeln('l Gb = ', gb:10:0,' byte');

end.

Якщо результатом підпрограми є тільки одне значення, то має сенс оформити таку підпрограму не у вигляді процедури, а у вигляді функції. Функція користувача аналогічна процедурі, але є дві відмінності.

· Функція передає в програму результат своєї роботи - єдине значення, носієм якого є ім'я самої функції.

· Ім'я функції може входити у вираз як операнд. Функція повертає результат у точку свого виклику.

Функція, визначена користувачем, складається з заголовка і тіла функції. Заголовок містить зарезервоване слово functіon, ім'я функції, обмежений круглими дужками необов'язковий список формальних параметрів і, на відміну від процедури, тип значення, що повертається функцією:

function Ім’яФункції(ФормальніПараметри): ТипРезультату;

Наприклад:

function fibo(n: integer): integer;

function instep(a,b: real): real;

function normrandom: double;

 

Ім'я функції унікальне в межах програми. Тіло функції за своєю структурою аналогічне звичайній програмі:

function Ім’яФункції(ФормальніПараметри): ТипРезультату;

{ Описова частина функції }




Поделиться с друзьями:


Дата добавления: 2015-05-24; Просмотров: 2575; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.009 сек.