Dijagram toka - osnove

Dijagram toka je sistem povezanih grafičkih simbola preko kojih se predstavlja algoritam, odnosno, tok izvršavanja programa.

Svaki pojedinačni simbol predstavlja pojedinačni korak u algoritmu, a kada je u pitanju sled izvršavanja programskih instrukcija, razlikuju se tri osnovne opcije:

  • linearno (bezuslovno) izvršavanje uzastopnih pojedinačnih naredbi
  • grananja (prelazak na jedan od dva moguća bloka instrukcija u sledećem koraku - u skladu sa određenim uslovom)
  • petlje (uzastopno ponavljanje određenog bloka instrukcija, takođe shodno određenom uslovu)

Naravno, osnovne opcije koje smo naveli, moguće je i kombinovati.

Simboli

U nastavku, upoznaćemo se sa pojedinačnim simbolima, nakon čega ćemo razraditi nekoliko primera (sa dijagramima koji prikazuju različite tokove izvršavanja).

Početak izvršavanja

Simbol sa slike #1 predstavlja početak izvršavanja programa:

Simbol za početak izvršavanja
Slika 1. - Simbol za početak izvršavanja.

Naredba ulaza

Naredba ulaza (u dijagramima toka), simbolično se predstavlja kao "obrnuti trapez" * u kome se navodi jedan ili više identifikatora promenljivih koje se učitavaju.

Simbol za naredbu ulaza
Slika 2. - Simbol za naredbu ulaza.

Naredba

U dijagramima toka, pravougaonik označava ("običnu") pojedinačnu naredbu, a sama naredba se zapisuje unutar pravougaonika.

Simbol za naredbu
Slika 3. - Simbol za "običnu" naredbu.

Kao primere pojedinačnih naredbi, možemo navesti: računanje zbira ili razlike, dodelu vrednosti promenljivama (a = 10), inkrementaciju (uvećanje vrednosti za 1), primenu formula (v = s / t), kao i mnoge druge jednostavne operacije.

Grananje/odlučivanje

Uslovi (koji određuju dalji tok izvršavanja algoritma), zapisuju se unutar simbola koji izgleda kao romb (onako kako je prikazano na donjoj slici):

Simbol za grananje u algoritmu
Slika 4. - Simbol za grananje u algoritmu.

Naredba izlaza

Naredbe izlaza takođe se predstavljaju preko simbola u obliku trapeza (ali, ovoga puta, donja osnovica je veća):

Simbol za naredbu izlaza
Slika 5. - Simbol za naredbu izlaza.

Za razliku od ulaznih vrednosti koje mogu izostati, algoritam (odnosno, dijagram toka), mora sadržati bar jednu izlaznu vrednost.

Završetak izvršavanja

Simbol sa slike #6 predstavlja završetak izvršavanja.

Simbol za završetak izvršavanja
Slika 6. - Simbol za završetak izvršavanja.

Prikazani simbol pojavljuje se (tipično, ali, ne i uvek), posle naredbe izlaza.

Primeri

Da bismo se što bolje upoznali sa praktičnom ulogom različitih simbola i različitim tokovima izvršavanja programa, razmotrićemo nekoliko primera.

Linearno izvršavanje naredbi

Kao primer linearnog izvršavanja naredbi, razmotrićemo dijagram toka koji predstavlja algoritam za sabiranje dva broja:

  • ulazni podaci su dve brojčane vrednosti
  • obrada podataka podrazumeva računanje zbira dve unete vrednosti
  • izlazni podatak je prethodno izračunati zbir
Dijagram toka koji prikazuje linearno izvršavanje naredbi
Slika 7. - Dijagram toka koji prikazuje linearno izvršavanje naredbi.

Uslovno izvršavanje naredbi (grananje)

Kao primer uslovnog izvršavanja naredbi (to jest, primer algoritma u kome postoji 'grananje'), razmotrićemo postupak za računanje obima i površine kvadrata:

  • očekivani ulazni podatak je brojčana vrednost, koja predstavlja stranicu kvadrata
  • međutim, pošto nije zagarantovano da će svaki put (pri pokretanju programa), biti unet ispravan ulazni podatak (stranica kvadrata) - ulazni podatak se mora proveriti:
    • ukoliko korisnik programa unese broj koji je veći od 0, pristupa se računanju obima i površine kvadrata - i zatim se izračunate vrednosti ispisuju
    • ukoliko korisnik ne unese korektnu ulaznu vrednost (recimo, ako se unese negativan broj, ili 0), potrebno je da program ispiše poruku o grešci (i naravno, prekida se dalje izvršavanje)
Dijagram toka koji prikazuje grananje
Slika 8. - Dijagram toka koji prikazuje grananje.

Petlje

Pored bezuslovnog izvršavanja pojedinačnih naredbi i usmeravanja toka programskih instrukcija preko uslova, u algoritmima (tj. programima), moguće je definisati i "petlje" - blokove programskih instrukcija koji se izvršavaju uzastopno, sve dok je određeni uslov zadovoljen.

U 'tehničkom' smislu, petlje u velikoj meri podsećaju na grananja: ukoliko 'prepravimo' dijagram toka koji predstavlja osnovno grananje, tako da ostane samo grana koja se izvršava ako je uslov zadovoljen - nakon čega sledi povratak na ispitivanje uslova, praktičan rezultat je "petlja".

Uzmimo za primer algoritam koja ispisuje prvih 5 pozitivnih celih brojeva (ovoga puta, korisnik ne unosi podatke):

  • uvešćemo pomoćnu promenljivu i, preko koje se "broje koraci"
  • na početku, promenljiva i dobija vrednost 1 (prva vrednost za ispis)
  • uslov za izvršavanje bloka naredbi (od kojih je glavna - naredba ispisa), biće: i <= 5
    • ukoliko je uslov zadovoljen, vrednost promenljive i prvo se ispisuje, zatim, uvećava za 1, posle čega se algoritam vraća na proveru uslova
    • ukoliko uslov nije zadovoljen, blok naredbi se preskače
Dijagram toka koji prikazuje petlju
Slika 9. - Dijagram toka koji prikazuje ciklično ponavljanje bloka naredbi (tj. 'petlju').

Za sam kraj, uopštićemo prethodni algoritam, osvrnućemo se dodatno na ideju o višestrukoj pojavi simbola za završetak izvršavanja (što smo najavili ranije), i videćemo zašto dodatni simbol za završetak izvršavanja - i te kako može biti od koristi.

U alternativnoj verziji algoritma nećemo ispisivati prvih 5 brojeva, već prvih n brojeva, gde n predstavlja celobrojnu vrednost koju korisnik unosi - pri čemu je očekivano da uneta vrednost bude veća od 0.

Naravno, budući da ovoga puta ne znamo da li će korisnik (zapravo) uneti odgovarajuću vrednost, potrebno je prvo proveriti da li je uneti broj veći od 0, a ako navedeni uslov nije zadovoljen - potrebno je zaustaviti dalje izvršavanje naredbi.

Ostatak algoritma (tj. dijagrama toka), skoro je isti kao u prethodnom primeru, a što se tiče simbola za završetak programa koji se pojavljuje neposredno pored prvog uslova .....

Dijagram toka koji prikazuje "ranu terminaciju" (ukoliko prvi uslov nije zadovoljen, obrada se završava)
Slika 10. - Dijagram toka koji prikazuje "ranu terminaciju" pre pokretanja petlje (ukoliko prvi uslov nije zadovoljen, dalja obrada se prekida).

.... može se primetiti da je u pitanju elegantnije rešenje u odnosu na spajanje prvog uslova sa "donjim" simbolom za završetak.

Napomena: Tekstovi i slike na sajtu www.skola-programiranja.rs (osim u slučajevima pojedinih fotografija, gde je drugačije navedeno) predstavljaju intelektualnu svojinu autora sajta www.skola-programiranja.rs i zabranjeno je njihovo korišćenje na drugim sajtovima i štampanim medijima, kao i bilo kakvo korišćenje u komercijalne svrhe, bez eksplicitnog odobrenja autora i Računarskog centra SystemPro. ©SystemPro d.o.o. novembar 2019.
Autor članka Nikola Vukićević Za web portal www.skola-programiranja.rs Preuzeto sa sajta www.codeblog.rs uz odobrenje autora
Podelite sa prijateljima: