Prednáška 1
- Oznamy
- Programátorské prostredie
- Prvý program
- Ďalší jednoduchý program
- Premenné
- Zhrnutie
- Textový výpis a načítanie
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"); printfje 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ť. \nje š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žnicustdio.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.hprí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.
- Najprv sme zapli používanie knižníce
- 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é
xaytypuint(a nepriradzuje im zatiaľ žiadne hodnoty). - Potom príkazom
printfvypíše text"Please enter the first number:"aby používateľ vedel, čo má robiť. - Potom pomocou príkazu
scanfnačíta číslo od používateľa do premennejx. - To isté opakuje pre premennú
y. - Potom vytvorí novú premennú
resulta uloží do nej súčetxay. - Nakoniec vypíše výsledok aj s výrazom, ktorý sme počítali, pomocou
príkazu
printf.
Viac o príkaze printf
- Pomocou
printfvypisujeme na konzolu, t.j. textovú obrazovku. - Príkaz
printfmá 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%dsa vloží hodnota premennejx, do druhého%dsa vloží hodnota premennejya do tretieho%dsa vloží hodnota premennejresult. Medzi jednotlivé hodnoty sa vložia medzery a znamienka. Na konci textu je znak konca riadka\n.
Viac o príkaze scanf
- Pomocu
scanfnačítavame z konzoly údaje od používateľa. scanfmá 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
xay
printf("Please enter two numbers separated by a space: ");
scanf("%d %d", &x, &y);
- Čo sa stane, ak používateľ zadá nečíselné hodnoty?