Ni lernas C++/Funkcioj

El Vikilibroj

Kio estas funkcio?[redakti]

Funkcio estas difinita aro de kodo, kiu ruleblas iutempe. Eble utilas imagi, ke funkcio estas variablo, kiu rulas kodon kaj poste finfine rezultas valoron.

Anatomio de laika funkcio[redakti]

Rerigardu vian unuan programon, dirantan **Bonvenon mondo!** Ĝi estis jene:

#include <iostream>
                                           
using namespace std;

int main()
{                                          
   cout << "Bonvenon mondo!" << endl;
   return 0;
}

Vi jam konas funkcion, vere. Ĝia nomo estas *main*, kaj ĝi videblas supre. *main* estas la ĉefa funkcio. Tio signifas, ke ĝi estas la unua funkcio, la unua "kodaro" rulota. T.e., la kodaĵoj inter ĝiaj krampoj, la korpo de ĝi, estas rulota tuj post la lanĉiĝo de la programo.

Rimarku ĝian sintakson: la komenco de la ĉefa funkcio estas int main() {.

int estas la rezulta tipo de la funkcio. Kiam la rolado de ĝi finiĝas, ĝi rezultu valoron tiutipan. Ĝi nur povas esti valida, difinita valortipo.

main estas ĝia nomo, kiu por normalaj funkcioj povas esti io ajn dezirata-- krom la ĉefa funkcio, kies nomo ĉiam nomiĝas main.

Tuj post la nomo estas ĝia argumentaro, kiu restas inter du rondkrampoj, (). Ĉi funkcio mankas argumentoj, do estas nenio inter la du rondkrampoj.

Kaj, post la argumentaroj estas la korpo de la funkcio, inter la du krampoj, { ... }. En via unua funkcio, tio nur enhavas la cout kaj return komandojn.

Ĉiuj funkcioj bezonas return komandon. return signifas esperante deveni, demontri, aŭ rezulti. T.e., ke la valoro tuj post return estas la rezultota. Nu, ne forgesu, ke ĝi devas laŭesti la jam skribita rezulttipo! Ĉikaze, ĉar la rezulttipo estas int, la valoro estas tiel, 0.

Via unua (neĉefa) funckio[redakti]

Do nun, ni provu verki novan funkcion, neĉefan! Ni tranaĝu vastajn marojn, kaj, kaj...! Ni skribu Bonvenon mondo! reen, sed iom nesame.

Tralegu la jenan:

#include <iostream>
                                           
using namespace std;

void bonveni() {
    cout << "Bonvenon mondo!";
    return;
}

int main() {
   bonveni();
   return 0;
}

La vera bonveno moviĝis al alia funkcio, "bonveni". La funkcio fakte rezultas nenion, pro ke la rezulttipo estas void (nenio), kaj, reciproke, la return ne vere specifigas ion ajn.