You are on page 1of 25

Uslovi i grananje

Motivacija
Vratimo se za trenutak na naš prvi program Bilo bi dobro, da kada bi umjesto što samo

kaže “Hello World”, program može da kaže “Good Morning World” ili “Good Evening World”, u zavisnosti od dijela dana U našem sledećem programu, učinićemo da program kaže “Good Morning World” ako još nije podne 12PM, a “Good Evening World” ako je podne već prošlo

Program
If (Clock.Hour < 12) Then TextWindow.WriteLine("Good Morning World") EndIf If (Clock.Hour >= 12) Then TextWindow.WriteLine("Good Evening World") EndIf

Rezultati
U zavisnosti od toga kada ste pokrenuli

program, vidjećete jedan od sledećih rezultata

Analiza
Analizirajmo prve tri linije koda Sigurno ste već shvatili da ove linije govore

računaru, da ako je Clock.Hour manje od 12, on odštampa “Good Morning World” Riječi If, Then i Endif su specijalne riječi koje računar razumije, kada je program pokrenut Riječ If je uvjek praćena uslovom, u ovom slučaju (Clock.Hour<12) Zapamtite da su zagrade neophodne da bi računar shvatio da se radi o ulosvu

Analiza
Uslov je praćen sa Then i operacijom koju

treba izvršiti Nakon operacije dolazi EndIf Ovo govori računaru da je uslovno izvršavanje završeno

Operacije
Između Then i EndIf, može stajati više od

jedne operacije, a računar će ih sve izvršiti ako je uslov ispravan (validan) Npr. možete napisati nešto ovako:
If (Clock.Hour < 12) Then TextWindow.Write("Good Morning. ") TextWindow.WriteLine("How was breakfast?") EndIf

Else
U programu započetom u ovom poglavlju,

možete primjetiti da je drugi uslov na neki način suvišan Clock.Hour je ili manje od 12 ili nije Stoga, nije postojala stvarna potreba da radimo drugu provjeru U ovakvim situacijama, dvije if..then..endif naredbe, možemo zamijeniti sa samo jednom, koristeći novu riječ else

Else u našem programu
Ako bi izmijenili naš program tako da koristi

else naredbu, izgledao bi ovako
If (Clock.Hour < 12) Then TextWindow.WriteLine("Good Morning World") Else TextWindow.WriteLine("Good Evening World") EndIf

Različiti načini
Ovaj program će uraditi istu stvar kao i

prethodni, što nas dovodi do važne činjenice koju moramo znati o programiranju:

programiranju, obično postoji više načina da uradimo istu stv nekad jedan način ima više smisla od drugog. Izbor je ostavlj ogrameru. Kako budete pisali sve više programa, i postajali s usniji, počećete da primjećujete različite tehnike, kao i njihov ednosti i mane

Uvlačenje teksta
U svim primjerima rađenim u ovom poglavlju,

možete primjetiti da su linije između If, Else i EndIf uvučene Ovo uvlačenje nije neophodno Program će sasvim dobro razumjeti program i bez njih Međutim, one nam pomažu da lakše vidimo i shvatimo strukturu programa Stoga, uvijek je preporučljivo napraviti uvlačenje naredbi unutar takvih blokova

Parni i neparni
Sada kad smo naučili If..Then..Else..EndIf

naredbu, napišimo program koji, za unijeti broj vraća informaciju da li je paran ili neparan
TextWindow.Write("Enter a number: ") num = TextWindow.ReadNumber() remainder = Math.Remainder(num, 2) If (remainder = 0) Then TextWindow.WriteLine("The number is Even") Else TextWindow.WriteLine("The number is Odd")

Rezultat izvršavanja programa
Kada pokrenete navedeni program, dobićete

rezultat u sledećem obliku:

Math.Remainder
U navedenom programu smo predstavili novu

korisnu operaciju, Math.Remainder Kao što vjerovatno predpostavljate, Math.Remainder će prvi broj podijeliti drugim, a zatim vratiti ostatak

Grananje
Kao što se sjećate, prilikom analize prvog

programa naučili smo da računar u jednom trenutku obrađuje jednu po jednu naredbu, i to po redosledu, odozgo ka dolje Ipak, postoji posebna naredba koja kaže računaru da zanemari redosled, i izvrši skok na određenu naredbu

Primjer
Primjer takve naredbe možemo da vidimo u

sledećem programu:
i=1 start: TextWindow.WriteLine(i) i=i+1 If (i < 25) Then Goto start EndIf

Rezultat

start:
U navedenom programu, promjenljivoj i smo

dodjelili vrijednost 1 Nakon toga smo dodali lnovu narebu koja se završava sa “:” Radi se o naredbi “start:” Ona se naziva labela – oznaka. Labele su poput označenih tačaka koje računar razumije Labelu možete nazvati kako god želite,a vašem programu možete dodati proizvoljan broj labela, sve dok je svaka od njih različito

i=i+1
Još jedna zanimljiva naredba ovdje je i=i+1 Ovo govori računaru da promjenljivu i sabere

sa brojem 1, i novu vrijednost smjesti natrag u promjenljivu i Dakle, ako je vrijednost promjenljive i prije ove naredbe bila 1, nakon izvršavanja naredbe će biti 2

Goto
I konačno,
If (i < 25) Then Goto start EndIf

Ovaj dio govori računaru da ako je vrijednost

promjenljive i manja od 25, skoči do labele start i odatle nastavi izvršavanje naredbe

Beskonačno izvršavanje
Koristeći Goto naredbu, možete reći

računaru da nešto ponovi koliko god puta želite Naprimjer, možete uzeti program koji provjerava da li je broj paran ili neparan, i izmijeniti ga na taj način da se izvršava zauvijek Program možete zasustaviti klikom na Close(X) dugme u gornjem desnom uglu konzole

Primjer
begin: TextWindow.Write("Enter a number: ") num = TextWindow.ReadNumber() remainder = Math.Remainder(num, 2) If (remainder = 0) Then TextWindow.WriteLine("The number is Even") Else TextWindow.WriteLine("The number is Odd") EndIf Goto begin

Rezultat

Zadaci
Učitati broj a. Ako je učitani broj a veći od

nule napisati "POZITIVAN“ Provjeriti da li je od dva učitana broja prvi djeljiv sa drugim. Učitati broj x. Ako je jednak nuli ispisati “ne postoji recipročna vrijednost” inače izračunati i ispisati njegovu recipročnu vrijednost (y = 1 / x). Ispisati znak upisanog broja prema izrazu:.

Zadaci
Od tri upisana broja (a, b, c) sa tastature naći

najveći. Provjeriti da li je upisani broj pozitivan, negativan ili nula. Napisati program za izračunavanje vrijednosti y prema izrazu