Jazyk C - funkcie

Z Kiwiki
Skočit na navigaci Skočit na vyhledávání


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 prenášané hodnotou

To znamená, že pri volaní funkcie (napr. abs(3) ) sa hodnota parametru funkcie skopíruje do novovytvorenej premennej (argumentu) / abs(int x=3) / danej funkcie. Takto sa prenášajú všetky argumenty (okrem výnimiek, a ak to neurčíme inak). Premenné vytvorené vo funkciách sú lokálne a po skončení funkcie zaniknú. Premenné definované v jednej funkcie nie sú viditeľné v inej funkcii (aj keď majú rovnaké meno).


Parametre prenášané odkazom.

Pri parametroch prenášaných odkazom je špecifické to, že pri volaní funkcie sa nekopírujú ich hodnoty, ale ich adresy (čo šetrí čas pri argumentoch s väčšími pamäťovými nárokmi). Dôsledok tejto zmeny je, že zmena hodnoty vo funkcii má za následok zmenu tejto premennej aj vo funkcii, z ktorej bola táto volaná. Upravme hlavičku funkcie abs, aby parameter x bol prenášaný odkazom: int abs(int &x); Operátor & (referencia) má význam adresy premennej. Premenné sa prenášajú odkazom, ak to určíme operandom &. Polia ako parametre funkcií sa prenášajú odkazom vždy (operátor & sa neuvádza).

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 { 
3     double plocha = dlzka*sirka;  
4     printf("%f",plocha);                //telo funkcie
5     return;
6 }

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 ( )
double a, b;
printf("Zadaj dlzku a sirku obdlznika: ");
scanf("%lf %lf", &a, &b);
Plocha(a, b); //volanie funkcie a odovzdanie dvoch argumentov

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 { 
3     // telo funkcie
4     if(x<0)
5         return -x;
6     else
7         return x
8 }
  • 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 
 3 int main()
 4 {
 5     parne(5); // použitie vlastnej funkcie v maine
 6 }
 7 
 8 void parne(int a) //Definícia funckie za hlavnou funkciou
 9 {
10     if(a%2)
11         printf(%d je neparne,a);
12     else
13         printf(%d je parne,a);
14 }


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 
 9 int main()
10 {
11     int k=min(5,2);
12     printf("%d",k);
13     printf("%d",min(7,4));
14     int k2=min(min (7,8),k));
15     int k3=min(min(7,8),min(5,2)));
16 }

Referencie