kontrola toka programa - bpa.edu.rs kontrola toka programa programi koje smo do sada koristili imali...
TRANSCRIPT
![Page 1: Kontrola toka programa - bpa.edu.rs Kontrola toka programa Programi koje smo do sada koristili imali su linijsku strukturu. Kod takvih programa naredbe se uglavnom izvršavaju redom,](https://reader030.vdocuments.mx/reader030/viewer/2022040716/5e1f970a49ba8f65f24e71c7/html5/thumbnails/1.jpg)
Osnove programiranja
Kontrola toka programa
![Page 2: Kontrola toka programa - bpa.edu.rs Kontrola toka programa Programi koje smo do sada koristili imali su linijsku strukturu. Kod takvih programa naredbe se uglavnom izvršavaju redom,](https://reader030.vdocuments.mx/reader030/viewer/2022040716/5e1f970a49ba8f65f24e71c7/html5/thumbnails/2.jpg)
Sadržaj Kontrola toka programa Metode kontrole toka programa Bulova logika Operatori dodeljivanja Iskaz goto Tehnike grananja Iskaz if
Jednosmerno, dvosmerno i višestruko grananje Iskaz switch
![Page 3: Kontrola toka programa - bpa.edu.rs Kontrola toka programa Programi koje smo do sada koristili imali su linijsku strukturu. Kod takvih programa naredbe se uglavnom izvršavaju redom,](https://reader030.vdocuments.mx/reader030/viewer/2022040716/5e1f970a49ba8f65f24e71c7/html5/thumbnails/3.jpg)
Kontrola toka programa
Programi koje smo do sada koristili imali su linijsku strukturu.
Kod takvih programa naredbe se uglavnom izvršavaju redom, onako kako su napisane, jedna za drugom, od početka do kraja, s tim da se svaka naredba izvrši jednom.
Nakon jedne naredbe prelazi se na sledeću i tako redom do kraja programa.
Nekad je neophodno promeniti tok izvršavanja programa, jer se često dolazi u situaciju da tok programa zavisi od određenog uslova.
![Page 4: Kontrola toka programa - bpa.edu.rs Kontrola toka programa Programi koje smo do sada koristili imali su linijsku strukturu. Kod takvih programa naredbe se uglavnom izvršavaju redom,](https://reader030.vdocuments.mx/reader030/viewer/2022040716/5e1f970a49ba8f65f24e71c7/html5/thumbnails/4.jpg)
Metode kontrole toka programa
Grananje (selekcija) - gde se kod izvršava uslovno, u zavisnosti od rezultata nekog poređenja, Npr. „Ovaj kod izvrši samo ako je Promenljiva x
manja od 10." Petlje (iteracija) - ponavljanje izvršenja istih
iskaza (određeni broj puta, dok se ne dostigne uslov koji je unapred zadat).
Obe tehnike uključuju korišćenje Bulove logike.
![Page 5: Kontrola toka programa - bpa.edu.rs Kontrola toka programa Programi koje smo do sada koristili imali su linijsku strukturu. Kod takvih programa naredbe se uglavnom izvršavaju redom,](https://reader030.vdocuments.mx/reader030/viewer/2022040716/5e1f970a49ba8f65f24e71c7/html5/thumbnails/5.jpg)
Bulova logika
Engleski matematičar Džordž Bul, čiji je radsredinom devetnaestog veka omogućio osnovuBulove logike.
Tip bool može sadržati samo dve vrednosti: true ili false.
Često se koristi da bi se zabeležio rezultat nekeoperacije, uglavnom za skladištenje rezultata nekog poređenja.
![Page 6: Kontrola toka programa - bpa.edu.rs Kontrola toka programa Programi koje smo do sada koristili imali su linijsku strukturu. Kod takvih programa naredbe se uglavnom izvršavaju redom,](https://reader030.vdocuments.mx/reader030/viewer/2022040716/5e1f970a49ba8f65f24e71c7/html5/thumbnails/6.jpg)
Bulova logika Kao primer, razmotrite situaciju u kojoj bismo želeli da
izvršimo kôd na osnovu toga da li je promenljiva xmanja od 10 (x<10).
Da bismo ovo uradili, moramo proveriti da li je iskaz „xje manje od 10” istinit ili neistinit.
Tačnije, moramo znati logičku vrednost rezultata togpoređenja.
Logičko poređenje zahteva upotrebu logičkog operatora poređenja.
Poređenje zahteva upotrebu relacionih operatora.
![Page 7: Kontrola toka programa - bpa.edu.rs Kontrola toka programa Programi koje smo do sada koristili imali su linijsku strukturu. Kod takvih programa naredbe se uglavnom izvršavaju redom,](https://reader030.vdocuments.mx/reader030/viewer/2022040716/5e1f970a49ba8f65f24e71c7/html5/thumbnails/7.jpg)
Logički operatori za rad sa logičkim vrednostima
OPERATOR KATEGORIJA PRIMER IZRAZA REZULTAT
! unarni a = !b;a je dodeljena vrednost true ako je b false, ili vrednost false ako je b true (logičko NE).
& binarni a = b& c;a je dodeljena vrednost true ako b i c imaju vrednost true u suprotnom false (logičko I).
| binarni a = b|c;
a je dodeljena vrednost true ako b imavrednost true ili c ima vrednost true iliobe promenljive imaju vrednost true, u suprotnom dobija vrednost false(logičko ILI).
^ binarni a = b^ c;
a je dodeljena vrednost true ako b imavrednost true ili c ima vrednost true, ali ne i ako obe promenljive imaju vrednost true (false), u suprotnom false (Logičko ekskluzivno ILI).
a je promenljiva tipa bool, a b i c su promenljive (izrazi) bilo kog tipa
![Page 8: Kontrola toka programa - bpa.edu.rs Kontrola toka programa Programi koje smo do sada koristili imali su linijsku strukturu. Kod takvih programa naredbe se uglavnom izvršavaju redom,](https://reader030.vdocuments.mx/reader030/viewer/2022040716/5e1f970a49ba8f65f24e71c7/html5/thumbnails/8.jpg)
Primeri
int x = 10, y=15;bool z=(x * y != 0) & (y > x);Console.WriteLine(z);
int x = 10, y=15;bool z=(x * y == 0) ^ (y > x);//bool z=(x * y == 0) ^ (y< x);//bool z=(x * y != 0) ^ (y> x);Console.WriteLine(z);
TRUE
TRUEFALSEFALSE
![Page 9: Kontrola toka programa - bpa.edu.rs Kontrola toka programa Programi koje smo do sada koristili imali su linijsku strukturu. Kod takvih programa naredbe se uglavnom izvršavaju redom,](https://reader030.vdocuments.mx/reader030/viewer/2022040716/5e1f970a49ba8f65f24e71c7/html5/thumbnails/9.jpg)
Logički operatori za rad sa logičkim vrednostima
OPERATOR KATEGORIJA PRIMER IZRAZA REZULTAT
&& binarni a = b&&c;a je dodeljena vrednost true ako b ic imaju vrednost true u suprotnomfalse (logičko I).
|| binarni a = b||c;
a je dodeljena vrednost true ako b ima vrednost true ili c ima vrednosttrue ili obe promenljive imajuvrednost true, u suprotnom dobija vrednost false (logičko ILI).
Njihov rezultat je potpuno isti kao & i |, ali postoji bitna razlika u načinu na koji se dobija njihov rezultat, što može dati bolje performanse programa. Oba operatora prvo ispituju vrednost prvog operanda (b u tabeli gore), pa na osnovu njegove vrednosti možda neće biti potrebno da se ispita drugi operand.Ako je vrednost prvog operanda operatora && false, onda nema potrebe ispitivati vrednostdrugog, zato što će rezultat, bez obzira na drugi operand biti false. Slično tome operator || vratiće vrednost true, ako je prvi operand true, bez obzira na vrednost drugog operanda.
![Page 10: Kontrola toka programa - bpa.edu.rs Kontrola toka programa Programi koje smo do sada koristili imali su linijsku strukturu. Kod takvih programa naredbe se uglavnom izvršavaju redom,](https://reader030.vdocuments.mx/reader030/viewer/2022040716/5e1f970a49ba8f65f24e71c7/html5/thumbnails/10.jpg)
Iskaz goto
Iskaz goto se koristi kada je neophodno da se preskoči neki deo koda ili da se vrati na prethodni.
Programska linija se na neki način obeleži (slovima ili brojevima) i navede goto oznaka/broj (labela).
On ima svoje prednosti i nedostatke. Prednost je u jednostavnom prelasku sa jednog dela
koda na drugi Nedostatak što se može dobiti kod koji je teško
razumljiv.
![Page 11: Kontrola toka programa - bpa.edu.rs Kontrola toka programa Programi koje smo do sada koristili imali su linijsku strukturu. Kod takvih programa naredbe se uglavnom izvršavaju redom,](https://reader030.vdocuments.mx/reader030/viewer/2022040716/5e1f970a49ba8f65f24e71c7/html5/thumbnails/11.jpg)
Iskaz gotogoto <imeOznake>;Oznake se definišu na sledeći način:<imeOznake>:
![Page 12: Kontrola toka programa - bpa.edu.rs Kontrola toka programa Programi koje smo do sada koristili imali su linijsku strukturu. Kod takvih programa naredbe se uglavnom izvršavaju redom,](https://reader030.vdocuments.mx/reader030/viewer/2022040716/5e1f970a49ba8f65f24e71c7/html5/thumbnails/12.jpg)
Šta se dešava u ovom kodu?
start:int x= 5;goto dodajVrednost;ispisiRezultat:Console. WriteLine („x= {0}“, x);goto start;dodajVrednost:x+=10;goto ispisiRezultat;
![Page 13: Kontrola toka programa - bpa.edu.rs Kontrola toka programa Programi koje smo do sada koristili imali su linijsku strukturu. Kod takvih programa naredbe se uglavnom izvršavaju redom,](https://reader030.vdocuments.mx/reader030/viewer/2022040716/5e1f970a49ba8f65f24e71c7/html5/thumbnails/13.jpg)
Uslovi (grananje) u programu
Grananje je kontrolisanje reda koda koji treba dase izvrši sledeći.
Red na koji se skače zavisi od neke vrste uslovnog iskaza.
Uslovni iskaz biće zasnovan na poređenju između test vrednosti i jedne ili više mogućih vrednosti sa korišćenjem Bulove logike.
![Page 14: Kontrola toka programa - bpa.edu.rs Kontrola toka programa Programi koje smo do sada koristili imali su linijsku strukturu. Kod takvih programa naredbe se uglavnom izvršavaju redom,](https://reader030.vdocuments.mx/reader030/viewer/2022040716/5e1f970a49ba8f65f24e71c7/html5/thumbnails/14.jpg)
Tehnike grananja
Tri tehnike grananja koje su dozvoljene u jezikuC#: iskaz if
iskaz switch
ternarni operator („inline if“)
![Page 15: Kontrola toka programa - bpa.edu.rs Kontrola toka programa Programi koje smo do sada koristili imali su linijsku strukturu. Kod takvih programa naredbe se uglavnom izvršavaju redom,](https://reader030.vdocuments.mx/reader030/viewer/2022040716/5e1f970a49ba8f65f24e71c7/html5/thumbnails/15.jpg)
Iskaz if U zavisnosti od toga da li je uslov ispunjen izvršavaće
se jedna ili više naredbi. Ako je taj uslov true, tj. tačan, izvršava se kôd koji se
nalazi u toj grani. Ako uslov nije ispunjen, tada se te naredbe neće
izvršavati ili će se izvršavati drugi blok naredbi. Naredba if omogućava ispitivanje logičkog Bool uslova
u programu. if naredba se može upotrebiti za obavljanje
jednosmernog, dvosmernog, višesmernog, iliugnježdenog testiranja.
![Page 16: Kontrola toka programa - bpa.edu.rs Kontrola toka programa Programi koje smo do sada koristili imali su linijsku strukturu. Kod takvih programa naredbe se uglavnom izvršavaju redom,](https://reader030.vdocuments.mx/reader030/viewer/2022040716/5e1f970a49ba8f65f24e71c7/html5/thumbnails/16.jpg)
Izvođenje jednosmernog testiranja
Sintaksa naredbe if izgleda ovako:
if (uslov){
naredba}
![Page 17: Kontrola toka programa - bpa.edu.rs Kontrola toka programa Programi koje smo do sada koristili imali su linijsku strukturu. Kod takvih programa naredbe se uglavnom izvršavaju redom,](https://reader030.vdocuments.mx/reader030/viewer/2022040716/5e1f970a49ba8f65f24e71c7/html5/thumbnails/17.jpg)
Primer
Napisati program koji za uneti broj ispituje da li je on negativan i ispisuje poruku ako jeste.
![Page 18: Kontrola toka programa - bpa.edu.rs Kontrola toka programa Programi koje smo do sada koristili imali su linijsku strukturu. Kod takvih programa naredbe se uglavnom izvršavaju redom,](https://reader030.vdocuments.mx/reader030/viewer/2022040716/5e1f970a49ba8f65f24e71c7/html5/thumbnails/18.jpg)
Izvođenje dvosmernog testiranja
Sintaksa naredbe if izgleda ovako:if (uslov)*{
naredbe2} else{
naredbe1}
![Page 19: Kontrola toka programa - bpa.edu.rs Kontrola toka programa Programi koje smo do sada koristili imali su linijsku strukturu. Kod takvih programa naredbe se uglavnom izvršavaju redom,](https://reader030.vdocuments.mx/reader030/viewer/2022040716/5e1f970a49ba8f65f24e71c7/html5/thumbnails/19.jpg)
Primer
Napisati program koji za uneti broj ispituje da li je on negativan ili pozitivan i ispisujeodgovarajuću poruku.
![Page 20: Kontrola toka programa - bpa.edu.rs Kontrola toka programa Programi koje smo do sada koristili imali su linijsku strukturu. Kod takvih programa naredbe se uglavnom izvršavaju redom,](https://reader030.vdocuments.mx/reader030/viewer/2022040716/5e1f970a49ba8f65f24e71c7/html5/thumbnails/20.jpg)
Zadatak
Nacrtaj algoritam i napiši program koji za uneti broj ispituje da li je on paran ili neparan i ispisuje odgovarajuću poruku.
int x ;Console.WriteLine("Unesite vrednost broja x");x = int.Parse(Console.ReadLine());if (x %2 == 0)
Console.WriteLine("Uneli ste paran broj");elseConsole.WriteLine("Uneli ste neparan broj");
![Page 21: Kontrola toka programa - bpa.edu.rs Kontrola toka programa Programi koje smo do sada koristili imali su linijsku strukturu. Kod takvih programa naredbe se uglavnom izvršavaju redom,](https://reader030.vdocuments.mx/reader030/viewer/2022040716/5e1f970a49ba8f65f24e71c7/html5/thumbnails/21.jpg)
Višestruko grananje
Sintaksa naredbe if izgleda ovako:if (uslov1){
naredbe1} else if (uslov2){
naredbe2} ..........else {
naredbe3}
![Page 22: Kontrola toka programa - bpa.edu.rs Kontrola toka programa Programi koje smo do sada koristili imali su linijsku strukturu. Kod takvih programa naredbe se uglavnom izvršavaju redom,](https://reader030.vdocuments.mx/reader030/viewer/2022040716/5e1f970a49ba8f65f24e71c7/html5/thumbnails/22.jpg)
Primer Nacrtaj algoritam i napiši program koji za uneti
broj ispituje da li je on negativan, pozitivan ili nula i ispisuje odgovarajuću poruku.
![Page 23: Kontrola toka programa - bpa.edu.rs Kontrola toka programa Programi koje smo do sada koristili imali su linijsku strukturu. Kod takvih programa naredbe se uglavnom izvršavaju redom,](https://reader030.vdocuments.mx/reader030/viewer/2022040716/5e1f970a49ba8f65f24e71c7/html5/thumbnails/23.jpg)
Zadatak 1
Nacrtaj algoritam i napiši program za izračunavanje uslovnog izraza prema datom obrascu: y=-5 za x<0, y=x+2 za 0<=x<1, y=3x-1 za 1<=x<5, y=2x za x>=5.
int x,y;Console.WriteLine("Unesite broj
x:");x = int.Parse(Console.ReadLine());//y=-5 za x<0, y=x+2 za 0<=x<1,
y=3x-1 za 1<=x<5, y=2x za x>=5if (x < 0)
y = -5;else if (x < 1)
y = x + 2;else if (x < 5)
y = 3 * x - 1;else
y = 2 * x;Console.WriteLine("y={0}",y);Console.ReadKey();
![Page 24: Kontrola toka programa - bpa.edu.rs Kontrola toka programa Programi koje smo do sada koristili imali su linijsku strukturu. Kod takvih programa naredbe se uglavnom izvršavaju redom,](https://reader030.vdocuments.mx/reader030/viewer/2022040716/5e1f970a49ba8f65f24e71c7/html5/thumbnails/24.jpg)
Zadatak 2
Nacrtaj algoritam kojim se izračunava vrednostfunkcije:
y=x2, x<0
x, 0<x<1
√x, x>1
int x, y;Console.WriteLine("Unesite neki
broj:");x = int.Parse(Console.ReadLine());if (x<0)
y=x*x;//Math.Pow(x,2)else if(x<=1)
y=x;else
y=(int)Math.Sqrt(x);Console.WriteLine("Dobijena
vrednost je “+y);Console.ReadKey();
![Page 25: Kontrola toka programa - bpa.edu.rs Kontrola toka programa Programi koje smo do sada koristili imali su linijsku strukturu. Kod takvih programa naredbe se uglavnom izvršavaju redom,](https://reader030.vdocuments.mx/reader030/viewer/2022040716/5e1f970a49ba8f65f24e71c7/html5/thumbnails/25.jpg)
Iskaz switch
Iskaz switch je vrlo sličan iskazu if po načinuuslovnog izvršavanja koda na osnovu nekevrednosti dobijene iz testa.
Međutim, switch nam dozvoljava da ispitamo više različitih vrednosti test promenljiveodjednom, umesto samo jednog uslova.
Ovaj test je ograničen na diskretne vrednosti, pa je i njegova upotreba malo drugačija.
![Page 26: Kontrola toka programa - bpa.edu.rs Kontrola toka programa Programi koje smo do sada koristili imali su linijsku strukturu. Kod takvih programa naredbe se uglavnom izvršavaju redom,](https://reader030.vdocuments.mx/reader030/viewer/2022040716/5e1f970a49ba8f65f24e71c7/html5/thumbnails/26.jpg)
Osnovna struktura switch iskaza
switch (<TestProm>){case operand1:kod za izvrsavanje;break;case operand2:kod za izvrsavanje;break;. . .case operandN:kod za izvrsavanje;break;default:kod za izvrsavanje ako nijedan uslov nije ispunjen;break;}
![Page 27: Kontrola toka programa - bpa.edu.rs Kontrola toka programa Programi koje smo do sada koristili imali su linijsku strukturu. Kod takvih programa naredbe se uglavnom izvršavaju redom,](https://reader030.vdocuments.mx/reader030/viewer/2022040716/5e1f970a49ba8f65f24e71c7/html5/thumbnails/27.jpg)
Objašnjenje
Vrednost u promenljivoj <testProm> poredi se sasvakom od vrednosti <operandx> (navedenim u iskazu case) i ako postoji poklapanje, onda se izvršava kod predviđen za to.
Ukoliko ne postoji poklapanje ni sa jednom vrednošću, onda se izvršava kod u delu default, ako takav blokpostoji.
Na kraju koda svake sekcije postoji dodatna komandabreak.
Nelegalno je za tok izvršenja programa da pređe u sledeći case iskaz, ako se obradio case blok pre njega.
![Page 28: Kontrola toka programa - bpa.edu.rs Kontrola toka programa Programi koje smo do sada koristili imali su linijsku strukturu. Kod takvih programa naredbe se uglavnom izvršavaju redom,](https://reader030.vdocuments.mx/reader030/viewer/2022040716/5e1f970a49ba8f65f24e71c7/html5/thumbnails/28.jpg)
Upoređenje
![Page 29: Kontrola toka programa - bpa.edu.rs Kontrola toka programa Programi koje smo do sada koristili imali su linijsku strukturu. Kod takvih programa naredbe se uglavnom izvršavaju redom,](https://reader030.vdocuments.mx/reader030/viewer/2022040716/5e1f970a49ba8f65f24e71c7/html5/thumbnails/29.jpg)
Zadatak
Ispisati uneti broj slovima.
int a;Console.WriteLine("Unesite neki broj od 1 do 5:");a = int.Parse(Console.ReadLine());switch (a)
{case 1:
Console.WriteLine("Uneli ste broj jedan");break;
case 2:Console.WriteLine("Uneli ste broj dva");break;
case 3:Console.WriteLine("Uneli ste broj tri");break;
case 4:Console.WriteLine("Uneli ste broj cetiri");break;
case 5:Console.WriteLine("Uneli ste broj pet");break;
default:Console.WriteLine("Niste uneli odgovarajuci
broj!");break;
}
![Page 30: Kontrola toka programa - bpa.edu.rs Kontrola toka programa Programi koje smo do sada koristili imali su linijsku strukturu. Kod takvih programa naredbe se uglavnom izvršavaju redom,](https://reader030.vdocuments.mx/reader030/viewer/2022040716/5e1f970a49ba8f65f24e71c7/html5/thumbnails/30.jpg)
Primer 2
int n;Console.WriteLine("Unesite n");n = int.Parse(Console.ReadLine());switch (n){
case 1:case 2:case 3:
Console.WriteLine("Uneli ste broj "+n);break;default:Console.WriteLine("Uneti broj nije iz opsega [1,3]");break;}
Console.ReadKey();