IT rekvalifikace s garancí práce. Seniorní programátoři vydělávají až 160 000 Kč/měsíc a rekvalifikace je prvním krokem. Zjisti, jak na to!
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

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ť.

int a;
a = 8;
printf("%d", a);

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:

float a;
a = 56.6F;
printf("%f", a);

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:

int a;
printf("Zadajte číslo k zdvojnásobeniu: ");
scanf("%d", &a);
a = a * 2;
printf("%d", a);

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.

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);
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 podmienkami

Stiahnuté 2280x (105.2 kB)

 

Predchádzajúci článok
Inštalácia NetBeans a kompilátora C
Všetky články v sekcii
Základné konštrukcie jazyka C
Preskočiť článok
(neodporúčame)
Riešené úlohy k 1.-3. lekciu Céčka
Článok pre vás napísal Samuel Kodytek
Avatar
Užívateľské hodnotenie:
7 hlasov
Autor se věnuje všem jazykům okolo JVM. Rád pomáhá lidem, kteří se zajímají o programování. Věří, že všichni mají šanci se naučit programovat, jen je potřeba prorazit tu bariéru, který se říká lenost.
Aktivity