Linux E X P R E S

Facebook

Programovanie v jazyku C++: Tvorba funkcii (2)

C++

Naučte sa pracovať s návratovou hodnotou funkcii. Uvidíte aj implementáciu faktoriálu s využitím funkcie.


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.

Diskuze (3) Nahoru