Upload
others
View
34
Download
0
Embed Size (px)
Citation preview
1
ALGORITMI (2) Pojam algoritma
Dijagram toka (Blok dijagram)
Osnovne strukture algoritma
Primjeri
mr.sc.M.Čičak
Opis zadatka i postupka rješavanja
ŠTO? NAD ČIM?- opis zadatka, polaznih podataka, željenih rezultata i
njihovih međusobnih zakonitosti, relacija
KAKO?- opis postupka rješavanja
- redoslijed primjene zakonitosti, relacija na podacima da bi se dobio željeni rezultat
Simboli koji se najćešće upotrebljavaju za dijagram toka:
OSNOVNE ALGORITAMSKE STRUKTURE (POSTUPCI)
LINIJSKA – slijed, sekvenca
RAZGRANATA – grananje, selekcija
CIKLIČNA - ponavljanje, iteracija
(petlja)
Linijska struktura - slijed, sekvenca
naredbe slijede jedna iza druge
A1
A2
A3
An
• sekvenca predstavlja niz naredbi pridruživanja (dodjeljivanja) (:=)
Varijabli pridružujemo (:=)vrijednosta:=bn:=n+1
RAZGRANATA struktura - grananje, selekcija
Omogućuje različiti tok odvijanja programa ovisno o rezultatu
postavljenog uvjeta.
uvjeti logički
2
Naredba switch-case (C++)
omogućava višestruko grananje koje
ovisi o vrijednosti postavljenog
uvjeta.
uvjet je cjelobrojni izraz
ili cjelobrojna varijabla
O:= ?
12345
Algoritam za odluku o oblačenju ovisno o vremenskim uvjetima
Dijagram toka Pseudo kod
Kod PYTHON
Nacrtati dijagram toka algoritama kojim se određuje veći od dva zadata broja korištenjem formule
bab
baaba
,
,},max{
a>b
max:=a max:=b
da ne
max<b
max:=b
da
max:=a
Primjer
pocpoc
krajkraj
a,b
a,b
max
Pronaći maksimum od tri zadana broja a, b i c
}},,max{max{},,max{ cbacba
poc
a>bda ne
a>c b>c
max:=a max:=c max:=b max:=c
da nene
kraj
max
a,b,c
Primjer
Kreirati dijagram toka koji izračunava zbroj prvih - n brojeva
poč.
n
Z:=0
B:=0
Z := Z+B
B := B+1
B=nNE
Z
kraj
Ciklična struktura - ponavljanje (petlja)
uvjet
tijelo petlje
da
netijelo petlje
uvjetne
da
Za svaki i:=k1 do k2 s korakom k3
tijelo petlje
Sve dok-činiti
While do
Ponavljaj-sve dok
Repeat - until
brojač petlje
broj prolaza 13
12
k
kkn
definiranje uvjeta
Omogćuje ponavljanje algoritamskih koraka više puta.
i:=k1,k2,k3
forDO
3
Paralelne
petlje
petlje koje
se sijeku
Pravila Dozvoljene su paralelne (ugnježdene) petlje.
Nisu dozvoljene petlje koje se sjeku!
- Zbroj prvih n brojeva
poč.
n
Z:=0
B:=0
Z := Z+B
B := B+1
B=nNE
Z
kraj
Z := 0
Z := Z + i
i := 1, n
kraj
start
n
Z
- grananje - petlja, ponavljanje
Početak
Kraj
Faktorijel
N
I:=1,N
Faktorijel := Faktorijel * I
Faktorijel :=1
Početna vrijednost
Kreirati dijagram toka koji učitava cijeli broj N i izračunava N!
- sve vrste petlji (uočiti razliku)
Primjer
Početak
Kraj
Faktorijel
N
N:=N-1
Faktorijel := Faktorijel * N
Faktorijel := 1
N>0
ne
PETLJA uvjet na početku
Početak
Kraj
Faktorijel
N
N:=N-1
Faktorijel := Faktorijel * N
Faktorijel := 1
N>0
ne
Početak
Faktorijel
N
N:=N -1
Faktorijel := Faktorijel * N
Faktorijel := 1
N>0
Kraj
da
PETLJA uvjet na početku uvjet na kraju
Razraditi logiku algoritma (pomoću dijagrama toka) - kvadratna jednadžba
A B C D Izlaz
1 -4 5 -4 2+1*i
2-1*i
Nacrtati dijagram toka za
izračunavanje rješenja kvadratne
jednadžbe gdje su ulazni objekti
koeficijenti kvadratne jednadžbe
A,B,C
PRONAĐI I
ISPRAVI GREŠKE
Primjer
4
X1:=RX2:=R
1. POČETAK 2. Pročitaj / Učitaj vrijednost n. 3. Podijeli n sa 2 i zapamti ostatak u ost. 4. Ako je ost 0 idi na stavku 7. 5. Ispiši „n je neparan broj“. 6. Idi na stavku 8. 7. Ispiši „n je paran broj“. 8. KRAJ
Napisati i nacrtati algoritam koji provjerava da li je učitani broj paran broj ? (tekstualno i grafički )
Primjer:
Nacrtati dijagram toka
Napisati i nacrtati algoritam koji provjerava da li je učitani broj paran broj ? (tekstualno i grafički )
Primjer:
?
Razraditi logiku algoritma (pomoću dijagrama toka)
Kotao ima radnu temperaturu u intervalu [50°C- 80°C]. Napisati algoritam koji provjerava da li je s tipkovnice zadana vrijednost temperature kotla u dopuštenomintervalu i ispisuje odgovarajuću poruku.
#include <stdio.h>#define donja 50.0#define gornja 80.0int main(){float t;printf("\n Unesite temperaturu kotla: ");scanf("%f",&t);if (t < donja) {printf("Temperatura je pala ispod dopustene!\n");} else if (t > gornja) {printf("Temperatura je porasla iznad dopustene!\n");} else {printf("Temperatura kotla OK\n");}return 0;}
P
Unos
donja, gornja,t
K
t<donja
t>gornja
Temp je
ispod dopuštene
da
Temp je
Porasla iznaddopuštene
Temp je
O.K.
da
Primjer
start
Y := 1
n=0
Y := Y * X
n := n - 1
kraj
ne
da
X, n
Y
?
Nacrtati dijagram toka koji
izračunava funkciju y = xn
Primjer
start
Y := 1
n=0
Y := Y * X
i := 1,n
kraj
da
X, n
Y
Kreirati algoritam za sljedeći problem:
ako je
x > 3 => y = x2 + 5
x = 3 => y = 1
x < 3 => y = 1 / (x2 + 5)
Primjer
5
ne
da
x=3 Y := 1
start
Y := x*x+5
Y := 1/(x^2+5)
x>3
kraj
da
ne
x
Y
Primjer - algoritam - brojenje znamenki
Nacrtaj dijagram toka za brojenje znamenki
unesenog broja (npr. za uneseno 324 daje 3)
br n cijeli
324 0 324
1 32.4
2 3.24
3 0.324
Kreirati dijagram toka za brojenje znamenki
unesenog broja (npr. za uneseno 324 daje 3)
Ubr n cijeli
324 0 324
1 32.4
2 3.24
3 0.324
Primjer - algoritam - brojenje znamenki
Studentska rješenja
Početak
n
i := 1
K: =1
C:= n / ki := i + 1
k := k *10
i - 1
c>0da
Kraj
Početak
n
B:=1
Z:=0
C:= InI - BZ:=Z+1
B:=B*10
Z
C< 0ne
Kraj
Kreirati algoritam za igru
pogađanja gdje će
računalo odrediti neki broj
između 0 i 100, recimo 53,
a zatim korisnik pokušava
pogodit zamišljeni broj i
računalo mu odgovara
npr. kao što je prikazano u
donjoj tablici:
Korisnik Računalo
40 Broj je veći
90 Broj je manji
50 Broj je veći
53 Pogodak, broj
pokušaja: 4
Primjer