Лекция №8
страници: 12 3 4 5
Съдържание
Списък с параметри
Списъкът с параметри може напълно да липсва:
В този случай подпрограмата не получава никакви променливи "отвън". Припевът на песента, споменат в началото на лекцията, е само пример за подпрограма, която не получава никакви данни при извикване.
Липсата на параметри и в резултат на това стойности, предадени отвън, изобщо не означава, че подпрограмата ще изпълнява точно същите действия при всяко повикване. Тъй като глобалните променливи са видими от вътрешността на всяка подпрограма, техните стойности могат имплицитно да променят вътрешното състояние на подпрограмите. Този много нежелан ефект ще бъде обсъден в раздела "Странични ефекти".
Ако има параметри, тогава всеки от тях се описва съгласно следния шаблон:
Възможните начини за заместване на стойности в параметри (, var, const) ще бъдат обсъдени в раздела Методи за заместване на аргументи.
Ако методът на заместване и типът на няколко параметъра са еднакви, описанието на тези параметри може да се комбинира:
Пример за описание на трите метода на заместване:
Само прости (несъставни) типове данни могат да бъдат посочени в заглавката на подпрограмата. Следователно, опит за писане
Върнати стойности
Основната разлика между функциите и процедурите е броят на стойностите, които връщат.
За връщане на резултата се използва специална „променлива“, която има име, което съвпада с името на самата функция. Операторът за присвояване на стойността на тази "променлива" трябва задължително да се появи в тялото на функцията поне веднъж.
За разлика от функциите, процедурите изобщо не връщат (изрично) никакви стойности. Ще научите как все пак да получите резултатите от процедурата.от позицията "Параметър-променлива".
Извикване на подпрограма
Всяка подпрограма може да бъде извикана не само от основното тяло на програмата, но и от всяка друга подпрограма, декларирана след нея.
Когато се извикат,действителните параметри или аргументи се предават на подпрограмата (в скоби след името на подпрограмата, разделени със запетаи):
Аргументите могат да бъдат променливи, константи и изрази, които включват извиквания на функции.
Броят и типовете аргументи, предадени на подпрограмата, трябва да съответстват на броя и типовете на нейните параметри. В допълнение, типът на всеки аргумент трябва задължително да вземе предвид метода на заместване, посочен за съответния параметър (повече за това в раздела Методи за заместване на аргументи). Ако подпрограмата изобщо няма декларирани параметри, тогава при извикване списъкът с аргументи, които трябва да бъдат предадени, ще липсва заедно със скобите около него.
Извикването на функция не може да бъде самостоятелен оператор, защото върнатата стойност трябва да бъде записана някъде. Но може да стане равноправен участник в аритметичен израз. Например:
Процедурата не връща изрично нищо, така че нейното извикване е отделен оператор в програмата. Например:
Забележка : След като извиканата подпрограма приключи работата си, контролът се прехвърля към оператора, следващ оператора, който е извикал тази подпрограма.
Методи за заместване на аргументи
Както бе споменато по-горе, при извикване на подпрограма, заместването на стойностите на аргументите в параметри се извършва в съответствие с правилата, посочени в атрибута. Ще разгледаме три различни стойности за този атрибут: