3. diel - Premenné a typový systém v céčko
Z minulej lekcie, Inštalácia NetBeans a kompilátora C , už vieme pracovať s NetBeans IDE a vytvoriť konzolovú aplikáciu. Dnes sa v tutoriálu pozrieme na tzv. Typový systém, ukážeme si základné dátové typy a prácu s premennými. Výsledkom budú 3 jednoduché programy vrátane kalkulačky.
Premenné
Než začneme riešiť dátové typy, poďme sa zhodnúť na tom, čo je to
premenná (programátori mi teraz iste odpustí zbytočné vysvetľovanie).
Určite poznáte z matematiky premennou (napr. x
), do ktorej sme si
mohli uložiť nejakú hodnotu, najčastejšie číslo. Premenná je v
informatike úplne to isté, je to miesto v pamäti počítača, kam si môžeme
uložiť nejaké dáta (meno používateľa, aktuálny čas alebo databázu
článkov). Toto miesto má podľa typu premennej tiež vyhradenú určitú
veľkosť, ktorú premenná nesmie presiahnuť (napr. Číslo nesmie byť
väčšia ako 32 000).
Premenná má vždy nejaký dátový typ, môže to byť číslo, znak, text a podobne. Záleží na tom, na čo ju chceme používať. Väčšinou musíme pred prácou s premennou túto premennú najskôr tzv. Deklarovať, či povedať jazyku ako sa bude volať a akého dátového typu bude (aký v nej bude obsah). Jazyk ju v pamäti založia a až potom s ňou môžeme pracovať. Podľa dátového typu premennej si ju jazyk dokáže z pamäti načítať, modifikovať, prípadne ju v pamäti založiť. O každom dátovom typu jazyk vie, koľko v pamäti zaberá miesta a ako s týmto kusom pamäte pracovať.
Typový systém
Existujú dva základné typové systémy: statický a dynamický.
- Dynamický typový systém nás plne odtieňuje od toho, že premenná má vôbec nejaký dátový typ. Ona ho samozrejme vnútorne má, ale jazyk to nedáva najavo. Dynamické typovanie ide mnohokrát tak ďaleko, že premenné nemusíme ani deklarovať. Akonáhle do nejakej premennej niečo uložíme a jazyk zistí, že nebola nikdy deklarovaná, sám ju založí. Do tej istej premennej môžeme ukladať text, potom štruktúru používateľa a potom desatinné číslo. Jazyk sa s tým sám pobije a vnútorne automaticky mení dátový typ. V týchto jazykoch ide vývoj rýchlejšie vďaka menšiemu množstvu kódu. Zástupcovia sú napr. PHP alebo Ruby.
- Statický typový systém naopak striktne vyžaduje definovať typ premennej a tento typ je ďalej nemenný. Akonáhle premennú raz deklarujeme, nie je možné jej dátový typ zmeniť. Akonáhle sa do položky pokúsime uložiť štruktúru užívateľ, dostaneme vynadané.
Céčko je staticky typizovanom jazyk, všetky premenné musíme najprv deklarovať s ich dátovým typom. Nevýhodou je, že vďaka deklaráciám je zdrojový kód trochu objemnejší a vývoj pomalší. Obrovskou výhodou však je, že nám kompilátor pred spustením skontroluje, či všetky dátové typy sedia. Dynamické typovanie síce vyzerá ako výhodné, ale zdrojový kód nie je možné automaticky kontrolovať a keď niekde očakávame objekt používateľ a príde nám tam namiesto toho desatinné číslo, odhalí sa chyba až za behu a interpret program zhodí. Naopak céčko nám nedovolí program ani skompilovať a na chybu nás upozorní (to je ďalšia výhoda kompilácia).
Poďme si teraz niečo naprogramovať, nech si nadobudnuté vedomosti trochu osvojíme, s teóriou budeme pokračovať až nabudúce. Povedzme si teraz tri základné dátové typy:
- Celé čísla:
int
- Desatinné čísla:
float
- Znak (písmeno, text sa naučíme neskôr):
char
Program Vyhlasujúca premennú
Skúsime si nadeklarovat celočíselnú premennú a, dosadiť do nej číslo
56
a jej obsah vypísať do konzoly. Založte si nový projekt a
pomenujte ho Vypis
(i ku všetkým ďalším príkladom si vždy
založte nový projekt). Kód samozrejme píšeme ako minule do tela funkcie
main()
, čiže ju tu už nebudem opisovať.
{C_CONSOLE}
int a;
a = 8;
printf("%d", a);
{/C_CONSOLE}
Prvý príkaz nám nadeklaruje novú premennú a
dátového typu
int
, premenná teda bude slúžiť na ukladanie celých čísel.
Druhý príkaz vykonáva priradenie hodnoty do premennej, slúži na to
operátor "rovná sa". Posledný príkaz je nám známy, vypíše do konzoly
obsah premennej a
. Všimnite si %d
v úvodzovkách,
tým definujeme aký typ premennej to má vypísať, %d
označuje
celé čísla (ako decimal).
Konzolová aplikácia
8
Pre desatinnú premennú by kód vyzeral takto:
{C_CONSOLE}
float a;
a = 56.6F;
printf("%f", a);
{/C_CONSOLE}
Je to takmer rovnaké ako s celočíselnú, avšak za hodnoty
float
píšeme ešte znak F
. Ako desatinný
oddeľovač používame bodku a zmeníme %d
na %f
(ako
float
), aby sme povedali počítači, že chceme vypisovať
desatinné číslo.
Program zdvojnásobovač
Minulý program bol trochu nudný, skúsme nejako reagovať na vstup od užívateľa.
Z konzoly sme ešte neskúšali nič načítavať. Slúži na to funkcia
scanf()
, ktorá užívateľovi umožní zadať do konzoly riadku
textu a nám do našej premennej uloží zadanú hodnotu. Aby sme si to
skúsili, založíme si nový projekt s názvom Zdvojnasobovac
.
Teraz sa presuňme k samotnému kódu programu a do funkcie main()
píšeme:
{C_CONSOLE}
int a;
printf("Zadajte číslo k zdvojnásobeniu: ");
scanf("%d", &a);
a = a * 2;
printf("%d", a);
{/C_CONSOLE}
To už je trochu zábavnejšia Zdvojnásobovač si vyžiada na vstupe číslo a to potom
zdvojnásobí a vypíše. Prvý riadok je jasný, deklaruje premennú
a
typu celé číslo. V céčku by sme všetky premenné mali
definovať na začiatku.
Konzolová aplikácia
Zadajte číslo k zdvojnásobeniu: 1024
2048
Do a
sa priradila hodnota z funkcie scanf()
z
konzoly, teda to, čo používateľ zadal. znak
` si vysvetlíme neskôr, zatiaľ sa uspokojíme s tým, že ho funkcia `scanf()
vyžaduje, aby hodnotu mohla uložiť do nejakej premennej. Opäť sme využili
sekvenciu %d
, čím hovoríme, že vstup sa má načítať ako
celé číslo. Len tak mimochodom, znak by sme načítali alebo vypísali
pomocou sekvencie %c
(ako char
).
Jednoduchá kalkulačka
Ešte sme nepracovali s desatinnými číslami, skúsme si napísať sľubovanú kalkulačku. Bude veľmi jednoduchá, na vstup prídu dve čísla, program potom vypíše výsledky pre sčítanie, odčítanie, násobenie a delenie.
{C_CONSOLE}
float a;
float b;
float soucet;
float rozdil;
float soucin;
float podil;
printf("Vitajte v kalkulačke \n");
printf("Zadajte prvé číslo: \n");
scanf("%f", &a);
printf("Zadajte druhé číslo: \n");
scanf("%f", &b);
soucet = a + b;
rozdil = a - b;
soucin = a * b;
podil = a / b;
printf("Súčet: %f \n", soucet);
printf("Rozdiel: %f \n", rozdil);
printf("Súčin: %f \n", soucin);
printf("Podiel: %f \n", podil);
{/C_CONSOLE}
Konzolová aplikácia
Vitajte v kalkulačke
Zadajte prvé číslo:
5
Zadajte druhé číslo:
7
Súčet: 12.000000
Rozdiel: -2.000000
Súčin: 35.000000
Podiel: 0.714286
Vidíme, že v C môžeme použiť nám známe aritmetické operácie
(+
, -
, \
, *
,
/
). C navyše definuje ďalšiu operáciu (%
), ktorá
značí zvyšok po celočíselným delení. Všimnite si, že namiesto
%c
alebo %d
používame %f
. To značí,
že chceme použiť float
čiže desatinné čísla. Ak by vás
zaujímali všetky znaky, ktoré môžete použiť, nájdete vysvetlenie v dokumentácii.
Všetky programy máte samozrejme opäť v prílohe, skúšajte si vytvárať nejaké podobné, vedomosti už k tomu máte
V budúcej lekcii, Riešené úlohy k 1.-3. lekciu Céčka , sa budeme dátovým typom venovať podrobnejšie.
V nasledujúcom cvičení, Riešené úlohy k 1.-3. lekciu Céčka, si precvičíme nadobudnuté skúsenosti z predchádzajúcich lekcií.
Stiahnuť
Stiahnutím nasledujúceho súboru súhlasíš s licenčnými podmienkamiStiahnuté 2347x (105.2 kB)