unit09 final teacher

33
Lekcija 09 - Katmandu, Nepal Strana 1 od 33

Upload: hadzic-emina

Post on 27-Sep-2015

224 views

Category:

Documents


0 download

DESCRIPTION

*

TRANSCRIPT

Katmandu, NepalMilo je uinio veliku stvar time to vas je upoznao sa If ... Then naredbama. Sada vai programi mogu da donose odluke! Skoro da se moe rei da mogu da misle! Pokazao vam je kako da koristite operatore poreenja, kako da radite sa Bulovom logikom i kako da kodirate If ... Then naredbe u jeziku Visual Basicu .NET. Milo vam je prikazao i nekoliko odlinih primera koji demonstriraju korienje If ... Then naredbi za donoenje odluke u sluajevima kada postoji vie izbora, a pokazao vam je i kako se koriste Bulovi operatori za kreiranje sloenih uslova.

Milo e nas sada odvesti do naeg sledeeg odredita, Katmandua u Nepalu. Tamo su pejzai fantastini iako je temperatura malkice via u ovo doba godine. Poto smo u pustinji, nee biti ba mnogo benzinskih pumpi uz put. Ako budemo imali dovoljno goriva, to e biti prijatno putovanje, u suprotnom, to e biti dugo peaenje! U svakom sluaju, pokazau vam nekoliko malih trikova koji e uiniti If ... Then naredbe mnogo korisnijim. Na kraju ovog putovanja biete u stanju da naterate vae programe da naprave gotovo svaku odluku koju vi elite!

Proirivi IfThenPoto znate kako se koriste If ... Then naredbe u Visual Basic.NET-u, moete uiniti dosta toga pomou samo jedne od njih. Ako biste koristili vie od jedne If ... Then naredbe, va program bi mogao da donosi mnogo odluka. Koristei niz If ... Then naredbi, va program moe ak odgovarati na pitanja koja imaju vie ponuenih odgovora Milo vam je takoe pokazao kako kako vie uslovnih naredbi moe deliti jedan uslov. Ako je vrednost tog uslova True, sve ostale uslovne naredbe, koje se nalaze ispod uslova, izvravae se jedna za drugom. Ovo uprouje va kod, i ini ga jednostavnijim za itanje i debagovanje.

Ako koristite jednostavne If ... Then naredbe, moete napisati kod koji e omoguiti vaem programu da donosi bilo kakve odluke, bez obzira na njihovu sloenost. Meutim, takav kod moe biti vrlo komplikovan i ak pomalo konfuzan da ne pominjem koliko ete imati ponavljanja. Zbog toga u vam objasniti nekoliko programerskih trikova koji e vam pojednostaviti ivot i omoguiti vam dodatne funkcionalnosti koje nemate na raspolaganju kada koristite jednostavne If ... Then naredbe. Najpre u vam pokazati kako da ugnezdite If ... Then iskaze jedan u drugi. Nakon toga, pokazau vam kako se kodiraju If ... Then ... Else iskazi. Na kraju, pokazau vam neke razlike u pisanju ovih iskaza u jezicima Visual Basic.NET, C# i J#. Spremni? Kreemo!

Ugnedene IfThen naredbeKako bi se zadrao na jednostavnom objanjenju, Milo je preutao jednu tajnu vezanu za If .. Then naredbe, a to je da u jednoj If ... Then naredbi moete imati drugu If ... Then naredbu kao uslovnu naredbu! Razmislite o tome! Druga If ... Then naredba bie izvrena jedino ako je uslov iz prve If ... Then naredbe ispunjen. Dakle, prva naredba sadri drugu. Ovo se zove ugnedavanje zato to se jedna If ... Then naredba ugnedava, ili se nalazi, unutar druge. Hajde da najpre pogledamo primer iz realnog ivota.

Ako imam 15000 dinara, tada ako je prodavnica otvorena, mogu da kupim MP3 plejer.

U pseudokodu to bi izgledalo ovako:

If I have $200 ThenIf the store is open ThenI will buy an MP3 playerEnd IfEnd If

Ovo je kao da imamo dve If ... Then naredbe u okviru jedne! Prva If .. Then naredba je obavijena oko druge. Prva sadri uslov (If imam 15000 dinara) i uslovnu naredbu (If prodavnica je otvorena Then Kupiu MP3 plejer), koja je sasvim sluajno druga If ... Then naredba. Druga If ... Then naredba ima svoj uslov (If prodavnica je otvorena) i svoju uslovnu naredbu (Kupiu MP3 plejer). Kao to moete videti, ja moram imati 15000 dinara i prodavnica mora biti otvorena, inae nita od MP3 plejera. Dakle, oba uslova moraju biti ispunjena. Ako ja nemam 15000 dinara ja neu moi da kupim MP3 plejer bez obzira da li je prodavnica otvorena ili ne!

Hajde da sada pogledamo jo malo koda. Startujmo novu aplikaciju i nazovimo je Nesting (Ugnedavanje). Dodajmo dva ek boksa i jedno dugme na formu Form1. Promenimo tekst koji je ispisan na dugmetu Button1 (osobina Text) u ta je oznaeno?. Dupli klik na dugme Button1 e vam omoguiti da dodate kod za njegov kilk dogaaj. Dodajte sledei kod: If CheckBox1.Checked = True ThenIf CheckBox2.Checked = True ThenMessageBox.Show("All are checked.")End IfEnd If Napravite izvrnu verziju (opcija build) i startujte vau aplikaciju. ekirajte (oznaite) prvi ekboks a zatim kliknite na ta je oznaeno? dugme. ta se deava? Pa, ne deava se nita. Sada oznaite i drugi ekboks i kliknite na dugme ta je oznaeno? ponovo. Ovoga puta e se pojaviti poruka: Oba su oznaena. Kao to moete da vidite, prva linija koda je uslov:

If CheckBox1.Checked = True Then

Ovaj uslov ima uslovnu naredbu koja je u stvari jo jedna If Then naredba koja je ugnedena u prvoj. Ugnedena If Then naredba ima svoj uslov: If CheckBox2.Checked = True Then

Ona takoe ima i svoju uslovnu naredbu:

MessageBox.Show("All are checked.")

Dakle, ta se deava? Ako je prvi uslov ispunjen (CheckBox1 je ekiran), tada se izvrava uslovna naredba. Desilo se da je uslovna naredba drugi If Then iskaz. Ako je i drugi uslov ispunjen (CheckBox2 je ekiran), tada se druga uslovna naredba, koja prikazuje poruku, izvrava. Oba uslova moraju biti ispunjena kako bi se poruka prikazala. Dakle, ako jedan od dva ekboksa nije ekiran, poruka se nee prikazati. U prethodno navedenom kodu, uoite da je druga If Then naredba sadrana u okviru prve. Blok End If prve If Then naredbe se nalazi iza End If bloka druge If Then naredbe. Druga naredba je ugnedena, ili sadrana, u okviru prve. Ugnedavanje se moe koristiti kako bi se kombinovane viestruke If Then naredbe ali u tom sluaju uslovna naredba e se izvriti samo u sluaju kada svi uslovi koji joj prethode ispunjeni.

Suprotstavljeni uslovi Do sada su nai uslovi bili pomalo jednostrani. Ako je uslov ispunjen, uslovna naredba se izvravala. Ukoliko uslov ne bi bio ispunjen ne bi se desilo nita. ta ako elimo da se neto desi kada uslov nije ispunjen? ta ako elimo da izvrimo jo neke linije koda?

Pa, jedna mogunost je da napiemo jo jednu If Then naredbu sa suprotnim uslovom i sa svojom uslovnom naredbom. Hajde da napiemo kod! Startujmo novu aplikaciju koja se zove AkoNijeIsunjenUslov (IfThenOtherwise). Dodajmo dugme i dva ekboksa na formu Form1. Promenimo osobinu Text dugmeta Button1 u IfThen. Upiite sledei kod za klik dogaaj dugmeta Button1:

If CheckBox1.Checked = True ThenForm.ActiveForm.BackColor = System.Drawing.Color.RedEnd If

If CheckBox1.Checked = False ThenForm.ActiveForm.BackColor = System.Drawing.Color.BlueEnd If

Napravite izvrnu verziju (opcija build) i startujte projekat. Kliknite na If Then dugme. Forma e postati plava. ekirajte CheckBox1 i pritisnite ponovo dugme If Then. Forma e postati crvena.

Kako ovaj kod radi? U prvoj If Then naredbi uslov proverava da li je iskaz CheckBox1.Checked = True taan. Ako je taan, tada se vrednost osobine BackColor forme From1 postavlja na Red (crveno). U drugoj If Then naredbi uslov proverava iskaz CheckBox1.Checked = False (suprotni uslov). Ako je ovaj uslov ispunjen, vrednost osobine BackColor bie postavljena na Blue (plavo). Ima ponavljanja, ali radi! Ovde je jedini problem u tome to ete morati da piete blok gotovo identinog koda za potpuno suprotni uslov. Ovo moe da potraje mnogo vremena i da bude izvor greaka.

IfThenElseVisual Basic.NET nudi alternativu koja eliminie linije koda koje se ponavljaju i ini va kod jasnijim i jednostavnijim za itanje. Ova alternativa se zove If Then Else naredba. If Then Else naredba zahteva samo jedan uslov, ali omoguuje pisanje odvojenih uslovnih naredbi za svaki od moguih ishoda uslova (True i False, odnosno ispunjen i neispunjen). If Then Else naredba se koristi kako bi se izbeglo pisanje dve sline If Then naredbe sa suprotstavljenim uslovima. Sintaksa ove naredbe izgleda ovako:

If condition Thenconditional statement 1Elseconditional statement 2End If

Kako ovaj kod funkcionie? Prvo se proverava navedeni uslov. Ako je uslov ispunjen izvrava se Uslovna naredba 1. U suprotnom (else) izvrava se Uslovna naredba 2.

Hajde da modifikujemo nau IfThenOtherwise aplikaciju uz korienje If Then Else naredbe i pokaimo da radi potpuno isto kao i dve nezavisne, ali suprotsavljene, If Then naredbe. Dodajmo i drugo dugme u Form1. Promenimo vrednost njegove osobine Text u IfThenElse. Dogaaju klik dugmeta Button2 pridruimo sledei kod:

If CheckBox1.Checked = True ThenForm.ActiveForm.BackColor = System.Drawing.Color.RedElseForm.ActiveForm.BackColor = System.Drawing.Color.BlueEnd If

Napravite izvrnu verziju i startujte va projekat. Kliknite na IfThenElse dugme. Forma e postati plava. ekirajte CheckBox1 i kliknite na IfThenElse dugme ponovo. Forma e postati crvena. Program radi istu stvar i kada koristi If Then Else naredbu i kada koristi dve If Then naredbe! Kod radi zato to se proverava da li je uslov CheckBox1.Checked = True ispunjen. Ako jeste, izvrava se prva uslovna naredba i forma postaje crvena. U suprotnom (else), izvrava se druga uslovna naredba (ona koja sledi iza kljune rei Else) i forma postaje plava.

Hajde da pogledamo jo jedan primer za If Then Else. Modifikovaemo nau IfThenOtherWise aplikaciju kako bi ukljuili vie linija koda u okviru uslovnih naredbi. If Then Else naredba moe imati vie linija koda za svoje uslovne naredbe nakon If Then i Else blokova. Otvorite vau IfThenOtherwise aplikaciju. Uklonite kod iz klik dogaaja vezanog za dugme Button2 i zamenite ga sledeim: If CheckBox1.Checked = True ThenForm.ActiveForm.BackColor = System.Drawing.Color.RedMessageBox.Show("I'm red.")TextBox1.Text = "I'm red."ElseForm.ActiveForm.BackColor = System.Drawing.Color.BlueMessageBox.Show("I'm blue.")TextBox1.Text = "I'm blue."End If

Napravite izvrnu verziju i startujte va projekat. Kliknite na IfThenElse dugme. Desie se tri stvari:. Sada ekirajte CheckBox1 i kliknite ponovo na dugme IfThenElse. Desie se tri nove stvari. Izvravanje If naredbi korak po korak Hajde sada da iskoristimo mogunost izvravanja koda If Then Else naredbe korak po korak koju nam daje debager Visual Studio NET a. Na ovaj nain videemo kako kod radi gledano iznutra iz perspektive koda.

Kreirajte novu Windows aplikaciju i nazovite je StepInIf. Dodajte jedno dugme na formu Form1. Postavite vrednost osobine Checked komponente CheckBox1 na True. Kada se aplikacija startuje ovaj ekboks e biti oznaen (ekiran). Dvostruki klik na dugme omoguie vam unos koda za njegov klik dogaaj. Dodajte sledei kod:

Dim MyValue As IntegerMyValue = 1If CheckBox1.Checked = True ThenMyValue = 2ElseMyValue = 3End If1. Postavite prekidnu taku na prvu liniju koda (MyValue = 1) dvostrukim klikom na sivu zonu levo od koda, ili desnim klikom i izborom opcije Insert Breakpoint.

2. Napravite izvrnu verziju i startujte va projekat. Kada se forma pojavi kliknite na dugme. Kod e se izvriti sve dok ne doe do linije u kojoj je prekidna taka.

3. Pritisnite F11 da biste izvrili tekuu liniju koda (MyValue = 1). Nakon toga bie obeleena sledea linija koda.

4. Pritisnite F11 kako bi izvrili oznaenu liniju koda (If CheckBox1.Checked = True Then). Poto je CheckBox1 ekiran sledea linija koda koja e biti obeleena je MyValue = 2.

5. Pritisnite dugme F11 na tastaturi da biste izvrili oznaenu liniju koda (MyValue = 2). Sledea linija koda koja e biti obeleena je ona u kojoj je End If.

6. Pritisnite F11 da biste izvrili trenutno obeleenu liniju koda (End If). Sledea linija koda bie obeleena.

7. Ponovo pritisnite F11 kako bi se izvrila oznaena linija koda (End Sub). Forma e se ponovo pojaviti.

8. Odekirajte CheckBox1 i kliknite na dugme. Ponovite proces izvrenja koda korak po korak pritiskajui dugme F11 i posmatrajui koje e linije biti oznaavane i izvravane. Ovoga puta izvrie se Else grana praena linjom MyValue = 3.

Na dobrom smo putu! Sada moete videti kako If Then Else naredbe zaista funkcioniu!

Hajde da proverimo ta smo do sada nauili.

09 Dokai 01 Golf RezultatiDa li smo se zabavljali jutros igrajui golf ili ne? U redu, vi ste se zabavljali a moj rezultat je ... ta?!! Hajde da izraunamo rezultate.

Napravite formu kao na sledeoj slici:

Kada se klikne na dugme Compute, izraunava se prosean golf rezultat. Poto je sadraj tekst boksa string, a ne broj, moraete najpre da ga konvertujete u broj. Visual Basic.NET vam prua mogunost da ovu konverziju uradite na nekoliko razliitih naina. Evo jednog.

X = Val(TextBox1.Text)

Funkcija Val rauna vrednost stringa. Nakon toga, tu vrednost moete dodeliti promenljivoj X.

Za svakog igraa:

Ako je njihov rezultat manji od prosenog, izbacite poruku Lep rezultat (, a vrednost osobine Text odgovarajueg natpisa (labele ) postavite na Nastavi da veba.

Na poetku programa, vrednosti osobine Text svih labela treba da budu prazni stringovi.

Kada va program bude ispravno proradio, pokaite ga svom nastavniku.

If naredbe u C# i J#

Pokazao sam vam sintaksu i primere za If ... Then i If ... Then ... Else naredbe u programskom jeziku Visual Basic.NET. Sada u prepustiti Draganu i Jovani da vam pokau kako se ove naredbe kodiraju u jezicima C# i J#. C# i J# imaju naredbe koje funkcioniu potpuno isto kao i If... Then i If ... Then ... Else naredbe u jeziku Visual Basic.NET. Takoe, koriste se na isti nain. Sintaksa je ipak, neznatno drugaija. One takoe imaju uslove i uslovne naredbe. Pokazau vam jedan primer u jeziku C# i na njemu objasniti razlike.

int MyAge;MyAge=3;if (MyAge==3){MessageBox.Show("I am 3.");MessageBox.Show("I am still 3.");}

Najpre moramo deklarisati celobrojnu promenljivu MyAge a nakon toga postaviti njenu inicijalnu vrednost. Nakon toga zapoinjemo nau naredbu pomou kljune rei if obratite panju na to da je napisana malim slovima. Nakon toga ide na uslov (MyAge == 3). Uslov je napisan u okviru zagrada. Hej, siguran sam da se pitate ta ova dva znaka jednako rade ovde. Pa, to je simbol koji jezik C# koristi za operator poreenja. Kao to znamo Visual Basic.NET koristi samo jedan znak jednakosti za ovu svrhu. Uslovne naredbe su ispisane u okviru vitiastih zagrada { i }. Zbog itljivosti koda neki programeri stavljaju svaku vitiastu zagradu u posebnu liniju. Uoimo da svaka od uslovnih naredbi ima znak ; na kraju. Uoite takoe da se kljuna re Then ne koristi!

A ta je sa J#? Pa, u ovom sluaju kod je potpuno isti kao i u jeziku C#! Hajde sada da pogledamo kako izgleda If ... Then ... Else naredba u C#. Pogledajmo slinosti i razlike izmeu ovih naredbi u jezicima C# i Visual Basic.NET.

int MyAge;MyAge=3;if (MyAge==2){MessageBox.Show("I am 2.");MessageBox.Show("I am still 2.");}else{MessageBox.Show("I am 3.");MessageBox.Show("I am still 3.");}

Ponovo pogledajte uslov koji se nalazi u zagradama. Uoimo da postoje dve grupe uslovnih naredbi, jedna grupa je iza uslova, a druga iza kljune rei else. Svaka od ovih grupa je zatvorena vitiastim zagradama. Re Then se ni ovde ne koristi.

U jeziku J# kod za If ... Then ... Else je potpuno isti kao i u jeziku C#!

Operatori u C# i J#

Postoji vie stvari koje treba znati u vezi razlika izmeu jezika Visual Basic.NET, C# i J# kada pravite If ... Then i If ... Then ... Else naredbe. Najpre Bulovi operatori koriste drugaije znake. Umesto And, Or i Not, C# i J# koriste &&, || i !. Pogledajte sledeu tabelu da biste videli razlike.

Logiki (Bulov) operatorVisual Basic.NETC#J#

ANDAnd&&&&

OROr||||

NOTNot!!

Evo primera za korienje logikih i (&&) i ne (!) operatora u jeziku C#.

bool isBilled=true;bool isLate=false;bool isDone;isDone = isBilled && !isLate;MessageBox.Show(isDone.ToString());

Uoimo da su rezervisane rei bool (oznaka za logiki tip podataka, skraeno od Boolean), true i false napisane malim slovima. Promenljive isBilled, isLate i isDone su deklarisane kao logike (bool) promenljive. Uoimo da je operator logiko i (AND) oznaen sa &&, a operator logiko ne (NOT) sa ! u jeziku C#. Poto jezici C# i J# ne vre direktnu konverziju u string, iskorien je metod ToString.

Evo istog tog koda napisanog u jeziku J#

boolean isBilled=true;boolean isLate=false;boolean isDone;isDone=isBilled && !isLate;MessageBox.Show(System.Convert.ToString(isDone)); Kao to vidite, kod je u velikoj meri identian C# kodu, uz nekoliko razlika. Uoimo da se logike promenljive (promenljive Boolean tipa) isBilled, isLate i isDone oznaavaju kljunom rei boolean. U J# kodu moramo eksplicitno konvertovati logiku vrednost u string koristei System.Convert.ToString metodu, pre nego to tu vrednost prikaemo u prozoru za poruke.

Jo neki operatori poreenja se razlikuju u C# i J# u odnosu na jezik Visual Basic.NET. Ve ste videli da se za poreenje da li je jednako koristi == umesto =. Takoe za predstavljanje nejednakosti C# i J# koriste != umesto . Sledi tabela koja uporeuje operatore za poreenje.

Operator poreenjaVisual Basic.NETC#J#

Da li je jednako=====

Da li je vee od>>>

Da li je manje od=

Da li je manje ili jednako