1. Ciele
Cieľom predmetu je naučiť sa algoritmizovať úlohy a problémy
a vedieť ich naprogramovať v jazyku C. Nepredpokladajú sa žiadne
vstupné znalosti jazyka C, vedieť algoritmizovať problémy je ale
nespornou výhodou. Preberajú sa základy jazyka, premenné, programové
konštrukcie (cykly, podmienky), funkcie a smerníky. Výuka prebieha
v UNIXovom prostredí a zahŕňa tiež princípy kompilácie, linkovania
a programu make.
Jazyk C je dobrým základom pre štúdium a použitie iných programovacích
jazykov, ktoré s ním často zdieľajú programové konštrukcie. Podobný
systém a syntax ako v C môžeme objaviť napríklad v MATLABe, C++, Jave
či PHP.
2. Literatúra a študijné materiály
3. Miestnosť
Solaris
4. Cvičenia
- Základy práce v UNIXe, vytvorenie programu "Ahoj svet". Typy
premenných. cvičenie 1
- Názvy premenných, konverzie, operátory (aritmetické, relačné,
priraďovacie),
sizeof(type). cvičenie 2
- Podmienky, prepínače a cykly. Kľúčové slová: if, switch/case,
for, while, break, continue, goto. cvičenie 3
- Jednoduché funkcie. cvičenie 4
- Funkcie na triedenie a prácu s prvkami poľa. cvičenie 5
- Smerníky (programy prog_036.c, prog_037.c, prog_040.c). cvičenie
6
5. Sylaby
Vysvetlivky: Pxx je číslo príkladu programov z Herouta, CV je príklad
na precvičenie.
- Identifikátory: písmená, čísla, podtrhovník, malé, veľké, tradícia
- Konštanty: int, (24, 024, 0x7a1f), float(2.1, 2.1e3, 2.1E-4), char
('a', '1'), reťazce ("Ahoj svet")
- Typy
- Celočíselné: (%d)
-
int(P5, P6), pretečenie, celočíselné delenie, %, operátory
pripočítania (P11), priraďovacie operátory (+=,...)
long, short, unsigned
char (%c)
- S desatinnou bodkou:
-
float(%f %e), double(%lf %le), long double (%Lf %Le)
- Konverzie: automatické, P14:donútené x=(double) i, double(i)
- Základné operácie: P13:sizeof(x), typedef(P9), inicializácia
- Relačné operátory: <, <=, >, >=, nula=nepravda
- Logické operátory: !, &&, ||, ==, !=
- Bloky a viditeľnosť
- Vetvenie
- Podmienkový operátor ?:
- (P17) c=(a < b) ? a:b;
- Príkaz if
- (P16), bez zátvoriek pohroma, pozor na =, ==. CV: kvadratická rovnica.
- Príkaz switch
- (P24)
- Slučky
- Príkaz while
- (P18, 23), bez bodkočiarky na konci. CV:
Aproximovať ln(2) = 1-1/2+1/3-1/4... (prvých 20 členov, s
danou presnosťou
- Príkaz for
- (P21, 22). CV: k^2 = i^2 + j^2: nájsť pre všetky
i,j < 40
- Príkaz do
- (P19)
- Príkaz goto
- (P25)
- Operátor čiarka
- Preprocesor: include, define (P33, 34)
- Enumerácia (P35)
- Funkcie
navrat_hodnota meno_funkcie(typ argument, typ argument,...)
{
telo;
return navrat_hodnota;
}
CV: faktoriál, priemer 2 čísel (P26), obsah kruhu a obdĺžnika
(P27), P28, faktoriál rekurzívne (P29)
návratová hodnota, void, prázdny zoznam argumentov, prototypy, fcn
nie vo fcn, ignorovanie návratovej hodnoty, viditeľnosť (local,
file), statické a globálne premenné, main-stdlib-exit
- Smerníky a polia:
pamäť - zoznam priehradiek,
operátor adresy & - vráť adresu toho, čo je vpravo, nedá sa &10,
deferenčný operátor *: opak & - vráť hodnotu na adrese vpravo (P36, 37),
smerníky - premenné, ktoré uschovávajú adresy, iba deklarujú miesto,
smerníky na smerníky (P40),
jednorozmerové polia (P42) (inicializácia, veľkosť),
polia vs smerníky (P41), negatívne indexy, posunutie poľa (P44),
smerníková aritmetika (+,-, relácie, jeden za posledným),
polia smerníkov,
mnohorozmerové polia (P43),
smerníky ako argumenty funkcií (P39): výmena a zlá výmena,
- Pokročilé techniky smerníkov
- Štruktúry
- Vstup a výstup
6. Zadania
- Dovaľ: triedenie - quicksort. Použitie knižničného quicksortu
na triedenie slov v súbore (imitácia funkcie sort, príp. uniq).
- Herceg: integrácia systému diferenciálnych rovníc metódou
Runge-Kutta 4. rádu. (1), 3.1.05
- Jančová: inverzia matice a riešenie systému lineárnych rovníc.
- Minarovský: maľované krížovky.
- Petruš: práca s veľkými číslami (sčítanie, odčítanie, násobenie)
s aplikáciou na faktoriál.
- Stolárik: osemsmerovky. (1), 3.3.05
- Szucsová: počet a prvočinitele daného čísla, zjednodušenie
(krátenie) zlomkov.
- Šátková: mincovka - určenie množstva rozličných bankoviek pre
viaceré hotovostné výplaty. (1), 14.2.05
- Ševčík: viaccestné zoznamy a ich aplikácia na telefónny zoznam:
pridávanie, odstraňovanie, výpis záznamov, vyhľadávanie záznamu: (1), 8.12.04
- Vaneková: Newtonova metóda hľadania optima jednorozmerovej funkcie. (1), 8.3.05
- Zábojníková: kombinatorika a jej aplikácia na problém osem dám na
šachovnici. (1), 15.3.05
- simplexová metóda hľadania optima mnohorozmerovej funkcie.