Z Javy migrujuvší céčkar 1: Pitveme „Ahoj svet“

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č (= vracia void), 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á riadok

    return 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é funkcie void, č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, #includenúť 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é!

Pridaj komentár

Vaša e-mailová adresa nebude zverejnená. Vyžadované polia sú označené *