Увод в програмирането  alpha
Функции - общ вид. Оператор return

Дефиниция на функция

[тип_на_резултатата] име_на_функцията ( списък от тип_и_име_на_формалните_параметри )
{
        последователност_от_дефиниции_на_вътрешни_променливи_и_оператори
}
Note
име_на_функцията и име_на_формалните_параметри се заместват от идентификатори.

Полето тип_на_резултата задава типа на връщаната стойност от функцията. Ако това поле отсъства, се предполага, че функцията връша стойност от тип int. В последните версии на C++ е задължително задаването на типа на връщаната стойност. Ако полето съдържа думата void, то функцията не връща резултат ( стойност ). Ключовата дума void задава празен тип. Името на функцията е идентификатор. Скобите след името на функцията са задължителни, дори ако в тях няма формални параметри. Формалните параметри са идентификатори. Типът на параметрите на функцията трябва задължително да се запишат.

Пример:

        // Правилно:
        void f( int x, int y );
        
        // Грешно:
        void f( int x, y);

За да се изпълни една функция на нея трябва да й се предаде управлението. Това става чрез обръщение към тази функция ( чрез нейно извикване ). Функцията, която предава управлението, е извикваща, а тази, която приема управлението, е извикана. Една извикана функция може да извика друга функция и т.н. Точно една функция в програмата е с име main. Тя се нарича главна функция. При стартиране на изпълнение на програмата на C/C++ Операционната Система предава управлението на главната функция, която от своя страна може да се обръща към други функции. Изпълнението на програмата завършва с изпълнението на главната функция, която връща управлението на Операционната Система. В програма на C/C++ е предвидена възможност за изход от всяка функция направо към операционната система чрез обръщение към стандартната функция exit. Резултатите от изпълнението на дадена функция могат да се върнат като се използва специалния оператор return, външни променливи или параметрите на функцията. Обръщение към функция, което не завършва с ";" , се разпознава от компилатора като операнд в израз и при изпълнение се замества със стойност, предоставляваща връщания резултат от извиканата функция. За да върне една функция искания резултат, тялото й трябва да съдържа оператора return.

return

Общ вид;

        return (израз);
Note
"()" не са задължителни.
За по-голяма яснота се препоръчва употребата на "( )".

Операторът return може да се запише на всяко място в тялото на функцията, което е разрешено за оператор. В една функция могат да се използват няколко оператора return, когато това се изисква от нейната логика.

Действие на оператора return:

  1. Пресмята се стойността на израза след оператора
  2. Ако е необходимо типът на стойността се преобразува към типа на функцията
  3. Изпълнението на извиканата функция се прекратява
  4. Управлението се връща на извикващата функция и ефектът е такъв, като че ли обръщението към функцията се замества със стойността на върнатия от нея резултат.

Изразът след оператор return не е задължителен. Ако той ( изразът ) липсва, функцията не връща резултат и тогава типът на функцията трябва да бъде void. Можем да съставим и функция без да използваме return. В този случай ролята на return изпълнява затварящата фигурна скоба на тялото на функцията.

Задача: Да се напише функция, която преобразува малки в главни букви, а останалите символи не променя.

        #include<iostream>
        #include<stdio.h>
        
        int toupper( char c )
        {
                return ( ( c >= 'a' && c<='z' )? c-'a'+'A':c );
        }

След като дадена функция е състаевена, можем да се обръщаме към нея.