Функции в C, преподава програмиране
Подпрограмата е кръстен група от оператори, решаване на всеки конкретен проблем, това е рутинна, можете да започнете, като се обадите от името на неограничен брой пъти от различни места на програмата. Практики освободени разработчиците от рутинна повторение на един и същи вид на код.
Например, можете да създадете рутина, която ще отпечата всички елементи в масива и на екрана. Сега, за да получите на масива, достатъчно на един отбор (подпрограма разговор). В този случай, на масива, и трябва да бъде на разположение в области от програмата, които наричаме подпрограма (например масив може да бъде глобално).
За да се извърши комбинация, не само идентична, но също така и от същия тип на действие (същия алгоритъм, но с различни параметри), е въведен от параметрите на механизма за пренос на основната програма за подпрограма. Подпрограмата използва някои абстрактни променливи (наречени аргументи или параметри), специфични стойности са определени само по време на подпрограма разговор.
Например, с помощта на подпрограма може да създаде параметри, които не само печатни елементи на масива. но всеки друг размер и чието име ще дадем рутина, когато той се нарича с параметрите.
Подпрограма разговор се нарича препратка към него от името на целта на използването му. Challenge - е да стартирате подпрограмата.
Като рутинна може просто да изпълнява някакво действие (например показване на масив на екрана) и да се върне на конкретен резултат под формата на определена стойност (например, за да се изчисли средна аритметична на масив и връща полученото число). Подпрограми се наричат първите процедури тип. и втората - функции (прилича функция в областта на математиката, в който една стойност и се изчислява за редица аргументи). В C ++, всички съчетания, наречени функции, но те могат да бъдат два вида: или да не връща стойност.
Така че ние се конкретизира понятието за функция:
Функция - е определена група от операции с уникално име, което може да бъде:
- Наречен по име навсякъде в програмата.
- Получаване на определен набор от стойности на външната програма, към момента на обаждането.
- Назад стойност в резултат на някакъв предварително определен тип.
функция също може да се разглежда като операция, която е създадена от строителя.
Добре известен пример за функция е основна. Тя се нарича автоматично при стартиране на програмата.
Създаване на функция
Преди функция се нарича, тя трябва да бъде обявена.
- Tip_rezultata - някои съществуващи (например, вградена) тип данни или празнотата ключовата дума, което показва, че функцията на никакво значение няма да се върне.
- На функция - уникален за даден идентификатор на пространство от имена.
- Tip_parN - някои съществуващи (например, вградени) тип данни за N-оро аргумент.
Ако функцията не връща всеки резултат така. Д. е обявен за нищожен, призива си не може да се използва като операнд от по-сложен израз (например, стойността на такава функция не може да присвоява нещо).
Определяне (описание) на функцията
Определяне или описание на функцията съдържа списък на операциите, да се извършва в рамките на функция.
определение Блок функция се нарича още тялото му.
Една функция не е обявено или дефинирани в друга (т.е., не може да се установи, и определят функции в основната).
Очевидно е, че цялата налична информация в прототипа на функция се повтаря в своето определение, така че ако функцията е дефинирана преди първия си разговор, а след това не се изисква отделен прототип.
Но освен прототип точка в случаите, когато функцията ще бъдат описани по-късно в тяхното използване. Например, вие може да обяви функцията на главния, причината за нейната основна, но се опише само след основните.
Тази функция ви позволява да създадете модулни програми, изходен код, които могат да се съхраняват дори в различни файлове.
Официални и действителните параметри
Формални параметри съществуват в предшестващото състояние на техниката и тялото на дефиницията на функцията. Те са дадени имена и някои уникални функции са достъпни в местните променливи.
Реалните параметри съществуват в основната програма. Те са посочени като параметър на функцията на мястото на официално.
По време на разговор стойност на действителните параметри на функцията, назначена официално. Съответно, имената на формалните и действителните параметри могат да бъдат едни и същи, то няма да доведе до конфликт.
Припокриване на локални променливи и параметри на глобални обекти - една от причините, че не трябва да създават функции достъп до глобални обекти (като не се знае какво ще бъде името на следващия си, или някой друг програма, която използва функцията си).
Приоритетни разговори и рекурсия
Една функция може да се нарече в друг.
По-специално, от вътрешната страна на тялото ви да функционира може да се обадите. Това се нарича рекурсия.
Има също така и комплекс (влагане) рекурсия, когато, например, функция А призовава функция В, и функцията на В - функция A.
Пример прост рекурсия (функция се нарича):
Основният недостатък на рекурсия - преизчисли същите стойности.
Пример: За да се изчисли петия Фибоначи броя на рекурсивни алгоритми, е необходимо да се изчисли третото и четвъртото числата на Фибоначи. За да се изчисли четвъртата - че е необходимо да се изчисли втората и третата, а третата сме вземат предвид при изчисляване на петата.
Освен това, като цяло, във всеки един момент, само една функция може да се извърши, докато не се връща резултат - не започне изпълнение на следващата функция. Управление на основната програма се предава на функцията, докато функцията завърши своята работа, контрол няма да се върне към основната програма. По-специално: бъг във функцията ще спре цялата програма.
Методи за прехвърляне на параметрите на функцията
По-рано, ние разгледахме само ситуация, в която функцията, се нарича действителна стойност на параметър се копира в локална променлива, на разположение като формален параметър в тази функция.
Такъв метод на предаване на параметъра стойност има следните ограничения:
е възможно да се прехвърли параметър връзка за отстраняване на такива ограничения.
Параметърът предава чрез връзка, достатъчно е да се сложи знак функция прототип след типа параметър.
В този случай, дори ако името на официална параметър и действителната мача възниква никакъв проблем:
Ако е необходимо да се защити предава обекта от промените в функция, тя е описана като постоянен параметър.
Функцията може да бъде приет, и указатели.
Масивът може да се предава на функцията по различен начин. Прототип Пример:
Правилните параметри, според които ще бъдат предадени указател към първия елемент на масива, който е деклариран като постоянно:
След това, в рамките на функцията не можехме да преместите курсора към сестра.
параметри по подразбиране (по избор параметри)
За да се уточни броя на параметрите на функцията на етапа на създаването му стойности по подразбиране, тези стойности са доставени автоматично, ако повикването не е изрично дефинирано действителните параметри.
Стандартната опция е полезна, когато функцията е ясно предварително с някои от параметрите му ще предизвика по-често.
Най-често тази функция ще се използва за изчисляване на площада. Когато трябва да се напише на разговор по този начин:
Но бихме могли да декларира функция с параметри по подразбиране, както следва:
Сега можете да се обадите на функцията без да се посочва последният параметър:
Което е равнозначно на поканата:
Или го посочи:
Функцията може да има няколко основни. Например, помислете за функция прототип, който може да бъде копирана от един ред на друг, тъй като аз-ти характер и завършва с н-ти:
Тази функция може да се нарече с две, три или четири параметри. Ако повикването е от 2 параметри, първите 100 знака са копирани.
Ако определите 3-те параметри в разговора, на първите две стойности ще бъдат причислени към задължителните параметри, а третият - на първия избор. Стойностите на избираеми параметри се задават в реда, в който се появи, от ляво на дясно. Не съществува възможност да се запишете стойността по подразбиране на третия параметър, като трансферната стойност на последния.
претоварване на функции
Уникалността на функцията се определя от не само името й, но и определя нейните параметри и връщане тип. C ++ позволява да създадете функция с името на вече съществуващо, при условие че новата функция ще бъде различен набор от параметри.
Типът на връщане, като по този начин, може да варира, както и едни и същи (но не можете да създавате функции с еднакви имена и набори от стойности, които се различават само по вида на връщане стойност).
Функция претоварване е удобно да извършват подобни действия за различните видове стойности:
Каква функция се нарича, програмата определя въз основа на типовете на параметрите преминали.
Но такъв разговор ще доведе до грешка при компилация:
Въпреки че има avtoprivedenie, компилаторът не мога да разбера коя версия на функцията, ние ще използваме.
Ако сме по-нататъшно определяне на функцията с настройката по подразбиране е претоварена, също така е необходимо да се следват уникалността в поканата.
Тази функция, въпреки че не може да се използва редовно функция Фрак претоварване, тъй като в случай на Фрак повикване (4,3) - не е ясно кой вариант да използвате: първия или третия.
функционални шаблони
Шаблони - C ++ език означава за кодиране общи алгоритми без позоваване на някои параметри (например, тип данни).
Сега можете да се обадите на функцията, както следва:
Вид ще се определя автоматично в зависимост от вида на действителните параметри. И вие можете да укажете в каква стойност трябва да вземе общ вид в ъглови скоби:
Модели, както ще бъде обсъдено по-долу, се прилагат не само към функция, но и да класове. Въпреки това, използването им за класове не се различава от използването на функцията.
- Създаване на функция, която ще има две цели числа параметри а и б. и като стойността му се връща произволно число от интервала [а, Ь]. С Тази функция се използва за запълване на масива от 20 числа и ще го покаже.
- Създаване на функция, която ще се казва масив от дълбината на екрана в линията изход. С функциите на първия и втория програми попълнете масиви от 10 5 elemnetov всеки случайни числа и да се приведат всички 5 масив на екрана, всеки на отделен ред.
- Създаване на програма, която използва рекурсия за изчисляване на факториела на число влезе от клавиатурата от потребителя.
- Създаване на функция, която нещо ще рече ли дължина масив определено от някоя от известните методи.
- Потребителят въвежда от клавиатурата 7 линии до 100 знака. Създаване на програма, която ще се справи и ред на дисплея на екрана, подредени по азбучен ред. Така например, потребителят влезе:
Програмата трябва да се покаже: