230 likes | 385 Views
Compound – slo ženi operatori dodele. Dosta čest slučaj u praksi je promena tekuće vrednosti promenljive na sledeći način: answer = 42; answer = answer + 42;
E N D
Compound – složeni operatori dodele • Dosta čest slučaj u praksi je promena tekuće vrednosti promenljive na sledeći način: • answer = 42; • answer = answer + 42; • Značenje poslednjeg izraza je da se stara vrednost promenljive sa desne strane operatora dodele menja, u ovom slučaju uvećava za određenu vrednost i tako dobijeni izraz se dodeljuje istoj promenljivoj • Poslednji zapis je sintaksno sasvim ispravan, ali postoji i kraći način uz primenu složenog operatora dodele • answer += 42;
Compound assignment operators • Složeni operatori dodele imaju isti prioritet i desnu asocijativnost kao i jednostavni operatori dodele • Kod podataka tipa string, može da se koristi samo složeni operator “+=“ za konkatenaciju stringova • Specijalni slučaj x+=1 se može pisati i kao x++
While statement - naredba • While naredba se koristi za ponovljeno izvršavanje naredbe ili bloka naredbi sve dok je zadovoljen određeni uslov • Sintaksa while naredbe je: • while ( booleanExpression ) • Statement • Pre prvog izvršavanja naredbe iza while proverava se da li je zadovoljen uslov • Ako jeste, izvršava se naredba iza while, posle čega se ponovo proverava uslov i tako sve dok je uslov zadovoljen
While statement - naredba • Kada uslov nije zadovoljen, ponavljanje naredbe iza while se prekida i izvršavanje se nastavlja od sledeće naredbe iza while konstrukcije • Sintaksa while je slična kao za if, sa razlikom ključne reči • To između ostalog znači da se u slučaju potrebe ponavljanja većeg broja naredbi sa while koristi blok, kao i kod if • Jedna od semantičkih grešaka kod while naredbe je da se uslov koji se ispituje odabere tako da je uvek ispunjen, pa nastaje mrtva petlja iz koje nema izlaska
While statement - naredba • Primer sa ispisom brojeva od 0 do 9 • int i = 0; • while (i < 10) • { • Console.WriteLine(i); • i++; • } • Ako bi i++ bilo izostavljeno u gornjem primeru, dobila bi se beskonačna petlja. Zašto? • Promenljiva i se naziva brojačka ili sentinel promenljiva
For statement naredba • Opšta struktura for naredbe izražena preko ekvivalentne while naredbe • initialization • while (Boolean expression) • { • statement • update control variable • } • Sintaksa for naredbe • for (initialization; Boolean expression; update control variable) • statement
For statement naredba • For i while su na neki način ekvivalentni uz sve sintaksne razlike, a to je pre svega da omogućavaju iteraciju naredbe ili bloka naredbi • Suštinska razlika for i while sa druge strane je u tome što se while prirodnije koristi kada se unapred ne zna broj iteracija, već se stalno ispituje neki uslov i ponavljanje ide dok je taj uslov zadovoljen • For se sa druge strane koristi kada se unapred zna tačan broj iteracija, pa se zato for bazira na brojačkoj promenljivoj koja se u svakoj iteraciji inkrementira ili dekrementira. • For je brojačka petlja a while iterativna
For statement naredba • Brojački primer sa for • for (int i = 0; i < 10; i++) • { • Console.WriteLine(i); • } • Bilo koji od tri dela for se može izostaviti • for (int i = 0; ;i++) • { • Console.WriteLine(“somebody stop me!”); • }
For statement naredba • A može i ovako... • int i = 0; • for (; i < 10; ) • { • Console.WriteLine(i); • i++; • } • Ne mora samo jedna promenljiva... • for (int i = 0, j = 10; i <= j; i++, j--) • { • ... • }
For statement naredba • Neobična ali sintaksno ispravna for naredba koja ne liči na brojačku petlju • for (string line = reader.ReadLine(); line != null; line = reader.ReadLine()) • { • source.Text += line + ‘\n’; • } • Iako je moguće koristiti for umesto while i obrnuto ili samo jednu od ove dve naredbe, to se ne preporučuje • Cilj je da sve strukture budu pre svega jasne
Oblast for naredbe • for (int i = 0; i < 10; i++) • { • ... • } • Console.WriteLine(i); // compile-time error • for (int i = 0; i < 10; i++) • { • ... • } • for (int i = 0; i < 20; i += 2) // okay • { • ... • }
Do statement - naredba • Telo do naredbe se uvek izvršava makar jednom, čak i kada uslov u startu nije zadovoljen za razliku od while i for • Razlog je naravno taj da se uslov ispituje na kraju a ne na početku • do • statement • while (booleanExpression); • Iako je ova konstrukcija ograničena sa dve ključne reči, neophodna je upotreba zagrada kada ima više od dve naredbe u telu petlje
Do statement - naredba • Primer – brojačka petlja sa do while • int i = 0; • do • { • Console.WriteLine(i); • i++; • } • while (i < 10);
Break i continue naredbe • Break naredba se koristila kod switch da spreči propadanje kroz stavke case • Kod petlji break se koristi za trenutni izlazak iz petlje nezavisno od trenutnog stanja uslova • Posle izlaska iz petlje sa break, izvršavanje se nastavlja od sledeće naredbe posle petlje • Continue se koristi za trenutni prelazak na sledeću iteraciju petlje uz prethodnu evaluaciju uslova • Ne preporučuje se upotreba continue i break, jer narušavaju regularnu strukturu petlje i otežavaju razumevanje programa
Primer sa break • int i = 0; • while (true) • { • Console.WriteLine(“continue “ + i); • i++; • if (i < 10) • continue; • else • break; • }