Oznamy

Pozrite si úvod k predmetu a pravidlá.

  • Ak nemáte predmet zapísaný v AIS, zapíšte si ho pokiaľ možno už dnes do 16:00, aby sme pre vás pripravili konto na cvičenia.
  • Dnešné cvičenia nebudú.
  • Zajtra budú cvičenia s prvými bodovanými príkladmi.
    • Oboznámenie sa s prostredím, s testovačom, riešenie jednoduchých príkladov k prvej prednáške.
    • Budete potrebovať prihlasovacie meno a heslo do AIS2 na prihlásenie na počítač v učebni.
    • Budete potrebovať aj heslo na náš testovač, ktoré vám pošleme/poslali sme emailom.
    • Na toto cvičenie odporúčame prísť aj pokročilým.
    • Ak z vážnych príčin nemôžete prísť, kontaktujte nás a dohodneme náhradné riešenie.
  • Na cvičení alebo aj skôr prosím vyplňte anonymnú anketu.
  • V stredu druhá prednáška.
  • Test pre pokročilých bude v stredu 18:10 v posluchárni A, prihlasovanie do utorka večera.

Programátorské prostredie

  • Na tomto predmete budeme programovať v jazyku C, budeme však z neho používať len malú časť.
  • Na cvičeniach odporúčame vyskúšať ako v operačnom systéme Linux používať editor Kate.
  • Potrebné nástroje si môžete nainštalovať zadarmo aj na vašom počítači alebo môžete mimo rozvrhu používať školské učebne.
  • Doma môžete používať aj iné programátorské prostredia, ale
    • odovzdané programy musia správne pracovať na testovači,
    • počas skúšky a cvičení budete môcť používať iba jednoduché editory v Linuxe,
    • v iných prostrediach vám nemusíme vedieť pomôcť s ich používaním,
    • nie je povolené riešiť úlohy v prostrediach so zapnutými AI nástrojmi, ktoré píšu za vás
    • Viac informácií na stránke o alternatívach ku Kate.
  • Vypnite si v programátorských prostrediach AI pomocné nástroje na písanie alebo opravovanie kódu.

Prvý program

  • Tradične sa v učebniciach programovania ako prvý uvádza program, ktorý iba vypíše na obrazovku text "Hello world!". Tu je v jazyku C:
#include <stdio.h>

int main() {
    printf("Hello world!\n");
}
  • Samotný text je vypísaný príkazom printf("Hello world!\n");
  • printf je príkaz, ktorý vypíše text na obrazovku.
  • Všimnite si, že text Hello world! sme dali do úvodzoviek, čím poukazujeme na to, že to nie sú príkazy programovacieho jazyka, ale text, s ktorým treba niečo robiť.
  • \n je špeciálny znak, ktorý znamená koniec riadku.
  • Za príkaz sme dali bodkočiarku, ktorá ho ukončuje.
  • O vypisovaní si povieme viac neskôr, ale už teraz môžete vypisovať rôzne texty tým, že zmeníte text medzi úvodzovkami.

  • Riadok int main() { označuje začiatok programu, program ide až po ukončovaciu zloženú zátvorku }
  • Jazyk C sám o sebe neobsahuje príkazy na vypisovanie (printf …). Na to potrebujeme použiť knižnicu: súbor príkazov, ktoré niekto už naprogramoval a my ich len používame. Prvý riadok programu nám umožní používať štandardnú knižnicu stdio.h, ktorá je súčasťou C a ktorá obsahuje príkazy na vypisovanie.

Spúšťanie programu

  • Na to, aby sme náš program mohli spustiť na počítači, potrebujeme ho najskôr skompilovať, t.j. preložiť do spustiteľného strojového kódu.
  • Ako na to, nájdete v návode na prácu s editorom Kate.

Ďalší jednoduchý program

  • Podobným spôsobom môžeme vypísať aj iný text. Napríklad dnešný dátum:
#include <stdio.h>

int main() {
    printf("Dnes je 21.9.2026.\n");
}
  • Cvičenie: Rozšírte program tak, aby na druhý riadok vypísal dátum v americkom formáte mesiac/deň/rok.

Premenné

Príklad z cvičenia by mohol vyzerať napríklad takto:

#include <stdio.h>

int main() {
    printf("21.9.2026\n");
    printf("9/21/2026\n");
}

Ak by sme v ňom chceli zmeniť dátum na prvú prednášku o rok, museli by sme pomeniť vhodné čísla na dvoch miestach. Navyše keď vidíme v programe nejaké číslo, nemusí byť úplne jasné, čo znamená.

Program teraz prepíšeme tak, aby sme deň, mesiac a rok mali zapísané symbolicky a mohli ich meniť na jednom mieste.

#include <stdio.h>
int main() {
    int den = 21;
    int mesiac = 9;
    int rok = 2026;

    printf("%d.%d.%d\n", den, mesiac, rok);
    printf("%d/%d/%d\n", mesiac, den, rok);
}

Symbolickým hodnotám den, mesiac, rok sa hovorí premenné.

  • Premenná je vyhradené miesto v pamäti počítača, ku ktorému v programe pristupujeme pod určitým názvom.
  • Do tejto pamäti si môžeme zapísať hodnotu a neskôr ju použiť.
  • Príkaz int x = 100; vytvorí novú premennú a uloží do nej hodnotu 100.
  • Každá premenná má určitý typ, ktorý určuje, aké hodnoty do nej môžeme ukladať.
  • Tieto premenné majú typ int, čo je skratka zo slova integer, celé číslo.

Ak v programe premenným priradíme iné čísla, môžeme vypísať iný dátum.

Príkaz int x = 100; vieme rozpísať aj na dva príkazy:

int x; 
x = 100;

Prvý z nich vytvorí premennú x, ktorá bude mať nejakú ľubovoľnú hodnotu a druhý túto počiatočnú hodnotu zmení na 100.

Zhrnutie

  • Programy, ktoré sme doteraz videli, vyzerali takto:
    • Najprv sme zapli používanie knižníce stdio.h príkazom #include <stdio.h>.
    • Samotný program začínal int main() { a končil zloženou zátvorkou }
    • Program mohol mať niekoľko príkazov ukončených bodkočiarkami, ktoré sa vykonávajú jeden po druhom.
  • Logiku za tým, prečo jednotlivé príkazy píšu tak, ako sa píšu, sme zatiaľ ešte nevysvetľovali, mali by ste však byť schopní modifikovať príklady uvedené v prednáške menením čísel, textov v úvodzovkách, pridávaním ďalších príkazov a podobne.
  • Upozornenia:
    • Je rozdiel medzi malými a veľkými písmenami
    • Všetky čiarky, bodkočiarky, zátvorky a podobne sú dôležité
    • Na väčšine miest v programe môžeme voľne pridávať medzery a konce riadku, snažíme sa tým program spraviť prehľadný
  • Programy, ktoré sme videli doteraz, nie sú veľmi zaujímavé, lebo vždy robia to isté a robia pevný počet krokov, ktoré sme museli ručne všetky vypísať. Ďalej uvidíme
    • načítanie, ktoré nám umožní získať dáta od používateľa
    • podmienky, ktoré nám umožnia vykonávať príkazy podľa okolností
    • cykly, ktoré nám umožnia opakovať tie isté príkazy veľa krát

Textový výpis a načítanie

Vieme už vypísať niečo na obrazovku (výstup, output) a podobne môžeme aj čítať, čo nám používateľ napíše na klávesnici (vstup, input). Takéto zadané hodnoty tiež uložíme do premenných, aby sme s nimi mohli ďalej pracovať.

Sčítanie čísel

Nasledujúci program od používateľa vypýta dve čísla a vypíše ich súčet.

#include <stdio.h>

int main() {
    int x, y;

    printf("Please enter the first number: ");
    scanf("%d", &x);
    printf("Please enter the second number: ");
    scanf("%d", &y);

    int result = x + y;
    printf("%d + %d = %d\n", x, y, result);
}

Tu je príklad behu programu, keď používateľ zadal čísla 10 a 3:

Please enter the first number: 10
Please enter the second number: 3
10 + 3 = 13
  • Program najskôr vytvorí dve premenné x a y typu int (a nepriradzuje im zatiaľ žiadne hodnoty).
  • Potom príkazom printf vypíše text "Please enter the first number:" aby používateľ vedel, čo má robiť.
  • Potom pomocou príkazu scanf načíta číslo od používateľa do premennej x.
  • To isté opakuje pre premennú y.
  • Potom vytvorí novú premennú result a uloží do nej súčet x a y.
  • Nakoniec vypíše výsledok aj s výrazom, ktorý sme počítali, pomocou príkazu printf.

Viac o príkaze printf

  • Pomocou printf vypisujeme na konzolu, t.j. textovú obrazovku.
  • Príkaz printf má v zátvorkách najskôr text, ktorý chceme vypísať a za ním prípadne hodnoty, ktoré chceme do tohto textu vložiť.
  • Miesta v texte, kam chceme vložiť celočíselné hodnoty, označíme špeciálnymi znakmi %d.
  • Teda printf("%d + %d = %d\n", x, y, result); znamená, že do prvého %d sa vloží hodnota premennej x, do druhého %d sa vloží hodnota premennej y a do tretieho %d sa vloží hodnota premennej result. Medzi jednotlivé hodnoty sa vložia medzery a znamienka. Na konci textu je znak konca riadka \n.

Viac o príkaze scanf

  • Pomocu scanf načítavame z konzoly údaje od používateľa.
  • scanf má v zátvorkách najskôr tiež nejaký text so špeciálnymi znakmi %d.
  • Za tým nasledujú premenné, do ktorých chceme uložiť načítané údaje.
  • Pred názov každej premennej má byť znak &, ktorého presný význam si vysvetlíme neskôr.
  • Opäť môžeme načítať aj viac hodnôt naraz, napr. nasledovný úryvok si vypýta dve čísla naraz a uloží ich do premenných x a y
printf("Please enter two numbers separated by a space: ");
scanf("%d %d", &x, &y);
  • Čo sa stane, ak používateľ zadá nečíselné hodnoty?