Totálny začiatok alebo "Hello, world!"

Jazyk C vymysleli Brian W. Kernighan a Denis M. Ritchie -- zamestnanci Bellových laboratórií v sedemdesiatych rokoch 20. storočia. Jazyk C bol navrhnutý a implementovaný pod operačným systémom UNIX a takmer celý UNIX bol v C-čku napísaný. (Vyzerá to ako paradox, ale skutočne je to tak.) Odvtedy C-čko prešlo určitým vývojom a existujú viaceré jazyky, ktoré sú od neho odvodené (C++, Java), ale stále patrí medzi obľúbené a používané jazyky. (V C-čku je napísaných mnoho hier a napr. aj LINUXové jadro.)

Jeho obľúbenosť má viacero dôvodov. Prvým z nich je jeho univerzálnosť -- mnohé programy napísané v C-čku môžete preložiť pod takmer ľubovoľným operačným systémom na takmer ľubovoľnom type počítača a budú fungovať. Ďalším dôvodom je, že je to jazyk nízkej úrovne, to znamená, že sa v určitých svojich črtách podobá na strojový kód. To znamená, že síce neobsahuje priame prostriedky na niektoré zložité konštrukcie, ale programy naprogramované v C-čku sú značne rýchle (ak sa spravia šikovne). A v neposlednom rade -- jazyk C je vymyslený pekne. Dajú sa v ňom písať prehľadné programy, s použitím jednoduchých prostriedkov sa dajú dosiahnuť silné výsledky a je s ním radosť pracovať.

Na rozdiel od BASICu alebo Comenius Loga jazyk C nie je interpreter. Nefunguje teda spôsobom, že v nejakom prostredí napíšete program a to prostredie je potom zodpovedné aj za jeho vykonanie. (Naprílad programy napísané v Comenius Logu nemôžete spustiť bez toho, že by ste mali Logo k dispozícii.) C-čko funguje inak. Program v C-čku sa napíše v ľubovoľnom editore (ľuďom, ktorí robia pod LINUXom odporúčam nedit, tí, čo pracujú pod DOSom, môžu použiť editor z Norton Commandera - spúšťa sa klávesami SHIFT-F4.) Keď naprogramujete všetko, čo potrebujete, súbor nahráte na disk a predhodíte ho kompilátoru. Kompilátor je program, ktorý z vášho zdrojového kódu vytvorí program, ktorý sa dá spustiť. Pre spúšťanie takto vytvoreného programu už nepotrebujete ani zdrojový kód ani kompilátor.

Úloha č.1 Vytvorte si adresár programy. (Pod LINUXom príkazom mkdir programy, pod Norton Commanderom klávesou F7.) Vojdite do tohto adresára a vytvorte tam súbor hello.c s nasledovným obsahom (dávajte pozor, aby ste žiaden znak nevynechali a nepridali a aby ste si to nahrali, keď skončíte!):

#include <stdio.h>
 
main()
{
    printf("Hello, world!\n");
}

Keď ste úspešne zvládli prvú úlohu, môžeme si vysvetliť, čo ste to teda vlastne napísali.

Kompilátor C-čka pozná pomerne málo funkcií. Napríklad aj funkcia printf, ktorá slúži na výpis na obrazovku je pre neho neznáma. Je ale nesmierne množstvo funkcií uložených v knižniciach, ktoré môže používať. Aby sme teda mohli funkciu printf použiť, musíme kompilátoru povedať, kde sa má dozvedieť, ako tá funkcia vlastne vyzerá. Popis funkcií, ktoré slúžia na vstup a výstup sa nachádza v súbore stdio.h (názov stdio vznikol z anglického "standard input-output"). Príkaz #include <stdio.h> teda znamená "načítaj súbor stdio.h".

Program v jazyku C môže mať množstvo funkcií (o funkciach ešte budeme hovoriť), ale jednu funkciu vždy mať musí. Je to funkcia main(). Funkcia main je funkcia, kde program začína a keď táto funkcia dobehne, program sa skončí. Po názve funkcie nasleduje jej telo uzavreté do kučeravých zátvoriek { a }.

Náš program obsahuje jediný príkaz - príkaz printf("Hello, world!\n"); Tento príkaz vypíše na obrazovku správu Hello, world!. (Znaky \n na konci znamenajú "prejdi na nový riadok".) Všimnite si, že za príkazom je bodkočiarka. Tá sa píše za každý príkaz jazyka C.

Teraz, keď už vieme, čo to bude robiť, môžeme program skompilovať.

Úloha č.2 V adresári, v ktorom máte súbor hello.c napíšte príkaz

gcc -c hello.c
Po spustení tohto príkazu vám (ak ste v zdrojovom kóde nespravili chyby) vznikne súbor hello.o . Tento súbor sa nazýva objektový súbor (object file) a je v ňom skompilovaný program bez knižničných funkcií. Tie sa pripoja ďalším spustením kompilátora.
gcc -o hello.exe hello.o
Meno uvedené za parametrom -o bude výsledné meno programu.0.1 Teraz teda nastáva ten historický okamih, kedy môžete spustiť prvý program napísaný v C-čku.

Úloha č.3 Odstráňte zo súboru hello.c prvý riadok a skúste to skompilovať. Podarí sa kompilácia? Bude to fungovať? Zistite, čo sa stane, ak odstránite () za main. Bude to fungovať? Čo vám povie kompilátor? Ako sa zmení správanie programu, ak vynecháte \n ? Ako sa zmení správanie programu, ak vynecháte } na konci programu?

Úloha č.4 Urobte program vizitka.c, ktorý vypíše vašu vizitku ohraničenú hviezdičkami. Urobte program srdiecko.c, ktorý nakreslí srdiečko z hviezdičiek. Urobte program riadky.c, ktorý vypíše desať prázdnych riadkov. Urobte program, idea.c, ktorý vypíše aspoň trojriadkovú životnú múdrosť.

Anino Belan 2003-10-26