Skúsme začať jednoduchým programom: klasickým „Ahoj svet”-om. Pripomeňme si implementáciu v Jave:
public class Hello {
public static void main(String[] args) {
System.out.println("Hello World");
}
}
Verzia v céčku by bola takáto:
#include <stdio.h>
int main(void)
{
puts("Hello World!");
return 0;
}
To, že program začína spustením funkcie main()
nie je náhoda: Java to doslova priamo vykradla z C. Ak hľadáte triedy, robíte to zbytočne: C nie je objektovo orientovaný jazyk. Žiadne triedy (class
), žiadne modifikátory viditeľnosti (public
) a dokonca ani kľúčové slovo static
(to síce v C existuje, ale má totálne iný význam).
Deklarácia
int main(void)
znamená, že funkcia main()
vracia jeden int
a neberie žiadne parametre.
Hneď vidno dva rozdiely:
v Jave metóda
main()
nevracia nič (= vraciavoid
), v C musí vrátiť celé číslo. Obvyklou konvenciou je vrátiť nulu, čo indikuje korektné dobehnutie programu. (Táto tradícia má hlboký zmysel ešte z čias Unixu). Tomu zodpovedá riadokreturn 0;
v Jave platí, že metóda bez parametrov sa uvedie len s prázdnymi zátvorkami
()
. To môžete síce spraviť aj v C, ale nerobte to. Áno, bude to fungovať, a áno, nedostanete varovanie, ale v skutočnosti tým naznačíte kompilátoru, že nemienite uviesť žiadne informácie o počte či typoch parametrov, čo je za istých okolností bezpečnostná chyba. Že C je plné nástrah? Hehehe. Silne sa odporúča použiť pre bezparametrické funkcievoid
, čo znamená, že „tu naozaj nie sú žiadne parametre”.
Poďme ďalej: tlač textu na konzolu je realizovaná folklórnou funkciou puts()
. Tá zoberie reťazec (v dvojitých úvodzovkách) vytlačí ho a automaticky doplní znak konca riadku. Toto bolo jednoduché.
Ostáva posledný záhadný riadok:
#include <stdio.h>
Pamätáte si import
-y z Javy? Každá Java trieda sa nachádza v konkrétnom balíčku a ak chcete použiť inú triedu z iného balíčka, musíte ju importnúť. Výnimkou sú triedy z balíčka java.lang
.
Podobnú funkciu plnia #include
-y. Pre jednoduchosť zatiaľ povedzme, že stdio
je štandardný (std
) modul obsahujúci základné funkcie pre vstupno-výstupné operácie (io
). Program v C totiž sám od seba toho veľa nevie. Povedzme si to rovno: nepozná žiadne funkcie a všetky (aj základné funkcie) musí buď #include
-núť alebo si ich vytvoriť sám. Ak nechcete vyzerať ako Robinson na opustenom ostrove, ktorý má k dispozícii len holé ruky a všetko si musí vyrobiť od piky, je rozhodne užitočné, ba priam žiadúce, #include
núť tento modul.
Kto si chce poobdivovať všetky jeho funkcie, môže nakuknúť do dokumentácie.
Veľmi často sa používa aj druhý modul, stdlib
. V tomto programe nemá mimoriadne svetoborný význam, ale môžeme z neho využiť užitočnú konštantu:
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
puts("Hello World!");
return EXIT_SUCCESS;
}
EXIT_SUCCESS
je makro (niečo ako skratka) definované ako nulová hodnota. Jej kamarátom je EXIT_FAILURE
, čo je nenulov hodnota indikujúca fakt, že program z nejakého dôvodu nedobehol podľa očakávaní.
To by na úvodnú lekciu stačilo. Nabudúce premenné!