Začíname so syntaxou
“Budem si robiť domácu úlohu”
Vypíšte desaťkrát text “Budem si robiť domácu úlohu”
Pozor na deklaráciu premenných: v C musia byť všetky premenné deklarované, či inicializované na začiatku funkcie!
Pozor na fakt, že funkcia main() musí v štandardnom režime vracať hodnotu, napr. 0, tzv. exit code.
Naučme sa kompilovať cez gcc s varovaniami: viď stať nižšie. Naučme sa tiež zmeniť názov výstupnej binárky cez -o.
gcc -Wall -Wextra -Werror -pedantic -ansi du.c -o du
Naučme sa používať komentáre. Pozor na fakt, že funguje len /* ... */, javácke // nie je povolený komentár v zmysle normy v C89 (je to konštrukt z C++).
Čísla od 1 po 10
Vypíšte čísla od 1..10 pod seba
Pozor na fakt, že printf() nefunguje ako javácky System.out.println(). Čísla treba vypisovať cez formátovací reťazec %d.
Malá násobilka
Vypíšte malú násobilku pre číslo zadané napevno v kóde.
Zmeňte číslo na konštantu pomocou #define.
Pozor na fakt, že #define je z jazyka preprocesora, konštanta sa uvádza veľkými písmenami a medzi konštantou a hodnotou nie je medzera! (Pozorujte chybovú hlášku na zámerne mylnom preklepe.)
Porovnanie čísla s konštantou
Zistite, či je číslo rovné siedmim
Sledujte porovnanie s == voči priradeniu cez =.
Pozor na fakt, že if v C nepoužíva boolean, ale “nepravdu” pre nulové čísla a “pravdu” pre nenulové.
Pozorujte vyhodnotenie výrazu
if(cislo = 7)
if(7)
/* true */
Pozorujme správanie programu pre vstup 9 v prípade, že kompilujeme bez varovaní len cez gcc bez parametrov. Kompilácia zbehne, ale program sa správa nekorektne.
Okrúhle číslo
Zistite, či je číslo okrúhle, teda deliteľné 10timi
Použite operátor % (modulo).
2D vzdialenosť dvoch bodov
V dvojrozmernom súradnicovom systéme sú dané dva body. Vypíšte vzdialenosť medzi nimi
Body implementujme cez pole (dvojprvkové). Pozor na inicializáciu: Java deklarácia int[] bod1 nefunguje.
Vzdialenosť realizujeme cez double.
Budeme potrebovať matematické funkcie a potrebujeme
#include<math.h>
Využime sqrt() a pow().
Pri kompilácii potrebujeme prilinkovať matematickú knižnicu: do gcc musíme dodať parameter -lm. (Vysvetlenie na StackOverflow.com).
gcc -lm -Wall -Wextra -Werror -ansi -pedantic vzdialenost.c -o vzdialenost
Rady ku kompilácii
Ak píšeme Cčkové programy, na začiatku je viac než vhodné, aby kompilátor zachytil čo najviac chýb a upozornil nás na čo najväčšie množstvo vecí. Keby sme mali Linux a kompilovali by sme zdrojáky cez gcc, použili by sme širokú škálu parametrov:
gcc -Wall -Wextra -Werror -pedantic -ansi hello.c
Parametre postupne znamenajú:
-ansivypne všetky vlastnosti, ktoré nie sú kompatibilné s normou. Štandardom je norma C89/90.-pedanticzapne všetky varovania vyžadované normou a odmietne kompilovať programy s neštandardnými rozšíreniamim, či v spore s normou.-Wallzapne varovania k mnohým diskutabilným či potenciálne rizikovým konštrukciám.-Wextrazapne ďalšie dodatočné varovania k podozrivým konštrukciám (podrobnosti sú v dokumentácii ku kompilátoru gcc-Werrorspraví zo všetkých varovaní kompilačné chyby — inak povedané, odmietne skompilovať program, ktorý obsahuje nejaké podozrivosti. V niektorých extrémnych prípadoch s tým môže byť problém, ale my začiatočníci na to narazíme… zrejme nikdy.
Rady ku editácii
Naučme sa mazať riadky v nano cez Ctrl-K.
V putty funguje označovanie textu, ktoré kopíruje text rovno do systémovej schránky. Vložiť (paste) ho môžeme v cez Shift+Insert, resp. v akomkoľvek inom programe cez Ctrl+V.
Súbor v Linuxe vieme skopírovať cez cp. Vytvorme zadanie č. 2 na základe zadanie č. 1:
cp zadanie1.c zadanie2.c