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 
bi 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