Algoritmizácia úloh 1
Jan 01, 2016
Algoritmizácia úloh 1
2
Cieľ predmetu
1. Vytvoriť základnú kostru programu2. Vstup údajov od užívateľa3. Spracovanie dát – čísla a reťazce4. Výstup pre užívateľa
5. Načítanie a uloženie dát6. Práca so štruktúrami a pointrami,
dynamická alokácia pamäte
3
Obsah predmetu
1. Podmienky 2. Úvod 3. Vstup a výstup 4. Typy premenných, funkcie 5. Logické výrazy, priority operátorov 6. Riadiace štruktúry, priority 7. if, while, for, switch, goto, return, subory 8. Práca so súbormi 9. Polia 10. Smerníky 11. Reťazce, konverzia 12. Štruktúry
4
Požiadavky na zápočet a skúšku
Priebežné hodnotenie cvičení: 10 bodov
Praktická časť skúšky: 20 bodov
Ústna časť skúšky: 20 bodov
Spolu: 50 bodov
Predtermíny sú možné
5
Hodnotenie predmetu
Priebežné hodnotenie 10 bodov
Praktická časť skúšky 20 bodov
Ústna časť skúšky 20 bodov
Hodnotenie Počet bodov
A 50-46
B 45-41
C 40-36
D 35-31
E 30-25
FX 25 a menej
6
Kde sa jazyk C využíva
Pomocou jazyka C sa programuje celé spektrum software: od ovládačov periférií, až po „veľké“ programy, ako sú riadiace a databázové systémy
Dôvodom, prečo sa využíva, je jednoduchosť, rýchlosť a veľkosť výsledných programov
7
Kde sa jazyk C využívaPočítačové systémy
Jazyk C sa využíva nielen pod MS Windows, ale aj pod inými operačnými systémami, ako rôzne Unixy.
Existujú aj rôzne iné jazyky, ako napr. Pascal, Assembler, Perl, Basic. Tieto ale nie sú také výkonné a využívané
8
Kde sa jazyk C využívaJednočipové systémy
Jednočipové systémy slúžia na riadenie rôznych zariadení, ako napr. automobilová technika (ABS, ESP), práčky, telefóny, telefónne ústredne, snímače teploty, tlaku, žiarenia atď.
Tieto systémy musia byť malé, výkonné ale zároveň aj spoľahlivé.
V prípade potreby je dôležité, aby sa ich program dal kedykoľvek zmeniť.
9
Kde sa jazyk C využívaJednoprocesorové systémy
Doska, na ktorej je pripojený procesor Pomocou konektorov a vodičov je spravené
riadenie okolitých periférií a snímanie dát
10
Kde sa jazyk C využívaJednoprocesorové systémy
Modul, ktorý slúži na prepojenie procesora s riadiacim PC pomocou Ethernetu
Zakúpený modul + nami zapojený a naprogramovaný jednočip
11
Vývojové prostredia pre PC
Najčastejšie sa využívajú
Microsoft Visual C++
Borland C++
12
Vývojové prostredia pre jednočipy
AVR studio
13
Vývojové prostredia
na LC sa bude používať DEV C++(www.bloodshed.net/devcpp.html)
existuje mnoho iných ako napr. MS Visual C++, Borland C++, LCC, GCC atď.
14
15
Odporúčaná literatúra
Herout, P.: Učebnice jazyka C - 1.díl. KOOP, České Budějovice, 2004.
Matiaško K. a kolektív: Základy informatiky, vysokoškolská učebnica, EDIS, Žilinská univerzita v Žiline, 2004,
ISBN 80-8070-186-5
16
Algoritmus
Algoritmus je konečná postupnosť dobre definovaných inštrukcií na splnenie určitej úlohy
Všeobecné pravidlá, ktoré určujú postupnú transformáciu vstupných údajov na výstupné
17
Vlastnosti algoritmov
Nie každý návod je algoritmom, algoritmus musí mať tieto vlastnosti:
Je determinovanýJe rezultatívnyJe konečný Je hromadný
18
1. Determinovanosť
Činnosť algoritmu je natoľko presná a pritom všeobecne pochopiteľná, že nepripúšťa v žiadnom kroku procesu subjektívnu možnosť voľby ďalšieho pokračovania.
Činnosť algoritmu nesmie závisieť od ľubovôli osoby, ani na vlastnostiach zariadenia, ktoré ho realizuje. Je to proces, ktorý môže byť kedykoľvek a kýmkoľvek opakovaný s rovnakým výsledkom.
19
2. Rezultatívnosť
Výsledok musí byť za rovnakých vstupných podmienok vždy rovnaký.
20
3. Konečnosť
Každý algoritmus musí skončiť po vykonaní konečného počtu krokov.
21
4. Hromadnosť
Algoritmus je použiteľný na ľubovoľné vstupné údaje spĺňajúce požadované podmienky
Algoritmus je popis riešenia celej skupiny príbuzných úloh, ktoré sa od seba líšia vstupnými údajmi
22
Algoritmizácia
tvorivý proces, ktorý pri zápise algoritmu vykonávame
všeobecný návod neexistuje, ale existujú heuristiky (určité rady) získané skúsenosťami, ktoré proces tvorby algoritmu uľahčujú
23
Spôsoby vyjadrenia algoritmu:
Verbálne alebo textom
Vývojový diagram
Samotný programovací jazyk
Rozhodovacie tabuľky
24
Zápis algoritmov prirodzeným jazykom
S kľúčovými(vyhradenými) slovami kvôli lepšej zrozumiteľnosti
Výhody - ľahko čitateľný, každý mu rozumie
nevýhody – nejednoznačnosť, nízka prehľadnosť
25
Vstupné údaje a výstupné údaje
Vstupné údaje – reprezentujú počiatočný stav problému
Výstupné údaje – tvoria množinu koncových stavov
Kroky algoritmu sa vykonávajú postupne za sebou, ak nie je explicitne dané iné poradie.
26
Metódy zostavenia algoritmov
Keď riešenie poznáme, potrebujeme ho zapísať vo forme algoritmu.
Riešenie rozkladáme na jednoduchšie operácie až dospejeme k elementárnym krokom – metóda „odhora dole“
27
Postup konštrukcie algoritmu
formulácia problému stanovenie cieľov tvorba myšlienky a stratégie riešenia zápis vytvorených postupov overenie správnosti vytvorených
postupov
28
Základné zložky algoritmu
Medzi základné konštrukčné zložky patrí:
Postupnosť (sekvencia) príkazov, Cyklus (iterácia) - if, whilePodmienené operácie (selekcia a výber).
29
Postupnosť (sekvencia)
je tvorená jedným alebo niekoľkými krokmi, ktoré sa vykonajú len raz v danom poradí a nemusia to byť kroky elementárne.
Základné zložky algoritmu
30
Základné zložky algoritmu
Cyklus (iterácia)
predstavuje časť algoritmu, ktorá sa opakuje, pokiaľ je splnená podmienka opakovania. Cyklus sa skladá z podmienky opakovania a tela cyklu (krokov, ktoré sa opakujú).
31
Čiastkový algoritmus
Pokiaľ sa určitá časť algoritmu opakuje na niekoľkých miestach (i keď sa používajú rôzne dáta), stačí ju rozložiť na elementárne kroky len raz. Na ostatných miestach sa na ňu odvoláme ako na čiastkový algoritmus alebo podprogram.
V programovacích jazykoch odpovedajú podprogramom procedúry a funkcieprocedúry a funkcie.
32
Časová a pamäťová náročnosť algoritmov
Pri zostavení algoritmov nás zaujíma nielen správnosť a presnosť riešenia ale aj doba, ktorú budeme na vykonanie algoritmu potrebovať a veľkosť operačnej pamäti, ktorú bude potrebovať program na realizáciu algoritmu.
Do časovej náročnosti je treba zarátať aj dobu potrebnú na čítanie dát z pevného disku (spravidla je o 3 rády dlhšia ako najnáročnejšia operácia).
33
Popis algoritmov
Algoritmy je možné vyjadriť rôznymi spôsobmi, ktoré sa opierajú o slovné vyjadrenie alebo grafické prostriedky.
Voľba prostriedku závisí na charaktere riešenej úlohy a osobných zvyklostiach programátora.
34
Jazyk pre popis programov
Slovný popis algoritmov môže byť základom komentára k výslednému programu.
35
Vývojové diagramy
Sú klasickým prostriedkom pre znázornenie algoritmov.
Predstavujú grafické znázornenie jednotlivých krokov programu.
V súčasnosti sa používajú menej.
36
Grafické prvky
Medzná značka (začiatok a koniec programu)
Spracovanie
A=BNIE ÁNORozhodovanie
ŠTART KONIEC
37
Grafické prvky
Cyklus
Vstup/výstup dát
A
A
Spojka
38
Grafické prvky
Podprogram
Tlač
Poznámka
39
Vývojové diagramy - príklad
ŠTART
Úvodné operácie
Koniec A
NIE
ÁNO
Čítaj zo súboru A koeficienty a, b, c
Rieš rovnicu
Zapíš výsledky do B
Záverečné operácie
KONIEC
40
4ac-bd 2
Riešenie kvadratickej rovnice
ac
dibx
42,1
Ulož korene do súboru B
ÁNO
NIEd<0
ac
dbx
42,1
4141
Spôsob spracovania programu
Schematické znázornenie fáz spracovania programu
Editor Preprocesor Compiler
Linker
Debugger
.C .LIB .OBJ
.H .LIB
.EXE
ladenie
spustenie
4242
Preprocesor
Preprocesor sa spustí pri každom spustení kompilátora. Prejde si zdrojový kód a nájde riadky, ktoré začínajú symbolom #.
S týmito riadkami pracuje ešte pred spustením samotného kompilátora.
Príkaz include je inštrukcia pre preprocesor, ktorá mu hovorí: "To, čo nasleduje, je názov súboru. Nájdi tento súbor a vlož jeho obsah priamo do tohto miesta programu."
4343
Compiler
Prekladač, kompilátor – vykonáva preklad zdrojového súboru do relatívneho kódu počítača, vzniká .OBJ súbor (prípadne .O, .A).
Pomocným súborom je protokol o preklade (.LIS), v ktorom sú uložené informácie o chybách prekladu.
4444
Linker
Zostavovací program. Pridelí relatívnemu kódu absolútne adresy a odkazy na identifikátory knižničných funkcií. Výsledkom je spustitelný program (napr. .EXE)
4545
Debugger
Ladiaci program. Slúži na ladenie – nájdenie chýb, ktoré vznikajú pri behu programu. Po odladení chyby sa celý cyklus opakuje (editor, compiler, linker, debugger)