Dijagram toka - osnove

U računarskoj tehnici, "dijagram toka" je termin koji se odnosi na sistem međusobno povezanih grafičkih simbola preko kojih se predstavlja algoritam, odnosno, tok izvršavanja programa. *

Svaki pojedinačni simbol u dijagramu toka 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 zadatim uslovom)
  • petlje (uzastopno/višestruko ponavljanje određenog bloka instrukcija, takođe shodno zadatom uslovu)

Za početak ćemo se upoznati sa pojedinačnim simbolima (direktno u nastavku), nakon čega ćemo razraditi i nekoliko primera, sa dijagramima koji prikazuju osnovne tokove izvršavanja i različite kombinacije (uslove unutar petlji, petlje unutar grananja i sl).

Simboli

Simboli koji slede u nastavku, označavaju osnovne (apstraktne) elemente izvršavanja računarskih programa: pojedinačne naredbe, grananja, unos podataka, ispis rezultata, kao i početak i završetak izvršavanja programa ....

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.

U određenom dijagramu toka, prikazani simbol se može pojaviti samo jedanput.

Unos podataka

Naredba za unos podataka (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.

Obrada podataka

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

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

Tipični primeri pojedinačnih naredbi za obradu podataka su sledeći: računanje zbira ili razlike, dodela vrednosti promenljivoj (a = 10), inkrementacija (uvećanje vrednosti za 1), primena formule (v = s / t) i sl.

Grananje/odlučivanje

Uslovi koji određuju dalji tok izvršavanja algoritma zapisuju se unutar simbola u obliku romba, pored koga stoje oznake "DA" i "NE" (onako kako je prikazano na donjoj slici): *

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

Oznake "DA" i "NE" zapisuju se u zavisnosti od toga da li je u pitanju "grana" koja se izvršava ukoliko je uslov ispunjen, ili grana koja se izvršava ukoliko uslov nije ispunjen (u sledećem poglavlju članka prikazaćemo konkretne primere grananja).

Ispis rezultata

Naredbe za ispis rezultata se takođe predstavljaju preko simbola u obliku trapeza, ali, ovoga puta je donja osnovica veća:

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

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 se tipično pojavljuje posle naredbe izlaza, međutim, za razliku od simbola koji predstavlja početak izvršavanja, simbol za završetak izvršavanja se može pojaviti na više mesta u dijagramu toka (dodatna pogodnost koju ćemo detaljnije predstaviti na kraju članka).

Primeri

Zarad što boljeg upoznavanja sa praktičnom ulogom prikazanih simbola i mogućim tokovima izvršavanja programa, najbolje će biti da razmotrimo nekoliko konkretnih primera ....

Linearno izvršavanje naredbi

Na samom početku, da bismo se upoznali sa linearnim izvršavanjem naredbi, razmotrićemo jednostavan 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 zbir koji je izračunat u koraku #2
Dijagram toka koji prikazuje linearno izvršavanje naredbi
Slika 7. - Dijagram toka koji prikazuje linearno/uzastopno izvršavanje naredbi.

Uslovno izvršavanje naredbi (grananje)

Uslovno izvršavanje naredbi (tj. prelazak na različite blokove naredbi shodno uslovu), ilustrovaćemo na primeru postupka 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 pri tom, naravno, prestaje dalje izvršavanje instrukcija)
Dijagram toka koji prikazuje grananje
Slika 8. - Dijagram toka koji prikazuje grananje.

Ciklično ponavljanje blokova naredbi ("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 * koje se izvršavaju uzastopno, više puta, ** sve dok je određeni uslov zadovoljen.

U 'tehničkom' smislu, petlje u velikoj meri podsećaju na grananja: ukoliko se 'prepravi' 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".

Da bismo se što bolje upoznali sa petljama, prikazaćemo dijagram toka za jednostavan algoritam koji 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 (među kojima je naredba ispisa najvažnija), biće: i <= 5
    • ukoliko je uslov zadovoljen, vrednost promenljive i se prvo 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.

Alternativna verzija algoritma neće služiti za ispis 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 nije poznato 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 ....

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).

.... a što se tiče simbola za završetak programa koji se pojavljuje neposredno pored prvog uslova, 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: