КАТЕГОРИИ: Архитектура-(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) |
Процедури
Підпрограми першого типу не виробляють значення–результат, а інші значення передають у зовнішнє оточення першими двома способами і називаються процедурами (procedure). Для позначення процедур може використовуватися зарезервоване слово procedure (Pascal). Функції
Підпрограми другого типу виробляють спеціальне значення, що є результатом роботи підпрограми. Оскільки у них завжди є результат, що повертається у зовнішнє оточення через певне місце в пам'яті, то їх називають функціями (function). Для позначення функції може використовуватися зарезервоване слово function. Оскільки функція як результат виробляє значення, причому єдине, то її виклик відрізняється від виклику процедури тим, що може стояти у правій частині оператора присвоювання як вираз, або складова виразу. Опис підпрограми на мові С та її використання
// підпрограма fun є процедурою, яка нічого не отримує через параметри та нічого не повертає у оточення виклику. void fun() // інтерфейс підпрограми { // тіло підпрограми int i; i = 25; }
void main { fun(); // виклик підпрограми } Опис підпрограми swap
// підпрограма swap є процедурою, яка отримує два параметри по значенню та нічого не повертає у оточення виклику. void swap(int, int); // прототип підпрограми void main() { int nx, ny; nx = 5; ny = 6; swap (nx, ny); // nx, ny – фактичні параметри } // а, b – формальні параметри, передані за значенням void swap(int a, int b) { int t; // t – локальна змінна підпрограми t = a; // а, b – параметри підпрограми a = b; b = t; } При x = 5, y = 6 t = 5, a = 6, b = 5 Після виклику x = 5, y = 6
Змінені значення формальних параметрів не впливають на значення фактичних (результати не повертаються з підпрограми) Опис підпрограми на мові Pascal та її використання
// підпрограма fun є процедурою, яка нічого не отримує через параметри та нічого не повертає у оточення виклику. program _; procedure fun; // інтерфейс підпрограми var // опис локальних змінних підпрограми i: integer; begin // тіло підпрограми i:= 25; end; Begin fun; // виклик підпрограми End. Опис підпрограми swap
// підпрограма swap є процедурою, яка отримує два параметри по значенню та нічого не повертає у оточення виклику. program _; // а, b – формальні параметри, передані за значенням procedure swap(a: integer; b: integer); var t: integer; begin t:= a; // t – локальна змінна підпрограми a:= b; // а, b – параметри підпрограми b:= t; end; var nx, ny: integer; Begin nx:= 5; ny:= 6; swap (nx, ny); // nx, ny – фактичні параметри End.
При x = 5, y = 6 t = 5, a = 6, b = 5 Після виклику x = 5, y = 6
Змінені значення формальних параметрів не впливають на значення фактичних (результати не повертаються з підпрограми) Опис підпрограми swap, яка впливає на оточення виклику
program _; // а, b – формальні параметри, передані за посиланням procedure swap(var a:integer; var b:integer); var t: integer; begin t:= a; a:= b; b:= t; end; var nx, ny: integer; Begin nx:= 5; ny:= 6; swap (nx, ny); End.
При x = 5, y = 6 t = 5, a = 6, b = 5 Після виклику x = 6, y = 5
Змінені значення формальних параметрів впливають на значення фактичних (результати повертаються з підпрограми через параметри) Опис підпрограми add
// підпрограма add є функцією, яка отримує два параметри по значенню та повертає значення цілого типу у оточення виклику. int add(int, int); // прототип підпрограми void main() { int nx, ny, sum; nx = 5; ny = 6; sum = add (nx, ny); } int add(int a, int b) { int t; t = a*2 + b; return t; // спеціальний оператор повернення значення } При x = 5, y = 6 t = 16 sum = 16
В мові С спеціальним оператором повернення значення в оточення виклику є оператор return. Підпрограма може мати декілька таких операторів тілі і називається функцією. Опис підпрограми add
// підпрограма add є функцією, яка отримує два параметри по значенню та повертає значення цілого типу у оточення виклику. program _; function add(a:integer; b:integer):integer; var t: integer; begin t:= a*2 + b; add:= t; end; var nx, ny, sum: integer; Begin nx:= 5; ny:= 6; sum:= add (nx, ny); End.
При x = 5, y = 6 t = 16 sum = 16 В мові Pascal спеціальним оператором повернення значення в оточення виклику є оператор привласнення з позначенням функції в правій частині. Приклад побічного ефекту при використанні глобальних змінних
// підпрограма swap є процедурою, яка нічого не отримує та нічого не повертає у оточення виклику. int x, y; void swap(); void main() { x = 5; y = 6; swap(); } void swap() { int t; t = x; // використання глобальних об’єктів x, y x = y; y = t; } При x = 5, y = 6 t = 5, x = 6, y = 5 Після виклику x = 6, y = 5 Програма для компіляції та функціонування потребує опису двох змінних x, y, які мають існувати та бути доступними для використання в оточенні виклику, тому що підпрограма їх використовує як глобальні змінні, порушуючи цілісність та незалежність підпрограмної капсули від оточення. Опис підпрограми swap, яка впливає на оточення виклику
void swap(int*, int*); void main() { int nx, ny; nx = 5; ny = 6; swap(&nx, &ny); } void swap(int *a, int *b) { int nTemp; nTemp = *a; *a = *b; *b = nTemp; } Змінені значення формальних параметрів впливають на значення фактичних (результати повертаються з підпрограми через параметри)
Дата добавления: 2014-01-04; Просмотров: 272; Нарушение авторских прав?; Мы поможем в написании вашей работы! Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет |