1 hodina:

Snad všichni programátoři začínají s programem, který se jmenuje "hallo world" Programátor v něm prakticky říká: "Ahoj světe. Já jsem tady. Co takhle si to rozdat?" Nebohý programátor v té době ještě netuší, co ho čeká. Jedna z variant programu je hallo.c. Program začíná formulí #include Její význam si vysvětlíme až později. Zatím bude stačit, když tento řádek bude na začátku každého programu. Následuje funkce main ve tvaru int main(){} Je to typický tvar každé funkce v jazyku C. Nejdříve je typ hodnoty, kterou daná funkce vrací (bude popsáno dále v textu). Následuje jméno funkce (v našem případě se funkce jmenuje main. Do kulatých závorek se stejně jako v matematice zapisují argumenty funkce. main() je totéž jako main(void) a znamená to, že funkce nemá žádné vstupní parametry. Do složených závorek {} se pak zapisuje, co vlastně funkce dělá. Funkce main() má oproti všem ostatním funkcím zvláštní postavení. Je to místo, které program při spuštění vyhledá a od kterého začne.

Další struktura programu je již jasně daná. Jsou to příkazy oddělené středníkem. Kvůli přehlednosti se vždy na jeden řádek píše jeden příkaz. Program příkazy vykonává chronologicky v tom sledu, v kterém jsou napsány. V programu "hallo world" je použit jediný příkaz printf("Nejaky text\n"); Příkaz říka, že program má na obrazovku napsat text v uvozovkách. Protože text je napsán na nesmazanou obrazovku, je nutné použít funkční znak. V našem případě je to znak \n. Printf totiž vypisuje text postupně a když narazí na znak \n, tak přejde na začátek nového řadku. Tento znak je možné uvnitř úvozovek použít bez omezení. Takže pět \n za sebou přeskáče o pět řádků níž. Protože tohle je jediný použitý příkaz, stačí ozavřít funkci main()

Nyní je program napsán. Bohužel je ale napsán v jazyce, kterému rozumí člověk. Počítač mu nerozumí. Proto musí nastoupit tzv. "kompilátor" který přeloží náš program do podoby srozumitelné pro procesor. V Linuxu se tento kompilátor jmenuje gcc. Já doporučuji používat příkazový řádek, takže zde je vhodná doba o něm něco říct.

Příkazový řádek, jak napovídá jeho název, je určen k zadávání příkazů. Abychom byli přesnější, ke spouštění programů. Jeho použití má pevná pravidla. První slovo, které je na řádek napsáno značí jméno programu, který chceme spustit. Pokud se program nenachází v adresáři /bin, nebo /usr/bin, je nutné zadat úplnou cestu k programu. Například /home/kloc/programovani/hello. Případně pokud se program nachází ve stejném adresáři, ve kterém člověk zrovna pracuje, stačí napsat ./ před jméno spouštěného programu. Další slova na řádku, oddělená mezerou, jsou pak parametru, které spuštěný program nějak zpracuje. Program gcc vyžaduje minimálně jeden parametr. Většinou jím je jméno souboru, který chceme zkompilovat. Například gcc hallo.c V tomto případě gcc vytvoří spustitelný soubor jménem a.out Pokud chceme, aby se spustitelný soubor jmenoval jinak, musíme použít parametr -o, který vyžaduje jako další parametr jméno výstupního souboru. Celý text na příkazovém řádku je tedy gcc hallo.c -o hallo Na pořadí parametrů do jisté míry nezáleží, takže gcc hallo.c -o hallo je totéž, jako gcc -o hallo hallo.c. Není to ale totéž jako gcc -o hallo.c hallo Parametr -o se totiž vztahuje pouze na parametr bezprostředně následujicí. Gcc pak předpokládá, že soubor hallo je vámi napsaný text a má se přeložit do hallo.c Jakou paseku udělá gcc hallo.c -o hallo.c si snad umíte představit! Člověk si pak rve v zoufalství vlasy. Prostě odstrašující příklad. Nyní stačí spustit námi vytvořený program ./hallo a kochat se výsledkem. Poznámka: jestli chcete znát další možné parametry programu gcc, stačí zadat gcc --help

Zatím napsaný program je prakticky nepoužitelný. Je sice potěšující, že program něco napíše na obrazovku, ale kvůli tomu se nikdo C učit nebude. Na řadu přicházejí proměnné. Podobně jako v matematice i v C jsou proměnné rozděleny podle toho, do jaké skupiny patří. V matematice jsou nejjednodušší přirocená čísla. V C tomu odpovídá typ char Protože ale počítač neumí pracovat v nekonečném rozsahu, je vždy rozsah možných čísel omezen. Pro typ char je maximální možné číslo 255. Protože ASCII tabulka také obsahuje 255 znaků, je typ char obvyle používán pro písmena.

Dalším typem je typ int. Matematicky se jedná o celá čísla. Jejich rozsah je opět omezen. Jak moc je omezen záleží na tom, kolika byty je typ int reprezentován. Pro obvyklé výpočty lze typ int považovat za neomezený.

Posledním důležitým typem jsou reálná čísla. Ty jsou v C reprezentována především typem double K jejich zápisu se použává metody tzv. plovoucí desetinné čárky. Znamená to, že číslo není vyjádřeno jako určitý počet číslic před a za desetinnou čárkou, ale pomocí násobků. Analogický zápis v desítkové soustavě by byl zápis čísla 26,844 jako 2*(1*10^(-1) + 3*10^(-2) + 4*10^(-3) + 2*10^(-4) + 2*10^(-5))*10^3 Takovýto zápis vypadá hodně komplikovaně. ROzhodně je složitější, než napsat 26,844 Ale i my v matematice používáme podobný zápis pro hodně velká, nebo malá čísla například 3*10^8 místo 300000000. Protože počítač může pracovat pouze s konečným počtem číslic, je toto jediný způsob, jak s použitím mála číslic vytvořit hodně velké, nebo hodně malé číslo. Zároveň je to také důvod, proč počítač musí čísla zaokrouhlovat.

Nyní se podíváme na podíváme na používání matematických operací. Jako příklad použijeme program math.c Tan si nyní popíšeme. Některé věci již známe z minula, takže je nebudu rozepisovat. Ke změně došlo hned za řádkem main(). Zde je uvedeno int a; Tento řádek je ukončen středníkem. To znamená, že se jedná o příkaz. Říká počítači, že proměnná, která se jmenuje a je typu int (tedy celé číslo). Takovémuto řádku se říká deklarace proměnných. Na dalším řádku uděláme totéž pro proměnnou b Program tedy ví, jakého typu jsou a i b. Občas se pro jednoduchost používá zápis int a, b; což je totéž, jako předchozí dva řádky.

Program nyní ví, jakého typu jsou proměnné a a b. Zatím jim nebyla přidělena žádná hodnota. Program jim proto přidělí nejakou náhodou hodnotu (ve skutečnosti je to trochu složitější). Proto do proměnných a a b uložíme hodnoty které chceme, tzv. proměnné definujeme. Děláme to stejně, jako v matematice. a=3;, b=5; Pozor! Toto není totéž jako 3=a; V C se přiřazuje hodnota vpravo od = do proměnné vlevo od =. Příkaz 3=a; by se pokusil přiřadit hodnotu proměnné a do proměnné 3, což není proměnná a výsledkem je chyba.

Krásně se nám to vyvyjí. Nyní stačí provádět požadované matematické operace. Například a=a+b; sečte hodnoty proměnných a a b, a výsledek uloží do proměnné a. Další řádky jsou snad jasné. Jde o jednoduchou matematiku.

Tady je seznam používaných operací:

Nyní chceme výsledek zobrazit. Použijeme nám známý příkaz printf(); Musíme mu ale vysvětlit, jakou proměnnou chceme zobrazit (jak se jmenuje a jakého je typu). Typ se určuje tak, že do řádku, který chceme zobrazit vpašujeme znak % a označení typu. Například %i je znamená typ int. %lf se používá pro double. V textu je pak místo tohoto znaku zobrazena hodnota proměnné. Kterou proměnnou chceme zobrazit pak píšeme mimo uvozovky a jednotlivé proměnné oddělujeme čárkou. Počet proměnných vypsaných jedním příkazem printf() není nijak omezen.