Jazyk C - funkcie
Učebné texty
Funkcie
Funkcia je skupina príkazov, ktoré spoločne vykonávajú úlohu. Každý program C má najmenej jednu funkciu, ktorá je hlavná (), a všetky najvýznamnejšie programy môžu definovať ďalšie funkcie.
Kód môžete rozdeliť do samostatných funkcií. Ako rozdelíte svoj kód medzi rôzne funkcie, je len na vás, ale logicky je rozdelenie také, že každá funkcia vykonáva konkrétnu úlohu.
Deklarácia funkcie hovorí kompilátoru o názve funkcie, type návratu a parametroch. Definícia funkcie poskytuje skutočné telo funkcie.
Knižnica v štandardnom jazyku C poskytuje množstvo vstavaných funkcií, ktoré môže váš program zavolať. Napríklad strcat () spája dva reťazce, memcpy () na kopírovanie jedného miesta na iné miesto a mnoho ďalších funkcií.
Funkcia môže byť tiež označovaná ako metóda alebo čiastková rutina alebo postup atď.[1]
Definícia funkcie v programovaní C sa skladá z hlavičky funkcie a tela funkcie. Tu sú všetky časti funkcie -
Return Type - Funkcia môže vrátiť hodnotu. Return_type je typ údajov hodnoty, ktorú funkcia vracia. Niektoré funkcie vykonávajú požadované operácie bez vrátenia hodnoty. V tomto prípade je návratovým typom kľúčové slovo neplatné.
Názov funkcie - Toto je skutočný názov funkcie. Názov funkcie a zoznam parametrov spolu tvoria funkčný podpis.
Parametre - parameter je ako zástupný symbol. Po vyvolaní funkcie odovzdáte hodnotu parametru. Táto hodnota sa označuje ako skutočný parameter alebo argument. Zoznam parametrov sa týka typu, poradia a počtu parametrov funkcie. Parametre sú voliteľné; to znamená, že funkcia nesmie obsahovať žiadne parametre.
Telo funkcie - telo funkcie obsahuje súbor príkazov, ktoré definujú, čo funkcia robí.
Príkazy vo funkcií
Dovolené:
- Používanie akýchkoľvek príkazov
- Volanie iných funkcií
- Volanie samej seba(rekurzia)
Zakázané
- Definovanie funckie v tele inej funkcie
- Volanie funckie main
Doporučené
- Písať krátke, jednoúlohové, ľahko pochopitelné funkcie
- Veľké funkcie rozdeliť na vhodnom mieste
- Ak to nie je nutné funkcia nebude vypisovať na obrazovku
Parametre funkcie
Argumety: zoznam premenných uzatvorených v zátvorkách pri mene funkcie
- a=getchar();
- putchar(a);
- clrscr();
- abs(b);
- power(x,y);
Parametre:
- Zoznam parametrov/argumentov (vstupných
premenných) funkcie v tvare: (typ1 meno1, typ2 meno 2, ..., typ_n meno_n)
- Typ: typ premennej: int, char, float, double,...
- Meno: názov premennej
- Tieto premenné sú lokálne premenné danej funkcie a nadobudnú hodnoty pri zavolaní funkcie
Deklaracia funkcie
- Prototyp sa zapíše v súbore kde sa funkcia používa.
- Funkcia sa definuje pred jej prvým použitím (volaním). Definícia potom vystupuje aj ako deklarácia.
- Prototyp funkcie a jej definícia sa musia zhodovať v návratovom type, názve funkcie a type parametrov
- Názvy parametrov v deklarácii sú nepovinné a nemusia sa zhodovať s definíciou
Definícia funkcie
- Hlavička a telo funkcie
- Hlavička sa zhoduje s deklaráciou
- návratový typ, názov funkcie a zoznam parametrov
- nie je za ňou bodkočiarka!
- Telo začína a končí zloženou zátvorkou
- Príkazom return kdekoľvek v tele sa funkcia ukončí, pričom musí vrátiť hodnotu (okrem typu void)
1 void Plocha(double dlzka, double sirka) //hlavička
2 { double plocha = dlzka*sirka;
3 printf("%f",plocha); //telo funkcie
4 return;
5 }
Volanie funckie
- Argumenty sú odovzdávané v rovnakom poradí ako sú parametre uvedené v deklarácii a definícii.
- Na názvoch argumentov nezáleží, odovzdáva sa len ich hodnota, dôležitý je typ.
- Ak funkcia nemá parametre, pri volaní sa uvádzajú len prázdne zátvorky ( )
1 double a, b;
2 printf("Zadaj dlzku a sirku obdlznika: ");
3 scanf("%lf %lf", &a, &b);
4 Plocha(a, b); //volanie funkcie a odovzdanie dvoch argumentov
Parameter funckie
Parametre prenášané hodnotou
- Pri ich použití sa vo funkcii vytvoria nové premenné a do nich sa skopírujú hodnoty parametrov
- Parametre prenášané odkazom
- Nevytvára kópia hodnôt premenných, ale vytvorí sa odkaz na premenné (odovzdáva sa adresa premenných).
- V oboch prípadoch tieto lokálne premenné pri ukončení funkcie zaniknú.
Návratová hodnota
- Funkcie, ktoré vracajú nejakú hodnotu môžem priradiť k nejakej premennej:
int a; a=abs(-5); char c=getchar();
- Funkcie bez návratovej hodnoty nemôžem priraďovať.
a=clrscr(); chyba: clrscr() nemá návratovú hodnotu
- Správne použitie: clrscr();
Funkcie s návratovou hodnotou
Po skončení vykonávania funkcia vráti nejakú hodnotu, ktorú môžeme priradiť do premennej.
1 int abs(int x)
2 { // telo funkcie
3 if(x<0)
4 return -x;
5 else
6 return x
7 }
- hlavička funkcie: typ návratovej hodnoty: int (celé číslo)
- argumenty: funkcia má jeden argument: x (x je celé číslo)
- telo funkcie obsahuje konkrétne príkazy
- hodnotu, ktorú má funkcia vrátiť, špecifikujeme kľúčovým slovom return, za ktorým nasleduje hodnota, ktorú chceme vrátiť. V príklade, ak je x<0, funkcia vráti hodnotu, čo je vlastne -x (kde x<0), čiže výsledok bude +x. V opačnom prípade vráti x.
Funkcie bez návratovej hodnoty
Tieto funkcie nič nevracajú. Ich návratový typ je void (prázdny).
1 void hlasenie(int cislo_chyby)
2 {
3 switch(cislo_chyby)
4 {
5 case 0: printf("Ziadna chyba"); break;
6 case 1: printf("Chybne vstupne hodnoty"); break;
7 case 2: printf("Chyba pocas vypoctu"); break;
8 default: printf("Neznama chyba");
9 }
10 }
Dana funkcia je bez návratovej hodnoty (void) a má jeden parameter: celé číslo cislo_chyby. Táto funkcia vypíše podľa hodnoty svojho parametra nejaké chybové hlásenie.
Použitie funkcií
1 void parne(int a); //Deklarácia funckie
2 int main()
3 {
4 parne(5); // použitie vlastnej funkcie v maine
5 }
6 void parne(int a) //Definícia funckie za hlavnou funkciou
7 {
8 if(a%2)
9 printf(“%d je neparne”,a);
10 else
11 printf(“%d je parne”,a);
12 }
Príklad na minimum
1 int min(int h1,int h2)
2 {
3 if (h1<h2)
4 return h1;
5 else
6 return h2;
7 }
8 int main()
9 {
10 int k=min(5,2);
11 printf("%d",k);
12 printf("%d",min(7,4));
13 int k2=min(min (7,8),k));
14 int k3=min(min(7,8),min(5,2)));
15 }