Prog 01 Algoritmi 1

You might also like

Download as ppt, pdf, or txt
Download as ppt, pdf, or txt
You are on page 1of 27

ALGORITMI 1

Programiranje QBASIC

Programiranje 1
Algoritam

• Precizno opisan način rješenja nekog problema


• Jednoznačno određuje što treba napraviti
• Kao ishod algoritma pojavi se rezultat.
• Konačni broj koraka; svaki korak opisan
instrukcijom

Programiranje 2
Diagream toka
• Algoritam se grafički predočava dijagramom toka. U
tom prikazu svaki algoritamski korak je iskazan
odgovarajućim grafičkim simbolom. Algoritam se
tekstualno prikazuje pseudokodom.

Programiranje 3
Algoritam Kuhanje kave
• Algoritam
• kuhanje kave
• pečenje palačinki
• zbroj dva broja
(linijska struktura)
• uspoređivanje dva broja
(razgranata struktura)
• brojač
(ciklička struktura)
• zadaci

Programiranje 4
Algoritam Kuhanje kave

Ulazni objekti: mljevena kava, šećer, voda početak

Izlazni objekti (rezultati): skuhana kava mljevena kava


šećer
voda
Proces kuhanja kave:
1. ulij vodu u posudu zagrij posudu

2. zagrij posudu čekaj sve dok voda ne


počne ključati
3. čekaj sve dok voda ne počne ključati
stavi mljevenu kavu u posudu s
4. stavi mljevenu kavu u posudu s vodom i promiješaj vodom i promiješaj
5. skini posudu sa kavom
skini posudu s kavom
6. stavi šećer u posudu i promiješaj
stavi šećer u posudu i
promiješaj

kava

kraj

Programiranje 5
Algoritam Pečenje palačinki
početak

Ulazni objekti: ulje, smjesa ulje


smjesa

Izlazni objekti (rezultati): palačinke pripremi smjesu,


ulij ulje u tavu,
zagrij tavu

Proces pečenja palačinki: dok ima smjese ponavljaj

1. pripremi smjesu
tava je
2. ulij ulje u tavu suha?
Da dolij malo ulja

3. zagrij tavu
Ne
4. dok ima smjese ponavljaj ulij pravu količinu smjese u tavu,
čekaj dok se donja strana ispeče,
1. ako je tava suha dolij malo ulja okreni palačinku,
čekaj dok se gornja strana ispeče,
2. ulij pravu količinu smjese u tavu premjesti palačinku na tanjur

3. čekaj dok se donja strana ispeče


4. okreni palačinku
5. čekaj dok se gornja strana ispeče palačinke

6. premjesti palačinku na tanjur 


kraj

Programiranje 6
Algoritam
• Instrukcije moraju biti izvedive i jednoznačne
• Primjeri za nedopuštene instrukcije:
• izračunaj 5/0
• uvećaj x za 6 ili 7
• Učinkovitost:
• U konačnom vremenu može se dobiti rezultat koristeći olovku i
papir.
• Primjeri:
• Zbrajanje cijelih brojeva je učinkovito
• Dijeljenje realnih brojeva nije jer se može pojaviti broj s
beskonačno mnogo znamenki, npr. 10/3 = 3.3333333...
• Algoritam postaje učinkovit tek ako se broj znamenki unaprijed
ograniči

Programiranje 7
Algoritam
• Algoritam je uporabljiv ako se dobije rezultat u konačnom vremenu
• Vrijeme izvođenja mora biti "razumno"

Primjer: Algoritam koji bi izabirao potez igrača


šaha tako da ispita sve moguće posljedice
poteza, zahtijevao bi milijarde godina na
najbržem zamislivom računalu. Zašto?
20 mogućih prvih poteza bijelog
20 mogućih prvih poteza crnog
> 20 mogućih drugih poteza bijelog
> 20 mogućih drugih poteza crnog itd...
Za 10 poteza svakog igrača, barem 2020
kombinacija ~ 1026
Kad bi se 1 kombinacija analizirala 1 µs, to je
3170979198376 godina!
Programiranje 8
Algoritam Linijska struktura

• Svaki algoritamski korak tijekom rješavanja zadatka


izvršava se samo jedan put. U ovom slučaju
algoritamska shema se sastoji od algoritamskih
koraka ulaza, obrade i izlaza.

Programiranje 9
Algoritam Linijska struktura

Zbrajanje dva broja početak

Ulazni objekti: prvi broj, drugi broj


prvi_broj
Izlazni objekti (rezultati): zbroj drugi_broj

Algoritam (linijska struktura):


1. unesi prvi broj zbroj = prvi_broj +
drugi_broj
2. unesi drugi broj
3. zbroj je jednaka zbroju prvog i drugog broja
4. ispiši zbroj zbroj

ZADATAK 1
kraj

Programiranje 10
Algoritam Razgranata struktura

• Svaki algoritamski korak izvršava se najviše jedan put


tijekom rješavanja zadatka. Međutim, u ovakvoj strukturi
moguće su i situacije da se neki algoritamski koraci tijekom
rješavanja zadatka ne izvrše.
• U razgranatoj algoritamskoj shemi uvijek postoji jedan
algoritamski korak koji omogućava grananje algoritma. Ovaj
se algoritamski korak naziva uvjetnim – korakom odluke.
• Postavlja se pitanje da li je neki uvjet ispunjen ili nije. U tom
smislu ispunjenje uvjeta generira daljnji tijek rješavanja.
• Odluka je uvijek popraćena s odgovorima "DA" alternativno
"NE".

Programiranje 11
Jednostrana selekcija
• Pseudokôd
ako je logički_izraz tada
naredbe
N
logički_izraz

D
niz naredbi

Programiranje 12
Dvostrana selekcija

• Pseudokôd
ako je logički_izraz tada
niz_naredbi_1
D N
inače logički_izraz
niz_naredbi_2
niz naredbi_1 niz naredbi_2

Programiranje 13
Algoritam Razgranata struktura

Uspoređivanje dva broja


početak

Ulazni objekti: prvi broj, drugi broj


Izlazni objekti (rezultati): manji_broj prvi_broj
drugi_broj

Algoritam (razgranata struktura):


1. unesi prvi broj prvi_broj <
Ne manji_broj=drugi_broj
drugi_broj
2. unesi drugi broj
3. ako je prvi broj manji od drugog broja onda Da

manji broj je jednak prvom broju manji_broj=prvi_broj

4. inače
manji broj je jednak drugom broju manji broj

5. ispiši manji broj


kraj
ZADATAK 2
Programiranje 14
Primjer
• Sastaviti algoritamsku shemu za izračunavanje
vrijednosti y koji se ravna po relacijama:

 x1  x2 akoje x1  x2
y
 x1  x2 akoje x1  x2

Programiranje 15
Programiranje 16
Primjer
• Sastaviti algoritamsku shemu za izračunavanje
vrijednosti y koji se ravna po relacijama :
 x1  x2 x1  x2

y   x1  x2 x1  x2
x  x x  x
 1 2 1 2

Programiranje 17
Programiranje 18
Algoritam Ciklička struktura

• Niz algoritamskih koraka u kojem se jedan ili više


algoritamskih koraka može izvršiti više od jedanput,
pri jednom izvršavanju algoritma zadatka, tvori
cikličku algoritamsku shemu.

Programiranje 19
Petlja s ispitivanjem uvjeta
ponavljanja na početku

• Pseudokod
dok je (logički_izraz) N
niz_naredbi logički_izraz

niz_naredbi

Programiranje 20
Petlja s ispitivanjem uvjeta
ponavljanja na kraju

ponavljaj
niz_naredbi
dok ne bude (logički_izraz)

niz_naredbi

D
logički_izraz

Programiranje 21
Petlja s poznatim brojem
ponavljanja
• Pseudokod
za i = poc do kraj (korak k)
niz_naredbi
i = poc, kraj, korak

niz_naredbi

Programiranje 22
Algoritam Ciklička struktura

početak
Ispis svih brojeva do zadane granice:
granica
Ulazni objekti: granica
Izlazni objekti (rezultati): brojač brojač = 0

Algoritam (ciklička struktura): brojač <


granica
1. unesi granicu
2. brojač postavi na 0
brojač = brojač + 1
3. ponavljaj dok je brojač manji od granice
1. brojač povećaj za jedan
brojač
2. ispiši brojač

ZADATAK 3
kraj

Programiranje 23
Izračunavanje N faktorijela 1. način

• Rješenje s petljom u kojoj se uvjet ispituje na


početku

učitaj n
fakt=1
i=1
dok je i <= n
fakt = fakt*i
i = i+1
ispiši n,fakt

Programiranje 24
Izračunavanje N faktorijela 2. način

• Rješenje s petljom u kojoj se uvjet ispituje na kraju:


ucitaj n
fakt = 1
i = 1
ponavljaj
fakt = fakt * i
i = i+1
dok je i <= n
ispisi n,fakt

Programiranje 25
Izračunavanje N faktorijela 3. način

• Rješenje s petljom s poznatim brojem ponavljanja:

učitaj n
fakt = 1

za i = 1 do n
fakt = fakt * i

ispiši n,fakt

Programiranje 26
Algoritam Zadaci

1. Napravi algoritam za zbrajanje, oduzimanje i


množenje dva broja (linijska struktura algoritma)
nazad
2. Promjeni prethodni algoritam tako da dodaš dijeljenje
i kod dijeljenja provjeriš da li se dijeli s nulom
(razgranata struktura algoritma)
nazad
3. Napravi algoritam koji će čekati na unos broja i kad se
unese broj veći od 10 ispisati njegov kvadrat
(ciklička struktura algoritma)

Programiranje 27

You might also like