Потребителски панел
Запомни
Категории
C/C++ (17)
C# (8)
Java (5)
Visual Basic (19)
Delphi/Pascal (11)
Python (4)
Assembly (0)
Други (0)
Facebook
Функции | Автор: admin | Дата: 25.09.2009


Функцията е подпрограма, която може да бъде извикана от главната програма за извършване на определена задача. Например когато имате код, който се повтаря на много места във ващата програма, би било добре ако го вкарате във функция и да извиквате нея, когато ви потрябва вместо да копирате кода отново и отново. Можете да декларирате функции по-същия начин както декларирате и главната функция. Ето един прост пример за функция, отпечатваща "Hello":
void PrintHello()
{
cout << "Hello" << endl;
}

Използваме тип void, защото в случая не искаме от функцията да връща стойност. А ето как да я извикате в главната функция:
int main()
{
PrintHello();
return 0;
}

Вече можете да правите програми с повече от една функция и затова трябва да знаете, че има и 2 вида променливи - локални и глобални. Локалните са тези които са декларирани в определена функция, тях може да ги използвате само в тази функция, ако се опитате да ги използвате в друга функция, ще получите грешка. Затова има и глобални променливи, те се декларират извън всички функции и важат навсякъде в програмата. Ето пример:
int a; // глобална променлива

void MyFunction()
{
int b; // локална променлива
b = 5;
a = 7;
}

int main()
{
a = 3;
return 0;
}

За да прехвърляте стойности между функциите трябва да използвате параметри. Те се дефинират между двете скоби, които са след името на функцията. Трябва да избирате типа данни за всеки параметър. Сега ще направим функция, която получава число като параметър и го отпечатва.
void PrintNumber(int n)
{
cout << n << endl;
}
int main()
{
PrintNumber(6);
return 0;
}

Ако прехвърляте повече от една стойност трябва да ги разделяте със запетая:
void PrintNumber(int n, int m)
{
cout << n << m << endl;
}
int main()
{
PrintNumber(6, 5);
return 0;
}

Досега използвахме само Void функции, който не връщат стойност. Функциите могат да връщат стойности, за тази цел при декларирането на функцията, пред името на самата функция трябва да напишете типа данни, който ще искате функцията да връща:
int GetNumber()
{
return 10;
}

int main()
{
int i = GetNumber();
return 0;
}

В случая връщаме цяло число и затова използваме integer.
След изпълнението на този код стойността на променливата i ще бъде 10. Може да проверите това като я отпечатате.

А сега да приложим наученото в този урок, като направим една програма, която пресмята квадрата на число въведено от клавиатурата:
#include <iostream>
using namespace std;

double func(double n){
return n*n;
}

int main()
{
double a;
cout<<"a = ";
cin>>a;
cout<<"a^2 = "<<func(a);
return 0;
}


Урока е подготвен специално за Programming-BG.com. Моля не копирайте без мое съгласие!

           


Беше ли Ви от полза урокът?
да не




Искате да пишете коментари? Влезте от тук или се регистрирайте!



Коментари (8):

От programmer на 10.09.2010 в 18:09 часа

неуспях да разбера смисала на "return 10;"
въобще действието на "return"

От admin на 18.09.2010 в 23:27 часа

Ами примерно изчисляваш нещо в една функция и после използваш return за да върнеш резултата към функцията откъдето е извикана тази... и според това какъв тип данни искаш да връщащ със return, така трябва да си декларираш и самата функция.

Примерно: int func1()
{ ... }

или

double func2()
{ ... }

и т.н.

;)

От programmer на 01.10.2010 в 16:33 часа

добивам горе-доло представа но ще ми трябва малко практика...

От Protoss на 02.11.2010 в 15:12 часа

Mерси много за урока, ама и аз не разбирам ква е разликата между "return 10" и "return 0"?!

От Protoss на 02.11.2010 в 15:15 часа

и също така защо не се задържа екрана?? забравил си system("pause") wink

От admin на 03.11.2010 в 19:40 часа

Нарочно не съм го написал, по-добре използвай getchar() или cin.get()
А относно return 0 - прието е да се връща стойност 0, когато програмата е изпълнена според очакваното, т.е. без грешки. Затова в края на главната функция се връща стойност 0. За другото вече обясних по-горе, ако все още не ти е ясно, отвори тема във форума за повече подробности.

От C++ programing на 04.01.2011 в 17:33 часа

този урок е доста добре формулиран и не знам за другите но специално за мен това е много полезен урок първо функциите като цяло са трудни но все пак човека по просто не може да ги обесни се едно слишам необясненото от госпожата smile тя само казва какво е дефинирала grin ! относно разликата между ритърн 10; и ритърн 0; grin това е основно за функциите /* например ритърн н*н връща резултата от ф-ята както и админа каза /* обаче това не е всичко за функциите !!! Страхотен урок и стига съм бърборил глупости вече smile мерси за урока!!!

От kresko78 на 19.04.2011 в 13:02 часа

Тези функции са много замотани.