6. Imperativni jezici Flashcards
Imperativna paradigma programiranja
Kod imperativne paradigme programiranja, program predstavlja skup naredbi koje menjaju njegovo stanje. Naredbama se opisuje algoritam za resavanje problema. Naredbe u imperativnim jezicima su
• Naredbe obrade
• Upravljacke strukture
Upravljacke strukture i njihov razvoj
Upravljacka struktura je instrukcija programa koja odreduje redosled izvrsavanja drugih instrukcija.
1957. godine je definisan prvi imperativni jezik FORTRAN. Pocetkom 70-ih godina definisana je metodologija strukturnog programiranja i programski jezik Pascal.
Strukturno programiranje znaci da se programske strukture mogu ugnjezdavati ali se ne mogu preklapati. Ovaj koncept je siroko prihvacen tako da danas svi prodceduralni i objektno-orijentisani jezici primenjuju ovu metodologiju. 1972. pojavljuje se C koji se smatra najkoriscenijim imperativnim jezikom
Osnovne upravljacke strukture
Upravljacka struktura je instrukcija koja odredjuje redosled izvrsavanja drugih instrukcija u programu. 3 osnovna tipa upravljackih struktura su: sekvenca, selekcija i petlja.
- Sekvenca predstavlja niz instrukcija u programu koje se izvrsavaju redosledom kojim su zapisane.
- Selekcija na osnovu ispunjenosti ili neispunjenosti nekog uslova odredjuje koji deo koda ce se izvrsiti.
- Petlja definise ponavljanje izvrsenja nekog odredjnog skupa instrukcija.
Sekvenca naredbi ili blok
Sekvenca naredbi ili blok predstavlja niz instrukcija koje se izvrsavaju redosledom kojim su zapisane
Pascal i C# napisi
Blokovi se takodje cesto koriste za ogranicavanje opsega simbolickih imena (simbolicko ime unutar jednog bloka je lokalno, a u odnosu na sve blokove unutar tog bloka je globalno) Medjutim moze doci do problema konflikta imena ukoliko se jedno ime deklarise vise puta ( u C-u i C++-u vazi poslednja definicija imena, dok u Javi i C#-u program prijavljuje gresku)
Struktura selekcije ( grananja )
Naredba selekcije (if naredba) omogucava da se izvrsi jedan ili drugi deo koda u zavisnosti da li je neki uslov ispunjen ili ne. //Pascal i C i Slika selekcije *3
Postoji i visestruko grananje (kao i struktura "Ceslja") U C-u struktura ceslja izgleda kao switch (izraz) { case const1: naredba1 break; case const2: naredba2 break; ... [default: naredba;] //ukoliko nijedan uslov nije ispunjen }
U programskom jeziku Java, switch struktura ima istu semantiku kao i u C-u, dok u C#-u switch struktura je namenjena za strukture tipa ceslja, gde je break obavezan cak i nakon default klazule.
Programske petlje
Omogucavaju visestruko izvrsavanje istog bloka naredbi programa.
Postoje:
• Brojacke petlje (sa unapred odredjenim brojem prolazaka kroz petlju)
• Petlje sa unapred nepoznatim brojem prolaza (petlje koje se izvrsavaju u slucaju da je uslov (koji moze biti na pocetku i na kraju petlje) ispunjen)
Brojacke petlje
Brojacke petlje su petlje sa unapred poznatim brojem prolaza. Koriste specijalnu promenljivu koja je nazvana brojac koja pri svakom prolasku kroz petlju menja svoju vrednost pocev od zadate startne vrednosti sve do konacne vrednosti odredjene inkrementom.
//for za Pascal i C
Brojacke petlje takodje sluze i za obilazak kolekcija nekih podataka
int[] niz={1,2,5,7};
for(int i=0;i<4;i++) { …a[i]… }
U Javi i C#-u postoje posebne petlje namenjene za obilazak kolekcija a to su for(int element : a) u Javi i foreach(int element in a) u C#-u.
Postoje i ogranicenja za upotrebi petlji za rad sa kolekcijama.
Kod Jave kolekcija moze biti polje ili klasa koja implementira interfejs Collection
Kod C#-a kolekcija moze biti polje ili klasa koja implementira jedan od interfejsa (System.Collections.IEnumerator, System.Collections.IEnumerable, System.Collections.Generic.IEnumerator, System.Collections.Generic.IEnumerable).
Petlje sa unapred nepoznatim brojem prolaza
To su petlje koje se ponavljaju sve dok se ne ispuni odredjeni uslov (koji moze biti na pocetku ili na kraju petlje), tj. uslov se ispituje pre ili posle svakog prolaza kroz petlju.
Odredjivanje broja cifara u celom broju N pomocu petlje sa uslovom na pocetku
brcifara=1; N=N/10;
while(N!=0){N/=10;brcifara++;}
Odredjivanje broja cifara u celom broju N pomocu petlje sa uslovom na pocetku
do {N/=10; brcifara++} while(N!=0);
Naredbe prekida
- Za prekidanje tekuce iteracije petlje : continue;
- Za prekidanje tekuce programske strukture: break;
- Za prekidanje izvrsenja tekuceg potprograma: return ili return izraz;
- Za prekidanje tekuce strukture, niza ugnjezdenih struktura, tekuce funkcije ili niza pozvanih funkcija: throw izraz;