Jazyk C 2013 – 2. cvičenie

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 

Pridaj komentár

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