OKMU 2.1 Osnovne grupe algoritama ma邸inskog uenja i njihove osobineMilan Zdravkovi
油
Online kurs: Analiza podataka u poslovnoj i in転enjerskoj praksi. Ma邸inski fakultet Univerziteta u Ni邸u. Nedelja 2, resurs 1: Osnovne grupe algoritama ma邸inskog uenja i njihove osobine. Realizacija: Dragan Mi邸i
http://160.99.22.125:9000/courses/course-v1:MEF+OKMU+2018-19_S2/about/
1. Razgranati algoritmi
Za rje邸avanje veine zadataka potrebne su slo転enije programske strukture kod kojih redoslijed izvr邸avanja
naredbi zavisi o vrijednostima podataka koji se obrauju.
Grananje je programska struktura koja omoguuje razliit tok programa, zavisno o rezultatu postavljenog uslova.
To je va転na struktura bez koje bi mogunost rje邸avanja zadataka raunarom bila vrlo ograniena.
Razgranata algoritamska struktura je ona kod koje se svaki korak izvr邸ava jednom ili nijednom. Stvar je
u tome da, kada zadatak zahteva dase neke vrijednosti unesu u promenljive, jednostavno, ne mo転emo da znamo
koje e to vrednosti biti.
Prosto, potreban nam je neki korak pomou koga mo転emo da postavimo pitanje "邸ta ako", ili mo転da tanije "da li
je".
Ovakav korak predstavlja "ravanje" izvr邸avanja programa. U na邸em algoritmu pripremamo dvije odvojene
grane, i zavisno od provjere na "raskrsnici" izvr邸ie se koraci u jednoj ili u drugoj. Zbog toga ka転emo
da se neki koraci izvr邸e jednom, a neki nijednom.
Meutim, 邸ta ako je potrebno imati vi邸e od dvije mogunosti? Tj. 邸ta ako je potrebno da se algoritam odvaja
u vi邸e od dvije grane? Pa, jednostavno - svaku granu uvijek mo転emo ponovo da "ravamo". Takoe,
za specifian tip problema, mo転emo koristiti vi邸estruko grananje.
2. Naredbe grananja su:
if,
if-else,
if-else if-else,
switch-case.
Jednostruko uslovno grananje
Naredba if omoguava jednostruko uslovnono grananje programa. Uslov je logiki izraz, a upisuje se unutar para
malih zagrada.
Na kraju naredbe if ne stavlja se znak taka zarez (;).
Korak koji slu転i za "ravanje", u sebi sadr転i izraz logikog tipa.
To znai da se u ovom koraku zadaje neki uslov. Njegova vrijednost mo転e biti "tano" (true) ili "netano"
(false).
Najjednostavnija vrsta ovakvog izraza su relacioni izrazi, odnosno uporeivanja.
3. Blokovi naredbi
Dijelovi programa koji se uslovno izvode, grupi邸u se u skupine ili blokove naredbi. Svaki se blok naredbi ograniava parom
otvorena-zatvorena vitiasta zagrada ({ }).
Ako blok naredbi ima samo jednu naredbu zagrade se mogu izostaviti. Blokovi naredbi se obino pi邸u uvueno zbog
preglednosti.
Primjer bloka naredbi
{
int x;
cout<<endl<<"Upisi cijeli broj u bloku:";
cin>>x;
}
5. Evo primjera gdje poetnici esto grije邸e.
Potrebno je sastaviti uslov kojim se provjerava da li je vrijednost promjenljive X u intervalu od 0 do 9. Matematiki
je sasvim opravdano napisati:
0 <= X <= 9
Meutim, u programiranju je ovo pogre邸no!
Raunar bi prvo ispitao da li je 0 manje od X, a onda dobijenu vrijednost (true ili false) uporedio sa 9.
U nekim programskim jezicima bi ovo bilo prijavljeno kao gre邸ka, a u nekim bi raunar nastavio da radi, ali bismo
dobili pogre邸an rezultat (true bi prepoznao kao 1, a false kao 0 pa bi to uvek bilo manje od 10). U programiranju bismo
morali da napi邸emo npr. ovakav uslov:
(X >= 0) && (X <= 9)
Dakle, provjeravamo da li va転i da je X vee ili jednako 0 i istovremeno X manje ili jednako 10.
Ova dva uslova povezujemo operatorom AND.
Hajdemo korak dalje.
Recimo da treba ispitati da li je X van ovog intervala. Pazite, kreiranje "obrnutog" uslova nije trivijalan zadatak.
Rje邸enje bi bilo:
(X < 0) || (X > 9)
Znai pitamo da li va転i da je X manje od 0 ili mo転da da je X vee od 9.
Kao 邸to vidimo, ne mo転emo ba邸 samo da "obrnemo znakove". Primeujemo da za povezivanje uslova koristimo
operator OR, koji vraa vrednost "tano" ako je zadovoljen bilo prvi, bilo drugi uslov.
Ako je problem samo "obrtanje" postojeeg uslova, mnogo je lak邸e da koristimo operator NOT:
!((X >= 0) && (X <= 9))
6. Inae, u razgranatim strukturama mogu uestvovati svi koraci koje smo do sada nauili ( ulaz, izlaz i obrada
podataka), kao i strukture koje emo tek uiti.
Primjer 1: Napi邸i program koji ispituje da li je broj pozitivan ili negativan!
7. Primjer 2: Napi邸i program koji ispisuje da li je uneseni broj pozitivan, negativan ili nula!