Návratová hodnota funkcii
Pre začiatok si vytvorme program, ktorý na základe vstupu od používateľa vyhodnotí, čí zadané číslo je párne alebo nie. Celú logiku vyhodnotenia natlačíme do main
funkcie.
#include <iostream> using namespace std; int main() { int cislo; bool jeParne; cout << "Zadaj cele cislo: "; cin >> cislo; if(cislo == 0) { cout << "Zadal si " << cislo << " a tak zopakuj volbu!\n"; return 0; } cout << "Bolo zadane cislo: " << cislo << " a vyhodnocujem, tak trochu strpenia!!!\n"; if(cislo % 2 == 0) jeParne = true; else jeParne = false; if(jeParne) cout << "Cislo " << cislo << " je parne!\n"; else cout << "Cislo " << cislo << " je neparne!\n"; return 0; }
Ak máme vyhodnotiť len jedno číslo, tak vieme sa s tým popasovať. Čo ak máme viacero čísiel na vyhodnotenie? Praktickým riešením je vytvoriť si funkciu a teraz pozor, bude vracať nejakú určitú návratovú hodnotu. Skúsme teraz vyhodnotiť číslo v našej definovanej funkcii, ktorá vráti pravdivostnú hodnotu, či dané číslo je párne alebo nie.
#include <iostream> using namespace std; bool jeParne(int cislo) { if(cislo % 2 == 0) return true; else return false; } int main() { int cislo; cout << "Zadaj cele cislo: "; cin >> cislo; if(cislo == 0) { cout << "Zadal si " << cislo << " a tak zopakuj volbu!\n"; return 0; } cout << "Bolo zadane cislo: " << cislo << " a vyhodnocujem, tak trochu strpenia!!!\n"; if(jeParne(cislo)) cout << "Cislo " << cislo << " je parne!\n"; else cout << "Cislo " << cislo << " je neparne!\n"; return 0; }
Typ návratovej hodnoty sme definovali pred menom nasledovne: bool jeParne(int cislo)
. Všimnite si, že sme nepotrebovali definovať pravdivostnú premennú, ale samotná funkcia sa ujala tejto role viď. if(jeParne(cislo))
.
Doteraz sme testovali len jedno číslo a zatiaľ sme plne neocenili možností zjednodušenia programu s pomocou funkcie. Zjednodušením myslíme to, že nemusíme písať test pre každé číslo alebo pre každý cyklus, postačí zavolať len danú funkciu.
Doplňme našu implementáciu o pole čísel, ktoré budeme testovať a jednotlivé testovanie uskutočníme v cykle.
#include <iostream> using namespace std; bool jeParne(int cislo) { if(cislo % 2 == 0) return true; else return false; } int main() { int cisloPole[5] = {1025,114,-589,2526,-9999}; for(size_t i = 0; i < sizeof(cisloPole)/sizeof(cisloPole[0]);i++) { cout << "Bolo zadane cislo: " << cisloPole[i] << " a vyhodnocujem, tak trochu strpenia!!!\n"; if(jeParne(cisloPole[i])) cout << "Cislo " << cisloPole[i] << " je parne!\n"; else cout << "Cislo " << cisloPole[i] << " je neparne!\n"; } return 0; }
Faktoriál čísla
Faktoriálom čísiel sme sa už v jednom dieli venovali. Poďme z klasickej implementácie faktoriálu čísla (k dispozícii tu) pozmeniť na implementáciu s využitím funkcie. Okrem toho využijeme pole testovaných vzoriek a cyklus.
#include <iostream> using namespace std; int testFaktorial(int cislo) { int faktorial = 1; for(int i = cislo; i > 1; i--) { faktorial = i * faktorial; } return faktorial; } int main() { int poleCisel[5] = {3,5,6,8,9}; for(size_t i = 0; i < sizeof(poleCisel)/sizeof(poleCisel[0]); i++) { cout << "Faktorial cisla "<<poleCisel[i]<< " je: "<<testFaktorial(poleCisel[i]) << "\n"; } return 0; }
Všimnite si, že funkciu voláme pri výpise a rovnako myslíme na jednotlivé indexy prvky poľa, ktoré prechádzame cez iterácie. Naša funkcia testFaktorial
vracia typ návratovej hodnoty int
.
V budúcom dieli si niečo povieme o rekurzívnych funkciách.