informatika_1 - Žilinská univerzita
Download
Report
Transcript informatika_1 - Žilinská univerzita
Algoritmizácia
úloh 1
Cieľ predmetu
1.
2.
3.
4.
5.
6.
Vytvoriť základnú kostru programu
Vstup údajov od užívateľa
Spracovanie dát – čísla a reťazce
Výstup pre užívateľa
Načítanie a uloženie dát
Práca so štruktúrami a pointrami,
dynamická alokácia pamäte
2
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
3
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é
4
Hodnotenie predmetu
Priebežné hodnotenie Hodnotenie Počet bodov
10
Praktická časť skúšky
20
bodov
bodov
Ústna časť skúšky
20
bodov
A
50-46
B
45-41
C
40-36
D
35-31
E
30-25
FX
25 a menej
5
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
6
Kde sa jazyk C využíva
Počí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é
7
Kde sa jazyk C využíva
Jednoč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ť.
8
Kde sa jazyk C využíva
Jednoprocesorové 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
9
Kde sa jazyk C využíva
Jednoprocesorové systémy
Modul, ktorý slúži na prepojenie procesora s
riadiacim PC pomocou Ethernetu
Zakúpený modul + nami zapojený a naprogramovaný
jednočip
10
Vývojové prostredia pre PC
Najčastejšie
sa využívajú
Microsoft
Visual C++
Borland C++
11
Vývojové prostredia pre
jednočipy
AVR studio
12
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ď.
13
14
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
15
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é
16
Vlastnosti algoritmov
Nie
každý návod je algoritmom,
algoritmus musí mať tieto vlastnosti:
Je
determinovaný
Je rezultatívny
Je konečný
Je hromadný
17
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.
18
2. Rezultatívnosť
Výsledok musí byť za rovnakých
vstupných podmienok vždy rovnaký.
19
3. Konečnosť
Každý algoritmus musí skončiť po
vykonaní konečného počtu krokov.
20
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
21
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ú
22
Spôsoby vyjadrenia algoritmu:
Verbálne alebo textom
Vývojový diagram
Samotný programovací jazyk
Rozhodovacie tabuľky
23
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ť
24
Vstupné údaje a výstupné údaje
ú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.
Vstupné
25
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“
26
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
27
Základné zložky algoritmu
Medzi základné konštrukčné zložky patrí:
Postupnosť
(sekvencia) príkazov,
Cyklus (iterácia) - if, while
Podmienené operácie (selekcia a výber).
28
Základné zložky algoritmu
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.
29
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ú).
30
Č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 funkcie.
31
Č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).
32
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.
33
Jazyk pre popis programov
Slovný popis algoritmov môže byť základom
komentára k výslednému programu.
34
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.
35
Grafické prvky
Medzná značka (začiatok a
koniec programu)
ŠTART
KONIEC
Spracovanie
Rozhodovanie
NIE
A=B
ÁNO
36
Grafické prvky
Cyklus
Vstup/výstup dát
A
Spojka
A
37
Grafické prvky
Podprogram
Tlač
Poznámka
38
Vývojové diagramy - príklad
ŠTART
Úvodné operácie
ÁNO
Koniec A
NIE
Čítaj zo súboru A
koeficienty a, b, c
Rieš rovnicu
Záverečné
operácie
KONIEC
Zapíš výsledky do B
39
Riešenie kvadratickej rovnice
d b 2 - 4ac
d<0
NIE
ÁNO
x1, 2
bi d
4ac
x1, 2
b d
4ac
Ulož korene do súboru B
40
Spôsob spracovania programu
Schematické znázornenie fáz spracovania programu
.H
Editor
.LIB
Preprocesor
Compiler
ladenie
Linker
Debugger
spustenie
.C
.LIB
.OBJ
.EXE
41
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."
42
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.
43
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)
44
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)
45