You are on page 1of 43

Zklady algoritmizace

2. pednka

Ing. Jan Panu, Ph.D.


jan.panus@upce.cz
kancel . E05027

Cl pedmtu
Analza a nvrh algoritm

zkladn postupy een loh,


zkladn datov struktury,
operace s datovmi strukturami,
zkladn sloky algoritm,
metody nvrhu algoritm.

Podmnky absolvovn
Zpoet:
Dochzka 75%
Odevzdan lohy v prbhu semestru bude
upesnno na cviench s min. spnost
60%.
Zvren zpotov test s min. spnost
60%.

Nhradn podmnky:
Opravn zvren test s min. spnost
70%

Podmnky absolvovn
Zkouka:
Psemn
teoretick znalosti zskan v prbhu semestru na
pednkch
praktick pklad typov probran na cviench

stn dozkouen
v ppad spn psemn zkouky bude
nsledovat stn dozkouen

Literatura
Zkladn literatura:
Virius: Zklady algoritmizace. VUT, Praha 1995.
urkov, D., Dvorsk, J., Schodkov, E.: Zklady
algoritmizace. Elektronick uebn opora VBTechnick univerzity Ostrava.
Knuth, D.: Umn programovn-1. dl Zkladn
algoritmy. Cpress, Praha, 2008
Doplkov literatura:
Wirth, N.: Algoritmy a truktry dajov. Alfa 1975.
Anany V. Levitin.: Introduction to the Design and
Analysis of Algorithms. Addison-Wesley, 2003.

Algoritmus - nzev
Muhammad ibn Ms AlChwrizm (780-850)
Hisab al-debr val-muquabala
(Vda o rekonstrukci a
vzjemnm ruen) - jaksi
prvopotky algebraickho
studia rovnic. Z nzvu knihy
se vyvinul pojem algebra, ze
jmna autora je odvozen
pojem algoritmus.

Algoritmus
Algoritmus postup pro een njakho
problmu (lohy)
Zskat poadovan vstup pro jakkoliv
oprvnn vstupn data v konenm ase
PROBLM

ALGORITMUS

VSTUP

POTA

VSTUP

Vlastnosti algoritmu
Konenost
Hromadnost
Elementrnost
Determinovanost
Rezultativnost

Konenost
Poadovan vsledek mus bt poskytnut v
rozumnm ase (pokud by vpoet trval
na nejrychlejm potai nap. jeden
milion let, tko bychom hovoili o
algoritmu een, nemluv o vpotu, kter
by neskonil vbec). Za rozumn lze
povaovat as, kdy nm vsledek vpotu
k nemu bude.

Hromadnost
Vstupn data nejsou v popisu algoritmu
reprezentovna konkrtnmi hodnotami,
ale spe mnoinami, za kterch lze data
vybrat. Pi popisu algoritmu v
programovacm jazyce se to projev tm,
e vstupy do algoritmu jsou oznaeny
symbolickmi jmny

Jednoznanost
(tak elementrnost)
Kad pedpis je sloen z krok, kter na
sebe navazuj. Kad krok meme
charakterizovat jako pechod z jednoho
stavu algoritmu do jinho, piem kad
stav je uren zpracovvanmi daty. Tm,
jak data v jednotlivch stavech algoritmu
vypadaj, mus bt jednoznan ureno,
kter krok nsleduje.

Opakovatelnost, rezultativnost
Opakovatelnost
Pi pouit stejnch vstupnch daj mus
algoritmus dospt vdy k tmu vsledku
Rezultativnost
Algoritmus vdy vede ke sprvnmu
vsledku

Kvadratick rovnice
Hrub formulace:
1. Prove vodn operace
2. Dokud nen konec souboru A, opakuj body
3-5, potom pejdi na bod 6
3. Peti soubor s koeficienty a,b,c
4. Vye kvadratickou rovnici
5. Zapi vsledky do souboru B a vra se k
bodu 2
6. Prove zvren operace.

Kvadratick rovnice
Bod 4 upesnn
4a) Vypoti d = b2 4ac
4b) Je-li d<0, pokrauj bodem 4f, jinak pokrauj bodem
4c
4c) Polo d = d
b d
4d) Rovnice m koeny x1, 2
4ac
4e) Jdi na 5
4f) Polo d = -d
4g) Rovnice m koeny x1, 2 b , id
kde i je imaginrn
4ac
hodnota

Zkladn sloky algoritm


Posloupnost (sekvence)
posloupnost jsou body 4c 4e

Cyklus (iterace)
cyklus s podmnkou na zatku jsou
kroky 2 - 5

Podmnn operace (selekce)


selekce je krok 4b

Dl algoritmus (podprogram)

Metody zpisu algoritm


Pirozen jazyk
Vvojov diagramy
Pseudokd
Programovac jazyk

Vvojov diagramy
Pehlednj zpis algoritm ne slovn popis.
Sloeny z blok a spojnic.
Znzoruj poad, ve kterm jsou jednotliv
instrukce vykonvny.

Typy blok
Zatek, konec.

Zatek/Konec

Zpracovn pkazu

X:=2

Vstup, vstup

ti/Pi Z

Z=5

Rozhodovn, vtven,
podmnka

Mezn znaky
Zatek

Zatek vstup je prv jedna hrana

Konec vstup je prv jedna hrana


Konec

Sekvenn bloky
Vstup nebo Vstup
ti/Zobraz X

Zpracovn
X:=2

Vtven
Vtven

Podmnka2

Podmnka1

Dal znaky
Cyklus
I = 1..N

Nati matici

Pprava

Spojka

Podprogram

Pklad

ZATEK

TI A

Absolutn
hodnota sla
A>0

1) Nati slo
2) Je-li slo vt ne 0
a) Pak vypi slo
b) Jinak nahra slo jeho
Zpornou hodnotou
3) Konec algoritmu

A := -A

PI A

KONEC

Podmnka
Nepln
Podm.

+
Pkaz 1

pln
Podm.

+
Pkaz 1

Pkaz 2

Cykly
S podmnkou:
na konci

na zatku

Podm.

Podm.

Cyklus s pevnm potem


opakovn
I : = M, N, S

DAL I

Pseudokd
Kombinace pirozenho jazyka a
programovacho jazyka
Pesnj ne pirozen jazyk
For, if, while,
for i 0 to n 1 do
cc+i
return c

Euklidv algoritmus pro vpoet


nejvtho spolenho dlitele sel
m, n - NSD(m,n)
Krok 1: Vydlte m slem n a nech r je
zbytek (tzn. 0 r n)
Krok 2: Pokud r = 0, algoritmus kon a n
je odpov
Krok 3: Piate m:= n, n:=r (mn, nr),
a vrate se na krok 1

Zkladn znaky
Piazen, substituce (operace, kterou je
mon provst)
mn; m:=n
nn+1 (n bude nahrazeno za n+1)
nn+1(patn)

Relace rovnosti
m=n
je m rovno n? (podmnka)

Poad

NSD(m,n) - pseudokd
// Vstup: Dv kladn nenulov sla m a n
// Output: Nejvt spolen dlitel sel
man
while n 0 do
r m mod n
mn
nr
return m

NSD(119,544)
1. 119/544; r 119; m 544; n 119
2. 544/119; r 68; m 119, n 68;
3. 119/68; r 51; m 68, n 51;
4. 68/51; r 17; m 51, n 17;
5. 51/17; r 0; konec vsledek je 17

Promnn

msto v pamti potae

nzev promnn
hodnota promnn
typ promnn

Nzev promnn
Typ promnn
jmeno, pocetStudentu,
x, i, n
Text1, Text2, Osoba1, Osoba2

Vloen hodnoty
Text1:=Jindra
read(Text2)
write(Text2)

Typ promnn
Druh ukldanch dat
Text
etzec
Znak

slo
Cel slo
Desetinn sla

Datum
Logick opertor

etzce
String
var Text1: String - a 255 znak
var Text1: String[10]

Prce s textem stn

Text1:=3
Text2:=46
Text3:=Text1+Text2
write(Text3) - -> ???
346

etzce
Char (jednotliv znaky)
Pouze jeden znak

sla
Integer (cel sla)

-215 a 215 (-32768 a 32767)


Var Cislo1:integer
Var Cislo2:integer
Var Cislo3:integer
Cislo1:=1; Cislo2:=5

Longint
-2.147.483.648 a 2.147.483.647

Shortint
-128 a 127

Desetinn sla
Real, Single
mohou obsahovat i cel sla

Operace
Stn, odtn, dlen, nsoben i pro cel
sla
Zbytek po celoselnm dlen MOD
Celoseln podl DIV
Pouze cel sla

Pravda vs. Nepravda


Boolean
True
False

Logick operace

NOT (NOT True = False)


AND logick souin
OR logick souet
XOR exkluzivn souet

Pklady
Prvn tvrzen

Opertor

Druh tvrzen

Vsledek

True

AND

True

True

True

AND

False

False

False

AND

True

False

False

AND

False

False

Fotbalov trvnk je zelen = True


Na hiti je pi he 22 hr = True
Fotbalov trvnk je zelen = True
Na hiti je pi he 220 hr = False

Pklady
Prvn tvrzen

Opertor

Druh tvrzen

Vsledek

True

OR

True

True

True

OR

False

True

False

OR

True

True

False

OR

False

False

Sta, kdy je jedna z hodnot True, vsledek je tak True

Pklady
3 + (2+5) + (2-(6*4))=3+10+(2-24)
True AND (True OR (False XOR (NOT
True))) = True AND (True OR (False XOR
False))

True AND (True OR (False XOR False)) =


True AND (True OR False)

Pklady
Prvn tvrzen

Opertor

Druh tvrzen

Vsledek

True

XOR

True

False

True

XOR

False

True

False

XOR

True

True

False

XOR

False

False

Vsledek je pravdiv pouze tehdy, kdy se hodnota obou


promnnch li.
Pokud se shoduj, vsledek je FALSE.

You might also like