Funkcie

Pojem knižnica a štandardné knižné funkcie:

Knižnica v jazyku C

  • Knižnica je zbierka funkcií, ktoré uľahčujú programovanie v jazyku C.
  • Predstavuje užitočné nástroje, ktoré možno znovu použiť v rôznych programoch.

Štandardné knižné funkcie (Standard Library)

  • Štandardná knižnica C obsahuje užitočné funkcie, ktoré sú súčasťou jazyka a môžete ich použiť vo svojich programoch.
  • Príklady štandardných funkcií zahŕňajú printf, scanf, strlen, strcpy, rand a ďalšie.

Čo sú funkcie?

  • Funkcie sú samostatné bloky kódu, ktoré vykonávajú konkrétnu úlohu.
  • Pomáhajú rozdeliť program na menšie časti pre jednoduchšie riadenie a údržbu.

Deklarácia funkcií:

Deklarácia funkcie je predbežný opis funkcie, ktorý obsahuje jej meno, návratový typ a parametre (aké hodnoty funkcia očakáva pri volaní). Toto umožňuje kompilátoru rozpoznať volania funkcie a overiť ich správnosť.

// Deklarácia funkcie s názvom "nasobenie" s dvoma parametrami typu int.

int nasobenie(int faktor1, int faktor2);

Definícia funkcií:

Definícia funkcie obsahuje samotný kód funkcie a určuje, čo funkcia robí. Okrem návratového typu a parametrov obsahuje definícia aj telo funkcie, kde sa vykonáva operácia.

// Definícia funkcie "nasobenie" s dvoma parametrami.

int nasobenie(int faktor1, int faktor2) {   

        int vysledok = faktor1 * faktor2;    

        return vysledok; 

}

Volanie funkcií

Volanie funkcie je spustenie jej kódu z iného miesta programu.

int vysledok = nasobenie(5, 3); // Volanie funkcie "sucet".

Parametre funkcií

  • Parametre sú hodnoty, ktoré funkcia prijíma ako vstupy.
  • Pomáhajú funkciám pri vykonávaní ich úloh.

int nasobenie(int x, int y) {    

       return x * y;

}

Odovzdávanie parametrov:

Odovzdávanie parametrov funkcie je spôsob, ako predávať hodnoty funkcie, aby s nimi mohla pracovať.

Hodnotové odovzdávanie (Pass by Value):

  • Funkcia dostane kópiu hodnôt parametrov.
  • Zmeny parametrov vo funkcii neovplyvnia hodnoty v hlavnom programe.

void zvysOJedna(int cislo) {    

     cislo = cislo + 1; 

}

int main() {    

      int x = 5;   

      zvysOJedna(x);    // "x" v hlavnom programe zostane 5.    

      return 0; 

}

Odovzdávanie ukazateľov (Pass by Pointer):

  • Funkcia dostane adresy premenných ako parametre.
  • Zmeny v parametrách ovplyvnia hodnoty premenných v hlavnom programe.

void zvysOJedna(int *cislo) {    

     (*cislo) = (*cislo) + 1; 

}

int main() {    

      int x = 5;  

      zvysOJedna(&x);    // "x" v hlavnom programe zostane 5.    

      return 0; 

}

Lokálne a globálne premenne

  • Lokálne premenne sú definované v rámci funkcie a existujú iba v nej.
  • Globálne premenne sú definované mimo funkcií a sú dostupné v celom programe.

int globalnaPremenna = 10; // Globálna premenná

int main() {   

      int lokalnaPremenna = 5; // Lokálna premenná v funkcii "main"    

      return 0; 

}


Príklad:

Napíšte program, ktorý načíta dve celé čísla od používateľa, použije funkciu scitaj, ktorú vytvoríte na sčítanie týchto čísel a vypíše výsledok.

#include <stdio.h>

// Deklarácia funkcie na sčítanie dvoch čísel

int scitaj(int a, int b) {

return a + b;

}

int main() {

int cislo1, cislo2; 


printf("Zadajte prvé číslo: "); 

scanf("%d", &cislo1); 

printf("Zadajte druhé číslo: "); 

scanf("%d", &cislo2); 


int vysledok = scitaj(cislo1, cislo2);

printf("Súčet čísel %d a %d je %d\n", cislo1, cislo2, vysledok);

return 0;

}

Príklad
Príklad

Úloha číslo 1: Napíšte program, ktorý načíta celé číslo od používateľa, použije funkciu faktorial na výpočet faktoriálu tohto čísla, ktorú vytvoríte a vypíše výsledok.

#include <stdio.h>


int faktorial(int n) {

if (n == 0 || n == 1) {

return 1;

} else {

return n * faktorial(n - 1);

}

}


int main() {

int cislo;


printf("Zadajte celé číslo: ");

scanf("%d", &cislo);


int vysledok = faktorial(cislo);

// %llu nám znázorňuje unsigned long long integer (bez znamienkový veľký veľký integer)

printf("Faktoriál čísla %d je %llu\n", cislo, vysledok);


return 0;

}

úloha 1
úloha 1

Úloha číslo 2: Napíšte program, ktorý načíta dve celé čísla od používateľa, použije funkciu nsd na výpočet ich najväčšieho spoločného deliteľa (NSD), ktorú vytvoríte a vypíše výsledok.

#include <stdio.h>


int nsd(int a, int b) {

while (a != b) {

if (a > b) {

a -= b;

} else {

b -= a;

}

}

return a;

}


int main() {

int cislo1, cislo2;


printf("Zadajte prvé celé číslo: ");

scanf("%d", &cislo1);


printf("Zadajte druhé celé číslo: ");

scanf("%d", &cislo2);


int vysledok = nsd(cislo1, cislo2);


printf("NSD čísel %d a %d je %d\n", cislo1, cislo2, vysledok);


return 0;

}

úloha 2
úloha 2

Úloha číslo 3: Napíšte program, ktorý načíta celé čísla do poľa od používateľa, použije funkciu priemer na výpočet priemeru týchto čísel, ktorú vytvoríte a vypíše výsledok.

#include <stdio.h>


double priemer(int pole[], int dlzka) {

double suma = 0.0;

for (int i = 0; i < dlzka; i++) {

suma += pole[i];

}

return suma / dlzka;

}


int main() {

int data[100];

int dlzka;


printf("Zadajte počet čísel v poli: ");

scanf("%d", &dlzka);


printf("Zadajte čísla do poľa:\n");

for (int i = 0; i < dlzka; i++) {

scanf("%d", &data[i]);

}


double vysledok = priemer(data, dlzka);


printf("Priemer čísel v poli je %.2f\n", vysledok);


return 0;

}

úloha 3
úloha 3

Úloha 4: Napíšte program, ktorý načíta celé číslo n od používateľa, použije funkciu fibonacci na výpočet n-tého člena Fibonacciho postupnosti, ktorú vytvoríte a vypíše výsledok.

#include <stdio.h>


int fibonacci(int n) {

if (n <= 1) {

return n;

} else {

return fibonacci(n - 1) + fibonacci(n - 2);

}

}

int main() {

int n;

printf("Zadajte n: ");

scanf("%d", &n);

printf("Fibonacciho postupnosť pre %d členov:\n", n);

for (int i = 0; i < n; i++) {

printf("%d ", fibonacci(i));

}

printf("\n");

return 0;

}
úloha 4
úloha 4
Vytvorte si webové stránky zdarma! Táto stránka bola vytvorená pomocou služby Webnode. Vytvorte si vlastný web zdarma ešte dnes! Vytvoriť stránky