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ú:
-ansi
vypne všetky vlastnosti, ktoré nie sú kompatibilné s normou. Štandardom je norma C89/90.-pedantic
zapne všetky varovania vyžadované normou a odmietne kompilovať programy s neštandardnými rozšíreniamim, či v spore s normou.-Wall
zapne varovania k mnohým diskutabilným či potenciálne rizikovým konštrukciám.-Wextra
zapne ďalšie dodatočné varovania k podozrivým konštrukciám (podrobnosti sú v dokumentácii ku kompilátoru gcc-Werror
spraví 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