přejít na obsah přejít na navigaci

Linux E X P R E S, Programovanie v jazyku C++: Funkcia main()

Programovanie v jazyku C++: Funkcia main()

cplusplus.png

V tomto článku začneme vysvetľovať základné piliere potrebné pri programovaní v jazyku C++. Predstavíme si veľmi dôležitú funkciu main() a ďalšie nutné príkazy, o ktorých by ste mali vedieť.


Funkcia main()

Funkcia main() ma nasledovnú štruktúru:

int main()
{
  …rôzne príkazy…
  return 0;
}

Poďme si to rozobrať. Riadok int main() nazývame hlavičkou funkcie. V oblasti zložených zátvoriek sa nachádza telo funkcie. Pre bližšie vysvetlenie, main() chápeme ako rozhranie programu a v tele funkcie sa nachádzajú jednotlivé príkazy určené pre procesor počítača.

V jazyku C++ sú rôzne príkazy oddelené symbolom ; (bodkočiarka; česky středník, pozn. šéfred.). Za každým príkazom píšeme bodkočiarku. Tak odlíši procesor jednotlivé príkazy, ktoré mu adresujeme, aby vykonal.

Na čo ale slúži rozhranie funkcie main()? Čo sa odohráva za pozadím? Funkciu main() píšeme pri každom programe. Princípom v jazyku C++ je aktívovanie a resp. volanie funkcie inou funkciou.

Hlavička funkcii, čiže int main() popisuje rozhranie medzi funkciou volajúcou a funkciou volanou. Pri každej funkcii píšeme pred menom návratový typ funkcie, čiže to, čo vráti volaná funkcia volajúcej funkcie.

Aj funkcia main() je ako ostatné funkcie. Narozdiel ale od nich funkciu main() volá štartovací kód kompilátoru. Je aktivovaná kompilátorom. Vykoná sa tak všetko, čo je vo funkcii main(). Môžme to brať ako komunikáciu medzi kompilátorom (operačný systém) a vaším zdrojovým kódom.

Všimnite si, že funkcia main() obsahuje (). Vo vnútri okrúhlych zátvoriek definujeme parametre, ktoré získa od volajúcej funkcie. V tomto prípade žiadne argumenty nepotrebujeme. Funkcia main() má návratovú hodnotu int. Je to celočíselná hodnota. Volaná funkcia main() a teda aj celý program tak vráti celočíselnú hodnotu.

Na korektné ukončenie funkcie main() a poslanie návratovej hodnoty od funkcii volanej pre funkciu volajúcu sa využíva príkaz return. Návratová hodnota 0 signalizuje, že program skončil úspešne. Iné hodnoty sa používajú ako chybové kódy. Možno potom pri spúšťaní z dávok alebo z iných programov správne reagovať na úspešný či neúspešný koniec programu (a prípadne ešte rôzne podľa konkrétnych chýb).

Ešte upozornenie: funkciu int main() nijak nemeníte, inak kompilátor vám vyhodí chybu. Nepíšeme hlavičku funkcie ako INT main(), ani int MAin()ani inak. Stále majte na pamäti, že sa to píše presne tak, ako sme si na začiatku definovali. Jazyk C ++ je citlivý na veľkosť písmen.



Predprocesor a súbor iostream

Funcia main() vám nestačí na to, aby ste rozbehli program. Potrebujete predprocesor. Zachvíľu si vysvetlíme, čo je zač. Najprv sa zoznámte s kusom kódu:

#include <iostream>
using namespace std;

Ak by vám to nešlo skompilovať, máte starší kompilátor. Staršie kompilátory majú radšej takúto definíciu:

#include <iostream.h>

Ak by ste ale použili takúto deklaráciu na najnovších kompilátorov, dostali by ste pár milých slov od kompilátora.

Poznámka šéfredaktora: Na kompilátor požadující uvedenou starší syntaxi (resp. na strukturu standardních hlavičkových souborů, z nichž pak syntaxe vychází) byste už dnes neměli nikde narazit – maximálně tak u nějakých starých unixových strojů. GNU Compiler Collection již velmi dlouho podporuje C++ podle standardu ISO, kde je obsažena první ze syntaxí (druhá nikdy standardizována nebyla).

Predprocesor je program, ktorý spracuje zdrojový program tak, aby ho prevzal hlavný kompilátor. Kompilátor môžeme tiež považovať za predprocesor. Predprocesor okrem iného spracováva direktívy začínajúcich symbolom #. Za symbolom pokračuje:

include <iostream>

Slovo include tu znamená, že niečo sa pridá na toto miesto. Konkrétnejšie, predprocesor pridá obsah hlavičkového súboru iostream do zdrojového programu. Tak získa kompilátor potrebné informácie k naštartovaniu kompilácie. Hlavnou úlohou predprocesorov je pridávať a meniť text pred samotnou kompiláciou. Je možné si definovať vlastné predprocesory. Ale o tom neskôr v ďalších častiach seriálu.

Odkiaľ sa ale vzalo slovo iostream? Prvé dve písmena, io odkazuje na štandardný vstup/výstup. Je to komunikácia programu so „svetom“. Tým svetom sa myslí napríklad človek, ktorý spustí aplikáciu a zadá nejaké údaje a zároveň čaká zobrazenie informácie na monitore. Celá direktíva #include <iostream> tak pošle kompilátoru obsah súboru iostream a obsah súboru vášho zdrojového kódu.

Hlavičkový súbor iostream neexistuje vo vzduchoprázdne. Definuje rozhrania k funkciám zo štandardnej knižnice, ktorá sa k programu v rámci komplikačního procesu prilinkuje.

Na koniec, ako rozohriatie do budúcej časti, si dáme plnohodnotný fungujúci program, ktorý si môžete vyskúšať. Skúste prísť sami, čo robia jednotlivé príkazy. V ďalších častiach sa na ne zameriame podrobnejšie.

Príklad 1:

#include <iostream>

using namespace std;

int main()
{
  char meno[50];
  cout << "Zadaj svoje meno: ";
  cin >> meno;
  cout << "Ahoj "<<meno<<", zdraví ťa HAL-9000.\n";
  cout << "Som superinteligetná bytosť, riadiaca túto loď a rútime sa k planéte Jupiter.\n";
  cout << "Ja viem, otravujem ťa pri učení jazyka C++, fajn mlčím a držím palce!\n";
  return 0;
}

Nahoru

Příspěvky

Programovanie v jazyku C++: Funkcia main()
PPK 30. 04. 2016, 11:54:25
Odpovědět  Odkaz 
Kdyz to vidim tak mi jako ceckari vstavaj vlasy hruzou... Chybi informace o spravny funkci main s parametrama. Chybi informace o definicich pro navratovy hodnoty returnu v main EXIT_SUCCESS a EXIT_FAILURE. Tak jako liny programator co nepotrebuje parametry prikazovy radky pouzije main bez parametru, tak se nebude obtezovat s psanim returnu v main... pak je to stejny jako by tam mel return EXIT_SUCCESS ...
Re: Programovanie v jazyku C++: Funkcia main()
Tomáš 1. 05. 2016, 11:15:47
Odpovědět  Odkaz 
Nebolo by krajsie, ked je to C++ namiesto char meno[50] pouzit string meno?
Re: Re: Programovanie v jazyku C++: Funkcia main()
m 1. 05. 2016, 17:55:00
Odpovědět  Odkaz 
Presne tak. Taky vubec nechapu, proc v jednoduche, ciste C++ ukazce pouziva C char array.
Minimalne od C++11 se s std::string pracuje luxusne.
Priste se treba dozvime, ze C a C++ je "skoro stejne" ;-)
Re: Re: Re: Programovanie v jazyku C++: Funkcia main()
m 1. 05. 2016, 18:05:23
Odpovědět  Odkaz 
Co kdyz ma nekdo dlouhe jmeno (char[50]) ?

$ ./x
Zadaj svoje meno: mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm
Ahoj mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm, zdraví ťa HAL-9000.
Som superinteligetná bytosť, riadiaca túto loď a rútime sa k planéte Jupiter.
Ja viem, otravujem ťa pri učení jazyka C++, fajn mlčím a držím palce!
*** stack smashing detected ***: ./x terminated
Aborted
$

Odpovědět

Nejsou podporovány žádné značky, komentáře jsou jen čistě textové. Více o diskuzích a pravidlech najdete v nápovědě.
Diskuzi můžete sledovat pomocí RSS kanálu rss



 
 

Top články z OpenOffice.cz