Programiranje je zakon!
sa mnom ili pozadi sa ovde i dobrodošao.
Ćao! Ja sam Ivana, a ovo je Miloš. Drago nam je da nam se možeš pridružiti u našoj avanturi nazvanoj „Programiranje je zakon!“. Toliko toga može da se vidi na ovom putu da sam sigurna da ćeš se odlično provesti. A bićeš nam i od velike pomoći prilikom rešavanja problema za vreme puta. Trenutno čekamo organizatore našeg okupljanja da nam donesu pejdžer i karticu pa krećemo na put. Možeš sesti napred sa Milošem i Jovanom i Draganom. Kako bilo, baci svoje stvari
Baci pogled na ovu našu fotografiju u kafiću pre nego što smo pokupili kombi. Šteta što se Jovana i Dragan ne vide najbolje. Baš tad je Miloš pokazivao na jednog ludog psa kog je hteo da povede sa nama. Možeš li da zamisliš to ludo stvorenje na slobodi sa nama? Svi smo u glas rekli „Nema šanse!“ Kako bi se kretao na ovom putovanju klikni na dugme sa strelicom na desno u dnu ekrana. Savet instruktoru
Savet instruktoru
Učenici moraju da poseduju osnovna znanja. Kako da porenu browser, kreiraju foldere, fajlove I osnovna znanja u vezi sa Windows operativnim sistemom.
Važno je reći učenicima još prvog dana da čas programiranja nije isto što I igranje video igara ili surfing internetom. Programiranje zahteva posvećivanje pažnje detaljima, logičko i sekvencionalno razmišljanje i za mnoge to znači naporan rad.
Lekcija 00 – Visual .NET Tura
Lekcija 08 Dokaži 02 je anketa o sklonosti ka programiranju koju će učenici napisati. Vi možete koristiti EXE fajl u solution folderu kako bi učenici odmah popunili anketu.
Strana 1 od 6
Upravljanje kombijem Nisam sigurna da li si ikada vozio kombi, ali treba da znaš da ovaj ima neke specijalne dodatke ugrađene. Neki deluju malo čudno, međutim nije potrebno mnogo da se navikneš. Na dnu ekrana ćeš videti komandnu tablu. Ona ima gomilu dugmića i pokazivača koji ti koriste da upravljaš ka svome odredištu gde je „Programiranje zakon“. U vrhu ekrana možeš videti ko je trenutno za volanom. S’vremena na vreme neke dodatne informacije se mogu pojaviti zakačene za suncobrane. Savet instruktoru Klikni na dugme sa strelicom na desno da se krećeš napred na svom proputovanju
Navigacija se obavlja ikonama u dnu strane, a ne putem dugmića Internet Explorera.
Klikni na dugme sa strelicom na desno da se krećeš napred na svom proputovanju Kilometar sat ti kaže na kojoj se stranici trenutno nalaziš. Probaj da klikneš na strelicu na desno i strelicu na levo kako bi primetio promene na ovom meraču. Indikator potrošnje goriva ti ukazuje na napredak ka sledećem odredištu. Koristi ga da izmeriš koliko si prešao do sada i koliko ti je još potrebno dok ne stigneš na sledeće odredište. Na skroz levom delu komandne table je dugme sa stranicom. Koristi ga da odštampaš ono što vidiš. Pored dugmeta sa stranicom je i dugme sa čiodom. Klikni na ovo dugme kako bi označio ovu stranu i smestio je među svoje omiljene. Takođe ćeš videti i dugme sa rečnikom. Klikni na njega kako bi dobio listu termina korišćenih na putovanju „Programiranje je zakon!“ poređanih po abecednom redu.
Lekcija 00 – Visual .NET Tura
Strana 2 od 6
Na sredini komandne table je indikator CD plejera. Kada pređeš mišem preko bilo kog dugmeta na tabli na CD plejeru možeš pročitati čemu to dugme služi. Isprobaj dugmiće na komandnoj tabli kako bi naučio da upravljaš kombijem na putu. Mapa puta i odredišta Miloše, da li je neko od tvojih prijatelja išao na okupljanje programera prošle godine? Da, moj prijatelj Igor Branković je išao. Super se proveo i mnogo toga naučio. Rekao je da je uz put video mnogo interesantnih stvari. Kao na primer, stalno su naletali na jednog kul hipika. Jednom, kada su se zaglavili, ovaj momak se pojavio niodkuda i pomogao im je da se vrate na put. Zar ne bi bilo ludo da ga i mi takođe sretnemo? Da li si video mapu puta? Pokazuje nam gde idemo. Pogledaj je kad god želiš. Toliko toga ima da se vidi nauči uz put!
i
Videćemo gomilu divnih destinacija. Pre nego što krenemo svako od nas će dobiti spisak tačaka od interesa koje treba da traži. Kada stignemo do svakog od odredišta, organizatori okupljanja će testirati naše znanje i daće nam par zadataka da uradimo. Tu ćemo pokazati šta smo uz put naučili! Evo, ti vodi računa o ovoj kartici. Kad obavimo zadatke oraganizatori će je proveriti. Ova kartica mi takođe pomaže da vodim evidenciju o tome gde smo bili i šta je sledeće u planu.
Savet instruktoru Na stranici Mape Puta, samo su imena lokacija linkovana za navigaciju, ne i brojevi.
Zapamti da možeš pogledati u Mapu puta kad god želiš. Ne želimo da greškom odemo na pogrešno odredište. Možeš kliknuti na dugme sa kompasom u gornjem levom uglu bilo kada kako bi video Mapu puta i idredišta. Klikni na odredišni grad na mapi kako bi započeo putovanje sa te tačke. Klikni sada na dugme sa kompasom da bi video Mapu. Lekcija 00 – Visual .NET Tura
Strana 3 od 6
Ivanine naprave Da li sam vam rekla da sam luda za različitim napravama? Neki moji prijatelji me zovu Napravica. Pretpostavljam da je to bolje od Štreber. Obožavam moj novi PDA! Miloš i ja smo ubacili razne igrice i kvizove kako bi se igrali uz put. Neće ti sigurno biti dosadno sa nama! Dobila sam novi laptop za rođendan. Poneću ga sa sobom kako bih ti pokazala neke prezentacije i projekte koje smo Miloš i ja radili u školi. Vidi, ovo je moja lista stvari koje treba da ponesem na put.
Savet instruktoru Ivanina lista za pakovanje: --Novi laptop --PDA --Garderoba --Sjaj za usne
Lekcija 00 – Visual .NET Tura
Postoji 24 Dokaza (manji projekti) i 11 Izazova (veći projekti). U zavisnosti od grupe učenika, zahtevaće te da se svi urade, ili ćete izbaciti jedan Dokaz ili jedan Izazov po lekciji.
Strana 4 od 6
Hej, vidi! Stigla nam je poruka !
Ludilo! Pogledajmo u rečnik da vidimo ima li reči „programer“ u njemu! Divno! Ovo će biti jako zgodno.
Lekcija 00 – Visual .NET Tura
Strana 5 od 6
Krećemo! Mislim da smo konačno spremni da krenemo na put. Bacimo pogled na Mapu ponovo i hajdemo. Klikni na strelicu na desno na komandnoj tabli kako bi smo krenuli napred. Sigurna sam da si i ti spreman za polazak. Prva stanica – Kopenhagen, Danska. Programiranje je zakon!
Lekcija 00 – Visual .NET Tura
Strana 6 od 6
Lekcija 01 – Kopenhagen, Danska
Page 1 of 14
Programi u svakodnevnom životu Pustiću Miloša da vozi prvi kako bi smo se bolje upoznali. Jesam li ti rekla da je moj očuh programer? Izuzev što ne piše programe za PC-je. On piše programe koji kontrolišu robote u fabrici pisaćih mašina. Jednom je imao grešku u programu pa su roboti napravili gomilu mašina bez tastera Q,W,E,R,T i Y ! Zadivljujuće je koliko stvari iz našeg okruženja imaju programe u sebi, a još je impozantnija činjenica koliko je stvari projektovano i testirano uz upotrebu računara. Ne koriste više programe samo kalkulatori, roboti i kompjuteri. Mnogo aparata za domaćinstvo, raznih stvari za zabavu pa čak i automobila je programabilno danas.
Lekcija 01 – Kopenhagen, Danska
Page 2 of 14
Uzmimo ovaj kombi na primer. U njemu je milion stvari koje su verovatno dizajnirane na računaru . Aerodinamični oblik je najverovatnije projektovan u simuliranom vazdušnom tunelu na kompjuteru. Sedišta i kuhinjica su dizajnirane na računaru pa onda smeštene u 3D model kombija. Možda su i neki delovi napravljeni uz pomoć robota kontrolisanih kompjuterom, baš kao u fabrici moga očuha. Tu je još mnogo stvari, kao Globalni Pozicionirajući Sistem, mikrotalasna pećnica i stereo sistem u kombiju. Sve ove stvari je moguće programirati i upravljati njima sa određenog rastojanja. To znači da u sebi imaju programe koji kontrolišu šta će se desiti kad pritisneš dugme. Ovi programi su usnimljeni direktno u čipove na ploči sa elektronikom, međutim neko je morao da ih napiše na prvom mestu. Pored toga, pomisli samo na elektronsku muziku koju Dragan piše. Dobra ili loša kompletno je urađena na kompjuteru. On je čak napisao program da pamti sve verzije svojih „otrcanih“ reči za pesme, kako ne bi izgubio neku od svojih velikih ideja. Kul stvar sa programima je da se koriste da reše svakakve probleme i svakakve stvari. U današnje vreme skoro svako kod kuće i na poslu koristi kompjutere da piše pisma, pravi tabele i male baze podataka, pa čak i da vodi kućni budžet. Skoro sve firme koriste programe da prate finansije, čuvaju podatke o klijentima i o svemu što proizvode ili kupuju. Mnogo programa se koristi za skladištenje i čitanje podataka, njihovo filtriranje i različite načine prezentacije. Takođe, mnogo programa se piše za istraživanja u domenu veštačke inteligencije, globalnog zagrevanja i genetike. Tu su i programi koji su specijalizovani za projektovanje delova, tehničko crtanje, grafički dizajn, igranje igara. Izaberi bilo koju oblast i naći ćeš adekvatan program. Zaboravih da pomenem internet, programe na internetu i programe za virtualnu realnost! Najbolje od svega, neki ljudi pišu programe zabave radi! Moj profesor iz srednje škole je napravio program koji generiše domaće zadatke iz matematike za nas. Njena sestra je napravila program koji piše haiku poeziju i prevodi je na Islandski. Čitala sam članak o momku koji je napravio robota od Lego kockica i programirao ga da rešava Rubikovu kocku. Nema pojma zašto je to uradio. Možda samo zato jer je mogao!
Lekcija 01 – Kopenhagen, Danska
Page 3 of 14
Ja želim da programiram 3D grafiku, interaktivne video igre, ili možda da pišem programe koji analiziraju statistiku smrtnosti za osiguravajući zavod.
Savet instruktoru Lego i Rubikova kocka: http://jpbrown.i8.com/cubesolver.html
Mislim da imam igru „Dokaza“ sa pitanjima o programiranju na mom PDA-u.
01 Dokaži 01 Upotreba kompjutera u svakodnevnom životu Nabroji minimum četiri načina kako su kompjuteri sastavni deo našeg života. Ne koristiti primere iz ovog kursa. Smisli neke nove.
Lekcija 01 – Kopenhagen, Danska
Page 4 of 14
Šta programeri rade Znaš, mnogo ljudi misli da su programeri učenjaci koji sede za svojim računarima, ukucavajući programe na tastaturi jedući hladnu picu i pijući kofeinska pića cele noći. Iako je to moj posao iz snova, ima tu mnogo čega još. Dobri programi ne stvaraju se preko noći. Potrebno je mnogo pažljivog planiranja i kreiranja da bi se dobio program koji radi ono što treba da radi. A dobro je ako je još lak za izmene, bez grešaka i prijateljski naklonjen korisniku. Za velike programerske poduhvate angažuju se timovi stotina programera i svi oni treba da budu obučeni, organizovani i da imaju svog menadžera. Iako je pisanje programa primarni posao programera, on ili ona moraju da rade još mnogo drugih stvari: Odluče šta će program da radi. Dizajniraju korisnički interfejs. Odluče koji će programski jezik da koriste. Projektuju arhitekturu programa i utvrde kako će delovi programa raditi zajedno. Postave stilove kodiranja i dizajna. Odluče ko će pisati kôd za delove programa. Urede raspored razvoja i vode računa o tome koliko vremena je potrebno da se napiše kôd . Obuče programere da koriste razvojne alate. Postave i upravljaju kompjuterima i mrežom koju programeri koriste. Napišu kôd !!! Dokumentuju kôd. Projektuju bazu podataka za smeštanje informacija koje program treba ili kreira. Postave standarde grafičkog dizajna. Urede unos informacija u bazu podataka. Testiraju kôd, kako bi bili sigurni da radi. Zapakuju program, kako bi mogao da bude instaliran na kompjutere korisnika ili na server. Odluče o novim funkcijama. Isprave greške (bugove) koje su korisnici pronašli. Obuče korisnike da koriste program.
Lekcija 01 – Kopenhagen, Danska
Page 5 of 14
Napišu dokumentaciju i materijale za učenje za program.
Kao što vidiš, „Pisanje kôda“ je samo jedna od stvari koje programer radi. Moj PDA ima još jedan „Dokaz“ o poslu programera.
Savet instruktoru Stavke u listi predstavljaju i izbor različitih karijera. Neki su dobri u pisanju koda. Neki u odlučivanju koji kod treba napisati. Neki su odlični u dokazivanju da napisani kod perfektno radi, a neki su dobri menadžeri projekata.
01 Dokaži 02 IT Poslovi Koristeći internet i druge resurse, utvrdi početnu platu za stručnjake iz oblasti Informacionih Tehnologija (IT) u tvome okruženju. Uporedi plate za različite kategorije kao što su : Programer, Szstem Analitičar, Web Programer itd.
Lekcija 01 – Kopenhagen, Danska
Page 6 of 14
Šta je program Kompjuterski program je načinjen od linija kôda koje su napisane u programskom jeziku koji sadrži engleske izraze. Možeš izabrati da pišeš program u jednom od mnogobrojnih jezika na osnovu njegovih mogućnosti i samih potreba programa. Nakon što napišeš program on biva preveden u jezik koji računar može da razume i izvrši. Možeš pisati mnogo različitih tipova programa koristeći isti programski jezik. Na primer, možeš napisati program koji igra igru iks-oks, drugi koji pušta slike jednu za drugom i treći koji prikazuje orbitu rakete oko planete – sve sa istim programskim jezikom. Kôd koji pišeš čini ove programe različitim i daje im njihove funkcionalnosti. Kôd koji pišeš određuje šta će program raditi. On odlučuje šta će se desiti kad klikneš na dugme na ekranu ili izabereš element iz liste. Tvoj kôd daje „inteligenciju“ programu – on odlučuje kako program odlučuje, koliko puta će ponoviti neku akciju i koje proračune će obaviti. Možeš pisati programe koji će raditi matematiku, pisati tekst, odgovarati na akcije korisnika, prikupljati podatke ili prikazivati informacije . Pisanje kôda može biti izazovno, ali takođe zabavno. Kada naučiš programski jezik, naučiš novi način da izraziš svoju kreativnost, istražuješ, rešavaš probleme i igraš se. To je nalik matematici ili radu sa glinom ili metalom.
Lekcija 01 – Kopenhagen, Danska
Page 7 of 14
Opcije programskih jezika Moj deda je govorio četiri jezika: Japanski, Švedski, Svahili i Engleski, a i peti kad se razbesni! Programski jezici su mnogo nalik običnim. Možda ne zvuče ili izgledaju isto, ali se koriste za istu stvar – davanje instrukcija kompjuteru o tome kako da reši problem. Da li si znao da se novi programski jezici stalno stvaraju? U proteklih pedeset godina mnogo različitih programskih jezika je razvijeno. Kao i obični jezici, neki programski jezici zastarevaju i više se ne koriste. Drugi su pak evoluirali u svojoj formi i u upotrebi su već dvadeset ili trideset godina. Novi programski jezik je biva kreiran tako što se uzmu najbolje osobine jednog ili više postojećih jezika i kombinuju se. Današnji programski jezici oslikavaju napredak u pogledu razvoja računarske opreme i samih programa. Mnogo godina ranije programski jezici su omogućavali pisanje programa isključivo korišćenjem nula i jedinica. Kako je to bilo zamorno! Na svu sreću pojavili su se programi nazvani Kompajleri (engl. Compiler, prim. prev.) ili programski prevodioci koji su kôd pisan u jeziku nalik Engleskom prevodili u nule i jedinice koje je računar razumeo. Skoro svi moderni programski jezici su kompajlirani. To znači da su oni sami pisani u programskom jeziku nalik Engleskom pa onda prevedeni, ili izmenjeni u mašinski kôd. Tokom godina različiti programski jezici su kreirani za rešavanje različitih problema. FORTRAN, na primer, je razvijen za rešavanje numeričkih problema i obavljanje proračuna. FORTRAN je skraćenica od engl. FORmula TRANslating language što znači „jezik za prevođenje formula“ . COBOL je akronim nastao od engleskih reči Common Business-Oriented Language što znači „Običan Biznis Orijentisani jezik“ i razvijen je primarno za poslovne aplikacije gde je bilo potrebno obraditi velike količine ne-numeričkih podataka. LISP, engleski ListProcessing language što je u stvari jezik za procesiranje lista je razvijen za potrebe istraživanja u domenu veštačke inteligencije . Novi jezici su evoluirali od tada sa mnogo različitih primarnih prednosti u odnosu na svoje prethodnike. Evo nekoliko primera:
Lekcija 01 – Kopenhagen, Danska
Page 8 of 14
C: brz, efikasan kôd JAVA: platformska nezavisnost BASIC: lakoća upotrebe Visual Basic: dizajn korisničkog interfejsa upotrebom formi Perl: manipulacija tekstom
Kada započinješ novi programerski projekat treba dobro da razmisliš koji programski jezik ćeš da koristiš. Da li taj jezik poseduje funkcionalnost koja ti je potrebna ? Da li je lako u njemu programirati? Da li poznaješ taj jezik ? Da li je taj jezik instaliran na tvoj računar? Moj omiljeni jezik je Visual Basic.NET . Moćan je i jednostavan za korišćenje. Znam da Miloš takođe voli Visual Basic.NET. Jovana voli J# (čita se Džej Šarp) koji ima korene u programskom jeziku Java. Dragan uči C# (čita se Si Šarp) sa poreklom koje vuče iz programskih jezika C i C++. Na ovom putovanju naučićeš Visual Basic.NET, ali će Jovana i Dragan da te nauče neke stvari o J#-u i C#-u. Ne škodi da znaš više od jednog programskog jezika!
Lekcija 01 – Kopenhagen, Danska
Page 9 of 14
Sintaksa programskog jezika Ako putuješ svetom možda ćeš morati da pronađeš nekoga ko govori engleski. Na svakom jeziku možeš da kažeš „Govorite li engleski“? Na primer:
Engleski : Do you speak English? Nemački: Sprechen Sie Englisch? Španski : ¿Habla ingles? Portugalski: Você fala inglês? Šatrovački engleski: OO-day ou-yay eak-Spay Eng-hay ish-lay?
U gornjim primerima, ne samo da su reči različite nego je i njihov raspored različit. Imenice, glagoli i objekti nisu isto raspoređeni. Reči i njihov raspored čine sintaksu jezika. Sintaksa definiše pravila kako da se načini validna rečenica na nekom jeziku. Baš kao i obični jezici, svaki programski jezik ima svoju sintaksu. Sintaksa je rečnik, gramatika, izbor reči i struktura koja čini programski jezik. Sintaksa definiše pravila za pisanje ispravnih linija kôda i njihovo uklapanje u ispravan program. Na primer, svi moderni programski jezici mogu da izvrše „If..Then..Else“ komandu. „If..Then..Else“ komanda je način na koji program može napraviti izbor na osnovu ponuđenih informacija. Evo, dopusti mi da ti pokažem neke primere kôda na mom laptopu koji demonstriraju upotrebu „If..Then..Else“ komande u Visual Basic.NET-u, C#-u i J#-u. Ne moraš da brineš o njihovom značenju u ovom momentu ili da razumeš kôd , već samo da uočiš sličnosti i razlike koje obrazuju njihovu sintaksu.
Lekcija 01 – Kopenhagen, Danska
Page 10 of 14
Lekcija 01 – Kopenhagen, Danska
Page 11 of 14
Učenje programskog jezika sa sastoji u učenju sintakse, strukture i pravila samog jezika. Moraš naučiti interpunkciju jezika kao i to koje su reči „rezervisane“ . One su „rezervisane“ jer se koriste samo kao komande jezika. Rezervisane reči su takođe poznate kao ključne reči i imaju specijalno značenje i specijalnu funkcionalnost vezanu za njih – One govore programu šta treba da radi. Na primer, reči „If“ i „Else“ su rezervisane reči u većini programskih jezika. Koriste se za kreiranje komandi za odlučivanje. Kada učiš programski jezik moraš naučiti sintaksu, funkcionalnost i mogučnosti tog jezika. Zapamti, ne mogu svi programski jezici da urade sve. Međutim, moderni programski jezici imaju zajedničke opcije i funkcionalnosti koje uvek možeš da očekuješ.
Lekcija 01 – Kopenhagen, Danska
Page 12 of 14
Sintaksa Visual basic.NET-a Visual Basic.NET je moćan i jednostavan za učenje. Kako učiš programiranje u Visual Basic.NET – u, učićeš o rezervisanim rečima, strukturi i osnovnim objektima koji čine jezik. Prvo moraš da razumeš neke osnovne sintaksne elemente jezika. Napravila sam kratku listu ključnih sintaksnih elemenata Visual Basic.NET–a: Linije koda nemaju indikator kraja linije kao što je tačka zarez (;) Linije komentara počinju sa apostrofom (’) Vitičasta zagrada { i } se ne koristi za ograničavanje blokova kôda Visual Basic.NET ne razlikuje velika i mala slova. MojPrimer je isto što i mojPrimer i MOJPRIMER. U Visual Basic.NET –u je sve ovo isto. Hej Dragane, koje su ključne sintaksne razlike sa C#-om? Pa, u C# -u svaka linija kôda se završava sa tačkom-zarez. Takođe su blokovi koda ograničeni vitičastim zagradama, znaš { i }. Komentari počinju sa // i C# je osetljiv na različite upotrebe velikih i malih slova . MojPrimer je različit od mojPrimer i MOJPRIMER.
Hej, ne zaboravi J#. J# i C# imaju istu osnovnu sintaksu. Na primer, J# koristi tačku zarez da označi kraj linije kôda i blokovi koda su takođe smešteni unutar vitičastih zagrada. Linije sa komentarima u J#-u počinju sa // i J# je takođe osetljiv na velika i mala slova. Savet instruktoru Visual Basic je dobar prvi jezik za naučiti jer puno toga prašta. Nije bitno da li su slova mala ili velika. Linije kôda nije potrebno specijalno obeležavati.Struktura je intuitivna.
Lekcija 01 – Kopenhagen, Danska
Page 13 of 14
Dolazak u Kopenhagen Dobrodošli u Kopenhagen, Danska. Treba da daš odgovore na par Kviz pitanja kako bi se pripremio za pitanja organizacionog odbora. U kursu koji se drži uz pomoć štampanog materijala, kviz nije interaktivan. U verziji kursa koja je na internetu, kompjuter proverava odgovore. Evo ga i srećno !
Lekcija 01 – Kopenhagen, Danska
Page 14 of 14
Lekcija 2 – Milano, Italija
Page 1 of 24
Visual Basic.NET i IDE Ćao, kako ide za sada? Da li si bio u stanju da odgovoriš na pitanja organizacionog komiteta? Kako budemo napredovali pitanja će biti sve teža, ali ćeš i ti više znati. Siguran sam da neće biti problema. Ivana će da vozi kako bih ja mogao da ti pričam o našem sledećem uzbudljivom odredištu, Milanu u Italiji. Uz put ću te naučiti sve što treba da znaš kako bi položio IDE vozački ispit. IDE je engleska skraćenica za Integrated Development Environment ili Integrisano Razvojno Okruženje koje ti pruža Microsoft Visual Studio.NET. Koristićeš ga da napišeš svoj prvi Visual Basic.NET program. Možeš ga koristiti za pisanje programa i u drugim programskim jezicima. Nakon što naučiš nešto o IDE-u i položiš vozački ispit, bićeš spreman da malo voziš i da nam pomogneš oko izazova na Okupljanju. Pa ne želiš valjda da neko drugi stalno vozi? To nije uopšte interesantno.
Lekcija 2 – Milano, Italija
Page 2 of 24
Visual Basic.NET Da li si znao da je moguće pisati kôd korišćenjem bilo kog tekst procesora, kao što je recimo Notepad ili Microsoft Word? To je ako želiš da radiš stvari na teži način! Nasuprot tome, mnogi programeri kao što smo Ivana i ja koriste programske alate koji im pomažu da razviju aplikacije daleko jednostavnije. Zato ćeš ti koristiti Microsoft Visual Studio.NET. Microsoft Visual Studio.NET je razvojni alat koji ti pomaže da pišeš programe u nekoliko različitih .NET programskih jezika. Na primer, kada dodaš dugme na formu, Visual Studio.NET automatski doda neki kôd za ovo dugme. Naravno Visual Studio.NET ne može da napiše sav tvoj kôd. Na posletku, on ne zna šta tvoj program treba da radi. Međutim, smanjuje količinu kôda koju ti treba da uneseš u dobroj meri, a smanjuje i vreme potrebno za to. Visual Studio.NET smešta tvoj kôd u zasebne fajlove i tako organizuje podatke. Tako možeš podeliti tvoj kôd u funkcionalne jedinice. Na primer, zasebni fajlovi će se koristiti za svaku od tvojih formi. Visual Studio.NET prevođenje programa čini jednostavnim, a i njegovo pokretanje. Za ovo je potrebno par klikova mišem. Možeš koristiti njegove dopunske programe za otklanjanje grešaka u tvom programu i za prikazivanje informacija o njemu dok se izvršava. Najbolje od svega, Visual Studio.NET dopušta da razvijaš programe u nekoliko različitih jezika, poznatih kao .NET jezici. Imaćeš priliku da koristiš isto, poznato Visual Studio.NET razvojno okruženje svaki od njih. .NET jezici uključeni u Visual Studio.NET su:
Visual Basic.NET C# (čita se C Šarp) J# (čita se J Šarp) C++ (čita se C plus plus) ASP.NET (kreiranje web stranica)
Lekcija 2 – Milano, Italija
Page 3 of 24
Za vreme našeg puta ka sledećoj destinaciji, pokazaću ti kako da koristiš Visual Studio.NET da napišeš svoj prvi program. Koristićeš Visual Basic.NET kao svoj primarni programski jezik na ovom putovanju, ali ćemo ti pokazati i primere C# i J# kôda uz put. Zato se spremi. Uskoro ćeš napisati svoj prvi program. Pokretanje Visual Studija Da bi 1. 2. 3. 4.
pokrenuo Visual Studio: Klikni na dugme START Izaberi Programs Izaberi Microsoft Visual Studio.NET 2003 Folder Izaberi Microsoft Visual Studio.NET 2003 aplikaciju
Na mom Desktopu je takođe ikona koju mogu da koristim da pokrenem Visual Studio. To je brži način, samo klikni dva puta brzo na nju!
Zapamti da lokacija Visual Studija varira od računara do računara. Ako koristiš školski ili tuđi kompjuter Visual Studio može biti na drugom mestu. Upitaj instruktora ili sistem administratora da ti pomognu ako ne umeš da startuješ Visual Studio.
Lekcija 2 – Milano, Italija
Savet instruktoru Postarajte se da svim učenicima bude jasno kako se u Vašoj školi locira i pokreće Visual Studio. Učenici bez prethodnog iskustva mogu imati problema da nađu tačnu lokaciju.
Page 4 of 24
Korišćenje Visual Studio.NET –a Sada ću te provesti kroz korake potrebne da kreiraš svoj prvi Visual Basic.NET program korišćenjem Visual Studio.NET –a. Trebalo bi da je Visual Studio.NET već startovan. Prati korake onako kako ti ih objašnjavam. Nemoj samo da čitaš, već i probaj da uradiš!
Početna strana IDE-a Prvi ekran koji treba da vidiš kada pokreneš Visual Studio.NET je njegova Startna strana. Jezičak Projects je već selektovan. U opštem slučaju video bi listu postojećih projekata. Pošto je ovo verovatno prvi put da koristiš Visual Studio.NET, neće biti ničega u listi.
Jezičak My Profile je mesto gde možeš obaviti sva prilagođavanja Visual Studio.NET kako bi odgovarao tvojim potrebama. 1. Klikni na My Profile jezičak
Lekcija 2 – Milano, Italija
Page 5 of 24
Moj profil My Profile je mesto gde određuješ kakav si tip programera i prilagođavaš podešavanja Visual Studio.NET-a My Profile
1. Izaberi Visual Studio Developer iz Profile padajuće liste 2. Proveri da li su osnovna podešavanja Keyboard scheme : [Default Settings] Window Layout: Visual Studio Default Help Filter : (no filter) 3. Izaberi Internal Help za Show Help podešavanja 4. Izaberi Show Start Page za At Startup podešavanja 5. Izaberi jezičak Projects na vrhu Start strane kako bi produžio dalje
Lekcija 2 – Milano, Italija
Page 6 of 24
Kreiranje novog projekta Sada kada si završio sa podešavanjem Visual Studio.NET razvojnog okruženja, obradićemo Projects jezičak. Preko ovog jezička možeš ili da pokreneš novi projekat ili otvoriš postojeći. Koristi Open Project dugme na dnu Projects ekrana da otvoriš postojeći projekat. Nakon što kreiraš svoj prvi projekat, pojaviće se u listi postojećih projekata. Da bi otvorio postojeći projekat, izaberi ga iz liste i klikni na Open Project dugme. Dopusti da ti pokažem kako da kreiraš novi projekat za Zdravo Svete program . Nakon toga ćemo napisati program. Zdravo Svete je klasični prvi program koji velika većina programera piše. Cilj je napraviti dijalog sa porukom koja kaže „Zdravo Svete“.
1. Klikni na dugme New Project kako bi kreirao novi projekat. New Project prozor se otvara.
Lekcija 2 – Milano, Italija
Page 7 of 24
Prozor Novog Projekta Na jezičku New Projects primetićeš gornju levu površinu označenu sa Project Types koja sadrži mnogo različitih tipova projekata koji su na raspolaganju u Visual Studio.NET –u. Uskoro ćemo ti reći nešto o nekima od njih. Zdravo Svete program će biti Windows aplikacija (Programiranje je zakon će takođe biti Windows aplikacija, pa nemojmo brinuti o drugim šablonima na raspolaganju). Na ovom jezičku nećeš birati samo tip projekta (Project Type) i njegov šablon (Template) več i ime projekta i lokaciju snimljenih projekataNew Project Window. 1. Izaberi Visual Basic Projects kao Project Type 2. Izaberi Windows Application kao Template 3. Unesi ZdravoSvete kao ime projekta (bez razmaka u imenu fajla) 4. Izaberi mesto gde želiš da snimiš projekat 5. Klikni na OK dugme. Novi projekat će se otvoriti, prikazujući pritom formu Form1.vb na levoj strani ekrana i Solution Explorer na desnoj strani ekrana. Opako, zar ne ? Savet instruktoru Svaka škola ima sopstvena pravila u vezi smeštanja studentskih projekata. Budite veoma precizni kada opisujete pravila vaše škole. Svaki projekat treba da bude u svom folderu.
Lekcija 2 – Milano, Italija
Page 8 of 24
Prozor za dizajniranje formi Najveći deo vremena pravićeš Windows aplikacije koje počinju sa nekom formom. Forme su delovi ekrana koje korisnik vidi. Stavljaćeš objekte na formu kao što su dugmeta i tekst boksovi. Kada se klikne na dugme, kôd će biti izvršen kako bi se obavio proces zahtevan za to dugme. Prazna forma može biti viđena u glavnom prozoru na levoj strani ekrana . On se naziva prozorom za dizajniranje formi (označen sa Form1.vb [Design]). Solution Explorer se može videti na desnoj strani. Forma nema nikakve dugmiće ili tekst boksove u ovom momentu. Biće puno vremena da pustiš mašti na volju sa formama kasnije. Za sada, dopusti da ti pokažem par jednostavnih stvari.
Lekcija 2 – Milano, Italija
Page 9 of 24
Možeš zatvoriti bilo koji prozor u Visual Studiju .NET tako što klikneš na "X" lociran u gornjem desnom uglu prozora. Možeš otvoriti većinu Visual Studio.NET prozora iz View menija tako što selektuješ odgovarajući prozor u njemu. Možeš automatski sakriti bilo koji prozor tako što klikneš na čiodu lociranu u gornjem desnom uglu prozora. Kada uključiš ovu opciju prozor nestaje sa ekrana. Linija će se pojaviti u desnom delu ekrana na kojoj će biti pobrojani svi sakriveni prozori. Ako kursorom pređeš preko imena prozora on će se pojaviti na ekranu. Ovo je divan način za čuvanje prostora na ekranu ako imaš veći kôd. Ako ponovo klikneš na čiodu, ova opcija će biti isključena.
Savet instruktoru Ohrabrite studente da koriste autohide opciju na svim prozorima. To čini prozor sa kôdom vidljivijim. Ovo takođe smanjuje broj grešaka u kôdu.
Lekcija 2 – Milano, Italija
Page 10 of 24
Prozor Alata Mnogim funkcionalnostima Visual Studio.NET-a se pristupa tako što se otvaraju i zatvaraju različiti prozori. Na primer, da bi smestio dugmiće na formu potrebno je da otvoriš prozor alata (Toolbox Window). Ovaj prozor pokazuje sve različite stvari koje možeš smestiti na formu kao što su dugmići, radio dugmići, tekst boksovi, padajuće liste itd. Ovde ćeš kreirati neke kul forme kasnije.
1. Izaberi View it glavnog menija 2. Izaberi Toolbox – Toolbox prozor se otvara 3. Klikni dvaput na Dugme kako bi ga dodao na formu (Dugme koje si dodao možda bude skriveno iza Toolbox-a. Pomerićemo ga za minut).
Lekcija 2 – Milano, Italija
Page 11 of 24
Pomeranje i Promena veličine Dugmeta Sad kada si dodao dugme na formu, dopusti da ti pokažem koliko je jednostavno da ga pomeraš ili da mu menjaš veličinu.
1. Klikni na dugme i odvuci ga na centar forme 2. Namesti kursor preko jednog od belih kvadrata (ovo su tačke za promenu veličine) 3. Držeći pritisnuto levo dugme, povuci kvadratić da razvučeš ili smanjiš veličinu Dugmeta
Zar to nije jednostavno ? Sada ćeš da dodaš kôd ovom Dugmetu kako bi učinio da nešto uradi kada korisnik klikne.
Lekcija 2 – Milano, Italija
Page 12 of 24
Dodavanje kôda Dugmetu Kada smo kreirali Dugme, Visual Studio.NET je automatski dodao nekoliko linija kôda u prozor kôda. Vidi primer dole.
Public Class Form1 Inherits System.Windows.Forms.Form Window Forms Designer Generated Code Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Savet instruktoru Mnogi primeri kôda u kursu su jedna linija u Visual Basicu ali su prelomljene kada su predstavljene u materijalu. Da bi u Visual Basicu prelomio liniju potrebno je završiti red sa razmakom iza koga ide donja crta ( _ ).
End Sub
Kao da čitaš Grčki, zar ne ? Ne boji se, mi ćemo ti pomoći da sve razumeš. Za sada je dovoljno da pronađeš Button1_Click. Ovo parče kôda se izvršava kada korisnik klikne na Dugme. Ako bi smo sada kliknuli, ništa se ne bi desilo. Treba da kažemo našoj aplikaciji šta da radi kada kliknemo na dugme. Tu je suština programiranja! Jesi li spreman da počneš?
1. Nakon što dva puta klikneš na Button1, otvara se prozor kôda 2. Klikni na praznu liniju iznad End Sub 3. Ukucaj liniju kôda tačno onako kako je pokazano dole MessageBox.Show("Hello, World.") Ova će se linija izvršiti kada korisnik klikne na dugme na formi.
Lekcija 2 – Milano, Italija
Page 13 of 24
Prevođenje tvoje Solucije Došlo je vreme da se prevede tvoja Solucija. Ovo se čini kako bi se kôd koji si ti napisao, a Visual Studio.NET ti je pomogao preveo u instrukcije koje kompjuter razume .
1. Izaberi Build iz glavnog menija 2. Izaberi Build Solution iz padajućeg menija
Savet instruktoru Verzije Visual Basica pre .NETa nisu zahtevale Prevođenje (Build) pre egzekucije. .NET uvek zahteva Prevođenje.
Lekcija 2 – Milano, Italija
Page 14 of 24
Prevođenje je uspelo Nakon što je prevođenje završeno, prozor Rezultata se otvara (Output Window) i prikazuje poruku. Ova poruka pokazuje da li je tvoje prevođenje bilo uspešno ili su se pojavile neke greške. Ako je bilo uspešno videćeš sledeću poruku u prozoru Rezultata:
------ Build started: Project: HelloWorld, Debug .NET -----Preparing resources... Updating references... Performing main compilation... Building satellite assemblies...
Configuration:
---------------------- Done ---------------------Build: 1 succeeded, 0 failed, 0 skipped
Lekcija 2 – Milano, Italija
Page 15 of 24
Prevođenje nije uspelo Pretpostavimo da umesto da si ukucao MessageBox napravio si grešku i ukucao mMessageBox. Prozor Rezultata daje poruku greške koje izgleda ovako nekako.
------ Build started: Project: HelloWorld, Configuration: Debug .NET -----Preparing resources... Updating references... Performing main compilation... C:\VBNETProjects\HelloWorld\Form1.vb(59) : error BC30451: Name 'mMessageBox' is not declared. Building satellite assemblies... ---------------------- Done ---------------------Build: 1 succeeded, 0 failed, 0 skipped
Kad god je moguće Visual Basic naglasi i lokaciju na kojoj je greška nastala. Dvostruki klik na poruku greške stavlja kursor direktno na samu grešku. Dodatno, prozor sa zadacima će se otvoriti (Task List Window), pokazujući ti određene greške. Ako je prevođenje neuspelo, vrati se nazad i proveri da li si ukucaoo liniju kôda onako kako je bilo pokazano. Nakon toga prati korake za Prevođenje Solucije, što smo ti ranije pokazali.
Lekcija 2 – Milano, Italija
Page 16 of 24
Pokretanje programa Tvoj program je sad preveden bez greške. Na pravom si putu da postaneš programer! Sada je vreme da startuješ svoj prvi program Starting Your Program.
1. Izaberi Debug iz glavnog menija 2. Izaberi Start iz padajućeg menija. (Tvoja forma je na ekranu i na njoj dugme koje si dodao) 3. Klikni na dugme. Znao sam da ćeš to da uradiš, u svakom slučaju !
Savet instruktoru Kada izabereš Start, Visual Basic prvo Prevede program, pa ga tek onda izvrši. Ako postoji greška u prevođenju učenik biva upitan želi li da startuje program bez obzira na grešku. Tačan odgovor je NO. Ako učenik pokuša da startuje program neće uspeti.
Lekcija 2 – Milano, Italija
Page 17 of 24
Prikazivanje Prozora sa porukom Kada klikneš na dugme, prozor sa porukom (MessageBox) se pokazuje sa tekstom „Zdravo Svete“. To je ono što si hteo tvoj program da uradi ! Čestitam! Upravo si startovao svoj prvi Visual Basic.NET program! 1. Klikni na dugme OK da zatvoriš prozor sa porukom. (Prozor sa porukom nestaje, ali je tvoja forma još uvek tu. Možeš ponovo da klikneš na dugme kako bi prikazao prozor sa porukom po drugi put) 2. Klikni na „X“ u gornjem desnom uglu tvoje forme da zatvoriš program .
Lekcija 2 – Milano, Italija
Page 18 of 24
Prozor rezultata Kada se program završi, prikazuju se informacije za otklanjanje grešaka (Debug informacije). Možda ćeš morati da se krećeš kroz informacije gore dole da bi ih sve video.
Savet instruktoru Početnici neće koristiti DEBUG informacije. Ovde je to pomenuto da se ne iznenade kada vide.
Snimanje tvog projekta Došlo je vreme da se snimi tvoj projekat. Ovaj deo je kao u bilo kom drugom Windows programu 1. 2. 3. 4.
Izaberi Select File iz glavnog menija Izaberi Save All iz padajućeg menija Da bi izašao iz Visual Studio.NET –a izaberi File iz glavnog menija Izaberi Exit iz padajućeg menija
Možeš ovo probati sam. Imam opet neka pitanja u igri „Dokazivanja“ na mom PDA-u za tebe.
Savet instruktoru ual Basic će automatski snimiti projekat svaki put kada se obavi Prevođenje.
Lekcija 2 – Milano, Italija
Page 19 of 24
02 Dokaži 01 Zdravo Svete Napiši program nazvan ZdravoSvete. Ponovi korake prikazene u kursu. Prikaži prozor sa porukom „Zdravo, Svete“.
Lekcija 2 – Milano, Italija
Page 20 of 24
Fajlovi i Folderi Solucije Kada kreiraš Visual Basic aplikaciju, mnogo fajlova se formira. Moraš da znaš koji se fajlovi kreiraju i čemu služe. Vidi sliku dole sa tipičnim setom fajlova i foldera .
Koristeći Windows Explorer, idi do lokacije gde si snimio svoj projekat ZdravoSvete. Ekspanduj ovaj folder i videćeš da je formiran folder za projekat ZdravoSvete. Ekspanduj folder ZdravoSvete da bi video fajlove koji su kreirani od strane Visual Studio.NET –a za tvoj projekat. Trebalo bi da vidiš sledeće fajlove. ZdravoSvete.sln je fajl solucije koji vodi računa o svim drugim delovima solucije. Solucija može da referencira na više projekata, međutim tvoja ZdravoSvete solucija sadrži samo jedan nazvan ZdravoSvete.vbproj. ZdravoSvete.sln fajl je onaj na koji biraš kada otvaraš postojeći projekat. Form1.vb fajl sadrži formu i njemu pridruženi kôd. Klikni dva puta na bin folder da ga ekspanduješ. Bin folder sadrži izvršni Visual Basic kôd koji je smešten u fajl ZdravoSvete.exe. Ovaj fajl može biti pokrenut na drugom računaru iako on nema Visual Studio.NET instaliran.
Lekcija 2 – Milano, Italija
Page 21 of 24
Dolazak u Milano Pošto si završio sa čitanjem IDE vozačkog priručnika, vreme je da polažeš vozački ispit. Popuni MojeImeJe Dokaži kako bi pokazao da si spreman da voziš. 02 Dokaži 02 MojeImeJe Napiši program nazvan MojeImeJe. Ovaj program je vrlo sličan ZdravoSvete programu prikazanom u kursu. Kreiraj novi projekat nazvan MojeImeJe. Na početnoj strani klikni na dugme New Project. Možda će biti potrebno da zatvoriš prozor Rezultata da bi je video. Ili, možeš otići u File / New / Project. Na Form1, stavi dugme i tekst boks (TextBox). Ostavi ime dugmeta i boksa onako kako ih je Visual Studio.NET dodelio. Dva puta klikni na Button1 da otvoriš stranu sa kôdom. U Button1_Click potprogram unesi ovu liniju kôda: TextBox1.Text = " tvoje ime ovde " Zameni tvoje ime ovde sa tvojim imenom. Obrati pažnju da ostanu znaci navoda. Prevedi i Startuj svoj program. Kada bude proradio ispravno, pokaži ga instruktoru.
Lekcija 2 – Milano, Italija
Page 22 of 24
02 Izazov Brza Hrana Budući da stajemo kod svake prodavnice brze hrane koju vidimo, hajde da se malo zabavimo programirajući o tome. Znaš kako da dodaš dugme na formu, prevedeš aplikaciju i startuješ je. 02_challenge_template je kompletna aplikacija, osim što su joj je potrebno dodati četiri dugmeta Button1-Button4.
Savet instruktoru Student dodaje dugmiće postojećem programu gde su oni uklonjeni, a ostatak kôda je završen i funkcionalan.
Forma bi trebalo da izgleda ovako nakon što joj dodaš dugmiće. Prevedi aplikaciju. Nakon toga izaberi Debug / Start without Debugging, ili izaberi Debug / Start. Šta se dešava kada klikneš na svako dugme pojedinačno? Pokaži ispravan program instruktoru
Lekcija 2 – Milano, Italija
Page 23 of 24
Dodatak / Skretanje sa puta U kasnijim lekcijama biće ti pokazano kako da menjaš tekst na dugmićima. Možeš li sam da shvatiš kako da zameniš tekst dugmeta koristeći prozor sa Svojstvima (Property Window)? Dobrodošli u Milano. Treba da daš odgovore na par Kviz pitanja kako bi se pripremio za pitanja organizacionog odbora. U kursu koji se drži uz pomoć štampanog materijala, kviz nije interaktivan. U verziji kursa koja je na internetu, kompjuter proverava odgovore. Evo ga i srećno
Lekcija 2 – Milano, Italija
Page 24 of 24
Lekcije 3 – Barcelona, Španija
Page 1 of 15
Tipovi komandi Miloš je odradio odličan posao upoznajući te sa Visual Studio.NET – om. Zar nije bio divan osećaj da napišeš svoj prvi program ? Znam da nisi pisao mnogo kôda do sada, ali ćeš. Sada ću ti pokazati kako da planiraš i organizuješ svoj program još pre nego što počneš da ga pišeš. Da li si znao da možeš da napišeš kompjuterski program pre nego što naučiš programski jezik? Mnogi programeri prvo pišu svoje programe u „pseudo kôdu“,a onda ga prevode u pravi programski jezik. Ovo pomaže da se utvrdi logički tok programa i šta treba da program da radi. Pseudo kôd sa sastoji od jednostavnih komandi napisanih na engleskom (ili na tvom maternjem jeziku) što objašnjava šta program treba da radi. Nakon što napišeš pseudo kôd lakše je napisati pravi kôd. Pseudo kôd daje strukturu ili smernice razvoja programa. Pre nego što ti pokažem kako da koristiš pseudo kôd, želim da te uputim u neke fundamentalne tipove komandi koje čine kompjuterski program. Svi programski jezici koriste iste osnovne tipove komadi, iako njihova sintaksa varira od jezika do jezika. Kada se kombinuju, ove osnovne komande ti dozvoljavaju da napišeš vrlo kompleksne programe. Sećaš li se linija kôda koje si ukucao za Dugme u ZdravoSvete programu? Bilo je : MessageBox.Show(„Zdravo, Svete.“) Ovaj kôd prikazuje informacije korisniku. On je osnovni tip komande poznat kao upozorenje, poruka ili izjava. Svi programski jezici imaju slične tipove osnovnih komandi koje se koriste da daju korisniku određene informacije, iako sintaksa zavisi od tipa jezika. Postoje drugi tipovi osnovnih komandi podržanih od strane svih programskih jezika. Evo par primera drugih osnovnih komandi podržanih od strane svih programskih jezika.
Lekcije 3 – Barcelona, Španija
Page 2 of 15
Varijable se koriste za čuvanje informacija kao što su brojevi ili tekst. One čuvaju informacije ili rezultate proračuna. Naredbe dodeljivanja postavljaju vrednosti varijable. Vrednost može biti borj, tekst ili sračunata vrednost druge varijable. Naredbe poređenja se koriste za poređenje vrednosti ili varijable sa brojem ili drugom varijablom. Naredbe poređenja postavljaju pitanje. Odgovor je uvek „tačno“ (true) ili „netačno“ (false). Naredbe odlučivanja služe za pravljenje izbora. Izbor se oslanja na poređenje. Ako je odgovor na poređenje „tačno“, tada se bira prva ponuđena mogućnost. Ako je odgovor na poređenje „netačno“, druga opcija biva izabrana. Naredbe odlučivanja se često nazivaju i naredbama grananja jer program može otići u jednom ili u drugom pravcu. Programske petlje se koriste za izvršavanje određenog dela kôda onoliko puta koliko je to potrebno. Petlje smanjuju količinu kôda koju je potrebno napisati za delove programa koji ponavljaju jednu istu akciju. Kako budeš učio da programiraš, naučićeš kako da koristiš ove osnovne naredbe kako bi naterao program da radi ono što želiš. Kako budeš učio Visual Basic.NET (ili bilo koji drugi programski jezik) tvoj posao biće da naučiš konkretnu sintaksu koju taj programski jezik zahteva za pisanje i korišćenje ovih osnovnih naredbi.
Lekcije 3 – Barcelona, Španija
Page 3 of 15
Šta je psudo kôd? Kao što sam ranije napomenula, programeri često pišu programe u pseudo kôdu. Reč pseudo znači „umesto“. Na primer, neki pisci koriste pseudonim umesto pravog imena. Pseudo kôd nije napisan u pravom programskom jeziku već se sastoji od jednostavnih rečenica koje opisuju šta će program da radi. Pseudo kôd možeš pisati na engleskom, španskom ili ček srpskom zato što kompjuter ne treba da ga čita niti razume. Tvoj pseudo kôd treba da bude dovoljno jasan da ga ti i drugi programeri možete razumeti jer on daje okvir ili instrukcije za pisanje pravog kôda tvog programa. Tvoj pseudo kôd je napisan koričćenjem različitih tipova osnovnih naredbi dodeljivanja, poređenja, grananja itd.
Jedna od velikih prednosti dizajniranja programa uz pomoć pseudo kôda je što ne moraš da brineš koji ćeš programski jezik da koristiš. Prvo sredi logiku i strukturu korišćenjem pseudo kôda. Posle prevedi svoj pseudo kôd u programski jezik koji bi da koristiš.
Savet instruktoru Najvažnija stvar u ovoj lekciji je da programer nauči da planira koji kôd da piše, pre nego započne sa programiranjem.
Lekcije 3 – Barcelona, Španija
Page 4 of 15
Dopusti da ti dam primer kako da koristiš pseudo kôd za osmišljavanje programa. Recimo da hoću da napravim program koji će izračunavati srednju cenu benzina u dinarima po litru za naš celi put. Šta bi taj program trebalo da radi? Da bih odgovorila na to pitanje prvo ću napisati program u pseudo kôdu. Ovo su koraci kroz koje bi program morao da prođe da bi izračunao srednju cenu benzina na našem putovanju: 1. Sabrati sav novac koji smo dali za benzin i tu vrednost dodeliti jednoj varijabli(total dinara) 2. Sabrati ukupan broj litara potrošenog benzina i dodeliti tu vrednost drugoj varijabli (total litara) 3. Uzmi prvu varijablu (total dinara) i podeli je sa drugom varijablom (total litara) i dodeli rezultat trećoj varijabli (dinara po litru). 4. Prikaži poruku koja daje srednju cenu u dinarima po litru. Pseudo kôd jasno pokazuje šta program treba da radi. Sada mogu da napišem program da ispunim zadatke postavljene u pseudo kôdu.
Lekcije 3 – Barcelona, Španija
Page 5 of 15
Daću ti još jedan primer koji se malo razlikuje od prethodnog sa malo više koraka u njemu. Ovaj primer može biti recimo za programabilnog robota koji menja probušene gume. 1. Utvrdi koja guma je probušena (naredba poređenja) 2. Utvrdi dimenziju probušene gume (naredba poređenja) 3. Ako poseduješ rezervnu gumu nastavi dalje 4. U suprotnom nabavi drugu gumu iz prodavnice (poređenje i naredbe odlučivanja) 5. Podigni kombi uz pomoć hidraulične dizalice 6. Ukloni plastični štitnik gume koristeći šrafciger kako bi došao do šrafova točka. 7. Odšrafi šrafove točka koristeći T ključ dok svi šrafovi ne budu uklonjeni (programska petlja) 8. Ukloni probušenu gumu 9. Stavi novu gumu 10. Namesti i zašrafi sve šrafove točka koristeći T ključ (programska petlja) 11. Namesti plastični štitnik točka 12. Spusti hidrauličnu dizalicu. U pseudo kôdu iznad postoji sprega naredbi dodeljivanja, naredbi poređenja, naredbi odlučivanja i petlji. Na primer, moraš zapamtiti veličinu probušene gume, što je naredba dodeljivanja. Moraš uporediti veličinu probušene gume sa gumama koje imaš u posedu, što je naredba poređenja. Naredba odlučivanja se koristi sa naredbom poređenja. Ako imaš gumu odgovarajućih dimenzija, onda idi dalje. U suprotnom idi do prodavnice guma. Odšrafljivanje i zašrafljivanje šrafova točka se pože posmatrati kao proces koji se ponavlja. Svaki proces treba ponoviti određeni broj puta dok svi šrafovi ne budu skinuti, odnosno vraćeni na mesto.
Lekcije 3 – Barcelona, Španija
Page 6 of 15
Zašto ne probaš da pišeš neki kôd koristeći moj PDA? 03 Dokaži 01 Pakovanje za put Napiši pseudo kôd koji opisuje korake pri pakovanju za put. Tvoje rešenje treba da ima najmanje sedam koraka. Ako svaki korak počinje sa naredbom „IF“, onda si promašio suštinu pseudo kôda.
Savet instruktoru Iznenađujuće je koliko učenici pišu pseudo kôd koji je 100% sastavljen od If naredbi umesto da daju miks akcija i uslovnih akcija. Pseudo kôd bez If naredbi je takođe ispravan.
Lekcije 3 – Barcelona, Španija
Page 7 of 15
Komentari kôda Moderni programski jezici, uključujući Visual Studio.NET dozvoljavaju dodavanje kometara kôdu. Komentari se ne tretiraju kao deo programa i ne izvršavaju se kada se program pokrene. Oni su veoma dobar način za dokumentovanje kôda. Pomažu ti da zapamtiš šta tvoj kôd radi. Takođe pomažu da drugi programeri razumeju tvoj program. Uvek treba komentarisati program. Komentari odslikavaju rad dobrog programera. Dobar programer potroši dosta vremena za dokumentovanje kôda koji je napisao ili napisala. Komentare treba dodati u program kad god se načini neka izmena ili doda neka funkcionalnost. Takođe, treba komentarisati delove programa koje je teško razumeti ili delove koji obavljaju kompleksne proračune.
Savet instruktoru Ima puno razloga da se proverava kôd koji studenti pišu, umesto da se jednostavno vidi rezultat EXE fajla koji se startuje.
Potencirajte komentarisanje
Potencirajte propisno imenovanje promenljivih
Pronađite prepisani kôd. Kopiranje je jednostavno i učenici često to čine. Tražite sličnosti u tehnici jer se Find-Replace može koristiti za maskiranje kôda.
Lekcije 3 – Barcelona, Španija
Page 8 of 15
U Visual Basic.NET linija komentara počinje sa apostrofom (’). Svaka linija koja počinje ovim znakom se tretira kao komentar i neće biti prevedena (kompajlirana) niti izvršena po pokretanju programa. Evo primera komentara u Visual Basic.NET –u
'Dodata funkcionalnost za proracun predjenih kilometara po litru.
Hej, možda koristiš apostrof za komentare u Visual Basic.NET-u, međutim u C#-u i J#-u se koriste dve kose crte (//) na početku linije komentara . Na primer,
//Dodata funkcionalnost za proracun predjenih kilometara po litru.
Lekcije 3 – Barcelona, Španija
Page 9 of 15
Komentari imaju drugu važnu ulogu pored dokumentovanja kôda. Pošto se ne izvršavaju, mogu se koristiti kao metod za sprečavanje izvršenja nekih linija kôda. Ovo se naziva „komentarisanje“ linije. Komentarisanje je metod koji se može koristiti kao pomoć pri otklanjanju grešaka iz tvog programa. Ako imaš grešku u programu, možeš komentarisati liniju ili ceo blok komandi dok greška ne prestane da se pojavljuje. Zadnja linija koju si komentarisao je najčešće i linija u kojoj je greška. Veoma zgodno, zar ne ? Sada ću ti dati primer komentarisanja kôda. Obrati pažnju na sledeće tri linije kôda. Druga linija biva komentarisana stavljanjem apostrofa na početak reda. Druga linija neće biti izvršena, ali prva i treća hoće!
MessageBox.Show("Ja sam iz" 'MessageBox.Show(" divnog grada") MessageBox.Show(" Nisa.")
Lekcije 3 – Barcelona, Španija
Page 10 of 15
Pseudo kôd kao komentar A sada još jedna upotrebna vrednost iznenađujuće korisnog komentara. Sigurna sam da ne možeš da čekaš! Možeš koristiti komentare za kreiranje i pravljenje forme programa. Lako je. Već si napisao pseudo kôd koji opisuje šta će sve tvoj program da radi. Zato iskoristi to. Iseci i zalepi tvoj pseudo kôd u program i stavi apostrof ispred svakog reda kako bi ga pretvorio u komentar. Sada napiši pravi Visual Basic.NET kôd ispod svake linije pseudo kôda i tvoj program će biti ne samo završen već i propisno komentarisan. Gotov posao ! Evo primera baziranom na pseudo kôdu koja sam napisala za računanje prosečne cene dinara po litru benzina na našem putu. Obrati pažnju kako pseudo kôd komentariše program.
'Saberi sav novac koji smo dali za benzin i dodeli to varijabli (total dinara) Dim totalDinara As Double totalDinara = 88.76 + 100.8 + 120.3 'Saberi svo potroseno gorivo i dodeli to drugoj varijabli (total litara) Dim totalLitara As Double totalLitara = 49.3 + 55.5 + 46.3 'Uzmi prvu varijablu (total dinara) i podeli je sa drugom varijablom (total litara) i dodeli rezultat trecoj varijabli (dinara po litru). Dim DinaraPoLitru As Double DinaraPoLitru = totalDinara / totalLitara 'Prikazi poruku koja daje prosecnu cenu dinara po litru. MessageBox.Show (DinaraPoLitru)
Razmaci i uvlačenja prvog reda Lekcije 3 – Barcelona, Španija
Page 11 of 15
Iako možda ne razumeš sav Visual Basic.NET kôd gore, želim da obratiš pažnju na nekoliko stvari. Prvo, lako uočavaš da komentari počinju apostrofom. Takođe, boja komentara je zelena. Ovo ih čini uočljivijim u velikom programu. Drugo, zapazi prazne linije koje stoje ispred svakog komentara. Ova prazna linije deli komentare i kôd u grupe na osnovu njihove funkcije. Prazne linije čine tvoj program logički čistim i lakšim za razumevanje. U većini slučajeva Visual Basic.NET automatski dodaje prazna mesta i uvlači redove kako bi tvoj kôd bio čitljiviji. Možeš čak sam dodati razmake uvući redove onoliko koliko želiš. Visual Basic.NET i drugi .NET jezici ne mare za prazna mesta i uvučene redove. Oni se ignorišu kada se program prevodi. I dok Visual Basic.NET nije briga za sva prazna mesta ona čine program mnogo čitljivijim! (A ti si čovek koji će imati najviše koristi ).
i
ta
Savet instruktoru Potencirajte upotrebu praznih linija između blokova kôda. Od toga imaju koristi i učenici i instruktor.
Lekcije 3 – Barcelona, Španija
Page 12 of 15
03 Dokaži 02 Pranje sudova Imam još jednu igru Dokaza za tebe na mom PDA-u. Možeš probati čim opereš sudove! Kombi ima priručnu kuhinju koju koristimo kada nema Suši bara ili Kineskog restorana blizu. Kuvati nešto znači da će biti sudova za pranje. Kombi nema mašinu za pranje sudova. Napiši pseudo kôd da opišeš korake potrebne za pranje sudova. Ako nemaš iskustva sa ovim, možda ćeš morati da istražuješ malo. Tvoje rešenje bi trebalo da ima barem sedam koraka.
Lekcije 3 – Barcelona, Španija
Page 13 of 15
03 Izazov
Akvarijum
Vidiš li akvarijum u prodavnici životinja ? Brzo, pre nego se promeni svetlo! Prebrojimo ribice svake boje i izračunajmo procenat koji predstavljaju. U stvari, imam program koji to čini. Pronađi fajl nazvan FishTank.sln. Dva puta klikni na njega da bi ga otvorio u Visual Studio.NET-u. Idi na stranicu sa kôdom. Tvoj zadatak je da pogledaš stranicu sa kôdom i iskopiraš sve komentare u Word ili Text dokument. Liči li rezultat na pseudo kôd? Predaj svoju listu komentara instruktoru. Dodatak/Skretanje sa puta Ima li mnogo komentara? Premalo? Zašto?
Extension / Side Trip Are there too many comments? Too few? Why?
Lekcije 3 – Barcelona, Španija
Page 14 of 15
Dolazak u Barcelonu Pošto uskoro stižemo u Barcelonu, moraš da rešiš još jedan kviz. Pomoći će ti da odgovoriš na neka pitanja organizacionog odbora.
Lekcije 3 – Barcelona, Španija
Page 15 of 15
Lekcija 04 – Kazablanka, Maroko 1
Windows aplikacije Idemo ka jednom od mojih omiljenih mesta-Kazablanki u Maroku! Toliko toga uzbudljivog ima da se radi da bi čovek mogao da provede celu godinu u Kazablanki i da je ne vidi celu, niti da se dosađuje. Za mene je Kazablanka osnovni razlog zbog kojeg sam prihvatio da krenem na ovo putovanje. Ako se sećaš, na putu za Milano koristio si Visual Studio da napišeš svoj prvi program. Jedna od prvih stvari o kojima je trebalo da odlučiš, bio je tip projekta koji kreiraš. Ti si izabrao Windows aplikaciju. Windows aplikacija je tip programa koji ima korisnički interfejs koji predstavlja način interakcije korisnika i programa. Nemaju svi programi korisnički interfejs. Neki programi se jednostavno pokrenu ili rade neprimetno u pozadini i ne zahtevaju nikakav unos podataka nakon pokretanja. Malo dosadno, ako mene pitaš.
Lekcija 04 – Kazablanka, Maroko 2
Dizajn formi Ja volim igre i to interaktivne, pa su zato svi programi koje napišem, Windows aplikacije. Windows aplikacije koriste forme kako bi ti dozvolile da dizajniraš ono što korisnik vidi i način na koji on ili ona interaguju sa tvojim programom. Kada prvo kreiraš Visual Basic.NET Windows aplikaciju, Visual Studio automatski dodaje formu nazvanu Form1.vb tvom projektu. Ti možeš dodati kontrole, kao što su dugmeta, labele, tekst boksovi, padajuće liste, itd. formi da bi omogućio korisniku da interaguje sa tvojim programom. Recimo da tvoja aplikacija ima „formu za izbušene gume“ za unošenje informacija o izbušenoj gumi. Evo opisa kontrola koje treba staviti na formu i šta one rade:
U tekst boks (textbox) unesi registarski broj automobila Iz grupe radio dugmića (radio buttons) izaberi ono koje kaže koja je guma izbušena (prednja leva, prednja desna, zadnja leva, zadnja desna) Koristi ček boks (checkbox) da naglasiš da li je intervencija „Hitna“ Iz kombo boksa (combobox) izaberi veličinu gume Klikni na dugme koje pretražuje inventar guma U tekst boksu prikaži listu guma koje su na raspolaganju uključujući podatke o proizvođaču, broju modela, veličini, broju komada na raspolaganju i ceni
Dakle, forma za „probušene gume“ ima dva tekst boksa, četiri radio dugmeta, padajuću listu (dropdown list), ček boks i dugme. Možeš ih rasporediti na formi na mnogo različitih načina, a tu počinje zabava i kreativnost dolazi do izražaja.
Lekcija 04 – Kazablanka, Maroko 3
Za mene je dizajn formi jedan od najlepših aspekata programiranja. Mogu da odlučim kako će forma izgledati i kako će kontrole na njoj biti raspoređene. Forme su kao platno slikara, a kontrole su kao boje. Moram, međutim, da budem i oprezan. Moram da se uverim da forma radi ono što treba da radi. Ona mora da ispunjava zahteve programa. Mora da bude jednostavna za korišćenje i ne sme da ima nikakve nepotrebne stvari na sebi. Kada dizajniram formu, stalno se pitam, „Koja je svrha ove forme? Šta ona treba da radi?“. Takođe, moram se uveriti da forma lepo izgleda, kao ja ! Ne sme da ima mnogo boja i mnogo iritirajućih vizuelnih efekata, kao što je blinkajući tekst. To skreće pažnju korisnika. Raspored kontrola na formi treba da bude logičan i uredan. Moram razmišljati i o redosledu kojim će korisnik unositi informacije i interagovati sa programom. Nekada korisnika treba upozoriti da nije uneo sve tražene informacije, ili da je neki od podataka pogrešno unet. Kada dizajniraš formu potrebno je da razmišljaš kao korisnik i zamisliš sve moguće načine za interakciju sa programom. Na kraju, kada praviš formu, moraš imati na umu da sve Windows aplikacije imaju standardni izgled i raspored kontrola. Korisnik očekuje od tebe da tvoja aplikacija poštuje osnovna načela dizajna i da se ponaša na određeni način. Na primer, prva opcija menija u Windows aplikaciji je uvek „File“, a ispod ove opcije biće opcija „Exit“ koju korisnik selektuje (aktivira) da bi zatvorio program. Korisnik će biti prilično iznenađen i iznerviran ako klikne na dugme sa oznakom „Izračunaj“, a program promeni boju glavnog prozora u crvenu i prevede sva slova u ćirilicu.
Lekcija 04 – Kazablanka, Maroko 4
Korišćenje formi Kao što znaš, kada kreiraš novu Windows Savet instruktoru aplikaciju, Visual Studio automatski dodaje formu nazvanu Form1.vb. Ovo je glavna Form1.vb može dobiti neko deskriptivnije ime. Ovo je poželjno forma, ili startna forma tvoje aplikacije. To kod kompleksnih aplikacija. je ono što korisnik vidi kada pokrene tvoju aplikaciju. Glavna (main) forma je kao centralna kontrolna tabla. Odavde korisnik može pristupiti bilo kom delu tvog programa. Često je linija menija (menubar) ili linija alata (toolbar) postavljena preko gornjeg dela glavne forme kako bi olakšala kretanje kroz različite delove aplikacije. Na glavnoj formi korisnik bira opcije menija ili klikće na dugmeta koja otvaraju druge forme. Ove forme mogu služiti za unos, pregled podataka ili neku drugu interakciju sa programom. Uglavnom ove forme imaju određenu namenu, kao što je posmatranje rezultata fudbalskog meča, unos liste propratnih efekata ili podešavanje programa. Nakon što je korisnik uneo ili pregledao informacije na nekoj od ovih formi, on je najčešće zatvara i vraća se na glavnu formu. Iako Visual Studio dodaje samo Form1, možeš dodati onoliko formi koliko tvoj projekat to zahteva. Drugi važan tip forme je prozor sa porukom (MessageBox). Ovaj prozor si naučio da koristiš u primeru ZdravoSvete gde si u njemu ispisivao poruku „Zdravo Svete“. Prozor sa porukom se koristi za prikaz tvojih poruka u standardnoj formi tzv. dijaloga. Nakon što korisnik pročita poruku, on zatvara ovaj dijalog klikom na dugme OK. Hajde da počnemo. Napravićeš svoju formu – Formu izbušenih guma. Onda ćeš dodati neke kontrole i podesiti njihove opcije. Ja ću ti pokazati kako kontrole na formi reaguju na događaje kao što je klik na dugme, a onda ćemo ponovo baciti pogled na specijalni ugrađeni tip forme, naš dobro poznati prozor sa porukom. Savet instruktoru Učenici obično pročitaju objašnjenje, ali ne urade ono što se od njih očekuje. Najveća korist za njih biće ukoliko stvarno urade ono što piše u tekstu i potvrde da su razumeli materijal kursa.
Lekcija 04 – Kazablanka, Maroko 5
Osobine formi Kada kreiraš novu Windows aplikaciju, forma Form1 se automatski dodaje. Ona ima predefinisanu veličinu od 300 puta 300 piksela. Kako sam znao veličinu ove forme? Pa postoji jednostavan način da to utvrdiš korišćenjem prozora sa osobinama (Properties Window). Šta više, možeš promeniti veličinu forme korišćenjem ovog prozora. Pokazaću ti koji su sve koraci. Prvo moraš da napraviš novu Windows aplikaciju sa imenom IzbušenaGuma. Nakon što je projekat kreiran, klikni jednom na Form1 kako bi ga selektovao. Pritisni dugme F4 na tastaturi da otvoriš prozor sa osobinama. 1. Pošto je Form1 već selektovan, prozor sa osobinama pokazaće osobine te forme. Primeti da je "Text" osobina naglašena.
2. Krećući se kroz listu osobina forme Form1 pronađi osobinu Size (veličina). Obrati pažnju da ova osobina ima znak plus pored nje. Ovo znači da je ova osobina složena tj da može da se ekspanduje (proširi ) kako bi se prikazale dodatne opcije.
Lekcija 04 – Kazablanka, Maroko 6
3. Klikni na znak plus pored Size. Osobine Heigh (visina) i Width (širina ) će se pojaviti. Visina forme Form1 je 300, a širina takođe 300. Promenimo veličinu ove forme.
4. Dva puta klikni na Width osobinu kako bi markirao vrednost (300). Pritisni dugme za brisanje na tastaturi (backspace) da obrišeš vrednost.
5. Unesi broj 450. Pritisni Enter. Evo ga! Upravo si promenio širinu forme. Ako si malo bolje obratio pažnju, video si da se veličina prozora promenila čim si pritisnuo Enter. Obrati pažnju i na to da se vrednost širine prozora u polju osobine Size istovremeno promenila.
Lekcija 04 – Kazablanka, Maroko 7
Hajde sada da podesimo osobinu boje pozadine (BackColor) naše forme. Boja pozadine je boja forme i kontrola koje se na njoj nalaze. U prozoru sa osobinama forme Form1 idi do osobine BackColor.. Klikni na reč „Control“. Dugme sa strelicom na dole će se pojaviti sa desne strane. Klikni na njega. Otvara se paleta boja. Izaberi jezičak Custom. Dva puta klikni na kvadratić sa bojom koju želiš. Ja najviše volim svetlo žutu. Vidi tu formu sada! Prevedi (build) tvoju soluciju i pokreni projekat. Obrati pažnju na novu ludu pozadinu tvoje forme! I vidi, tvoja forma sada ima naslov „Forma Izbušenih Guma“ i nije više kvadratnog, već pravougaonog oblika!
Sada znaš kako da menjaš osobine forme koristeći Prozor sa osobinama. Posmatraj malo listu osobina kako bi ih zapamtio. Prozor sa osobinama ti dozvoljava da menjaš osobine za vreme projektovanja programa (Design time). Kao što ćeš videti prozor sa osobinama ti takođe omogućava da promeniš osobine dugmeta, tekst boksova i drugih kontrola na formi.
Lekcija 04 – Kazablanka, Maroko 8
Kontrole i osobine formi Sada si već ekspert za dodavanje dugmeta na formu, ali to već počinje da se ponavlja! Možeš videti da prozor alata (Toolbox Window) ima mnogo drugih kontrola na raspolaganju. Zato ću ti sada pokazati kako da koristiš one koje se najčešće koriste i kako da podesiš njihove najkorisnije osobine. Počnimo sa labelama (Labels). Labele Ova kontrola se koristi za označavanje individualnih kontrola ili grupa kontrola tvoje forme. Takođe se često koristi za davanje instrukcija ili za ukazivanje na redosled unosa podataka na formu.
Savet instruktoru Sve kontrole su objekti, ali svi objekti nisu kontrole. Objekat može biti skoro sve izuzev Osobine. Osobina je karakteristika objekta, kao što je širina ili boja.
Otvori prozor alata i dva puta klikni na kontrolu Label. Labela se dodaje na tvoju formu. Prevuci je do lokacije koja ti odgovara tako što ćeš pokazivač da dovedeš na kreiranu labelu, pritisneš levi taster miša i držiš ga uz istovremeno pomeranje položaja miša. Selektuj Label1 i otvori prozor sa osobinama. Ovde možeš videti listu osobina labele. Idi do osobine Text, dva puta klikni kako bi selektovao tekst i pritisni dugme za brisanje da je obrišeš. Ukucaj tekst „Unesi Tablicu“ Tekst boks Tekst boks se koristi za prikaz i prikupljanje informacija od korisnika. U paleti sa alatima dva puta klikni na Textbox kontrolu. Textbox1 biva dodat na formu. Prevuci Textbox1 na desnu stranu Label1. Pronađi Text osobinu, dva puta klikni na nju i pritisni dugme za brisanje. Podesi ReadOnly na False da bi korisnik mogao da unosi tekst u tekst boks. False bi trebalo da bude predefinisana vrednost. Tekst boks (Text box) se može koristiti za prikaz velike količine informacija. Ako je tekst stvarno dug, možda ćeš želeti da dodaš opciju skrolovanja (Scrollbar) tekst boksu. Dodaj još jedan tekst boks svojoj formi . Podesi osobinu „Multiline“ na true. Podesi visinu na 100 piksela i širinu na 100 piksela. Ako je Multiline podešen na false, nećeš moći da podesiš visinu. Lekcija 04 – Kazablanka, Maroko 9
Podesi Scrollbars na Vertical. Podesi ReadOnly (Samo za čitanje) na true tako da korisnik ne može da unosi novi tekst u tekst boks.
Radio Dugmad Radio dugmad (Radio buttons) se koriste da bi se korisniku pružio neki izbor. Korisnik može selektovati samo jedno dugme iz grupe radio dugmadi. To je kao test sa više odgovora. U prozoru alata, dva puta klikni na kontrolu radio dugmadi. Na formu biva dodat RadioButton1. Izaberi RadioButton1 na formi, klikni desnim tasterom na njega i izaberi opciju Copy (Kopiranje). Klikni bilo gde na površinu forme, ponovo klikni desnim tasterom na isto mesto i izaberi opciju Paste (Lepljenje). Magija! RadioButton2 je dodat. Ponovi operaciju kako bi dobio RadioButton3 i RadioButton4. Selektuj RadioButton1 i otvori prozor sa osobinama. Idi do opcije Text i promeni je iz „RadioButton1“ u „Levi, Prednji“. Promeni svojstvo Text i za ostalu radio dugmad: RadioButton2 u „Levi, Zadnji“, RadioButton3 u „Desni, Prednji“, RadioButton4 u „Desni, Zadnji“. Ček boks Ček boksovi (Checkboxes) se takođe koriste da pruže korisniku izbor. Korisnik može selektovati jedan ili više boksova iz grupe ček boksova. U prozoru alata klikni dva puta na CheckBox kontrolu. CheckBox1 biva pridodat formi. Otvori prozor sa osobinama i promeni osobinu Text u „Hitan posao“. Kombo boks Kombo boks (Combobox) predstavlja listu izbora za korisnika. Kada korisnik izabere stavku iz liste, izabrana stavka biva prikazana u kombo boksu. U prozoru alata dva puta klikni na kombo boks. ComboBox1 biva dodat na formu. Otvori prozor sa osobinama i promeni osobinu Text u „Izaberi veličinu gume“. Idi do osobine Items (Stavke). Klikni na reč „Collection“ (kolekcija). „Ellipsis dugme“ (dugme sa tri tačke na sebi) se pojavljuje sa desne strane. Kada klikneš na njega otvoriće se prozor u kojem možeš uneti listu stavki koje će se pojavljivati u kombo boksu. Svaku stavku moraš smestiti u zasebnu liniju. Kada uneseš stavku pritisni Enter kako bi napravio novi red. U prozor unesi vrednosti 12, pritisni enter, 13, pritisni enter, 14, pritisni enter i 15. Klikni na dugme OK kako bi zatvorio prozor.
Lekcija 04 – Kazablanka, Maroko 10
Komandna dugmad Tekst boks se može koristiti za prikazivanje informacija korisniku ili za prikupljanje informacija od korisnika. U prozoru alata dva puta klikni na tekst boks kontrolu. Textbox1 biva dodat tvojoj formi. Prevuci (na prethodno opisani način) Textbox1 na desnu stranu labele Label1. Pronađi Text osobinu, dva puta klikni na nju i pritisni dugme za brisanje da obrišeš tekst. Podesi osobinu ReadOnly na False kako bi korisnik mogao da unosi tekst u tekst boks. False bi trebalo da bude unapred definisana vrednost. Dodaj dugme na formu. Text osobinu podesi na „Nabavi gume“. Promeni BackColor (boja pozadine) u Red (crvena). Pronađi Font osobinu. Klikni na font kako bi se prikazalo elipsis dugme. Klikni na elipsis dugme kako bi prikazao paletu Fontova (tipova slova). U paleti fontova promeni Font Style u Bold (masna slova). Klikni na OK da zatvoriš paletu fontova. Prevedi svoju soluciju (Build opcija) i pokreni projekat (Run). Probaj da klikćeš na različite kontrole koje si dodao na formu. Šta se dešava kada klikneš na kombo boks? Šta se dešava kada izabereš neko od radio dugmadi, neko drugo radio dugme ili ček boks? Unesi neki tekst u tekst boks pored labele „Unesi Tablicu“. Zapazi da je drugi tekst boks siv i da ne možeš da uneseš tekst u njega. Klikni na „X“ u gornjem desnom uglu da zatvoriš aplikaciju. Da li si primetio da si upravo napravio „Formu Izbušenih Guma“ ? Uz put si naučio nešto o osnovnim tipovima kontrola i o njihovim osobinama. Da bi od ovoga napravio pravu, operativnu formu u sledećem koraku moraš dodati Visual Basic.NET kôd formi i kontrolama. Budi siguran da si dobro naučio sve o osobinama svake od kontrola koje si dodao na formu. Da bi forma lepše izgledala, možeš preurediti raspored kontrola. Možeš Savet instruktoru dodati labele kako bi korisniku dao Učenik bi trebalo da koristi prozor sa instrukcije, koje informacije treba da unese. Osobinama da se kreće kroz osobine Šta misliš, kako treba kontrole da budu svake od kontrola. raspoređene? Koja kontrola treba da bude prva? Koja kontrola treba da bude poslednja?
Lekcija 04 – Kazablanka, Maroko 11
Forma i mnogi objekti imaju iste Osobine. Neke od najčešćih su:
BackColor (boja pozadine) Enabled (Aktivan) ForeColor (boja) Location (lokacija) Name (ime) Size (Height, Width) (veličina) Text (tekst) Visible (vidljiv)
U J# i C# dizajn formi je potpuno isti kao i u VB.NETu. To je lak posao zahvaljujući Visual Studio.NETu. Potrebno je samo da otvorimo prozor alata i prevučemo kontrole na formu. Onda otvorimo prozor sa osobinama i podesimo osobine.
04 Dokaži 01 Ko je Ko
Lekcija 04 – Kazablanka, Maroko 12
Da li bi hteo da saznaš nešto više o ljudima koji idu na ovaj put sa tobom? Trebalo bi da pokažeš da znaš kako se boje forme, menjaju osobine objekatakontrola??? postavljenih na formu uz pomoć prozora sa osobinama. Ako obojiš formu ispravno, i pridodaš kôd koji će ti biti dat, naučićeš mnogo o svojim saputnicima. Preuzmi 04_Dokazi_01 kôd (soluciju) od svog instruktora ili sa web sajta kursa, ako kurs pratiš putem interneta. Smesti soluciju u zaseban folder. Trebalo bi da dobiješ dva foldera (bin, obj) i 7 fajlova. Otvori Visual Studio.NET, izaberi Existing Project i pronađi fajl WhosWho.sln. Kao alternativu možeš koristiti MyComputer, pronaći WhosWho.sln, dva puta kliknuti na njega i on će se otvoriti u Visual Studio.NETu. Tvoj zadatak je da dodaš objekte iz prozora alata tako da forma izgleda kao forma na slici. Takođe ćeš promeniti osobine forme kao što je opisano dole.
Lekcija 04 – Kazablanka, Maroko 13
1. Klikni jednom na formu da je označiš, a onda koristi prozor sa osobinama da promeniš ime forme u Ko je Ko. 2. Postavi dva ček boksa na formu. Ostavi predefinisana imena CheckBox1 i CheckBox2. Promeni osobinu Text u Pokazi Sliku i Pokazi Biografiju. 3. Postavi pet radio dugmadi na formu. Promeni Text osobinu Ivana, Miloš, Jovana, Dragan i DJ Braca. Ostavi imena kao RadioButton1, RadioButton5. 4. Postavi tekst boks nazvan TextBox1. 5. Postavi kontrolu slike (picture box control) sa predefinisanim imenom PictureBox1. Upotrebi prozor sa osobinama da podesiš visinu na 160 (osobina Height) i širinu (osobina Width) na 140. Ove osobine ćeš pronaći kad klikneš na plus znak osobine Size. 6. Postavi tekst boks nazvan TextBox1. Ovde moraš izvesti nekoliko promena osobina. Redosled ovih promena je jako bitan! Želiš da boks bude dovoljno veliki da prikaže nekoliko linija biografije. Visual Basic ti neće dopustiti da menjaš visinu tekst boksa dok Multiline osobinu ne podesiš na True. Visual Basic zna da ako dozvoljavaš samo jedan red teksta nema razloga da imaš veliki tekst boks. Sad podesi visinu boksa na 120. Na kraju, Scrollbars (klizači) osobinu podesi na Vertical, u slučaju da imaš više linija teksta nego što može da stane u boks. 7. Postavi dugme nazvano Button1. Podesi Text osobinu na Exit. Jednom kada si kreirao formu, prevedi soluciju. Ako nema grešaka pri prevođenju, izaberi Debug/Start kako bi pokrenuo program. Ako tvoj program korektno radi, pokaži ga instruktoru. Savet instruktoru Učenik postavlja objekte na delimično završen program. Učenik ne kuca nikakav kôd.
Lekcija 04 – Kazablanka, Maroko 14
Okidački događaji Događaji bivaju okinuti akcijom korisnika. Na primer, kada korisnik klikne na dugme, izabere opciju iz kombo boksa ili promeni tekst u tekst boksu, događaj biva generisan. Akcija korisnika, kao što je klik ili dupli klik na kontrolu ili prevlačenje kursora preko kontrola takođe generiše događaje. Ove događaje koristiš za izvršavanje Visual Basic.NET kôda povezanog sa njima. VB.NET kôd čini da program radi ono što treba da radi. Kada si napisao ZdravoSvete aplikaciju, dva puta si kliknuo na dugme i pojavio ti se prozor sa kôdom kako bi dodao svoj kôd za Button1_Click događaj. Button1_Click događaj je osnovni događaj za dugme. Svaka kontrola ima svoj osnovni događaj. Kada si u dizajn (design) modu, dva puta klikni na kontrolu i dobićeš prozor sa kôdom za osnovni događaj. Na primer : Za dugme, osnovni događaj je Klik (Click) Za tekst boks, osnovni događaj je promenjen tekst (TextChanged) Za Radio dugme, osnovni događaj je promena stanja (CheckedChanged) Za Ček boks, osnovni događaj je promena stanja (CheckedChanged) Za Kombo boks, osnovni događaj je promena izabranog elementa (SelectedIndexChanged) Da bi ti pokazali kako ovo radi, dodajmo neki kôd u osnovne događaje kontrola na formi za Izbušene Gume. Forma će prikazati prozor sa porukom koji će pokazati tip kontrole koja je poslala događaj. U dizajn modu dva puta klikni na svaku od kontrola koje si dodao na formu. Prozor sa kôdom će se pojaviti sa osnovnim događajem za svaku kontrolu. Iskopiraj ???? ovu liniju kôda u svaki kontrolor događaja (event handler): MessageBox.Show(sender.GetType.Name) Prevedi tvoju soluciju i startuj projekat. Klikni na različite elemente forme, promeni tekst u tekst boksu i izaberi stavku iz kombo boksa. Za svaku kontrolu, osnovni događaj biva okinutgenerisan i prozor sa porukom se prikazuje sa tipom kontrole koja je poslala događaj. Da je forma za izbušene gume deo realne aplikacije, dodao bi kôd osnovnim događajima da obezbediš funkcionalnost zahtevanu od strane tvog programa. Na primer, kada klikneš na dugme Nabavi gume, lista guma na raspolaganju bi bila prikazana u tekst boksu.
Lekcija 04 – Kazablanka, Maroko 15
Savet instruktoru Povremeno će učenici greškom dva puta kliknuti na pogrešnu kontrolu, kao što je labela pri čemu će kreirati kôd klik događaja. Najčešće je sve u redu ako učenik obriše neželjeni kôd. Nekada VB kreira kôd kao dodatak kôdu klik događaja. I to treba biti obrisano da bi se uspešno preveo program. U suprotnom će prevodilac javiti grešku.
U C#u i J#u kontrole imaju iste događaje kao i u VB.NETu. To je zbog toga što .NET okruženje i Visual Studio.NET to omogućavaju i olakšavaju programiranje.
Dijalozi sa porukama Sada kada već razlikujemo Dijaloge i Prozore, prozore sa porukom (MessageBox) možemo nazvati pravilno „Dijalozi sa porukom“. Često će tvoj program morati da šalje poruke korisniku i pokupi korisnikov odgovor ili primi unos korisnika. U stvari, ovakvi tipovi objekata su toliko česti, da Visual Studio.NET već ima MessageBox objekat napravljen da upravlja njima. U prvom programu koji si napisao, koristio si liniju kôda koja je prikazivala dijalog sa porukom. MessageBox.Show(„Zdravo, Svete“) Dijalog sa porukom je tip forme ugrađen u VB.NET. Ne moraš da dodaš dijalog sa porukom svome projektu da bi ga koristio. Sve što treba da uradiš jeste da pozoveš njegov Show (Prikaži) metod i uključiš tekst koji želiš da prikaže dijalog. Sintaksa za prikaz Messagebox-a je sledeća: MessageBox.Show(„Tvoja poruka“) Zapazi da poruka koju želiš da prikažeš mora biti unutar znakova navoda. Hej, pogledaj kôd za MessageBox u C#u. Isti je i u J#u. { MessageBox.Show("Zdravo, Svete"); }
Lekcija 04 – Kazablanka, Maroko 16
Savet instruktoru MessageBox ima i kompleksniju formu gde prikazuje dugmeta na koja korisnik može kliknuti (na primer: Zes, No, Cancel). Programer može proveriti izbor korisnika. Kompleksni MessageBox-ovi se ne koriste u ovom kursu. Na primer, Dim IzborKorisnika as Integer IzborKorisnika = MessageBox.Show ("Pitanje ovde?", vbYesNo, "NaslovOvde") If IzborKorisnika = vbYes Then ‘ "yes" kôd ovde Else ‘ "no" kôd ovde End If
Lekcija 04 – Kazablanka, Maroko 17
Dolazak u Kazablanku Dobar posao sa pravljenjem forme za Izbušene Gume! Sad ti je jasno zašto volim toliko dizajn formi! Sad znam da ste svi spremni za Kazablanku! Probaj ove Dokaze, odgovori na Kviz pitanja i na putu si da postaneš profesionalni dizajner formi! 04 Dokaži 02 Cena Pizze Kakav bi to izlet bio bez Pizze? Pizzeria u Kazablanki ima program da pomogne mušterijama da sračunaju cenu svo je pizze. Kladim se da možeš da napišeš isti taj program. Sigurno možeš formu da napraviš. Mi ćemo ti dati kôd. Koristi 04_proveit02_template. Pronađi PizzaPrice.sln fajl. Klikni dva puta da njega da bi otvorio Visual Studio. Tvoj zadatak je da dodaš objekte iz palete sa alatima kako bi forma izgledala kao na sledećoj slici.
Potrebna su ti tri radio dugmeta, dve labele i osam ček boksova. Ne zaboravi da izmeniš tekst na vrhu forme. Program će izmeniti tekst label2 kontrole.
Lekcija 04 – Kazablanka, Maroko 18
Pizzeria naplaćuje $5 za osnovnu pizzu, $1 za dodatnu šunku i $0.50 za svako povrće koje dodaješ na pizzu. Za srednju pizzu dodaje se još 25%, a za veliku pizzu dodaje se 50%. Kada kreiraš formu, prevedi soluciju. Ako nema grešaka, izaberi Debug/Start da pokreneš program. Ako program korektno radi, pokaži ga instruktoru. Dodatak/Skretanje sa puta Prikaži cenu formatiranu tako da izgleda kao novac. Visual Basic.NET ima zgodnu funkciju za ovo. Smesti variablu unutar FormatCurrency funkcije na sledeći način: FormatCurrency(mojaVarijabla) Rezultat je prikazan kao novac. Dodaj boks sa slikom pizze.
Savet instruktoru FormatCurrency funkcija radi na osnovu sadržaja varijable, ne na osnovu samog objekta. Ako primenite FormatCurrency na tekst boks, ne znači da će on uvek biti formatiran. To znači da će sadržaj boksa biti formatiran u trenutku apliciranja funkcije. Ako sadržaj tekst boksa zamenite kasnije, formatiranje će nestati.
Lekcija 04 – Kazablanka, Maroko 19
04 Izazov Iks-Oks Pošto skoro svako od nas ima laptop, igrice su dobar način da se prekrati vreme. Tvoj zadatak, ako ga prihvatiš, je da napraviš klasičnu Iks-Oks igru koristeći Visual Basic.NET . Dragan je na nekom web sajtu našao kôd za program, međutim nedostaje forma. Moraš napraviti formu tako da odgovara kôdu. Ako to uradiš korektno imaćeš iks-oks igru. Uzmi 04_challenge_template kôd od instruktora ili sa web sajta ako pohađaš kurs putem interneta. Smesti soluciju u zaseban folder. Trebalo bi da imaš dva foldera (bin i obj) i sedam fajlova. Otvori Visual Studio.NET, izaberi Existing Project i pronađi fajl TicTacToe.sln. Kao alternativu, možeš koristiti MyComputer da pronađeš file TicTacToe.sln. Ako dva puta klikneš na njega startuje se Visual Studio.NET. Tvoj zadatak je da dodaš objekte iz palete sa alatima (toolbox) tako da ti forma ovako izgleda. Takođe ćeš izmeniti i osobine nekih kontrola, kao što je dole opisano. 1. Klikni na formu kako bi prebacio fokus na nju. Izmeni text osobinu u IksOks. 2. Kreiraj 9 labela sa imenima Label1-Label9. Poređaj ih tako da je Label1 u gornjem levom, a Label9 u donjem desnom uglu. Mnogo ćeš vremena uštedeti ako napraviš jednu labelu pa je iskopiraš i zalepiš još 8 puta. Lekcija 04 – Kazablanka, Maroko 20
Napravi sledeće izmene osobina svim labelama: Height Width Font BackColor
48 48 Microsoft Sans Serif Bold 36 Možeš ostaviti već podešenu sivu boju Može ostati već podešena vrednost
Text
3. Napravi labelu nazvanu Label10 ispod prethodnih 9 labela sa sledećim osobinama. Height Width Font BackColor Text
25 175 Microsoft Sans Serif Bold 16 Može ostati već podešena vrednost Može ostati već podešena vrednost
Savet instruktoru Velika slova L na prethodnoj strani su prva slova labele napisana velikim fontom.
4. Kreiraj tri labele nazvane Label11 do Label 13. Promeni text osobinu u „X pobedjuje“, „O pobedjuje“ i „Nerešeno“, kao što je pokazano u primeru. 5. Kreiraj tri tekst boksa nazvana TextBox1 do TextBox3. Postavi ih pored labela kreiranih u koraku 4. 6. Kreiraj dugme nazvano Button1, kao što je prikazano. Promeni njenu osobinu Text u „Igraj ponovo“. 7. Kreiraj dugme nazvano Button2, kao što je prikazano. Promeni njenu osobinu Text u „Kraj“. Jednom kada si kreirao formu, prevedi soluciju. Ako nema grešaka izaberi Debug/Start kako bi startovao program. Ako korektno radi, pokaži program instruktoru.
Lekcija 04 – Kazablanka, Maroko 21
Dodatak/Skretanje sa puta
Promeni BackColor forme Promeni tip slova (Font) svih dugmadi, tekst boksova itd. u neki font koji se lakše čita, kao što je Microsoft Sans Serif 10. Možeš li promeniti font svih kontrola tako što ćeš kliknuti na nju dok držiš taster CTRL pritisnut? Dodaj tekst boks za sva imena igrača.
Dolazak u Kazablanku Pošto stižemo u Kazablanku moraš da odradiš još jedan Kviz. Pomoći će ti da odgovoriš na neka pitanja koja će ti postaviti Organizacioni odbor. Srećno !
Lekcija 04 – Kazablanka, Maroko 22
Lekcija 05 – Kairo, Egipat
1
Osobine Kazablanka je baš bila zabavna! Znam da je to jedno od Miloševih omiljenih mesta. Miloš baš zna puno o dizajnu formi i njihovoj kontroli. Pokazao ti je kako da napraviš formu za izbušene gume. Mene je čak naučio par stvari o podešavanju osobina pomoću prozora sa osobinama. Ja ću da vozim do naše sledeće destinacije – Kairo, Egipat. Jesi li ikada bio tamo? To je mesto koje zahteva dobro vladanje. Moći ćeš da pokažeš kako si dobro vaspitan kad stignemo tamo. Uz put ću ti pokazati još par stvari o osobinama kontrola. Pokazaću ti kako da ih čitaš i postavljaš korišćenjem Visual Basic.NET kôda. Takođe ću ti objasniti i šta su metodi i kako da im pristupiš.
Lekcija 05 – Kairo, Egipat
2
Gde počinje kôd Zabavno je dizajnirati forme i postavljati osobine korišćenjem prozora sa osobinama. Ali, to je tek početak! Prozor sa osobinama jednostavan za upotrebu, ali ne pruža mnogo mogućnosti. Šta ako korisnik želi da promeni boju pozadine dok koristi tvoj program? Šta ako želi da promeni tip slova? Kako tvoj program zna da li je korisnik štiklirao ček boks ili izabrao neko radio dugme? Pošto tvoji korisnici neće imati pristup prozoru sa osobinama dok izvršavaju tvoj program, kako će ovo učiniti? Pa, odgovor je :Visual Basic.NET kôd! Sve ovo i još mnogo više možeš učiniti korišćenjem kôda. Napišeš kôd da pročitaš osobinu kontrole. Napišeš još malo kôda da je postaviš. Tako je jednostavno i veoma moćno. Za mene, ovde programiranje počinje.
Lekcija 05 – Kairo, Egipat
3
Gde sav ovaj kôd odlazi ? Napisaćeš svoj program na stranici kôda tvoje forme. U najvećem broju slučajeva kôd ćeš smestiti u kontrolore događaja (event handler) kontrola na tvojoj formi. Sećaš li se Klik događaja? Kada korisnik izvede neku radnju, kao što je klik na dugme, kôd koji napišeš za kontrolor ovog događaja biva izvršen i osobina kontrole pročitana ili postavljena. Kada dodaš kôd događajima kontrola na formi, činiš prvi korak ka pretvaranju tvoje forme u potpuno operativan program. Sećaš li se forme za izbušene gume koju si napravio ? Ona ne može da čini ništa dok joj ne dodaš kôd.
Sledeće što ću ti pokazati je par primera kako da pročitaš osobine kontrola na formi korišćenjem Visual Basic.NET kôda. Nakon toga ću ti pokazati kako da podesiš osobine.
Lekcija 05 – Kairo, Egipat
4
Čitanje osobina sa kôdom Pogledajmo neke primere kako da pročitamo osobine putem Visual Basic.NET kôda. Za početak ću ti pokazati kako da pročitaš neke jednostavne osobine koje se obično podešavaju korišćenjem prozora sa osobinama. Nakon toga ću ti pokazati kako da pročitaš osobine koje korisnik može da menja u toku izvršenja programa. Hajdemo ! Napravi novu Windows aplikaciju i nazovi je CitanjeOsobina. Otvori paletu sa alatima (Toolbox) i dodaj dugme na Form1. Otvori prozor sa osobinama i promeni Text osobinu tvog dugmeta na „Citaj Text“. Klikni dva puta na Button1 da bi dodao kôd događaja. Ukucaj sledeći kod: MessageBox.Show(Button1.Text) Prevedi i pokreni tvoju aplikaciju. Klikni na dugme „Citaj Text“. Pojaviće se dijalog sa porukom i pokazati Text osobinu dugmeta, što je u ovom slučaju „Citaj Text“. Vidi ovo: tvoj kôd čita Text osobinu dugmeta i prikazuje njenu vrednost kao poruku. Ludo! Evo još jednog primera. Dodaj još jedno dugme na formu Form1. Koristi prozor sa osobinama da promeniš Text osobinu Button2 u „Veličina forme“. Klikni dva puta na Button2 da bi dodao kôd. Ukucaj sledeće : MessageBox.Show(Form1.ActiveForm.Height & „,“ & Form1.ActiveForm.Width) Prevedi i pokreni program. Klikni na dugme „Velicina Forme“. Dijalog sa porukom pokazuje: 300,300 (ili nešto blisko tome ukoliko si menjao originalne dimenzije forme). Tvoj kôd je upravo prikazao Visinu i Širinu forme razdvojene zarezom! Interesantno zar ne? A bilo je i jednostavno. Koje još osobine može Visual Basic.NET kôd da čita? Visual Basic.NET kôd može da čita sve osobine forme ili kontrola na formi koje se pojavljuju u prozoru sa osobinama. Tvoj kôd može čitati osobine kao što su Visina i Širina, boja pozadine (BackColor), boja (ForeColor) i X i Y lokacije. Sa druge strane, mnoge osobine koje se mogu videti u prozoru sa osobinama su podešene prilikom prvobitnog dizajna forme i ne menjaju se kada se program izvršava. Zato njihovo čitanje uz pomoć kôda nije baš tako interesantno niti korisno.
Lekcija 05 – Kairo, Egipat
5
Ono što je stvarno korisno je čitanje osobina kontrola na formi koje korisnik može da menja kada koristi tvoj program, kao što je Text osobina tekst boksa ili Checked (štiklirano) osobina ček boksa. Ovako tvoj program dobija informacije od korisnika. Koji broj tablice je Jovana unela? Koja je guma probušena? Koju dimenziju gume je Miloš izabrao? Evo jednog praktičnijeg primera. Napišimo kôd koji pokazuje da li je ček boks štikliran ili ne. Otvori paletu sa alatima i dodaj CheckBox na formu. Dodaj još jedno dugme na formu. Otvori prozor sa osobinama i promeni Text osobinu dugmeta3 (Button3) u „Stikliraj Me“. Dva puta klikni na Button3 kako bi izmenio kôd događaja. Ukucaj sledeći kôd u Click događaj MessageBox.Show(CheckBox1.Checked) Prevedi i pokreni program. Klikni na dugme „Stikliraj Me“. Šta pokazuje dijalog sa porukom? Štikliraj ček boks i klikni ponovo na dugme. Šta sada pokazuje dugme dijalog? Svaki put kad klikneš na dugme dijalog pokazuje trenutnu vrednost Checked osobine ček boksa. Trebalo bi da kaže True (Istinit). Savet instruktoru Učenik mora da zna kako da čita i menja osobine uz pomoć kôda. Dok ne nauče osnove IF naredbi postojaće određena ograničenja po pitanju kompleksnosti programa.
Lekcija 05 – Kairo, Egipat
6
A sada poslednji primer. Pokazaću ti kako da pročitaš i prikažeš reči koje korisnik ukucava u tekst boks. Dodaj jedan tekst boks na Form1. Otvori prozor sa osobinama i uveri se da je ReadOnly (samo za čitanje) osobina podešena na False (Netačno). Postavi Text osobinu na „Ovde kucaj“. Dodaj četvrto dugme na Form1. Promeni Text osobinu dugmeta Button4 u „Procitaj tekst“. Klikni na Button4 kako bi dodao kôd. Ukucaj sledeći kôd: MessageBox.Show(TextBox1.Text) Prevedi i startuj tvoj projekat. Klikni dva puta na TextBox1 i pritisni dugme Backspace na tastaturi da obrišeš tekst. Ukucaj neki novi tekst u TextBox1. Klikni na dugme „Procitaj tekst“. Šta prikazuje dijalog sa porukom? Promeni tekst u TextBox1 i klikni ponovo na dugme „Procitaj tekst“. Šta se dešava? U J# i C# osobine kontrola na formi se čitaju na isti način kao u Visual Basic.NETu. Evo primera J# ili C# kôda koji prikazuje Text osobinu tekst boksa: { MessageBox.Show(textBox1.Text); } Ako izuzmemo vitičaste zagrade i tačku-zarez na kraju linije, kôd izgleda isto kao u Visual Basic.NETu. Takođe, u J#u i C#u textBox1 počinje sa malim t. Primeri koje sam ti demonstriraju kako se Visual Basic.NET kôd koristi da pročita osobine kontrola na formi. Ali, to je samo polovina priče, zato što se Visual Basic.NET kôd koristi i za postavljanje osobina.
Lekcija 05 – Kairo, Egipat
7
Postavljanje osobina putem kôda Divno je biti u mogućnosti da pročitaš osobine kontrola korišćenjem Visual Basic.NET kôda. Tako naš kôd može da uhvati promene koje korisnik napravi dok koristi program. Tvoj program može obavljati različite radnje ili pokretati različite delove programa u zavisnosti od podešavanja koja je korisnik postavio. Da li je i suprotno tačno? Šta ako hoću da postavim vrednosti nekih osobina dok korisnik koristi program? Na primer, hoću da imam „Hitan posao“ ček boks uvek štikliran kada korisnik pokrene program. Želim da mi program prikaže sve dimenzije guma koje su na raspolaganju u tekst boksu kada korisnik klikne na dugme „Nabavi gume“. Želim da lista guma na raspolaganju bude automatski učitana u padajuću listu nakon što korisnik ukuca registarski broj vozila. Naravno, Visual Basic.NET mi dopušta da sve ovo izvedem! Postavljanje vrednosti osobina neke kontrole je jednostavno kao i njihovo čitanje. Da bi postavili vrednost osobine korišćenjem Visual Basic.NET kôda mi ćemo koristiti naredbu dodele. Sećaš li se da smo razgovarali o ovome ranije ? Naredba dodele vrši dodelu vrednosti jedne stvari drugoj. Kôd dodele izgleda kao jednostavna jednačina sa znakom jednakosti u njoj. TextBox1.Text = „Programiranje je zakon“ Desna strana naredbe dodele (deo sa desne strane znaka jednakosti) se prvo proverava. Nakon toga se proverava leva strana (levo od znaka jednakosti) i njoj se dodeljuje vrednost sa desne strane.
Savet instruktoru Često podsećajte učenike da u .Net jezicima dodela ide sa desna na levo. Veoma važno je da se ono što je na desnoj strani znaka jednakosti ne menja. Sadržaj desne strane znaka jednakosti se izračunava u Visual Basicu pa onda biva dodeljen varijabli. Samo se menja leva strana varijable.
Lekcija 05 – Kairo, Egipat
8
Evo nekih primera kako podesiti osobine korišćenjem Visual Basic.NET kôda. Prvi primer postavlja tekst tekst boksa. Ovo je divan način prikazivanja informacija korisniku – može se koristiti umesto dijaloga sa porukom koji bi stalno iskakali. Napravi novu Windows aplikaciju i nazovi je PostaviOsobine. Dodaj dva tekst boksa i dugme na Form1. Koristi prozor sa osobinama da postaviš Text osobinu dugmeta na „Postavi tekst“. Postavi Text osobinu TextBox1 i TextBox2 na prazno tako što ćeš po dva puta da klikneš na njih i pritisneš dugme za brisanje (Backspace). Klikni dva puta na Button1 kako bi izmenio kôd događaja. Dodaj sledeću liniju kôda: TextBox2.Text = TextBox1.Text Prevedi i pokreni projekat. Unesi neki tekst u TextBox1 i klikni na „Postavi tekst“ dugme. Šta se dešava? Kao što vidiš, tekst iz TextBox1 je iskopiran u TextBox2. Text osobina TextBox2 je postavljena na vrednost iste osobine TextBox1. Visual Basic.NET kôd čita Text osobinu TextBox1 i onda postavlja Text osobinu TextBox2 na tu vrednost. Baš zgodno, zar ne ? Hajde da dodamo kôd koji će jedan ček boks postaviti na „štiklirano“, a drugi na „ne štiklirano“ kada startujemo program. Dodaj ček boks na formu i podesi osobinu Text na „Hitan posao“. Dodaj drugi ček boks na Form1 i podesi Text osobinu na „Bilo kada“. Dva puta klikni na formu Form1 (ne na CheckBox1 ili CheckBox2). Ovo otvara Form1_Load događaj, tj njegov kôd spreman da ga izmeniš. Kôd u Form1_Load događaju se izvršava kada se forma kreira i prikazuje, pre izvršenja bilo kog drugog dela kôda. Dodaj sledeće dve linije kôda. CheckBox1.Checked = True CheckBox2.Checked = False Prevedi i pokreni tvoj projekat. Koji od ček boksova je štikliran? Tvoj kôd automatski postavlja Checked osobinu dva ček boksa kada se forma učita.
Lekcija 05 – Kairo, Egipat
9
Znam da je 14 najčešća dimenzija pneumatika. Hajde da uz pomoć kôda automatski izaberemo veličinu 14 u našem kombo boksu (combobox). Prvo dodaj kombo boks na Form1. Koristeći prozor sa osobinama postavi Items (stavke) osobinu na 12,13,14,15 i 16. Ne zaboravi da pritisneš taster Enter kako bi kreirao novu liniju za svaku stavku u listi. Dva puta klikni na Form1 (ne na ComboBox1) kako bi izmenio Form Load kôd. Dodaj sledeću liniju kôda: ComboBox1.SelectedItem = "14" Prevedi i pokreni projekat. Koja je stavka izabrana u kombo boksu? Joj, potkrala mi se jedna greška. Najčešća dimenzija pneumatika je izgleda 13. Kako bi izmenio kôd da automatski bira 13 iz kombo boksa? U J#u i C#u možeš postavljati osobine baš kao i u Visual Basic.NETu. Kôd dole pokazuje kako se postavlja Checked osobina ček boksova u C#u ili J#u. { checkBox1.Checked = True; }
Lekcija 05 – Kairo, Egipat
10
05 Dokaži 01 Duga Inspirisani divnom dugom koju su videli sa prednjeg sedišta našeg doma na točkovima, naši saputnici su odlučili da vide da li je moguće programom imitirati stvari iz života. Tvoj zadatak je da dokažeš da možeš manipulisati osobinama uz pomoć VB kôda, ne samo prozora sa osobinama. Otvori Visual Studio .NET, izaberi Existing Project, i pronađi fajl nazvan Rainbow.sln. Kao alternativu možeš koristiti MyComputer da nađeš Rainbow.sln, dva puta klikneš na njega i Visual Studio .NET će se otvoriti. Tvoj zadatak je da dodaš objekte iz palete sa alatima tako da ti forma bude kao na slici. Takođe ćeš uraditi izmene kôda kao što je dole naznačeno. 1. Klikni na formu kako bi joj dao fokus. Promeni Text osobinu forme u Duga. 2. Napravi veliki okvir za sliku (Picture box) nazvan PictureBox1. 3. Napravi dva dugmeta Button1 i Button2. Označi Button1 kao „Standardne boje“. Označi Button2 kao „Slobodne boje“.
Lekcija 05 – Kairo, Egipat
11
Dva puta klikni na Button1 da vidiš kôd koji je već generisan umesto tebe. Vidiš da se iscrtava sedam duginih boja. Svih sedam se iscrtava u crnoj boji. Tvoj zadatak je da to izmeniš i napraviš sedam standardnih duginih boja: Crvena (Red), Narandžasta (Orange), Žuta (Yellow), Zelena (Green), Plava (Blue), Indigo (Indigo), Ljubičasta (Violet). Na primer, zameni ovaj kôd : MyPen.Color = System.Drawing.Color.Black Sa ovim kôdom MyPen.Color = System.Drawing.Color.Red Kad god tačka sledi nakon reči Color, Intellisense lista sve definisane boje. Ako ukucaš jedno ili dva slova bićeš pozicioniran u listi na odgovarajuću boju. 5. Dva puta klikni na Button2 da vidiš kôd koji je već pripremljen za tebe. Umesto crne (Black), izaberi bilo koju od sedam boja. Kada si kreirao formu, prevedi soluciju. Ako nema grešaka, izaberi Debug/Start kako bi ga pokrenuo. Ako ti program radi ispravno, pokaži ga instruktoru. Dodatni izazov Ako želiš, možeš napraviti izmene parametara naredbe DrawArc za opciju „Slobodne boje“ kako bi dobio druge interesantne rezultate.
Savet instruktoru Funkcija DrawArc je oval ograničen nevidljivim trouglom. Parametri specificiraju veličinu trougla, gde počinje luk i koliko daleko ide. Promena parametara može napraviti zanimljive efekte.
Lekcija 05 – Kairo, Egipat
12
IntelliSense i Dot notacija Sada znaš kako da pišeš Visual Basic.NET kôd za čitanje i postavljanje svih osobina formi i kontrola na formi. Da, baš svih! To je baš mnogo stvari! Kladim se da znam koje je tvoje sledeće pitanje. Pošto svaka forma i kontrola ima toliko mnogo osobina, kako da zapamtim šta je šta? Nije baš zgodno stalno se prebacivati na prozor sa osobinama i natrag na prozor sa kôdom kad god mi treba da znam koja osobina pripada kojoj kontroli. Postoji li jednostavniji način? Da, postoji. Zove se IntelliSense. Deo je Visual Studia. IntelliSense štedi mnogo vremena kada pišeš kôd u prozoru kôda. IntelliSense zna na koju komandu se referenciraš i zna koje su joj osobine. On ispisuje listu osobina i dozvoljava ti da izabereš onu koju želiš da koristiš. Najčešće korišćena osobina je naglašena kada se ispiše IntelliSense lista. Na primer, Text osobina tekst boksa je inicijalno naglašena. Koristi strelice na gore i na dole da pronađeš osobinu koju želiš. Kada pritisneš taster Tab, on dodaje osobinu tvome kôdu. Sa IntelliSense-om ne moraš da pamtiš sve osobine svih kontrola. On štedi mnogo vremena kod kucanja! Ja ga stalno koristim.
Savet instruktoru Ako je moguće, demonstrirajte intellisense. Naglasite da čim otkucate tačku, izbori se pojave. Ako se nikakav izbor ne pojavi, vrlo je verovatno da je varijabla nedefinisana ili netačno otkucana.
Lekcija 05 – Kairo, Egipat
13
Vidi ovo! Napravi novu Windows aplikaciju nazvanu IntelliSense. Dodaj tekst boks i dugme na Form1. Dva puta klikni na dugme kako bi otvorio kôd za klik događaj vezan za Button1. 1.
Ukucaj TextBox1 i pritisni tačku (.) na tastaturi. (Ne zaboravi ovo). Čim pritisneš tačku IntelliSense prikazuje listu osobina za TextBox1. Pošto je TextBox1 tekst boks, ova lista je ista kao i za bilo koji drugi tekst boks koji bi dodao na formu. Uvek će biti prvo izabrana ona osobina koju najčešće koristiš. U ovom slučaju Text osobina je unapred izabrana.
2.
Sad ukucaj slovo „R“. IntelliSense odlazi do prve osobine u listi koja počinje slovom „R“. Kako dalje kucaš slova. IntelliSense pronalazi osobine koje najviše odgovaraju onome što si ukucao.
3.
Koristi strelicu na dole da se krećeš kroz listu i lociraš Text osobinu ponovo. Izaberi Text
Lekcija 05 – Kairo, Egipat
14
osobinu kako bi je označio. 4.
Pritisni Tab taster. Vidi šta se dešava! Reč Text se pojavila u kôdu nakon TextBox1. Sad ukucaj =“Milosh“. Kôd bi trebalo da izgleda sad ovako: TextBox1.Text = "Milosh"
Nije li to bilo brzo i jednostavno? IntelliSense pomaže da se eliminišu greške u kucanju i sintaksne greške. Najbolji je!
Verovatno si primetio da pored svake od stavki u listi stoji ikona. Ikona koja označava Osobinu (Property) je ruka koja ukazuje na listu. Ikona koja označava Metod (Method) je purpurna kocka ili purpurni dijamant. (Za koji minut ću ti objasniti Metode). U zavisnosti od kontrole možeš videti i druge ikone za dodatne atribute te kontrole.
Da li si primetio da moraš da pritisneš tačku kako bi se IntelliSense lista pojavila? Ovo je zato što Visual Basic.NET koristi tzv. „Dot notaciju“. Nakon što ukucaš ime kontrole, kao recimo TextBox1, moraš da ukucaš tačku (engl. Dot, Period). Nakon toga ukucavaš ime osobine. Tačka je ono što
Lekcija 05 – Kairo, Egipat
15
spaja kontrolu sa njenom osobinom. Evo osnovne sintakse za referenciranje osobine kontrole ili forme korišćenjem dot notacije: ImeForme.OsobinaForme ImeKontrole.OsobinaKontrole Video si već dosta primera, ali evo još par drugih: TextBox1.Text CheckBox1.Checked Form1.ActiveForm.Height Obrati pažnju na tačku koja spaja kontrolu sa njenom osobinom. U poslednjem primeru, ActiveForm je osobina Form1, a Height (visina) je osobina ActiveForm. Zbog toga su potrebne dve tačke koje povezuju osobine u jednu celinu. IntelliSense zna kada osobina ima sopstvenu osobinu. Kada se dvoumiš, otkucaj još jednu tačku i IntelliSense će izbaciti listu svih raspoloživih osobina. Ako nema liste, onda dodatnih osobina i nema, pa ćeš morati da ukloniš poslednju tačku. A možda si i pogrešno napisao ime kontrole. Kada razvijaš C# i J# aplikacije koristeći Visual Studio .NET, IntelliSense je takođe dostupan. Radi na potpuno isti način kao i u Visual Basic.NETu . Samo ukucaj ime kontrole, pa tačku. IntelliSense izbacuje spisak raspoloživih osobina i metoda. Lista osobina i metoda je ista za sve jezike Visual Basic.NET, C# i J# jer su svi bazirani na .NET okruženju (engl. Framework). Tekst boks u C#u, J#u i Visual Basic.NETu ima iste osobine i metode.
Lekcija 05 – Kairo, Egipat
16
Metodi Verovatno si primetio da neke od osobina u IntelliSense listi ima purpurni dijamant pored. To nisu osobine. To su metode. Osobine su karakteristike kontrole, kao što su karakteristike vozila boja, broj sedišta, broj konjskih snaga.. Metode su nalik akcijama kontrole, kao što su recimo skretanje levo, zaustavljanje i gas do daske akcije vozila. Metodima se ne može pristupiti kroz prozor sa osobinama. Moraju biti pozvani uz pomoć kôda. Na primer, najveći broj kontrola forme ima Hide (sakrij) metod i Show (prikaži) metod. Kada pozoveš Hide metod kontrole, ona prestaje da bude vidljiva iako je još uvek na formi. Kada pozoveš Show metod, kontrola postaje vidljiva. Neki metodi ti dopuštaju da izazoveš akciju koju bi normalno korisnik pokrenuo. Na primer, dugme ima PerformClick (IzvediKlik) metod, koji omogućava tvom kôdu da klikne na dugme, imitirajući akciju korisnika. Neki metodi zahtevaju od tebe da uključiš određene informacije kada pozivaš metod. Ove informacije utiču na to kako se metod ponaša i na rezultate njegove akcije. Ovi delovi informacije se nazivaju argumenti metoda. Metod može da zahteva jedan ili više argumenata. Neki argumenti mogu biti opcioni. Na primer, Show metod dijaloga sa porukom zahteva tekst string (niz karaktera) kao argument. Ovaj argument odlučuje šta dijalog sa porukom prikazuje. Već si koristio Show metod dijaloga sa porukom, ali to verovatno nisi shvatio. MessageBox.Show(„Zdravo Svete“) U kôdu gore „Zdravo Svete“ je argument Show metoda. Argument određuje šta je prikazano u dijalogu sa porukom. Zapamti, glavna razlika između osobina i metoda je da metodi vrše akciju. Metodi moraju biti pozvani iz kôda i ne može im se pristupiti iz prozora sa osobinama. Neki metodi mogu zahtevati jedan ili više parametara (argumenata) kada ih pozivaš. Neki metodi vraćaju vrednost koju možeš koristiti u svom kôdu.
Lekcija 05 – Kairo, Egipat
17
Pozivanje metoda iz kôda Sintaksa pozivanja metoda je ista kao da čitaš ili postavljaš vrednost osobine. Koristi se dot notacija za povezivanje kontrole sa njenim metodom. Neki metodi, kao što su Button.Hide i Button.Show ne zahtevaju argumente. Drugi kao što je recimo MessageBox.Show zahtevaju argument da bi znali šta da prikažu. Sintaksa pozivanja metoda je: ImeKontrole.ImeMetoda(argument1, argument2, itd.) Sećaš se korišćenja Show metoda MessageBox-a kada si davao argumente: MessageBox.Show(„Zdravo Svete“) Kao što možeš videti, velika razlika između pozivanja metoda i čitanja ili postavljanja osobine je da nema znaka jednakosti kod pozivanja metoda. Bacimo pogled na neke od mojih omiljenih metoda i na način njihovog pozivanja iz kôda. Pokazaću ti kako da sakriješ i prikažeš kontrole na formi, obrišeš tekst iz tekst boksa i postaviš kursor na određeno mesto. Za početak, napravi novu Windows aplikaciju nazvanu Metodi. Dodaj dva dugmeta i tekst boks na Form1. Promeni Text Button1 u „Prikaži“. Promeni Text Button2 u „Sakrij“. U kontrolu klik događaja Button1 dodaj sledeći kôd: TextBox1.Show() U klik događaj Button2 dodaj sledeći kôd : TextBox1.Hide() Prevedi i pokreni aplikaciju. Klikni na dugmeta „Sakrij“ i „Prikaži“. Svaki put kad klikneš na dugme pozivaš metod kontrole dugmeta.
Lekcija 05 – Kairo, Egipat
18
Dodaj treće dugme na Form1. Postavi Text osobinu ovog dugmeta na „Reset“. Dodaj sledeći kôd u klik događaj Button3: TextBox1.ResetText() TextBox1.Focus() ResetText metod čisti Text osobinu tekst boksa. Focus metod postavlja kursor u tekst box. Prevedi i pokreni aplikaciju. Unesi neki tekst u tekst boks i klikni na Reset dugme. Tekst unutar tekst boksa biva obrisan i kursor automatski postavljen u tekst boks – spreman za unos.
Savet instruktoru Česta alternativa komandi TextBox1.ResetText() je dodeljivanje praznog stringa TextBox1.Text = “” gde znaci navoda nemaju ništa između.
Kao što pretpostavljaš, možeš zvati metode u J#u i C#u isto kao i u Visual Basic.NETu. Evo nekog J# kôda koji briše tekst u tekst boksu i postavlja kursor u tekst boks. C# kôd izgleda potpuno isto. { textBox1.ResetText(); textBox1.Focus(); }
Lekcija 05 – Kairo, Egipat
19
Dolazak u Kairo Evo nas na prilazu Kairu. Puno smo naučili uz put. Sada znaš kako da čitaš i postavljaš osobine i pozivaš metode kontrola na formi korišćenjem Visual Basic.NET kôda. Kao što si primetio, najveći deo kôda ide u kontrolore događaja (event handlere) kontrola. Da bi otvorio kôd događaja samo dva puta klikni na kontrolu – prozor kôda (Code Window) se otvara i kontrolor događaja je spreman za izmenu i dopunu. Da bi čitao ili postavio osobinu, ili pozvao metod, ukucaj ime kontrole i onda otkucaj tačku. IntelliSense pokazuje listu raspoloživih osobina i metoda za tu kontrolu. Izaberi onu koju želiš i pritisni taster Tab da bi je dodao u kôd. Imamo dovoljno vremena za jednu ili dve igre Dokaza i brzi kviz pre nego što se presvučemo za večernji izlazak u Breskve i Bas Kafe. Spreman?
Lekcija 05 – Kairo, Egipat
20
05 Dokaži 02 Merač puta Kul mapa puta je inspirisala Ivanu da pita da li neko može da napiše program koji pokazuje procenat pređenog puta kad god prilazimo nekom od odredišta. Tvoj zadatak je da pokažeš da znaš da manipulišeš osobinama korišćenjem stvarnog VB kôda, ne samo prozora sa osobinama. Otvori Visual Studio .NET, izaberi New Project i kreiraj projekat nazvan MeracPuta. Tvoj zadatak je da dodaš objekte iz palete sa alatima tako da forma izgleda ovako nekakona sledeći način. Takođe ćeš izmeniti linije kôda onako kako je to dole opisano. 1. Klikni na formu i promeni joj ime u Merac Puta. 2. Kreiraj 12 radio dugmadi. Postavi širinu (Width) svakog dugmeta na 150 piksela. Možda ćeš želeti da koristiš opcije Copy/Paste. 3. Poravnaj ih vertikalno i učini da su podjednako razmaknuta. Znaš li da na liniji alata (tool bar) imaš ikone samo za ovu namenu? Postavi kursor na liniju alata i prelazi njim preko dugmeta dok ne nađeš odgovarajuće, onda klikni na njega.
Lekcija 05 – Kairo, Egipat
21
4.
Promeni tekst dugmeta u sledeće: Početak: Kopenhagen, Danska Milano, Italija Barcelona, Španija Kazablanka, Maroko Kairo, Egipat Damask, Sirija Sofija, Bugarska Kijev, Ukrajina Katmandu, Nepal Kuala Lumpur, Malezija Peking, Kina Kraj: Seul, Koreja
5. Kreiraj dugme nazvano „Kraj“. Klikni dva puta na njega da dobiješ kôd. Ukucaj reč End u klik događaj. 6. Postavi vertikalni klizač na tvoju stranu. Možda ćeš morati da se krećeš gore-dole u paleti sa alatima korišćenjem malih trouglića. Klizač, po osnovnoj postavci počinje sa 0, a završava sa 100. Ovako dobijaš baš debeo klizač. Da bi ga suzio podesi Maximum parametar na 1000. 7. Sada možeš da pišeš kôd. Klikni dva puta na prvo radio dugme. Ukucaj ovu liniju kôda u klik događaj: VscrollBar1.Value = 0 Ovo pomera indikator klizača na nulu, za opseg od 0 do 1000. Za svako radio dugme koristi sličnu liniju kôda. Svaku narednu vrednost uvećaj za 83. Poslednja veličina treba da bude 1000. Kada završiš sa kreiranjem forme, prevedi soluciju. Ako nema grešaka izaberi Debug/Start da bi ga pokrenuo. Kada program proradi ispravno, pokaži ga instruktoru.
Lekcija 05 – Kairo, Egipat
22
05 Izazov
Cveće
Kad god prođem pored livade sa cvećem ja se ora spoložim. Mislim da bi trebalo da imamo program sa cvećem.
Napravi formu, kao što je ova na slici:
1. Postavi Visible osobinu sva četiri okvira za slike (pictureboxes) na False 2. Postavi stil ivice (Border style) sva četiri okvira na Fixed3D. Lekcija 05 – Kairo, Egipat
23
3. Postavi SizeMode osobinu za sva četiri okvira na AutoSize 4. Postavi Image osobinu za svaki okvir na odgovaraću sliku koja se nalazi u download folderu. 5. Idi na stranicu sa kôdom. Baš iznad kôda su dve padajuće liste. U levoj listi izaberi label1.
Savet instruktoru Neki učenici će podesiti MouseHover za picture box. Instrukcije traže da miš bude iznad labele koja označava cvet, ne iznad slike cveta.
6. U desnoj listi izaberi MouseHover. 7. Unutar Label1.MouseHover događaja postavi Visible (vidljivo) osobinu PictureBox1 na True. Postavi Visible osobinu ostalih okvira na False. 8. Uradi ovo isto za ostale tri Labele, praveći korespodentne izmene koji su okviri vidljivi, a koji ne. 9. Krajnji rezultat je program koji samo pokazuje jednu sliku u jednom momentu kada se mišem prelazi preko opisa.. Kada program proradi ispravno, pokaži ga instruktoru. Dodatak/Skretanje sa puta Kad god se neki cvet izabere, promeni boju pozadine forme.
Lekcija 05 – Kairo, Egipat
24
Pošto stižemo u Kairo, Egipat, moraš da odradiš još jedan Kviz. Srećno!
Lekcija 05 – Kairo, Egipat
25
Lekcija 07 – Sofija, Bugarska
Str. 1 od 23
Sofija, Bugarska
Spremni smo za polazak. Sledeća stanica je Sofija, glavni grad Bugarske! Miloš te je već naučio kako da koristiš promenljive i iskaze dodele, tako da trenutno imaš osnovni alat za korišćenje. Na našem putu za Sofiju naučiću te o operatorima. Korišćenje operatora je još jedan od osnovnih alata za programiranje koje moraš da imaš u svom skupu alata. Kada naučiš kako da koristiš operatore u Visual Basic.NET-u, moći ćeš da ih koristiš u bilo kom programskom jeziku. Korišćenje operatora je lako! Kada budemo bliži Sofiji, pokazaću ti kako da koristiš neke od alata za otkrivanje grešaka koje predstavljaju deo Visual Studio.Net-a. Pomoći će ti da očistiš svoj kôd od grešaka tako da će svaki put moći da se kompajlira!
Lekcija 07 – Sofija, Bugarska
Str. 2 od 23
Operatori Dakle, ako su operatori lako razumljivi, zašto nikad nisi čuo za njih? Pa, sve su šanse da si već čuo! Neki primeri operatora su sabiranje, oduzimanje, množenje i deljenje. Koristio si operatore još od prvog razreda osnovne škole. Stvar je samo u tome da ih nisi tako zvao. U programiranju postoje i drugi operatori kao na primer operatori za izračunavanje kompleksnih matematičkih postupaka ili spajanje nizova karaktera. Operatori obično koriste dve vrednosti, iako neki rade samo sa jednom vrednošću. Vrednosti se nazivaju operandi. Ovo je osnovna sintaksa za korišćenje operatora: operand1 operator operand2 Na primer, 3+4 U izrazu 3 + 4 postoje dva operanda (3 i 4) spojeni operatorom (+). Operator izvodi operaciju ( u ovom slučaju sabiranje) nad ova dva operanda (3 i 4).
Korišćenje operatora je i lako i zabavno! Korišćenjem operatora možeš da napraviš veoma složene jednačine. Hajde da počnemo posmatranjem aritmetičkih operatora—sabiranje, oduzimanje, množenje i deljenje. Zatim ću ti pokazati kako da spojiš tekstualne stringove i bacićemo pogled na specijalni operator sa nazivom NOT.
Lekcija 07 – Sofija, Bugarska
Str. 3 od 23
Aritmetički operatori Matiš je zakon! Ja volim matiš. Voleo bih da celi dan rešavam matematičke probleme, ali ponekad se umorim i počnem da pravim greške. Kompjuterski programi su sjajni za rešavanje matematičkih problema. Ne prave greške u sabiranju i nikad se ne umore od rešavanja istog problema iznova i iznova. Da li ti ovo zvuči suviše dobro da bi bilo istinito? Pa, postoji mali problem. Iako programi odlično rade posao izračunavanja odgovora, oni ne mogu da postave probleme. Kao programer, to predstavlja tvoj posao.
Zbog toga je za tebe važno da razumeš kako da koristiš aritmetičke operatore u svom kôdu. Na taj način govoriš svom programu koji matematički problem želiš da reši. Pošto su računari tako dobri u matematici, svi programski jezici imaju standardni skup aritmetičkih operatora. Zato što su ovi operatori tako uobičajeni, simboli koji se koriste za predstavljanje ovih operatora u kôdu prilično su isti u svim programskim jezicima. Što ih čini još lakšim!
Lekcija 07 – Sofija, Bugarska
Str. 4 od 23
Ovde je data lista najčešćih aritmetičkih operatora i simbola koje svakodnevno koristite upoređene sa simbolima koji se koriste u kôdu. Primeti da je drugačiji samo znak za množenje. U kôdu, za predstavljanje množenja koristiš simbol * umesto simbola x. Operator Sabiranje Oduzimanje Množenje Deljenje
Simbol za svakodnevnu upotrebu + x /
Simbol koji se koristi u kôdu + * /
Hajde da pogledamo nekoliko primera aritmetičkih operatora u kôdu. 3+4 18 - 2 33 * 3 66 / 6
I C# i J# koriste iste operatore kao i Visual Basic.NET. Koriste +, -, * i / za sabiranje, oduzimanje, množenje i delenje, respektivno.
Lekcija 07 – Sofija, Bugarska
Str. 5 od 23
String operatori Da, matiš je zakon, ali ne moraju svi programi koje napišeš nešto da računaju. Ponekad tvoj program treba da radi samo sa tekstualnim stringovima. Da li si znao da u Visual Basic.NET-u i ostalim programskim jezicima možeš da "sabereš" tekst? U stvari, to nije isto kao obično sabiranje sa brojevima. Tekstualno "sabiranje" se zove "konkatenacija", što je u stvari samo kitnjasto ime za spajanje tj nadovezivanje dva tekstualna stringa. U Visual Basic.NET-u operator konkatenacije je a mpersand (&). Koristićeš ga isto kao i operator za sabiranje, samo sa stringovima umesto sa brojevima. Evo nekoliko primera: "Bojan" & "Milan" "1" & "2" Savet instruktoru Zato što Visual Basic nastoji da prašta greške, nekada prihvatiti znak plus (+) umesto ampersend (&) kada su oba operanda definisana kao stringovi. Ovo je loša praksa. Insistirajte na korišćenju ampersend.
In U C# i J# ne koristimo ampersand (&) za spajanje tekstualnih stringova. Koristimo znak (+) plus. Pogledaj ovu liniju kôda punoIme = "Bojan " + "Milan ";
Lekcija 07 – Sofija, Bugarska
Str. 6 od 23
The Not Operator Operator Not je specijalni operator koji radi samo sa jednim operandom. Pored toga, operand može biti samo logičkog tipa (vrednosti True ili False). Operator Not menja False vrednost na True i True vrednost na False. Pogledaj ove primere. Not (True) Not (Not (True)) Nisam u potpunosti siguran zašto bi želeo da koristiš poslednji iskaz, ali što god!
Hej, u C# umesto Not koristimo uzvičnik (!). Pogledaj sledeći kôd. textBox3.Visible = !(textBox1.Visible); .
Lekcija 07 – Sofija, Bugarska
Str. 7 od 23
Naredbe dodele Pa kako koristiš operatore u kôdu? Većim delom koristiš iskaz dodele. Zapamti, iskaz dodele izgleda kao jednačina sa znakom jednakosti u sebi. Operatori i operandi su smešteni na desnoj strani znaka jednakosti. Izraz sa desne strane jednakosti se izračunava, a zatim se leva strana jednakosti postavlja na tu vrednost. Sve ono što se nalazi sa desne strane jednakosti mora biti istog tipa kao i leva strana jednakosti u suprotnom, kôd se neće moći prevesti. Evo nekoliko primera korišćenja aritmetičkih operatora i operatora konkatenacije u iskazima dodele. Dim FormWidth as Integer FormWidth = 200 + 300 Dim FormHeight as Integer FormHeight = 1000 / 2 Dim WinnebagoName as String WinnebagoName = "Code" & "Bus"
Lekcija 07 – Sofija, Bugarska
Str. 8 od 23
Operatori u akciji Primeri koje sam upravo dao bili su prilično jednostavni sa samo dva operanda i jednim operatorom u svakom iskazu dodele. U stvarnom svetu kôda, ipak, moraćeš često da prevodiš formule ili praviš izračunavanja koja uključuju mnogo operatora i operanada. Na sreću, kod većine programa moći ćeš da koristiš onoliko operanada i operatora koliko ti je potrebno za konkatenaciju teksta ili konverziju formula u kôd. Plus možeš da koristiš promenljive i operatore. Tako je! Operatori se koriste i sa promenljivima—sve dok su odgovarajućeg tipa. Šta još ima? Može[ čak i da postaviš promenljivu na izraz koji u sebi sadrži tu istu promenljivu. Dakle, hajde da pogledamo nekoliko primera koji su malo složeniji. Prvi primer izračunava obim guma kombija. Dim GumaObim As Single Dim GumaPrečnik As Integer Dim PiVrednost As Single PiVrednost = 3.14159 GumaPrečnik = 18 GumaObim = GumaPrečnik * PiVrednost Primer izračunava prosečnu cenu benzina u martu i aprilu. Zapazi da sam koristio zagrade kako bih osigurao sabiranje cena i sabiranje galona pre nego što ih podelim. Dim CenaMart As Single = 123.66 Dim CenaApril As Single = 231.45 Dim GaloniMart As Single = 87.4 Dim GaloniApril As Single = 157.2 Dim CenaPoGalonu As Single CenaPoGalonu = (CenaMart + CenaApril) / (GaloniMart + GaloniApril)
Lekcija 07 – Sofija, Bugarska
Str. 9 od 23
Savet instruktoru Pregledajte redosled operacija. Kada nema zagrada, deljenje i množenje se obavljaju pre sabiranja i oduzimanja. Insistirajte na korišćenju zagrada kako bi ste obezbedili da se proračuni obavljaju onako kako programer to želi. Nije pogrešno koristiti đto više zagrada.
Lekcija 07 – Sofija, Bugarska
Str. 10 od 23
Operatori poređenja Zapamti, pomenuo sam da moožeš da postaviš promenljivu na izraz koji sadrži samu promenljivu? Kako to može da radi, pitaš? Pogledaj sledeći primer i vidi da li možeš da rešiš šta će biti prikazano u prozoru za poruke. Dim BrojačKilometara as Integer BrojačKilometara = 100 BrojačKilometara = BrojačKilometara + 200 BrojačKilometara = BrojačKilometara + 400 MessageBox.Show (BrojačKilometara)
Savet instruktoru Ponovite razliku između dodele i sabiranja vrednosti. TextBox1.text = “Zdravo” u poređenju sa TextBox1.Text = TextBox1.Text & “Ja”
Prozor za poruke će prikazati 700, što je vrednost BrojačKilometara pri pozivu prozora za poruke. Evo kako sve ovo funkcioniše. U prve dve linije kôda BrojačKilometara deklariše se kao promenljiva i postavlja na vrednost 100. Treća linija kôda uzima trenutnu vrednost BrojačKilometara (100) i dodaje na nju 200 kako bi dobili 300. Zapamti, uvek se prvo izračunava desna strana jednakosti. Zatim se leva strana iskaza dodele (BrojačKilometara) postavlja na vrednost desne strane jednačine (300). Četvrta linija kôda uzima uzima trenutnu vrednost BrojačKilometara (sada 300) i dodaje 400 kako bi dobili 700. BrojačKilometara se postavlja na tu vrednost, koja se prikazuje na prozoru za poruke. Levu stranu dodele ne interesuje kako se izračunava desna strana iskaza dodele, sve dok se tipovi slažu. Što se tiče leve strane, promenljiva BrojačKilometara koja se nalazi sa desne strane je još samo jedna promenljiva, a ne ona sama. Postavljanje promenljive na izraz, koji sadrži samu promenljivu, predstavlja uobičajenu praksu pisanja kôda koju podržavaju svi .NET programski jezici. To nas spašava dodatnog posla kreiranja druge promenljive za privremeno smeštanje i prenos vrednosti. Kao što moj primer prikazuje, ova tehnika je idealna za brojanje ili sabiranje niza vrednosti. Da li znaš da je promenljiva = promenljiva + 1 verovatno najčešća linija kôda koja se koristi za neko brojanje? Najčešće se koristi da izbroji koliko se puta izvrši neka petlja. Pričaću ti o petljama uz put.
Lekcija 07 – Sofija, Bugarska
Str. 11 od 23
Operator Not i operator konkatenacije u akciji Uh! Malo je previše matiša tamo! Sada ću ti pokazati brzi primer operatora konkatenacije u akciji i zatim jedan o Not operatoru. Evo primera koji spaja tekstualne promenljive i prikazuje rezultat u tekst boksu. Dim Ime As String Dim Prezime As String Ime = "Bob" Prezime = "Marley" TextBox1.Text = Ime & " " & Prezime Da li si primetio da sam morao da kažem Visual Basic.NET-u da doda razmak između Ime i Prezime? Operator konkatenacije ne dodaje razmak automatski. Moj poslednji primer kako da koristiš operator Not da sakriješ neki tekst boks svaki put kada se prikazuje drugi tekst boks. Zapamti, operator Not se koristi nad logičkim tipovima. TextBox1.Visible = True TextBox2.Visible = Not (TextBox1.Visible) Nisam siguran zašto bi želeo da koristiš ovu zadnju liniju kôda!
Lekcija 07 – Sofija, Bugarska
Str. 12 od 23
07 Dokaži 01 Cena benzina Možeš li da izračunaš cenu benzina za sledeću deonicu našeg puta? Dokaži! 1. Kreiraj formu po sopstvenom ukusu. Uključi sledeće elemente: Odgovarajuće ime forme. Četiri tekst boksa za prikaz ovih stavki o Kilometara do sledećeg odredišta o Kilometara po litru (KPM) o Cena benzina po litru o Ukupna cena benzina koji je potreban Četiri oznake (label) za identifikaciju svakog tekst boksa. Označeno komandno dugme za inicijalizaciju izračunavanja. 2. Nakon što korisnik programa unese rastojanje,KPM i cenu, izračunaj celokupnu cenu za dolazak na sledeći odredišni grad. 3. Kada si kreirao svoju formu, izvrši rešenje. Ako pri izvršenju nema grešaka, da bi pokrenuo svoj program izaberi Debug / Start.
Savet instruktoru Cena = (put / KPM) * cena
Ako tvoj program radi ispravno, pokaži ga svom instruktoru. . Produžetak / Sporedno putovanje Formatiraj ukupnu cenu da izgleda kao novac. Prouči sledeći kôd. X = 123.45 X = FormatCurrency(X)
Lekcija 07 – Sofija, Bugarska
Str. 13 od 23
Pronalaženje grešaka u kôdu Savet instruktoru Prolazak kroz program liniju po liniju je izuzetno zgodna stvar. Puno studenata ignoriše ovu lekciju. Kasnije, kada otkriju grešku u svom programu pitaju učenika do sebe ili instruktora da im pomogne, umesto da grešku sami pronađu. Kada pomažete učeniku da debagira program insistirajte da prođu kroz kôd sa Vama.
Odlično radiš posao! Već si napisao dosta kôda i izvršio i pokrenuo dosta projekata. Možda se nisu svi tvoji projekti preveli iz prve, ali ćeš se verovatno izveštiti u otkrivanju šta to nije u redu sa tvojim kôdom i u popravljanju istog. Dakle sada ću da ti dam nekoliko saveta koji će ti pomoći da svoje probleme rešavaš još brže. Popravljanje problema u kôdu naziva se debagiranje. Debagiranje predstavlja neophodan korak u izvršavanju tvog programa bez grešaka i dobijanju tačnih rezultata. Najpre ću ti pokazati kako ti Visual Studio pomaže da debaguješ svoj kôd dok ga pišeš. 1. Kreiraj novu windows aplikaciju pod nazivom DebagPogled. Dodaj jedno dugme i jedan tekst boks na Form1. Duplim klikom na Button1 dodaj sledeći kôd. MyName = "Bill" TextBox1.Text = MyName 2. Obrati pažnju da je i pre nego da izvšiš svoj projekat Visual Studio.NET postavio krivudavu plavu liniju ispod MyName u prvoj i drugoj liniji kôda. Šta to znači? Pa, Visual Studio.NET je dovoljno pametan da shvati ( čak i pre izvršenja) da nisi deklarisao promenljivu MyName. Upozorava te da nešto nije u redu sa kôdom pre prevođenja. 3. Izvrši i pokreni svoj projekat. Prozor za izlaz pokazuje da je izvršenje neuspešno. Lista sa zadacima pokazuje ti zašto je izvršenje propalo. U listi za zadatke vidiš dve linije koje te obaveštavaju da "MyName" nije deklarisano.
Lekcija 07 – Sofija, Bugarska
Str. 14 od 23
4. Duplim klikom na "Name 'MyName' is not declared" u listi sa zadacima postavićeš se na mesto u kôdu gde se pojavila greška.
5. Primeti da je promenljiva MojeIme posvetljena—to je problem koji treba rešiti. Da bi rešio ovaj problem sledeću liniju kôda dodaj događaju klik na Button1. Dim MyName As String Plava krivudava linija nestaje. 6. Izvrši i pokreni svoj projekat. Prevodi se bez greške. Uspešno si debagirao svoj program.
Lekcija 07 – Sofija, Bugarska
Str. 15 od 23
Prolazak kroz kôd Ponekad greške u tvom kôdu neće biti greške koje Visual Studio.NET može da detektuje i upozori te. Tvoj se program prevodi bez greške ali rezultati ili izlaz nisu u potpunosti tačni.U ovom slučaju tvoje greške mogu biti logičke greške ili greške u toku programa umesto sintaksnih grešaka. To su greške koje si ti uneo u dizajn programa ali Visual Studio.Net ne smatra da su to greške u kôdu zato što ima ispravnu sintaksu. U ovakvim slučajevima, korisno je da možeš da prođeš kroz svoj kôd, liniju po liniju, da bi video kako se izvršava i kojim se putem kreće. Obično, u kôd postaviš tačku prekida (break point), zatim ulaziš (step into) u kôd da bi video kako se izvršava, liniju po liniju. Tačka prekida radi kao znak stop— izvršenje prestaje na liniji kôda koju si označio tačkom prekida. Zatim pritisni taster F11 da bi se kôd izvršio po redu linija po linija. Evo, pokazaću ti kako sve ovo funkcioniše. 1. U događaju klik na Button1 nađi sledeću liniju kôda: MyName = "Bill" Desnim klikom otvori popup meni i izaberi "ubaci tačku prekida" ("Insert Breakpoint"). 2. Zapazi da je linija kôda osvetljena braon bojom i na margini sa leve strane linije kôda pojavljuje se braon kružić. Izvrši i pokreni svoj program. Kada se pojavi forma klikni Button.
Lekcija 07 – Sofija, Bugarska
Str. 16 od 23
3. Kôd se izvršava i pokreće ka liniji kôda koju si obeležio sa tačkom prekida (MyName="Bill"). Ova linija kôda se još uvek nije izvršila. Linija kôda je osenčena žutom bojom i braon kružić koji se nalazi pored nje sada u sebi ima žutu strelicu. 4. U prozoru za kôd pomeri kursor preko promenljive MyName. Pojaviće se tip pokazujući vrednost promenljive MyName. Trenutno MyName=Nothing zato što je promenljiva deklarisana ali joj još uvek nije dodeljena vrednost. 5. U prozoru za kôd pomeri kursor preko osobine Text koja pripada TextBox1. Pojaviće se tip pokazujući vrednost osobine Text. Trenutno Text= TextBox1. Pritisni taster F11. Na ovaj način ulaziš u kôd izvršavajući trenutnu liniju(MyName="Bill") i sledeća linija je osenčena žutom bojom. 6. U prozoru za kôd pomeri kursor preko promenljive MojeIme. Pojaviće se tip pokazujući MojeIme=Bojan zato što je promenljiva upravo postavljena na tu vrednost.
Lekcija 07 – Sofija, Bugarska
Str. 17 od 23
7. U prozoru za kôd pomeri kursor preko osobine Text koja pripada objektu TextBox1. Pojaviće se tip pokazujući Text= TextBox1. Ova se vrednost nije promenila. Ponovo pritisni taster F11. Na ovaj način ulaziš u kôd izvršavajući trenutnu liniju (TextBox1.Text=MyName) i sledeća linija je osenčena žutom bojom.
8. U prozoru za kôd pomeri kursor preko promenljive MojeIme. Pojaviće se tip pokazujući MyName="Bill" zato što vrednost ove promenljive još uvek nije promenjena. 9. U prozoru za kôd pomeri kursor preko osobine Text koja pripada TextBox1. Tip pokazuje text "Bojan"zato što smo ovu osobinu upravo postavili na promenljivu MojeIme. Još jednom pritisni taster F11. Ponovo se prikazuje forma zato što je program završio izvršenje kôda u događaju klik na dugme. Pritisni X na uglu forme da bi je zatvorio. 10. U prozoru za kôd klikni na liniju kôda sa tačkom prekida. Napravi desni klik i izaberi "ukloni tačku prekida" (Remove Breakpoint) iz popup menija.
Lekcija 07 – Sofija, Bugarska
Str. 18 od 23
Završio si sesiju debagiranja. Prilično je korisno da prođeš kroz svoj kôd liniju po liniju. Možeš da pratiš put kojim se kreće tvoj program dok izvršava tvoj kôd. Ponekad možeš otkriti da si slučajno rekao svom programu da izvrši svoj kôd po pogrešnom redosledu ili da si koristio pogrešnu promenljivu u iskazu dodele. Prolazak kroz tvoj kôd pokazuje ti gde je program krenuo pogrešnim putem. Dok prolaziš kroz kôd, možeš nadgledati vrednosti osobina i promenljivih pomeranjem kursora iznad njih u prozoru za kôd. Vrednosti se obnavljaju po izvršenju svake linije kôda. Ove tehnike za debagiranje postaju sve važnije kako tvoj kôd postaje složeniji. Složeniji kôd je mnogo teže debagovati. Uskoro ćeš naučiti kako da kontrolišeš redosled po kojem se tvoj kôd izvršava korišćenjem "if" iskaza i "petlji". Alati za debagiranje su super korisni pri praćenju kako tvoj program izvršava ovakve tipove iskaza.
Dolazak u Sofiju
Vauuu! Ovo je bilo sjajno putovanje! Razgovarali smo o mnogim stvarima uz put. Do sada si se veorovatno izveštio u korišćenju operatora kako bi svom kôdu ukazao kako da reši matematičke probleme i spoji stringove. Možeš čak da koristiš i Visual Studio.NET alate za debagovanje kako bi pomogao u dijagnozi problema. Mislim da ćeš naći da su Dokaži zabavniji i izazovniji kako napredujemo dalje. Probaj one koje imam na PDA. Ostani u formi radeći kviz a zatim će nas Miloš odvesti na naše sledeće odredište.
Savet instruktoru Da bi se uvežbali, neka učenici jedan po jedan demonstriraju tehniku debagiranja na prethodno napisanom programu
Lekcija 07 – Sofija, Bugarska
Str. 19 od 23
07 Dokaži 02 Debagiraj program Hajde da vežbamo veštine debagiranja koje smo upravo naučili. Napravio sam program koji možeš naći preuzimanjem 07_proveit02_template. Ovo je kompletan program. Ne moraš da pišeš ni jedan kôd. Samo pronađi fajl pod imenom DebugMe.sln i klikni dvaput na njega. Tvoj zadatak, ako ga prihvatiš, je da u tekst fajlu napišeš, Word dokument, ili na nekom starom zadatku iz matematike, odgovore na tri pitanja. 1. Koju si vrednost upisao u teks boks forme? 2. Koja je konačna vrednost promenljive pod imenom OdgovorJedan? 3. Koja je konačna vrednost promenljive pod imenom OdgovorDva? Kôd ovog programa je namerno napravljen konfuzno i komplikovano kako ne bi došao u iskušenje da otkrivaš kako program dolazi do svojih odgovora. Sve što moraš da uradiš jeste da na levoj margini postaviš braon kružić za prekidačku tačku debagiranja, pređi preko kôda, zatim postavi kursor na promenljivu gde želiš da vidiš vrednost promenljive POSLE izvršenja te linije kôda. Ovo je najvrednija veština koju bi trebao da koristiš u svim svojim budućim programima. Kada budeš imao odgovore, pokaži ih svom instruktoru.
Lekcija 07 – Sofija, Bugarska
Str. 20 od 23
07 Izazov Izračunaj zapremine Sećaš li se kristalnih pritiskača koje smo juče videli u radnji za poklone? Jedan je bio kockast a drugi okrugao. Zapitao sam se koji je teži. Pošto su napravljeni od istog materijala, teži je onaj sa većom zapreminom. Hajde da napišemo program kako bi izračunali zapreminu kocke i zapreminu sfere. Kreiraj formu koja je nalik ovoj:
Dužina jedne strane kocke upisuje se u prvi boks i obim kruga upisuje se u drugi boks. U slučaju da nisi pazio na časovima geometrije, evo nekih formula. Zapremina kocke je stranica na treći ( pomnožena samom sobom tri puta) Zapremina kruga četri trećine puta Pi puta obim na treći Za vrednost Pi možeš koristiti 3.14, ili možeš koristiti Math.Pi. Kada tvoj program bude radio korektno, pokaži ga svom instruktoru.
Lekcija 07 – Sofija, Bugarska
Str. 21 od 23
Dodatak / Skretanje sa puta Čisto iz zabave, možeš li da pronađeš dve vrednosti koje daju istu zapreminu sa tačnošću od najmanje 4 decimalna mesta? Ako si naročito dobar u matematici, možeš li da izračunaš stranicu kocke i poluprečnik lopte koji imaju istu zapreminu?
Lekcija 07 – Sofija, Bugarska
Str. 22 od 23
Lekcija 07 – Sofija, Bugarska
Str. 23 od 23
Unit Lekcija 08 – Kijev, Ukrajna
Strana 1 od 28
Kijev, Ukrajina Na našem poslednjem putovanju, Jovana ti je pokazala sve o korišćenju operatora za kreiranje matematičkih izraza u tvom kôdu. Ja ne volim baš mnogo matematiku, ali volim logiku. Logika je proces koji koristiš za donošenje odluka. Mi u svojim životima donosimo odluke svakog dana. Ja sam doneo neke dobre odluke. Kao kad sam pozvao radio stanicu i osvojio tri karte za koncert grupe "Galija". Doneo sam i neke loše odluke. Kao kada sam stavio farmerke u mašinu za pranje veša a nisam izvadio karte za koncert iz džepa! Pa, "Galija" će uvek biti tu—gledaću ih sledeće godine. Idemo ka Kijevu, Ukrajina. Kijev se nalazi usred ove velike ravnice, ravne prerije. Pomislio bih da ovde nema mnogo toga da se radi, ali nisame bi bio u pravu . Uu Kijevu čovek ima na raspolaganjupostoji milion mogućnosti. Na našemU toku našeg putua, pokazaću ti kako kompjuterski programi donose odluke korišćenjem "If…Then" iskaza. Nešto sam razmišljao, o? Ššta bi bilo kada bismo napravili pogrešno skretanje na našem putu ka Kijevu? Možda nikad ne bismo stigli tamo!
Unit Lekcija 08 – Kijev, Ukrajna
Strana 2 od 28
Donošenje odluka Moram da donosim odluke sve vreme. Koje boje čarape da obučjem? Na kom mestu da stavim sledeću tetovažu? Da li da pojedem celu ekstra veliku picu? Siguran sam da i ti donosiš mnogo važnih odluka! U stvari, ljudi imaju sreće. Kada mi donosimo odluke, obično imamo dosta izbora. Kao na primer koji sladoled kog ukusa da kupimo, koju vrstu muzike da slušamo, ili s kim da se družimo. Kompjuterski Računarski programi nisu te sreće. Moraju da donose odluke koje su zasnovane na tome da li je nešto tačno (True) ili netačno (False)?. Za njih to je jedna velika igra od 20 pitanja. Na primer, zamisli da si u restoranu i pokušavaš da naručiš hamburger, pomfrit i bezalkoholno pivo a da konobar može da ti postavlja samo da i ne pitanja! Da Da Da Da Da Da
li li li li li li
želite želite želite želite želite želite
nešto da popijete? Da. kafu? Ne. čaj? Ne. sok? Da. koka-kolu? Ne. bezalkoholno pivo? Da.
Dakle za to je trebalo šest pitanja a još nisam ni naručio hamburger ni pomfrit! Nekako ide sporo, ali naručiću!
Tako izgleda donošenje odluka kod kompjutera—striktno da ili ne. Ovakav način "razmišljanja" ili logike poznat je pod nazivom bulova logika (Boolean logic).
Unit Lekcija 08 – Kijev, Ukrajna
Strana 3 od 28
Bulova logika Kao što si video na putu za Sofiju, kompjuterski programi su dobri u rešavanju matematičkih problema. Takođe su dobri i u rešavanju problema bulove logike. U problemu bulove logike, odgovor je uvek ili True ili False – ne postoji "otprilike", "kao" ili "skoro". Pogledaj, pokazaću ti neke primere bulove logike.
4=4 Da li je 4=4? Da, to je tačno (True). 3=1+3 Da li je 3=1+3? Ne, to nije tačno (False). 3=(6+12)/(1+5) Da li je 3=(6+12)/(1+5)? Da, to je tačno (True).
Možeš da vidiš da je odgovor u svim logičkim problemima koji su navedeni odgovor ili True ili False. Odgovori nisu brojevi, boje ili reči. Ovako kompjuterski program može da donosi odluke. Ako je odgovor True, program nešto radi. Ako je odgovor False program ništa ne radi.
Unit Lekcija 08 – Kijev, Ukrajna
Strana 4 od 28
Logički (Bulovioolean) operatori Kao i obična matematika, Boolean Bulova logika ima sopstvene operatore. Ali oni svoje operacije ne rade obavljaju nad brojevima, oni rade samo nad logičkim (Boolean) operandima, operandima čije su vrednosti – True ili False. Ovo znači, to jestda. oni dopuštaju da "sabiraš" True i False iskaze na specijalan način. Logički operatori se takođe Mmogu se koristiti za spajanje logičkihBoolean iskaza i za stvaranje složenijih Booleanlogičkih problema. Postoje tri osnovna BooleanBulova operatora: AND, OR i NOT. Operatori AND i OR deluju nad dva operatora. Operator NOT radi nad jednim operatorom. Sva tri daju rezultat koji je takođe tipa Boolean. Što se tiče rezultata koji proizvode, svaki od Svaki operatora ima sopstvena "pravila" što se tiče koje rezultate proizvode kada se koriste nad operandima. Hajde da pogledamo neke probleme Boolean Bulove logike koji koriste Booleanlogičke operatore. Zatim Nakon toga ću ti prikazati detalje kako oni rade. 3=1+2 AND 2=1+1 Ovo je tačno (True). Ovde imamo dva odvojena logička problema spojena sa AND operatorom. Prvo izračunavamo 3=1+2, što je tačno (True). Zatim izračunavamo 2=1+1, što je takođe tačno (True). Zatim izračunavamo True AND True, koji od strane specijalnih osobina operatora AND daje konačan odgovor True. Ako su obe strane AND jednačine True, konačan odgovor je True. 3=1+2 AND 5=2+2 To je netačno (False).
Ponovo imamo dva odvojena logička problema spojena AND operatorom. Prvo izračunavamo 3=1+2, što je tačno (True). Zatim izračunavamo 5=2+2, što je netačno (False). Zatim izračunavamo True AND False, koji od strane specijalnih osobina operatora AND daje konačan odgovor False. Ako je bilo koja od strana AND jednačine False, konačan odgovor je False.
Unit Lekcija 08 – Kijev, Ukrajna
Strana 5 od 28
Poslednji primer, 3=1+2 OR 5=2+2 Ovo je tačno (True). Prvo izračunavamo 3=1+2, što je tačno (True). Zatim izračunavamo 5=2+2, što je netačno (False). Zatim izračunavamo True OR False, koji od strane specijalnih osobina operatora OR daje konačan odgovor True. Ako je bilo koja od strana OR jednačine True, konačan odgovor je True.
Možda će ti trebati malo vežbe, ali nakon izvesnog rada sa Boolean logičkim operatorima, navići ćeš se na njih. Srećom, možemo da ti pokažemo sve moguće kombinacije za AND operator putem proste tabele. Ne moraš da ih naučiš napamet. Možeš da se vraćaš na tabelu po potrebi. Leva strana True True False False
Desna strana True False True False
Leva strana AND Desna strana (Konačan odgovor) True False False False
Na isti način, možemo da ti pokažemo sve moguće kombinacije za OR operator. Leva strana True True False False
Desna strana True False True False
Unit Lekcija 08 – Kijev, Ukrajna
Leva strana OR Desna strana (Konačan odgovor) True True True False
Strana 6 od 28
Operator NOT ne vrši spajanje. On jednostavno True postavlja na False i False postavlja na True. Desna strana True False
Not Desna strana (Konačan odgovor) False True
Evo nekih primera Not operatora. Not(3=1+2) To je netačno (False). 3=1+2 je tačno (True). Not True je False. Not(5=2+2) To je tačno (True). 5=2+2 je netačno (False). Not False je True.
Unit Lekcija 08 – Kijev, Ukrajna
Strana 7 od 28
Operatori poređenja Zapamti, Ivana vam je rekla da su programi odlični u rešavanju matematičkih problema, ali nisu dobri u njihovom postavljanju.? Pa, ista stvar je tačna i sa problemima BuloveBoolean logike. Kompjuterski Računarski programi su odlični uza rešavanjue veoma složenih problema BuloveBoolean logike, ali ih ne mogu postaviti. Ponovo, to je tvoj posao kao programera – postavljanje problema Boolean Bulove logike kako bi ih tvoj program rešio. Odgovor bi bio True ili False. Znaš da se znak jednakosti može koristiti kao operator dodele, ali može se koristiti i kao "operator poređenja". U primeru koji smo upravo videli, Znak jednako postavlja pitanje, "Da li je leva strana jednaka desnoj strani? True ili False"Postoje i drugi operatori poređenja za poređenje da li je leva strana veća od desne (>) ili da li je leva strana manja od desne strane (<). U svakom od slučajeva, postavlja se pitanje, koje mora biti odgovoreno sa True ili False. Pogledaj ove primere: 3<4 Postavi pitanje: Da li je 3 manje od 4? Da, to je tačno (True). 2>5 Postavi pitanje: Da li je 2 veće od 5? Ne, to je netačno (False).
Unit Lekcija 08 – Kijev, Ukrajna
Strana 8 od 28
Evo liste najčešće korišćenih operatora poređenja: Operator =
Značenje jednako
>
veće
<
manje
>=
veće jednako
<=
manje jednako
<>
različito
Pitanje Da li je leva strana jednaka desnoj strani? Da li je leva strana veća od desne strane? Da li je leva strana manja od desne strane? Da li je leva strana veća ili jednaka desnoj strani? Da li je leva strana manja ili jednaka desnoj strani? Da li je leva strana različita od desne strane?
Možda nisi upoznat sa >=, <= i <> operatorima. Oni su u stvari dva operatora u jednom. Oni sadrže dva Boolean logička iskaza koja su povezana sa OR operatorom. Ako je bilo koji iskaz True, zatim je celi iskaz True. Na primer, >= znači: Da li je leva strana veća od desne strane? OR da li je leva strana jednaka desnoj strani? Dva odvojena pitanja spojena Boolean logičkim operatorom OR. Operator <> znači: Da li je leva strana manja od desne strane? OR da li je leva strana veća od desne strane? Operator <> u stvari pita: Da li dve strane nisu jednake? Hajde da pogledamo nekoliko primera, koristeći koji koriste operatore poređenja za postavljanje Boolean Bulovih jednačina. Možda ćeš trebati morati da se vratiš na tabele kako bi video kako operator OR radi u svakom od slučajeva. 3<=3 3<3 je False. 3=3 je True. False OR True =True True, 3 je manje ili jednako sa 3. 2>=3 2>3 je False. 2=3 je False. False OR False = False False, 2 nije veće ili jednako sa 3. 3<>4 Unit Lekcija 08 – Kijev, Ukrajna
Strana 9 od 28
3<4 je True. 3>4 je False. True OR False = True True, 3 nije jednako 4. 3<>3 3<3 je False. 3>3 je False. False OR False = False False, 3 nije jednako 3. Dakle 3 je je jednako 3. Primeri koje sam ti do sada dao bili su sa brojevima. Ali možeš da koristiš operatore poređenja za poređenje stringova i ostalih Booleanlogičkih vrednosti. Pogledaj ove primere: "ABC" = "DEF" Da li je "ABC" = "DEF"? Ne, to je False. True=True Da li je True=True? Da, to je True. True=False Da li je True=False? Ne, to je False. Savet instruktoru This is an example of a text box we can use for the Teacher’s Guide.Poređenje stringova ide sa leva na desno. Prvi karakter operanda 1 biva poređen sa prvim karakterom operanda 2, a onda drugi sa drugim, itd. Poređenje uzima u obzir
Unit Lekcija 08 – Kijev, Ukrajna
Strana 10 od 28
Uslovne naredbe Sada možeš bi mogao da napravišdodaš dau tvoj program postavlja True ili False pitanja koja za odgovore imaju True ili False (nadalje u tekstu True ili False pitanje) . To ćeš uraditi uz pomoć korišćenjem operatora poređenja ili BuloveBoolean logikea. Dakle šta on program radi sa odgovorom? On donosi odluku na osnovu toga da li je odgovor True ili False, može da "izabere" da uradi jednu ili drugu stvar. U stvari, on realno nema izbora. Ako je odgovor True, onda nešto uradi. Ako je odgovor False, onda ne radi ništa. Evo nekih primera iz realnog života. Ako operem mamina kola pre nego što tata dođe kući, onda će mi tata platiti 5 dinara? Tata je došao kući. Da li sam oprao kola? True. Tata mi plaća 5 dinara. Tata je došao kući. Da li sam oprao kola? False. Tata mi ne plaća 5 dinara. Ako Pavlina misli da sam fin, onda će me pitati da izađemo. Da li Pavlina misli da sam fin? True. Pita me da izađemo. Da li Pavlina misli da sam fin? False. Ne pita me da izađemo. Evo nekih primera kako program može da donosi odluke: Ako je "super veliki" ček boks čekiran, onda prikaži veliku sliku. Da li je "super veliki" ček boks čekiran? True. Prikaži veliku sliku. Da li je "super veliki" ček boks čekiran? False. Nemoj da prikažeš veliku sliku. Ako je promenljiva UkupnoGalona veća od nule, onda izračunaj cenu benzina. Da li je promenljiva UkupnoGalona > 0? True. Izračunaj cenu benzina. Da li je promenljiva UkupnoGalona > 0? False. Ne izračunavaj cenu benzina. Možeš videti da moji primeri iz realnog života i programski primeri imaju neke zajedničke stvari. Koriste Boolean Bulovu logiku da postavljaju True i False pitanja. True ili False pitanja koriste operatore poređanja kao što su jednako i manje od ili jednako. Odgovor na pitanje je ili True ili False. Ako je odgovor True, nešto se dešava. Ako je odgovor False, ništa se ne dešava. Unit Lekcija 08 – Kijev, Ukrajna
Strana 11 od 28
If…Then iskazi
Da li si primetio da moji primeri sadrže reči "If" (ako) i "Then" (onda)? Ako je neki uslov True, onda se nešto dešava. Ako je uslov False, onda se ništa ne dešava. Kada želiš da tvoj program donese odluku, napiši "If…Then"iskaz na isti način. U jeziku Visual Basic.NET sintaksa je:
Savet instruktoru This is an example of a text box we can use for the Teacher’s Guide.Podsetnik – Ova lekcija objašnjava If...Then naredbe. Sledeća objašnjava If...Then...Else.
If uslov Then uslovni iskaz End If Evo primera u Visual Basic.NET-u: If mojeGodine = 3 Then MessageBox.Show("Ja imam 3 godine.") End If Zapazi reč "If". To je Visual Basic.NET ključna reč pa je plave boje. Uslov dolazi odmah posle reči "IF". U uUslovu se vrši poređenje i postavlja True ili False pitanje - . Da li je promenljiva mojeGodine = jednaka 3? Ako je to tačan iskaz, onda nešto uradi. Zapazi da reč "Then" sledi odmah posle uslova. I to je takođe Visual Basic.NET ključna reč jezika Visual Basic.NET pa je plave boje. Posle "Then" dolazi uslovni iskaz koji se izvršava. Poravnali smo ovu liniju kako bi kôd mogao lakše da se čita. Ako je uslov tačan, onda program prikazuje prozor za poruke sa tekstom "Ja imam 3 godine." Zapazi da reči "End If" slede iza uslovniog iskaza. I "End If" ovo su ključne reči i one reči "End If" završavaju "If" iskaz.
Unit Lekcija 08 – Kijev, Ukrajna
Strana 12 od 28
Sada pokušaj ti! Pokreni novu Windows aplikaciju pod imenom IfThen. Na Form1 dodaj tekst boks. Stavi dugme na Form1. Duplim klikom na dugme edituj unesi kod za ovaj događaj klik na dugme. Dodaj sledeće linije kôda. Dim mojeGodine As Integer mojeGodine = 3 If mojeGodine = 3 Then TextBox1.Text = "3 godine" End If Napravi izvršnu verziju i pokreni svoj projekat. Klikni na dugme. Evo šta se dešava. Tvoj kôd deklariše promenljivu pod imenom mojeGodine i postavlja je na vrednost 3. "If iskaz" postavlja True ili False pitanje: Da li je mojeGodine=3? Odgovor je True zato što si upravo postavio mojeGodine=3. Pošto je odgovor na ovo pitanje True, nakon "Then" se izvršava uslovni iskaz. Tekst boks prikazuje "3 godine." Hajde sada da promenimo kôd kao što je prikazano ispodna sledeći način: mojeGodine = 2 Napravi izvršnu verziju i pokreni svoj projekat. Klikni na dugme. Šta se dešava? Ništa? Pa, to je dobro! Ovaj put je promenljiva mojeGodine je postavljena na 2. "If iskaz" postavlja pitanje: Da li je mojeGodine=3? Ovaj put odgovor je False, pa se nakon "Then" ne izvršava uslovni iskaz. Tekst u tekst boksu nije promenjen zato što se uslov izračunava na False. Tvoj program je uradio tačno ono šta je trebalo da uradi.
Unit Lekcija 08 – Kijev, Ukrajna
Strana 13 od 28
Hajde da uradimo drugi primer. Na Form1 dodaj ček boks. Edituj događaj klik na dugme. Zameni postojeći kôd sa sledećim: If CheckBox1.Checked = True Then TextBox1.Text="Stikliran sam." End If Napravi izvršnu verziju i pokreni svoj projekat. Čekiraj Označi ček boks i klikni na dugme. Uslov izračunava True (čekirao označio si tekst ček boks), tako da je tekst u tekst boksu postavljen na "Ja sam čekiranoznačen.".
Ponovo napravi izvršnu verziju i pokreni svoj projekat.Ovaj put, učini daodčekiraj ček boks ne bude više označen (odčekiraj) i klikni na dugme. Šta se dešava? Ništa se ne dešava? Ovaj put, uslov je False (odčekirao si ček boks), tako da tekst nije promenjen. Tvoj program je napravio odluku (da postavi osobinu tekstText) koja je zasnovana na uslovu (da li je ček boks čekiran ili ne).
Unit Lekcija 08 – Kijev, Ukrajna
Strana 14 od 28
Više od jednogViše od jednog If Postoje velike šanse da ćeš hteti da tvoj program napravi ti veliki broj odluka prilikom izvršenja. Tvoj program će možda trebati morati da proveri stanje ček boksa, zatim da proveri stanje radio dugmeta, zatim da poredi dva broja, i konačno da ustanovi da li je korisnik ostavio tekstualno polje prazno. Vau! To je dosta pitanja za jedan program MOože li sve ovo da se uradi? Na sreću, odgovor je "Da". Svom kôdu možeš dodati koliko želiš "If...Then" iskaza. Kao bilo koji drugi iskazi, oni se izvršavaju po redosledu po kojem su zadati u kôdu. Hajde da napravimo aplikaciju koja demonstrira korišćenje više od jednog "If...Then" iskaza. Hajde da kažemo da naš program ima ček boks pod nazivom "Prikaži sve alarme". Ako je ovaj ček boks čekiran, onda program menja boju pozadine (BackColor) u crvenu bojucrveno, menja tekst u tekst boksu na "Uzbuna", i prikazuje prozor za poruke, koja prikazuje tekst "Opasnost! Opasnost!" Jedan od načina na koji možeš da napišeš ovaj kôd jeste da koristiš tri odvojena "If...Then" iskaza. Uslov bi, Uu svakom iskazu,, uslov bi proverio da vidi da li je čekiran ček boks "Prikaži sve alarme". Ako je uslov True onda se, izvršava se uslovni iskaz. Evo, pokazaću ti. Pokreni novu Windows aplikaciju pod imenom ProtivpožarniAlarm. Dodaj ček boks, tekst boks, i komandno dugme na Form1. Promeni Text koji pripada dugmetu Button1 na "Tri If-a". Duplim klikom na Button1 edituj klik događaj klik na dugme. Dodaj sledeći kôd. If CheckBox1.Checked = True Then Form.ActiveForm.BackColor = System.Drawing.Color.Red End If If CheckBox1.Checked = True Then TextBox1.Text = "Uzbuna" End If If CheckBox1.Checked = True Then MessageBox.Show("Opasnost! Opasnost!") End If Napravi izvršnu verziju i pokreni svoj projekat. Čekiraj ček boks i klikni na dugme "Tri If-a". Svaki od "If...Then" iskaza izvršava se po redu i izvršena su tri uslovna iskaza. Prvi "If..Then" iskaz menja boju forme u crvenou. Drugi iskaz menja tekst osobinu Text tekst boksa u "Uzbuna". Treći prikazuje prozor za poruke "Opasnost! Opasnost!"
Unit Lekcija 08 – Kijev, Ukrajna
Strana 15 od 28
08 Dokaži 01 Ideja za poklone Dok se bližimo Kijevu, stali smo u da razgledamo radnju sa poklonima. Ako pišeš program da pomogneš mušterijama da izaberu poklon, vlasnik radnje će ti dati originalnu razglednicu koja prikazuje prekrasni centar Kijeva. 1. Naslikaj formu pod nazivom Ideja za poklone. Uključi natpis ( labelu) "Ljudi koji su kupili" i labelu "Takođe su kupili ". 2. Postavi kombo boks (vidi poglavlje 4) na formu. Postavi teks osobinu Text na "Izaberi poklon". Popuni kolekciju predmeta sa poklonima nabrojanim ispod, ili iskoristi svoje ideje za poklone. 3. Dodaj tekst boks. Dopusti više linija u boksu. 4. Svaki put kada se u kombo boksu izabere poklon, tekst boks ispuni sa najmanje dva predmeta koja su mušterije takođe kupila. Možeš izabrati prihvatiti ovaj izborneku od postojećih opcija ili izaberi napraviti svoj izbor. 5. Ogroman šešir Čizme Punjeno magarence Pisma Ljute papričice
Unit Lekcija 08 – Kijev, Ukrajna
Traka za šešir od zmijske kože Bolero kravata Imalin za skrivanje čišćenje čizama Kašika za oblačenje obuće Mapa zakopanog blaga Zlatni grumen Izgraviranau olovkau Ogromnau bluzau Čili sos Alevau paprikau
Strana 16 od 28
Broj izabranog predmeta nalazi se u osobini SelectedIndex i, počinje od nule. Ime izabranog predmeta nalazi se u osobini SelectedItem. Ako želiš da se dve preporuke nađu u odvojenim linijama u tekst boksu, siguran sam da ćeš hteti, postavi specijalnu Visual Basic konstantu između njih, ovako: TextBox1.Text = “A” & vbNewLine & “B” Naravno A i B se zamenjuju preporukama. Kada tvoj program bude radio korektno, pokaži ga svom instruktoru.
Savet instruktoru This is an example of a text box we can use for the Teacher’s Guide.Nekim učenicima instrukcije mogu biti nejasne. Od učenika se očekuje da ima seriju If naredbi. Poređenje može obaviti u odnosu na indeks ili ime. Vidi označeno rešenje za obe metode.
Unit Lekcija 08 – Kijev, Ukrajna
Strana 17 od 28
Više od jednog uslova Da li si zapazio da svi "If…Then" iskazi u primeru Uzbuna imaju isti uslov? Svi su koristili: If CheckBox1.Checked = True Then Jedina različita stvar bila je uslovni iskaz koji je svaka od njih koristila. Izgleda kao mnogo kôda koji se ponavlja, zar ne? Zar ne postoji lakši način? Pa, naravno da postoji! Visual Basic.NET i većina modernih programskih jezika dozvoljavaju višestruke uslovne iskaze pod istim uslovom.Evo sintakse: If uslov Then uslovni iskaz 1 uslovni iskaz 2 uslovni iskaz itd. End If Znajući ovo, možemo da prepravimo kôd koji smo koristili u aplikaciji Uzbuna, pojednostavljujući ga, eliminisanjem kôda koji se ponavlja, i praveći ga jednostavnijim i razumljivijim. Otvori svoju aplikaciju Uzbuna. Dodaj još jedno komandno dugme na Form1. Promeni tekst osobinu Text koji pripadadugmeta Button2 na "Jedno If". Duplim klikom na Button2 edituj klik događaj. Dodaj sledeći kôd: If CheckBox1.Checked = True Then Form.ActiveForm.BackColor = System.Drawing.Color.Red TextBox1.Text = "Uzbuna" MessageBox.Show("Opasnost! Opasnost!") End If Napravi izvršnu verziju i pokreni svoj projekat. Čekiraj ček boks i klikni na dugme "Jedno if". Izračunava se samo jedan uslov. On je True, tako da se svi uslovni iskazi koji se nalaze ispod njega izvršavaju se po redu. Program radi identično kao i prethodni put. Međutim, ovaj put, tri uslovna iskaza dele jedan uslov! Korišćenjem jednog uslova sa višestrukim uslovnim iskazima koji se nalazi pod njim zahteva manje kôda i kôd je lakši za razumevanje.
Unit Lekcija 08 – Kijev, Ukrajna
Strana 18 od 28
Višestruki izbor Sećaš li se kada sam naručio bezalkoholno pivo samo sa da i neuz pomoć pitanjima čiji je odgovor True ili False? Koristio sam seriju pitanja kako bi suzio mogućnosti i odgovorio na višestruki izbor pitanja. Iako je potrajalo, na kraju sam dobio šta sam hteo. U kôd se na jednostavan način možeš da postavišti višestruka niz pitanja korišćenjem serije "If…Then" iskaza. Imam sjajan primer koji ovo demonstrira.
Napravi novu Windows aplikaciju pod imenom IzaberiBoju. Dodaj tri radio dugmeta i komandno dugme na formu Form1. Koristi prozor za osobine za postavljanje sledećih osobina. Promeni tekst osobinu Text koji pripada komandi RadioButton1 na “crveno” (“red”). Promeni tekst osobinu Text koji pripada komandi RadioButton2 na “zeleno” (“green”). Promeni tekst koji pripada Button1 na “Oboji me”. Postavi osobinu obeleženo (checked) koja pripada komandi RadioButton1 na True. Duplim klikom na Button1 unesi kôd za njegov događaj klik događaj na dugme.. Dodaj sledeće linije kôda: Dim mojaBoja As System.Drawing.Color If RadioButton1.Checked = True Then mojaBoja = System.Drawing.Color.Red End If If RadioButton2.Checked = True Then mojaBoja = System.Drawing.Color.Yellow End If If RadioButton3.Checked = True Then mojaBoja = System.Drawing.Color.Green End If Form.ActiveForm.BackColor = mojaBoja Napravi izvršnu verziju i pokreni svoj projekat. Primeti da je “crveno” radio dugme čekirano. Klikni na dugme “Oboji me”. Forma i dugmad su obojena u crveno. Izaberi drugo radio dugme i klikni na dugme “Oboji me”. Forma i dugmad su obojena u različite boje. Pogledaj kôd. Niz “If…Then” iskaza korišćen je da se odgovori na pitanja sa višestrukim izborom: “Koje radio dugme je čekirano?”. Dok se kôd izvršava po nekom redu, program konačno određuje koje od tri radio dugmeta je čekirano. Zatim program izvršava odgovarajuće uslovne iskaze i postavlja boju. Unit Lekcija 08 – Kijev, Ukrajna
Strana 19 od 28
Boolean Bulovi operatori u kôdu Pričali smo o tome kako možeš koristiti Boolean Bulove (logičke) operatore za spajanje izraza kako bi se rešili složeni logički problemi Boolean logike. Hajde da pogledamo jedan primer koji koristi AND Boolean logički operator AND za pravljenje složenog uslova. Modifikovaćemo našu aplikaciju IzaberiBoju dodavanjem ček boksa koji će omogućiti ili sprečiti funkcionalnost menjanje boje. Koristićemo AND Boolean Bulov operator AND za pravljenje složenijih uslova što zahteva da ček boks bude čekiran, u suprotnom, ili boja ne može da se menja.
Otvori svoju IzaberiBoju aplikaciju. Koja se zove IzaberiBoju. Na Form1 dodaj ček boks. Promeni tekst osobinu Text na “Omogući bojenje”. Promeni kôd za događaj klik na dugme za Button1 na sledeći način: Dim mojaBoja As System.Drawing.Color If RadioButton1.Checked = True And CheckBox1.Checked Then mojaBoja = System.Drawing.Color.Red End If If RadioButton2.Checked = True And CheckBox1.Checked Then mojaBoja = System.Drawing.Color.Yellow End If If RadioButton3.Checked = True And CheckBox1.Checked Then mojaBoja = System.Drawing.Color.Green End If Form.ActiveForm.BackColor = mojaBoja Napravi izvršnu verziju i pokreni svoj projekat. Klikni na dugme “Oboji me”. Ništa se ne dešava! Nema promene boje. Sada čekiraj ček boks “Omogući bojenje” i ponovo pritisni dugme “Oboji me”. Forma i kontrole su ofarbane u crveno. Evo šta se dešavadesilo. Dodali smo sledeći kôd u uslov svakog If… Then iskaza: And CheckBox1.Checked
Savet instruktoru This is an example of a text box we can use for the Teacher’s Guide.Neki učenici imaju problema sa kompleksnim (logičkim) If naredbama. Izbegavaju ih umesto da prave kompleksnije programe. Koristite Iks-Oks program iz Lekcije 4 kako bi prikazali kompleksne If naredbe na delu.
Unit Lekcija 08 – Kijev, Ukrajna
Strana 20 od 28
Ovim se dodaje ekstra uslov. Sada oba uslova moraju biti True da bi se boja promenila. Na primer, RadioButton2.Checked = True And CheckBox1.Checked Oba moraju biti True. Zapamti, True AND True = True. Ako je bilo koji od uslova s bilo koje strane AND operatora False, onda će izraz biti izračunat kao False i boja se neće promeniti.
Unit Lekcija 08 – Kijev, Ukrajna
Strana 21 od 28
Ulazak u Kijev Pa, stigli smo! Evo nas u Kijevu, glavnom gradu Ukrajinea. Nisam ni sumnjao da ćemo uspeti. Na našem putu si naučio još jedan neophodan tip kôdnog iskazanaredbe - , “If…Then” iskaz. Sada svojim programima možeš dati malo mozga. Sada mogu sami donositi odluke—zato pazite šta im tražite da rade!
Imam na PDA jedaan zabavan «n zabavan Dokaži» zadatak za tebe. Mislim da ćeš stvarno uživati u ovomnjemu. Ne zaboravi na kviz pred na ciljuem pre nego što krenemo ka sedištu reli komitetau po naš izazov.
Unit Lekcija 08 – Kijev, Ukrajna
Strana 22 od 28
08 Dokaži 02 Programiranje nNadgledanja sposobnosti Znamo da si na ovom putovanju Programiranje je zakon zato što si pokazao svoje sposobnosti u učionici. Reli komitet putovanje je zakon želi prostu formu za nadgledanje koja bi pomogla ostalim studentima da odluče da li da uzmu kurs programiranja.
Napravi formu po ugledu na ovu:
Unit Lekcija 08 – Kijev, Ukrajna
Strana 23 od 28
Kada se klikne na dugme Izračunaj, dodaj brojeve u 6 tekst bokseva. Pošto je sadržaj tekst bokseva string, ne broj, moraćeš da ga konvertuješ. Jezik Visual Basic.NET obezbeđuje četiri načina za konverzijuda bi ovo uradio obezbeđuje četiri načina. Evo Sledi je jedan od njih. X = Val(TextBox1.Text) Funkcija Val pretvara string u brojnu vrednost. izračunava vrednost stringa. Onda Nakon toga se ta vrednost je možeš dodeliti promenljivoj kao što je na primer x. ako je broj veći od 40, saopšti studentu pripiši poruku tekst boksu Izračunaj ukazujući na to da je odličan odličan kandidat za kurs pogramiranja. Ako je broj između 20 – 39 onda reci studentu da je njeihgov programeski uspeh neizvestan ali da suje dobrodošliao da probaju. Ako je broj ispod 20 onda podstakni studenta da krene putem druge karijere Koji je tvoj rezultat? Kada je tvoj program ispravno korektanproradi, pokaži ga svom instruktoru.
Savet instruktoru Guide.Kada ocenjujete ovaj Dokaz, proverite da tačno 20 ima vrednost "neodređeno" i tačno 40 ima vrednost "izvrsno".
Unit Lekcija 08 – Kijev, Ukrajna
Strana 24 od 28
08 Izazov Pokretna meta Sećaš li se one arkadne igrice koju smo videli u restoranu prošle noći kada si pokušao da klikneš na pokretnu metu? Hajde da je kreiramo sa Visual Basic.NET-om. Biće nam potrebne neke stvari koje nismo posebno pokrili, pa pročitaj pažljivo ove instrukcije. Savet instruktoru This is an example of a text box we can use for the Teacher’s Guide.Ovaj progam je veći od ostalih. Možda je zgodno pregledati označeno rešenje kako bi se pripremili za pitanja učenika.
Promeni dimenzije Form1 na Height 250 i Width 550. Nazovi formu Pogodi. Dodaj formi kontrole tako da izgleda ovako:
Unit Lekcija 08 – Kijev, Ukrajna
Strana 25 od 28
Cilj igre je da klikneš na pokretnu metu. Kôd će pomerati sliku, otežavajući da se klikne na nju. Dugme Start inicijalizuje i pokreće igru. Dugme Stop završava igru. Dugme Exit zatvara program. Tri radio dugmeta služe za postavljanje nivoa igre. Dodaj boks prostor za sliku (PictureBox) koja će da drži grafičku metu. Grafičkau metau smeštenu u fajl, 001_Izazov_Meta.gif moćeš preuzeti , preuzeta je zajedno sa instrukcijama i postavi je u kreirani prostor za sliku. Izaberi sliku metu koju si preuzeo kao sliku za boks za sliku. Izaberi Postavi StretchImage zavrednost osobineu SizeMode na StretchImage. Ovaj program koristi komponentu Tajimer kako bi obezbedio da se kôd izvršava u određenim vremenskim intervalima. Nakon što si naslikao kreirao formu, nađi tajmer kontrolu Timer u boksu listi raspoloživih kontrolaza alat (Toolbox) i klikni dvaput na njega. Biće smešten ispod forme. On je deo forme ali je nevidljiv za korisnika. 1. Kreiraj promenljivu tipa Integer kako bi izbrojao broj uspešnih pogodaka. 2. Kreiraj promenljivu tipa Integer kako bi izračunao ukupan broj pokušaja. 3. U dobađaju klik na duge dugmeta Start, dodaj kôd koji će raditi sledeće: Postavi svoje brojače Pogodak i Ukupno brojače na nulu. Postavi osobinu Enable tajmera komponente Timer Enable na True. 4. Dodaj kôd u događaj klik na dugme dugmeta Start da radi sledeće: Ako je RadioButton1 True, postavi osobinu Timer Interval na 900, i širinu i visinu slike na 40 Ako je RadioButton2 True, postavi osobinu Timer Interval na 850, i širinu i visinu slike na 35 Ako je RadioButton3 True, postavi osobinu Timer Interval na 800, i širinu i visinu slike na 30 5. U događaju klik na dugme dugmeta Stop, postavi osobinu Enable komponente Timertajmera na False. 6. U klik događaju klik na dugme dugmeta Exit, završi program korišćenjem End komande. 7. U klik događaju klik na boksprostora za sa slikomsliku, dodaj kôd koji će sabrati jedinicu brojaču Pogodak i postavi ga u tekst boks "Pogodak". 8. U događaju Timer (dva puta klikni na komponentu tajmer Timer kako bi ušao u kôd), dodaj sledeći kôd niz instrukcija kako bi pokretao metu. Pretpostavlja se da je veličina tvoje forme 250 puta 550. Unit Lekcija 08 – Kijev, Ukrajna
Strana 26 od 28
Dim MojSlučajniGenerator As System.Random MojSlučajniGenerator = New System.Random Dim SlučajnoX As Integer Dim SlučajnoY As Integer SlučajnoX = MojSlučajniGenerator.Next(1, 550) SlučajnoY = MojSlučajniGenerator.Next(1, 250) PictureBox1.SetBounds(SlučajnoX, SlučajnoY, Me.Width, Me.Height, System.Windows.Forms.BoundsSpecified.Location) 9. U događaju Timer, posle kôda gore navedenog kôda, dodaj 1 na Uukupan broj pokušaja i smesti rezultat u tekst boks pod oznaklom "Ukupno". 10. Duplim klikom na boks sa slikom kreiraj njen klik događaj klik na boks sa slikom. Dodaj 1 naUvećaj vrednost brojača Pogodak za 1. Dodatak / Skretanje sa puta Na početku tajmer kôdaprograma , postavi boju u pozadinei forme na sivo. Kad je meta pogođena, postavi boju pozadine forme na crvenuo.
Unit Lekcija 08 – Kijev, Ukrajna
Strana 27 od 28
Unit Lekcija 08 – Kijev, Ukrajna
Strana 28 od 28
Lekcija 09 - Katmandu, Nepal
Strana 1 od 26
Katmandu, Nepal Miloš je učinio veliku stvar time što vas je upoznao sa If ... Then naredbama. Sada vaši programi mogu da donose odluke! Skoro da se može reći da mogu da misle! Pokazao vam je kako da koristite operatore poređenja, kako da radite sa Bulovom logikom i kako da kodirate If ... Then naredbe u jeziku Visual Basicu .NET. Miloš vam je prikazao i nekoliko odličnih primera koji demonstriraju korišćenje If ... Then naredbi za donošenje odluke u slučajevima kada postoji više izbora, a pokazao vam je i kako se koriste Bulovi operatori za kreiranje složenih uslova. Miloš će nas sada odvesti do našeg sledećeg odredišta, Katmandua u Nepalu. Tamo su pejzaži fantastični iako je temperatura malkice viša u ovo doba godine. Pošto smo u pustinji, neće biti baš mnogo benzinskih pumpi uz put. Ako budemo imali dovoljno goriva, to će biti prijatno putovanje, u suprotnom, to će biti dugo pešačenje! U svakom slučaju, pokazaću vam nekoliko malih trikova koji će učiniti If ... Then naredbe mnogo korisnijim. Na kraju ovog putovanja bićete u stanju da naterate vaše programe da naprave gotovo svaku odluku koju vi želite!
Lekcija 09 - Katmandu, Nepal
Strana 2 od 26
Proširivi If…Then Pošto znate kako se koriste If ... Then naredbe u Visual Basic.NET-u, možete učiniti dosta toga pomoću samo jedne od njih. Ako biste koristili više od jedne If ... Then naredbe, vaš program bi mogao da donosi mnogo odluka. Koristeći niz If ... Then naredbi, vaš program može čak odgovarati na pitanja koja imaju više ponuđenih odgovora Miloš vam je takođe pokazao kako kako više uslovnih naredbi može deliti jedan uslov. Ako je vrednost tog uslova True, sve ostale uslovne naredbe, koje se nalaze ispod uslova, izvršavaće se jedna za drugom. Ovo uprošćuje vaš kod, i čini ga jednostavnijim za čitanje i debagovanje. Ako koristite jednostavne If ... Then naredbe, možete napisati kod koji će omogućiti vašem programu da donosi bilo kakve odluke, bez obzira na njihovu složenost. Međutim, takav kod može 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 omogućiti 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, pokazaću vam kako se kodiraju If ... Then ... Else iskazi. Na kraju, pokazaću vam neke razlike u pisanju ovih iskaza u jezicima Visual Basic.NET, C# i J#. Spremni? Krećemo!
Lekcija 09 - Katmandu, Nepal
Strana 3 od 26
Ugneždene If…Then naredbe Kako bi se zadržao na jednostavnom objašnjenju, Miloš je prećutao jednu tajnu vezanu za If .. Then naredbe, a to je da u jednoj If ... Then naredbi možete imati drugu If ... Then naredbu kao uslovnu naredbu! Razmislite o tome! Druga If ... Then naredba biće izvršena jedino ako je uslov iz prve If ... Then naredbe ispunjen. Dakle, prva naredba sadrži drugu. Ovo se zove ugneždavanje zato što se jedna If ... Then naredba ugneždava, 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 Then If the store is open Then I will buy an MP3 player End If End If
Savet instruktoru Uvlačenja redova i njihovo poravnavanje su veoma važne stvari kod ugneždenih If naredbi.
Ovo je kao da imamo dve If ... Then naredbe u okviru jedne! Prva If .. Then naredba je obavijena oko druge. Prva sadrži uslov (If imam 15000 dinara) i uslovnu naredbu (If prodavnica je otvorena Then Kupiću MP3 plejer), koja je sasvim slučajno druga If ... Then naredba. Druga If ... Then naredba ima svoj uslov (If prodavnica je otvorena) i svoju uslovnu naredbu (Kupiću MP3 plejer). Kao što možete videti, ja moram imati 15000 dinara i prodavnica mora biti otvorena, inače ništa od MP3 plejera. Dakle, oba uslova moraju biti ispunjena. Ako ja nemam 15000 dinara ja neću moći da kupim MP3 plejer bez obzira da li je prodavnica otvorena ili ne!
Savet instruktoru Neki učenici će primetiti da gornji primer može biti napisan kao istinitosni iskaz: If imam 200$ i radnja je otvorena. Ugneždavanje postaje korisno kada postoji serija If naredbi u uvučenom delu, ili kasnije u delu gde se javlja Else naredba.
Lekcija 09 - Katmandu, Nepal
Strana 4 od 26
Hajde da sada pogledamo još malo koda. Startujmo novu aplikaciju i nazovimo je Nesting (Ugneždavanje). Dodajmo dva ček boksa i jedno dugme na formu Form1. Promenimo tekst koji je ispisan na dugmetu Button1 (osobina Text) u “Šta je označeno?“. Dupli klik na dugme Button1 će vam omogućiti da dodate kod za njegov “kilk“ događaj. Dodajte sledeći kod: If CheckBox1.Checked = True Then If CheckBox2.Checked = True Then MessageBox.Show("All are checked.") End If End If Napravite izvršnu verziju (opcija build) i startujte vašu aplikaciju. Čekirajte (označite) prvi čekboks a zatim kliknite na “Šta je označeno?” dugme. Šta se dešava? Pa, ne dešava se ništa. Sada označite i drugi čekboks i kliknite na dugme “Šta je označeno?” ponovo. Ovoga puta će se pojaviti poruka: “Oba su označena”. Kao što možete 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 ugneždena u prvoj. Ugneždena If … Then naredba ima svoj uslov: If CheckBox2.Checked = True Then Ona takođe ima i svoju uslovnu naredbu: MessageBox.Show("All are checked.") Dakle, šta se dešava? Ako je prvi uslov ispunjen (CheckBox1 je čekiran), tada se izvršava 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, izvršava. Oba uslova moraju biti ispunjena kako bi se poruka prikazala. Dakle, ako jedan od dva čekboksa nije čekiran, poruka se neće prikazati.
Lekcija 09 - Katmandu, Nepal
Strana 5 od 26
U prethodno navedenom kodu, uočite da je druga If … Then naredba sadržana u okviru prve. Blok End If prve If … Then naredbe se nalazi iza End If bloka druge If … Then naredbe. Druga naredba je ugneždena, ili sadržana, u okviru prve. Ugneždavanje se može koristiti kako bi se kombinovane višestruke If … Then naredbe ali u tom slučaju uslovna naredba će se izvršiti samo u slučaju kada svi uslovi koji joj prethode ispunjeni.
Lekcija 09 - Katmandu, Nepal
Strana 6 od 26
Suprotstavljeni uslovi Do sada su naši uslovi bili pomalo jednostrani. Ako je uslov ispunjen, uslovna naredba se izvršavala. Ukoliko uslov ne bi bio ispunjen ne bi se desilo ništa. Šta ako želimo da se nešto desi kada uslov nije ispunjen? Šta ako želimo da izvršimo još neke linije koda? Pa, jedna mogućnost je da napišemo još jednu If … Then naredbu sa suprotnim uslovom i sa svojom uslovnom naredbom. Hajde da napišemo kod! Startujmo novu aplikaciju koja se zove AkoNijeIsunjenUslov (IfThenOtherwise). Dodajmo dugme i dva čekboksa na formu Form1. Promenimo osobinu Text dugmeta Button1 u “IfThen”. Upišite sledeći kod za klik događaj dugmeta Button1: If CheckBox1.Checked = True Then Form.ActiveForm.BackColor = System.Drawing.Color.Red End If If CheckBox1.Checked = False Then Form.ActiveForm.BackColor = System.Drawing.Color.Blue End If Napravite izvršnu 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.
Lekcija 09 - Katmandu, Nepal
Strana 7 od 26
Kako ovaj kod radi? U prvoj If … Then naredbi uslov proverava da li je iskaz CheckBox1.Checked = True tačan. Ako je tačan, 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 biće postavljena na Blue (plavo). Ima ponavljanja, ali radi! Ovde je jedini problem u tome što ćete morati da pišete blok gotovo identičnog koda za potpuno suprotni uslov. Ovo može da potraje mnogo vremena i da bude izvor grešaka.
Lekcija 09 - Katmandu, Nepal
Strana 8 od 26
If…Then…Else Visual Basic.NET nudi alternativu koja eliminiše 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 omogućuje pisanje odvojenih uslovnih naredbi za svaki od mogućih ishoda uslova (True i False, odnosno ispunjen i neispunjen). If … Then … Else naredba se koristi kako bi se izbeglo pisanje dve slične If … Then naredbe sa suprotstavljenim uslovima. Sintaksa ove naredbe izgleda ovako: If condition Then conditional statement 1 Else conditional statement 2 End If Kako ovaj kod funkcioniše? Prvo se proverava navedeni uslov. Ako je uslov ispunjen izvršava se Uslovna naredba 1. U suprotnom (else) izvršava se Uslovna naredba 2. Hajde da modifikujemo našu IfThenOtherwise aplikaciju uz korišćenje If … Then … Else naredbe i pokažimo 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”. Događaju klik dugmeta Button2 pridružimo sledeći kod: If CheckBox1.Checked = True Then Form.ActiveForm.BackColor = System.Drawing.Color.Red Else Form.ActiveForm.BackColor = System.Drawing.Color.Blue End If Napravite izvršnu 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, izvršava se prva uslovna naredba i forma postaje
Lekcija 09 - Katmandu, Nepal
Strana 9 od 26
crvena. U suprotnom (else), izvršava se druga uslovna naredba (ona koja sledi iza ključne reči Else) i forma postaje plava.
Hajde da pogledamo još jedan primer za If … Then … Else. Modifikovaćemo našu IfThenOtherWise aplikaciju kako bi uključili više linija koda u okviru uslovnih naredbi. If … Then … Else naredba može imati više linija koda za svoje uslovne naredbe nakon If … Then i Else blokova. Otvorite vašu IfThenOtherwise aplikaciju. Uklonite kod iz klik događaja vezanog za dugme Button2 i zamenite ga sledećim: If CheckBox1.Checked = True Then Form.ActiveForm.BackColor = System.Drawing.Color.Red MessageBox.Show("I'm red.") TextBox1.Text = "I'm red." Else Form.ActiveForm.BackColor = System.Drawing.Color.Blue MessageBox.Show("I'm blue.") TextBox1.Text = "I'm blue." End If Napravite izvršnu verziju i startujte vaš projekat. Kliknite na “IfThenElse” dugme. Desiće se tri stvari:. Sada čekirajte CheckBox1 i kliknite ponovo na dugme “IfThenElse”. Desiće se tri nove Savet instruktoru stvari. Izvršavanje If naredbi korak po korak
Insistirajte da učenici prođu kroz kod, ne samo da ga pročitaju.
Hajde sada da iskoristimo mogućnost izvršavanja koda If … Then … Else naredbe korak po korak koju nam daje debager Visual Studio NET – a. Na ovaj način videćemo 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 Lekcija 09 - Katmandu, Nepal
Strana 10 od 26
CheckBox1 na True. Kada se aplikacija startuje ovaj čekboks će biti označen (čekiran).
Lekcija 09 - Katmandu, Nepal
Strana 11 od 26
Dvostruki klik na dugme omogućiće vam unos koda za njegov klik događaj. Dodajte sledeći kod: Dim MyValue As Integer MyValue = 1 If CheckBox1.Checked = True Then MyValue = 2 Else MyValue = 3 End If 1. Postavite prekidnu tačku na prvu liniju koda (MyValue = 1) dvostrukim klikom na sivu zonu levo od koda, ili desnim klikom i izborom opcije “Insert Breakpoint”.
2. Napravite izvršnu verziju i startujte vaš projekat. Kada se forma pojavi kliknite na dugme. Kod će se izvršiti sve dok ne dođe do linije u kojoj je prekidna tačka.
3. Pritisnite F11 da biste izvršili tekuću liniju koda (MyValue = 1). Nakon toga biće obeležena sledeća linija koda.
Lekcija 09 - Katmandu, Nepal
Strana 12 od 26
4. Pritisnite F11 kako bi izvršili označenu liniju koda (If CheckBox1.Checked = True Then). Pošto je CheckBox1 čekiran sledeća linija koda koja će biti obeležena je MyValue = 2. 5. Pritisnite dugme F11 na tastaturi da biste izvršili označenu liniju koda (MyValue = 2). Sledeća linija koda koja će biti obeležena je ona u kojoj je End If.
6. Pritisnite F11 da biste izvršili trenutno obeleženu liniju koda (End If). Sledeća linija koda biće obeležena.
7. Ponovo pritisnite F11 kako bi se izvršila označena linija koda (End Sub). Forma će se ponovo pojaviti.
Lekcija 09 - Katmandu, Nepal
Strana 13 od 26
8. Odčekirajte CheckBox1 i kliknite na dugme. Ponovite proces izvršenja koda korak po korak pritiskajući dugme F11 i posmatrajući koje će linije biti označavane i izvršavane. Ovoga puta izvršiće se Else grana praćena linjom MyValue = 3. Na dobrom smo putu! Sada možete videti kako If … Then … Else naredbe zaista funkcionišu!
Lekcija 09 - Katmandu, Nepal
Strana 14 od 26
Hajde da proverimo šta smo do sada naučili. 09 Dokaži 01
Golf Rezultati
Da li smo se zabavljali jutros igrajući golf ili ne? U redu, vi ste se zabavljali a moj rezultat je ... Šta?!! Hajde da izračunamo rezultate. Napravite formu kao na sledećoj slici:
Kada se klikne na dugme „Compute“, izračunava se prosečan golf rezultat. Pošto je sadržaj tekst boksa string, a ne broj, moraćete najpre da ga konvertujete u broj. Visual Basic.NET vam pruža mogućnost da ovu konverziju uradite na nekoliko različitih načina. Evo jednog. X = Val(TextBox1.Text) Funkcija Val računa vrednost stringa. Nakon toga, tu vrednost možete dodeliti promenljivoj X. Za svakog igrača:
Ako je njihov rezultat manji od prosečnog, izbacite poruku „Lep rezultat “, a vrednost osobine Text odgovarajućeg natpisa (labele ) postavite na „Nastavi da vežbaš“.
Na početku programa, vrednosti osobine Text svih labela treba da budu prazni stringovi. Kada vaš program bude ispravno proradio, pokažite ga svom nastavniku.
Lekcija 09 - Katmandu, Nepal
Strana 15 od 26
If naredbe u C# i J# Pokazao sam vam sintaksu i primere za If ... Then i If ... Then ... Else naredbe u programskom Savet instruktoru jeziku Visual Basic.NET. Sada ću Napredniji učenici bi mogli da prepustiti Draganu i Jovani da uzmu završen VB program i napišu ga u C#u ili J#u. vam pokažu kako se ove naredbe kodiraju u jezicima C# i J#. C# i J# imaju naredbe koje funkcionišu potpuno isto kao i If... Then i If ... Then ... Else naredbe u jeziku Visual Basic.NET. Takođe, koriste se na isti način. Sintaksa je ipak, neznatno drugačija. One takođe imaju uslove i uslovne naredbe. Pokazaću 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 započinjemo našu naredbu pomoću ključne reči „if“ – obratite pažnju 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 poređenja. Kao što znamo Visual Basic.NET koristi samo jedan znak jednakosti za ovu svrhu. Uslovne naredbe su ispisane u okviru vitičastih zagrada – { i }. Zbog čitljivosti koda neki programeri stavljaju svaku vitičastu zagradu u posebnu liniju. Uočimo da svaka od uslovnih naredbi ima znak ; na kraju. Uočite takođe da se ključna reč „Then“ ne koristi! A šta je sa J#? Pa, u ovom slučaju kod je potpuno isti kao i u jeziku C#!
Lekcija 09 - Katmandu, Nepal
Strana 16 od 26
Hajde sada da pogledamo kako izgleda „If ... Then ... Else“ naredba u C#. Pogledajmo sličnosti i razlike između ovih naredbi u jezicima C# i Visual Basic.NET. int MyAge; MyAge=3; if (MyAge==2) { MessageBox.Show("I MessageBox.Show("I } else { MessageBox.Show("I MessageBox.Show("I }
am 2."); am still 2.");
am 3."); am still 3.");
Ponovo pogledajte uslov koji se nalazi u zagradama. Uočimo da postoje dve grupe uslovnih naredbi, jedna grupa je iza uslova, a druga iza ključne reči else. Svaka od ovih grupa je zatvorena vitičastim zagradama. Reč „Then“ se ni ovde ne koristi. U jeziku J# kod za „If ... Then ... Else“ je potpuno isti kao i u jeziku C#!
Lekcija 09 - Katmandu, Nepal
Strana 17 od 26
Operatori u C# i J# Postoji više stvari koje treba znati u vezi razlika između jezika Visual Basic.NET, C# i J# kada pravite „If ... Then“ i „If ... Then ... Else“ naredbe. Najpre Bulovi operatori koriste drugačije znake. Umesto And, Or i Not, C# i J# koriste &&, || i !. Pogledajte sledeću tabelu da biste videli razlike.
Logički (Bulov) operator AND OR NOT
Visual Basic.NET And Or Not
C# && || !
J# && || !
Evo primera za korišćenje logičkih i (&&) i ne (!) operatora u jeziku C#.
bool isBilled=true; bool isLate=false; bool isDone; isDone = isBilled && !isLate; MessageBox.Show(isDone.ToString()); Uočimo da su rezervisane reči bool (oznaka za logički tip podataka, skraćeno od Boolean), true i false napisane malim slovima. Promenljive isBilled, isLate i isDone su deklarisane kao logičke (bool) promenljive. Uočimo da je operator „logičko i“ (AND) označen sa &&, a operator „logičko ne“ (NOT) sa ! u jeziku C#. Pošto jezici C# i J# ne vrše direktnu konverziju u string, iskorišćen je metod ToString. Evo istog tog koda napisanog u jeziku J# boolean isBilled=true; boolean isLate=false; boolean isDone;
Lekcija 09 - Katmandu, Nepal
Strana 18 od 26
isDone=isBilled && !isLate; MessageBox.Show(System.Convert.ToString(isDone));
Lekcija 09 - Katmandu, Nepal
Strana 19 od 26
Kao što vidite, kod je u velikoj meri identičan C# kodu, uz nekoliko razlika. Uočimo da se logičke promenljive (promenljive Boolean tipa) isBilled, isLate i isDone označavaju ključnom reči boolean. U J# kodu moramo eksplicitno konvertovati logičku vrednost u string koristeći System.Convert.ToString metodu, pre nego što tu vrednost prikažemo u prozoru za poruke. Još neki operatori poređenja se razlikuju u C# i J# u odnosu na jezik Visual Basic.NET. Već ste videli da se za poređenje „da li je jednako“ koristi == umesto =. Takođe za predstavljanje nejednakosti C# i J# koriste != umesto <>. Sledi tabela koja upoređuje operatore za poređenje. Operator poređenja
Visual Basic.NET
C#
J#
Da li je jednako
=
==
==
Da li je veće od
>
>
>
Da li je manje od
<
<
<
Da li je veće ili jednako
>=
>=
>=
Da li je manje ili jednako
<=
<=
<=
Da li je različito
<>
!=
!=
Pogledajmo sada ovaj kod koji je isti i u J# i u C# i koji koristi operator poređenja po nejednakosti. int MyAge; MyAge=2; if (MyAge!=3) { MessageBox.Show("I am not 3."); } Kao što možete videti, poruka „Nemam 3 godine.“ će biti prikazana kada se kod izvrši.
Lekcija 09 - Katmandu, Nepal
Strana 20 od 26
Ovo je bilo izvrsno objašnjenje. Vidim svega nekoliko razlika u kodiranju „If ... Then“ i „If ... Then ... Else“ naredbi u jezicimaVisual Basic.NET, C# i J#, ali zato vidim puno sličnosti! Iste stvari se rade na isti način, jedino je sintaksa malo drugačija.
Dolazak u Katmandu, Nepal Evo nas u Katmanduu, u Nepalu! Da li ste dosta naučili tokom ovog dugog puta? Sada imamo na raspolaganju više programerskih alata sa kojima možemo da radimo. Možete pisati ugnježdene If ... Then naredbe i kodirati takođe i If ... Then ... Else naredbe. Vaš kod sada zaista može donositi odluke! U redu, vreme je za još malo vežbe. Evo jedne matematičke igre Dokaži.
Lekcija 09 - Katmandu, Nepal
Strana 21 od 26
09 Dokaži 02
Magični kvadrat
Ja nisam baš pravi mađioničar kao onaj koga smo videli u IfElse zabavnom parku, ali i ja znam jedan trik. Ja mogu rasporediti brojeve od 1 do 9 u matricu 3 x 3 tako da u svakom pravcu daju isti zbir. Možete li da napišete program baziran na tome? Napravite formu kao što je ova, ili ako hoćete da uštedite vreme iskopirajte formu iz 09_proveit02_template:
Kada se klikne na dugme „Proveri zbirove“, izračunaće se sume u sve tri vrste, u sve tri kolone i u obe dijagonale i rezultati će biti smešteni u polja TextBox10 do TextBox17 koja se nalaze sa desne strane i ispod polja u koja ste upisivali brojeve.
Lekcija 09 - Katmandu, Nepal
Strana 22 od 26
Pošto je sadržaj textboksa string, a ne broj, moraćete tu vrednost najpre da konvertujete u brojnu vrednost. Visual Basic.NET omogućuje nekoliko postupaka za konverziju, a evo jednog: X = Val(TextBox1.Text) Funkcija Val računa vrednost stringa. Nakon toga tu vrednost možete pridružiti promenljivoj ili je koristiti kao deo uslova u If naredbi. Svaki od zbirova mora biti jednak 15, a zbir svih 9 tekstboksova mora biti 45. Labela Label2 na dnu forme se može koristiti da pošalje poruku o uspešnom ili neuspešnom popunjavanju tekstboksova, onda da ohrabri igrača ili da javi da je jedan isti broj unet dva ili više puta. Kada program bude ispravno proradio pokažite ga svom nastavniku. Savet instruktoru Ako suma svih devet boksova nije 45 onda je verovatno unet dupikat broja. Učenik bi takođe trebalo da proveri za pojedinačne brojeve veće od 9 ili manje od 1.
Lekcija 09 - Katmandu, Nepal
Strana 23 od 26
Spremni za izazov? 09 Izazov Bacanje novčića Svaki put kad imamo nesporazum, kao na primer čiji je red da isprazni kantu za đubre, bacamo novčić. Hajde da nateramo kompjuter da simulira bacanje novčića. Videćemo da li možemo da pogodimo da li će se novčić okrenuti glavom ili pismom nagore. Napravite formu kao na sledećoj slici ili iskoristite 09_challenge_template:
Kada je odgovarajuće radio dugme označeno, vrednost TextBox1.Text će biti postavljena na „Glava“ ili „Pismo“. Kada se klikne na dugme „Baci novčić“, generisaće se slučajni broj pomoću sledećeg koda: Dim MyRandomGenerator As System.Random MyRandomGenerator = New System.Random Dim RanNum As Integer ' Generate random value between 0 and 2 - not including 2. RanNum = MyRandomGenerator.Next(0, 2)
Ako je slučajni broj nula, vrednost osobine TextBox2.Text biće postavljena na „Glava“, u suprotnom biće postavljena na „Pismo“.
Ako je TextBox1.Text jednako sa TextBox2.Text dodajte 1 broju pobeda, u suprotnom dodajte 1 broju poraza.
Upišite pobede i poraze u odgovarajuće tekstboksove. Lekcija 09 - Katmandu, Nepal
Strana 24 od 26
Upozorenje: U Poglavlju 7 ste naučili da ne možete mešati brojeve i stringove. Osobina Text je uvek definisana kao string. Visual Basic.NET vam može dopustiti da saberete broj direktno sa vrednošću iz tekstboksa ako je ta vrenost string sačinjen samo od brojeva, međutim, ovo je loša navika i trudite se da ovo uvek izbegnete. Definišete celobrojnu promenljivu (Integer) za broj pobeda i još jednu za broj poraza. Onda uvećavajte te vrednosti, pa ih onda prikažite u tekstboksova. Kada vaš program proradi, pokažite ga svom nastavniku. Proširenje / Skretanje sa puta Dodajte polja koja će prikazati procenat pobeda i procenat poraza.
Lekcija 09 - Katmandu, Nepal
Strana 25 od 26
Lekcija 09 - Katmandu, Nepal
Strana 26 od 26
Lekcija 11 – Peking, Kina
Strana 1 od 26
Peking, Kina Miloš će nas odvesti do našeg sledećeg odredišta a to je Peking, glavni grad Kine. Kretaćemo se nestvarnim upetljanim autoputem. Na našem prethodnom malom putovanju, on je uradio veliku stvar objašnjavajući ti određene (brojačke) petlje – petlje koje se izvršavaju određeni broj puta. I na ovom putovanju kretaćemo se u krugovima! Pokazaću ti kako da koristiš različite tipove petlji. Sve one se zovu neodređene petlje. Kada su neodređene petlje u pitanju, ne možeš unapred znati koliko puta će se one izvršiti. One prestaju da se izvršavaju tek kada se određeni uslov ispuni. Uočićeš da su neodređene petlje još jedan koristan alat koji svaki programer mora da zna da koristi. Sigurno ćeš doći u situaciju kada ti određene petlje neće završiti posao i kada ćeš morati da upotrebiš neodređene.
Lekcija 11 – Peking, Kina
Strana 2 od 26
Neodređene petlje Postoje mnoge stvari koje moramo da radimo ponovo i ponovo sve dok se nešto ne dogodi. To „nešto“ se ponaša kao uslov koji nas zaustavlja da te „stvari“ ne uradimo ponovo. Neodređene petlje se izvršavaju sve dok postavljeni uslov ne postane ispunjen (dobije vrednost TRUE), i onda se zaustavljaju. Na primer, sinoć smo vozili oko parkinga skoro sat vremena sve dok nismo pronašli mesto za parkiranje dovoljno veliko za naš kombi. Do tada su se zatvorili i restoran i kiosk brze hrane. Morali smo da se vratimo da bismo potražili drugo mesto za jelo. Dok smo se vozili unaokolo tražeći drugi restoran, moj stomak je konstantno krčao. On sigurno neće prestati da krči sve dok ne bude pun. I kôd se ponaša na isti način. Ponekad morate da izvršavate isti kôd ponovo i ponovo sve dok se ne ispuni određeni uslov. Na primer, tvoj program može tražiti od korisnika da unese šifru ponovo i ponovo sve dok on ili ona ne unesu ispravnu. Ili dok tvoj program vrši razna izračunavanja, u pozadini će se čuti pesma plavih kitova. Ono što razdvaja neodređene od određenih petlji je činjenica da se određene petlje izvršavaju tačno određeni broj puta. Postoje dve vrste neodređenih petlji: „do while petlje“ i „do until petlje“. Do while petlje se izvršavaju sve dok je uslov za njihovo izvršenje ispunjen (TRUE). Do until petlje se izvršavaju sve dok uslov ne postane ispunjen. Kod korišćenja neodređenih petlji jedino treba voditi računa o tome kada odabrati do while, a kada do until petlje.
Lekcija 11 – Peking, Kina
Strana 3 od 26
Do While…Loop petlja Petlja „Do While ... Loop“ izvršava blok linija kôda sve dok je njen uslov ispunjen (dok uslov zadržava vrednost True). Čim uslov dobije vrednost False, petlja se završava i blok naredbi koje se nalaze u petlji se više ne izvršava. Bitan deo Do While ... Loop je uslov koji služi da bi kontrolisao njeno izvršenje. Evo kako izgleda sintaksa Do While ... Loop petlje u programskom jeziku Visual Basic.NET: Do While code code code Loop
(condition) statement 1 statement 2 statement, etc.
Uočit da su ovde „Do“, „While“ i „Loop“ ključne reči. One su napisane plavim slovima. Uslov je napisan u okviru običnih zagrada. Uslov može biti bilo kakav logički izraz za koji se može ustanoviti da li je tačan ili netačan, tj. da li ima vrednost True ili False. Na primer, takav uslov je X < 4. Kôd koji želiš da izvršavaš više puta nalazi se između Do While i Loop naredbi i naziva se telo petlje. Na početku svakog prolaska kroz petlju, proverava se tačnost uslova. Ako je uslov još uvek ispunjen, naredbe iz tela petlje se izvršavaju ponovo. Ako je vrednost uslova False, petlja prekida sa izvršavanjem. Sada ću ti pokazati kako da iskodiraš jednu Do While ... Loop petlju. Napravi novu Windows aplikaciju i nazovi je DoWhileLoop. Dodaj jedno dugme na formu Form1. Dvostruki klik na dugme Button1 odvešće te do mesta gde treba da uneseš kôd za Klik događaj. Dodaj sledeći kôd: Dim WhileValue As Integer WhileValue = 0 Do While (WhileValue < 2) MessageBox.Show(WhileValue) WhileValue = WhileValue + 1 Loop
Lekcija 11 – Peking, Kina
Savet instruktoru Uslov u Do petlji može biti i kompleksan, kao na primer: While (A > 1 and B < C)
Strana 4 od 26
Napravi izvršnu verziju (opcija build) i startuj tvoju aplikaciju. Klikni na dugme Button1. Prozor za poruke će pokazati 0. Klikni na OK. Prozor za poruke će prikazati 1. Klikni na OK. Vratio si se u početnu formu i više se nijedan prozor za poruke na pojavljuje. Kako ovaj kôd funkcioniše? Deklarisali smo promenljivu koja se zove WhileValue. Na početku je promenljiva WhileValue postavljena na 0. Svaki put kada se prođe kroz petlju vrednost promenljive WhileValue se uveća za 1. Na početku petlje Do While naredba proverava da li je uslov WhileValue < 2 ispunjen. Ako je uslov ispunjen, prikazuje se prozor za poruke i vrednost promenljive WhileValue se uvećava. Ako uslov nije ispunjen petlja se završava. Prvi put prozor za poruke će prikazati 0. Drugi put će prikazati 1. Treći put će vrednost promenljive WhileValue biti jednako 2. Logički izraz 2 < 2 je netačan. Zbog toga će se petlja završiti a prozor za poruke neće biti prikazan. Savet instruktoru Nema jakog razloga zbog koga se For petlja završava sa Next, a Do petlja sa Loop. Upozorite učenike jer će neizostavno neki od njih pogrešiti.
Lekcija 11 – Peking, Kina
Strana 5 od 26
Izvršavanje Do While ... Loop petlje korak po korak Hajde da iskoristimo naš alat za debagovanje iz Visual Studio.NET – a kako bi izvršavali kôd naše DoWhileLoop aplikacije liniju po liniju.
Savet instruktoru Učenici bi trebalo ovo da urade, a ne samo da čitaju.
1. U prozoru sa kodom (Code Window) postavi prekidnu tačku na Do While naredbu.
2. Pokreni svoj projekat (F5). Kôd će se izvršiti do prekidne tačke i označiće liniju sa kôdom u kojoj je prekidna tačka.
3. Pritisni F11 da bi izvršio označenu liniju kôda. Do While (WhileValue < 2) Pređi kursorom preko WhileValue. Njena vrednost je 0. 4. Pritisni F11 da bi izvršio označenu liniju kôda. MessageBox.Show(WhileValue) Prozor za poruke će prikazati 0. Klikni na OK.
Lekcija 11 – Peking, Kina
Strana 6 od 26
5. Pritisni F11 da bi izvršio označenu liniju kôda. WhileValue = WhileValue + 1 Vrednost promenljive WhileValue se uvećava za 1.
6. Pritisni F11 da bi izvršio označenu liniju kôda. Loop Petlja će početi da se izvršava ponovo.
7. Pritisnit F11 da bi izvršio označenu liniju kôda. Do While (WhileValue < 2) Pređi kursorom preko WhileValue. Njena vrednost je 1.
8. Pritisni F11 da bi izvršio označenu liniju kôda. MessageBox.Show(WhileValue) Prozor za poruke će prikazati 1. Klikni na OK.
Lekcija 11 – Peking, Kina
Strana 7 od 26
9. Pritisni F11 da bi izvršio označenu liniju kôda. WhileValue = WhileValue + 1 Vrednost promenljive WhileValue se uvećava za 1, i sada iznosi 2. 10. Pritisni F11 da bi izvršio označenu liniju kôda. Loop Petlja će početi da se izvršava ponovo. 11. Pritisni F11 da bi izvršio označenu liniju kôda. Do While (WhileValue < 2) Pređi kursorom preko WhileValue. Njena vrednost je sada 2. Pošto sada uslov WhileValue < 2 nije ispunjen, petlja će prekinuti svoje izvršavanje. Prozor za poruke se neće prikazati i vrednost promenljive WhileValue se neće ponovo uvećati. 12. Pritisni F11 da bi izvršio označenu liniju kôda. End Sub Tok programa izlazi iz kôda koji opisuje Klik događaj i početna forma se ponovo prikazuje. Pošto smo videli kako funkcionišu Do ... While petlje, hajde da pogledamo kako se ponaša Do Until ... Loop petlja.
Lekcija 11 – Peking, Kina
Strana 8 od 26
Do Until…Loop petlja Do Until ... Loop petlja izvršava blok naredbi (koji se još naziva i telo petlje) sve dok vrednost uslova ne postane True. Uslov može biti bilo kakav logički izraz za koga se može odrediti da li je tačan ili ne. Evo sintakse za Do Until ... Loop petlju u programskom jeziku Visual Basic.NET: Do Until code code code Loop
(condition) statement 1 statement 2 statement etc.
Savet instruktoru While počinje sa True uslovom. Until počinje sa False uslovom.
Uoči ključne reči „Do“, „Until“ i „Loop“. One su obojeno plavo u prethodnom kodu. Uslov se proverava na početku petlje. Ako uslov još uvek nije ispunjen, telo petlje će se izvršiti. Kada je uslov iz Do Until naredbe ispunjen, petlja će se završiti. Sada ću ti pokazati primer sa Do Until ... Loop petljom u Visual Basic.NET – u. Hajde da ga iskodiramo! Pokreni novu aplikaciju i nazovi je DoUntilLoop. Dodaj dugme na formu Form1. Dvostruki klik na dugme Button1 odvešće te do mesta gde treba da dodaš kôd za Klik događaj za to dugme. Dodaj sledeće linije kôda: Dim UntilValue As Integer UntilValue = 0 Do Until (UntilValue > 1) MessageBox.Show(UntilValue) UntilValue = UntilValue + 1 Loop Napravi izvršnu verziju (opcija build) i startuj tvoju aplikaciju. Klikni na dugme Button1. Prozor za poruke će pokazati 0. Klikni na OK. Prozor za poruke će prikazati 1. Klikni na OK. Vratio si se u početnu formu i više se nijedan prozor za poruke na pojavljuje.
Lekcija 11 – Peking, Kina
Strana 9 od 26
Kako ovaj kôd za Do Until ... Loop radi? Najpre smo deklarisali promenljivu UntilValue i inicijalizovali njenu vrednost na 0. Njena vrednost se koristi u uslovu petlje da bi se odlučilo kada treba izvršavati petlju, a kada prekinuti sa njenim izvršavanjem. Svaki put kada se petlja izvrši, vrednost promenljive UntilValue se uveća za 1. Do Until naredba sadrži uslov poređenja koji proverava da li je vrednost promenljive UntilValue veća od 1. Pr prvom poređenju UntilValue je 0. Vrednost logičkog iskaza u uslovu je False pa se telo petlje izvršava. Prozor za poruke se pojavljuje i vrednost promenljive UntilValue se povećava za 1 (inkrementira). Pri drugom prolazu, UntilValue je 1. Logički iskaz je još uvek netačan i telo petlje se izvršava ponovo. Pri trećem prolazu UntilValue je 2. Logički iskaz 2 > 1 je tačan i petlja se zaustavlja.
Lekcija 11 – Peking, Kina
Strana 10 od 26
Petlje u akciji Hajde da pogledamo par primera za Do While ... Loop i Do Until ... Loop petlje koje koriste logičke iskaze koji ne zavise direktno od brojača petlje. Naš prvi primer koristi Do While ... Loop petlju sa logičkim izrazom koji proverava da li je vrednost neke promenljive još uvek veća ili jednaka nuli. Kada je vrednost te promenljive manja od nule izlazi se iz petlje. Napravi novu Windows aplikaciju i nazovi je LoopsInAction. Dodaj dugme na Form1. Promeni osobinu Text dodatog dugmeta u „CountDown“. Dvostruki klik na Button1 odvešće te do mesta gde treba ukucati kôd za Klik događaj. Dodaj sledeći kôd: Dim LoopIndex As Integer = 0 Dim WhileController As Integer = 167 Do While (WhileController >= 0) LoopIndex = LoopIndex + 1 WhileController = WhileController - (23 * LoopIndex) Loop MessageBox.Show(WhileController) Napravie izvršnu verziju i pokrenite projekat LoopsInAction. Klikni na „CountDown“ dugme. Prozor za poruke prikazaće -63. Kako ovaj kôd radi? Deklarisali smo dve celobrojne promenljive, LoopIndex i WhileController, i postavili njihove početne vrednosti. Promenljiva LoopIndex se uvećava za 1 svaki put kada se petlja izvrši. Svaki put kada se petlja izvrši računa se nova vrednost promenljive WhileController pomoću „složenog“ izraza. Nova vrednost za promenljivu WhileController se dobija tako što se uzme vrednost promenljive LoopIndex, pomnoži se sa 23 i tako dobijena vrednost se oduzme od stare vrednosti promenljive WhileController. Sa svakim izvršenjem petlje vrednost promenljive WhileController je sve manja i manja. Teško je pretpostaviti koliko puta će se petlja izvršiti pre nego što vrednost promenljive WhileController padne ispod 0 i petlja se završi. Ali, to zapravo i nije važno pošto logički izraz koji kontroliše petlju jedino vodi
Lekcija 11 – Peking, Kina
Strana 11 od 26
računa o vrednosti promenljive WhileController, a ne i o vrednosti promenljive LoopIndex. Naš drugi primer pokazuje Do While ... Loop petlju koja zavisi od logičkog izraza, koji pak zavisi od toga da li je RadioButton3 označeno (čekirano) ili ne. U svakoj iteraciji petlje biće čekirano drugo radio dugme. U našem LoopsInAction projektu, dodaj drugo dugme u formu Form1. Promeni osobinu Text dugmeta Button2 u „While“. Dodaj tri radio dugmeta na Form1. Dvostruki klik na Button2 odvešće te do mesta gde treba da dodaš kôd koji treba da obradi Klik događaj. Dodaj sledeći kôd:
Lekcija 11 – Peking, Kina
Strana 12 od 26
Dim LoopIndex As Integer = 0 RadioButton1.Checked = True Do While (RadioButton3.Checked LoopIndex = LoopIndex + 1 If LoopIndex = 1 Then RadioButton1.Checked = ElseIf LoopIndex = 2 Then RadioButton2.Checked = ElseIf LoopIndex = 3 Then RadioButton3.Checked = End If Loop MessageBox.Show(LoopIndex)
= False) True True True
Napravi izvršnu verziju i startuj aplikaciju. Uoči da je RadioButton1 selektovano. Kliknite na „While“ dugme. RadioButton3 je sada čekiran nakon dejstva kôda i prozor za poruke je prikazao vrednost brojača petlje. Ako su vaše oči zaista brze ili ako koristiš neki spor računar, možeš videti kako se i RadioButton2 selektuje dok se petlja izvršava. Evo šta se dešava. Deklarisali smo promenljivu LoopIndex da bi nam vodila računa o tome koliko je puta petlja izvršena. U svakom slučaju, LoopIndex se ne koristi u logičkom izrazu koji upravlja Do While ... Loop petljom. Umesto toga, LoopIndex služi da selektuje različito radio dugme tokom svakog od prolaska kroz petlju. Logički iskaz iz Do While ... Loop petlje proverava da li je RadioButton3 selektovan. Čim uslov RadioButton3.Checked = True postane ispunjen izlazi se iz petlje. Naš treći primer koristi Do Until ... Loop petlju. Logički izraz upoređuje Text osobinu tekstboksa sa promenljivom tipa String čija se vrednost menja sa svakom iteracijom petlje. Dodaj tekstboks u Form1 našeg ActionLoops projekta. Ostavi Text osobinu dodatog tekstboksa na „TextBox1“. Dodaj i treće dugme na formu i vrednost njegove osobine „Text“ promeni u Lekcija 11 – Peking, Kina
Strana 13 od 26
„TextMatch“. Dvostruki klik na dugme Button3 odvešće te do mesta gde treba da dodaš kôd za Klik događaj ovog dugmeta. Dodaj sledeći kôd: Dim MatchText As String = "" Dim LoopIndex As Integer = 0 Do Until (MatchText = TextBox1.Text) LoopIndex = LoopIndex + 1 If LoopIndex = 2 Then MatchText = "Text" End If If LoopIndex = 3 Then MatchText = "Box1" End If If LoopIndex = 4 Then MatchText = "TextBox1" End If Loop MessageBox.Show("Number " & LoopIndex
Lekcija 11 – Peking, Kina
Savet instruktoru Ime varijable LoopIndex je slobodan izbor. Pogao je biti i LoopCounter, LoopVarijabla ili bilo šta drugo.
& " is a match.")
Strana 14 od 26
Napravi izvršnu verziju i startuj aplikaciju. Klikni na „Text Match“ dugme. Prozor za poruke će pokazati vrednost promenljive LoopIndex za koju će se tekstovi poklopiti. Ovaj kôd koristi Do Until ... Loop petlju. Promenljiva LoopIndex se jedino koristi da bi se odredila vrednost za promenljivu MatchText. Logički izraz upoređuje vrednost promenljive MatchText sa vrednošću osobine Text tekst boksa TextBox1. Pri četvrtom prolazu kroz petlju, LoopIndex je 4 i MatchText = „TextBox1“. Logički izraz zaključuje da je uslov ispunjen pa se petlja ovde završava. Šta ako je u tekst boksu bilo upisano „The Purple Pit“? Možeš li dodati još jednu „If ... Then“ naredbu pa da se kôd i dalje izvršava?
Lekcija 11 – Peking, Kina
Strana 15 od 26
11 Igra Dokazivanja 01 Meta Uvek sam uživao da odem na strelište. Pucanje u metu je zabavno, ali mislim da je računarska verzija toga bezbednija. Hajde da napravimo igru u kojoj će računar pokušati da pogodi metu. Iskoristi kôd i formu koje pronađeš u 11_proveit01_template. Forma treba da izgleda kao:
Mi smo ti već napisali sav kôd za New Game dugme zato što on sadrži neke grafičke naredbe koje nisu deo ovog kursa. Tvoj zadatak je da napišeš kod za Play dugme. Cilj igre je izbrojati broj pokušaja potrebnih da bi se pogodio centar mete. Taj centar je tačka veličine jednog piksela. Pošto je slika dimenzija 200×200 piksela, centar je smešten na lokaciji( 100, 100). Generiši slučajan (random) broj za celobrojnu promenljivu X, koji će biti korišćen za merenje širine. Generiši još jedan slučajan broj Y koji će biti iskorišćen za merenje visine.
Lekcija 11 – Peking, Kina
Strana 16 od 26
Kôd koji generiše slučajne brojeve u opsegu od 0 do 200 izgleda ovako: Dim MyRandomGenerator As System.Random MyRandomGenerator = New System.Random Dim RanNum As Integer ' Generate random value between 0 and 200 - not including 200. RanNum = MyRandomGenerator.Next(0, 200) Pošto si izučio neodređene petlje ovde imaš veliku šansu da iskoristiš jednu od njih. Ta petlja će se okončati kada vrednosti promenljivih X i Y budu 100. Prebroj koliko se puta petlja izvršila. Upiši rezultat u TextBox1. Upotrebi sledeći kôd da bi nacrtao tačku gde tvoj pucanj pogodi: g.DrawEllipse(MyPen, New Rectangle(X, Y, 1, 1)) Kada program ispravno proradi pokaži ga svom instruktoru.
Savet instruktoru Biće pitanja u vezi ovoga. Ponovo pogledajte naznačeno rešenje.
Lekcija 11 – Peking, Kina
Strana 17 od 26
Drugi način za pisanje petlji Petlje Do While ... Loop i Do Until ... Loop mogu biti napisane i na drugačiji način tako što će uslov za izvršenje petlji biti na kraju umesto na početku. Kada se petlje pišu ovako, uslov se nalazi iza kôda (tela petlje). Telo petlje se onda izvršava bar jednom. Uslovna naredba je takođe uključena u petlju. Ove alternativne forme petlji se zovu Do ... Loop While i Do ... Loop Until naredbe ili petlje. Evo jednog primera za Do ... Loop While naredbu: Dim WhileValue As Integer WhileValue = 0 Do MessageBox.Show(WhileValue) WhileValue = WhileValue + 1 Loop While (WhileValue < 2)
Savet instruktoru Stavljanje uslova na kraj petlje garantuje bar jedno izvršenje.
A evo i primera za Do ... Loop Until petlju: Dim UntilValue As Integer UntilValue = 0 Do MessageBox.Show(UntilValue) UntilValue = UntilValue + 1 Loop Until (UntilValue > 1) Uoči da je uslov sada deo Loop, a ne deo Do naredbe. Telo petlje, koje se nalazi iza Do, a ispred Loop se izvršava bar jednom. Nakon toga se proverava uslov da bi se odlučilo da li će se petlja ponovo izvršiti. U prethodnom kôdu, ako je početna vrednost promenljive UntilValue 5, onda će Prozor za poruke prikazati 5 pre nego što se dođe do provere uslova.
Lekcija 11 – Peking, Kina
Strana 18 od 26
Exit Do naredba Da li se sećaš kada ti je Miloš govorio kako da prekineš izvršenje For ... Next petlje koristeći Exit For naredbu? Na sličan način možeš izaći i iz Do While ... Loop, Do Until ... Loop, Do ... Loop While i Do ... Loop Until petlje. Jednostavno, umesto „Exit For“ koristi „Exit Do“. Iskoristi If ... Then naredbu da bi obezbedio logički izraz za kontrolisnje izvršenja Exit Do naredbe. Ako je logički uslov ispunjen, tada će se Exit Do izvršiti i izaćiće se iz petlje. Koristi Exit Do uvek kada želiš da izađeš iz petlje pre nego što je uslov za kraj petlje ispunjen. Hajde da napišemo neki kôd da bismo izašli iz Do Until ... Loop petlje. Napravi novu Windows aplikaciju i nazovi je ExitDo. Dodaj dugme na Form1. Dvostruki klik na Button1 odvešće te do mesta gde treba da dodaš kôd za Klik događaj. Dodaj sledeći kôd koji je vrlo sličan onom iz DoLoopUntil projekta: Dim UntilValue As Integer UntilValue = 0 Do Until (UntilValue > 10) MessageBox.Show(UntilValue) UntilValue = UntilValue + 1 If UntilValue = 5 Then Exit Do End If Loop MessageBox.Show("Exit Value= " & UntilValue) Napravi izvršnu verziju i startuj tvoj projekat. Klikni na dugme Butto1. Sa svakim prolazom kroz petlju vrednost promenljive UntilValue će se povećavati za 1 i prozor za poruke će pokazivati vrednost brojača petlje (0, 1, 2, 3 i 4). Klikni na OK svaki put. Kada vrednost promenljive UntilValue dostigne 5, uslov iz If ... Then naredbe će biti ispunjen. Nakon toga će se izvršiti Exit Do naredba. Pelja će se završiti a kôd će nastaviti da se izvršava od prvog reda koji sledi iza Loop Until naredbe. Ovaj kôd će prikazati prozor za poruke u kome će pisati „ExitValue = 5“. Klikni na OK da bi se vratio u početnu formu. Možeš iskoristiti potpuno istu Exit Do naredbu u Do While ... Loop petljama da bi izašao iz njih pre nego što uslov poređenja bude izračunat kao False.
Lekcija 11 – Peking, Kina
Strana 19 od 26
Neodređene petlje u jezicima J# i C# Hajde da pogledamo kako izgledaju neodređene petlje u jezicima J# i C#. U jeziku C# možeš pisati kôd koji radi isto što i Do While ... Loop i Do ... Loop While iz Visual Basic.NET – a. C# nema ekvivalentne naredbe za Do Until ... Loop i Do ... Loop Until. Evo kako radi kôd za while petlju (while se piše sa svim malim slovima) u C# sa uslovom na početku: int WhileValue=0; While (WhileValue<5) { MessageBox.Show(WhileValue.ToString()); WhileValue=WhileValue+1; } Evo i C# kôda za do ... while petlju (do i while se pišu malim slovima) sa uslovom na kraju: int WhileValue=0; do { MessageBox.Show(WhileValue.ToString()); WhileValue=WhileValue+1; } while(WhileValue C# nema ekvivalent za Do ... Until Loop petlju iz jezika Visual Basic.NET.
Lekcija 11 – Peking, Kina
Strana 20 od 26
Hajde da sada pogledamo i J# kod. Kao što si primetio on je veoma sličan C# kodu. J# nema ekvivalentne naredbe za Do Until ... Loop i Do ... Loop Until. Evo kako radi kôd za while petlju (while se piše sa svim malim slovima) u J# sa uslovom na početku:
int WhileValue=0; while (WhileValue<5) { MessageBox.Show(System.Convert.ToString(WhileValue)); WhileValue=WhileValue+1; } Evo i J# kôda za do ... while petlju (do i while se pišu malim slovima) sa uslovom na kraju: int WhileValue=0; do { MessageBox.Show(System.Convert.ToString(WhileValue)); WhileValue=WhileValue+1; } while (WhileValue J# nema ekvivalent za Do ... Until Loop petlju iz jezika Visual Basic.NET.
Lekcija 11 – Peking, Kina
Strana 21 od 26
Dolazak u Peking Evo nas u Pekingu! Ovo je bio još jedan kratak, ali uzbudljiv deo našeg putovanja! Tokom ovog dela puta naučili smo kako da kodiramo četiri različita tipa neodređenih petlji. Sada možete pisati neodređene petlje koje će se izvršavati sve dok je vrednost uslova True, ili sve dok je vrednost uslova False. Možeš da kodiraš neodređene petlje u kojima je uslov na početku, kao i one u kojima je uslov na kraju. Ako se uslov procenjuje na kraju petlje, telo petlje će se izvršiti bar jednom. Videćeš da su svi ovi tipovi petlji međusobno slični. One mogu da urade mnoge stvari koje For ... Next petlje ne mogu. Hajde da vidimo šta dobri stari PDA ima za nas! 11 Igra dokazivanja 02 Dobitak u nizu Ranije smo se zabavili uz projekat bacanja novčića. Da li si se ikada pitao koliko puta treba da baciš novčić da bi tri puta zaredom dobio glavu? Koliko puta za 4? A za 5? Preuzmi kôd i formu koji se nalaze u 11_proveit02_template. Forma treba da izgleda ovako:
Lekcija 11 – Peking, Kina
Strana 22 od 26
Kôd koji generiše slučajnu vrednost između 0 i 1 je sledeći: Dim MyRandomGenerator As System.Random MyRandomGenerator = New System.Random Dim RanNum As Integer ' Generate random value between 0 and 2 not including 2. RanNum = MyRandomGenerator.Next(0, 2) Pretpostavimo da vrednost 1 odgovara glavi, a vrednost 0 pismu. Generišimo slučajne brojeve sve dok ne dobijemo onoliko jedinica u nizu koliko je specificirano u komponenti TextBox1. Ako dobiješ 0, počni iz početka. Broj bacanja potrebnih da bi se dobio određeni broj jedinica upiši u TextBox2. Tokom testiranja pažljivi programeri će staviti if naredbu u petlju koja pokazuje poruku da je brojač dostigao neku vrlo veliku vrednost, a nakon toga će izići iz petlje. Kada tvoj kôd ispravno proradi pokaži ga svom instruktoru. Savet instruktoru Ovaj program može biti malo lakši nego Dokaz 01.
Lekcija 11 – Peking, Kina
Strana 23 od 26
Pogledaj ovo, to je Izazov za pravljenje kalkulatora prosečne ocene (KPO kalkulatora). Komplimenti organizacionom odboru relija! Siguran sam da će nam poznavanje petlji pomoći u ovoj situaciji. 11 Izazov KPO Kalkulator Uživam u ovom putovanju. Međutim i ono se mora završiti. Tada ću se vratiti u školu i brinuti ponovo o mojoj prosečnoj oceni. Bilo bi korisno da imam program koji računa prosečnu ocenu na osnovu skupa ocena. Pa, hajde da napravimo KPO kalkulator. Napravi formu kao ovu ili iskoristi 11_challenge_template:
Ovaj program koristi funkciju InputBox koja je prikazana na sledećoj slici. Ne moraš sam da praviš ovu formu. Visual Basic.NET će to uraditi automatski za tebe. Pošto je ovo nešto novo daćemo vam i sav potreban kôd.
Napravi jednu promenljivu koja će čuvati svaku ocenu, kao na primer: Dim GradeIn As String = "None Entered"
Lekcija 11 – Peking, Kina
Strana 24 od 26
Zatim, unutar neodređene petlje trebaće ti sledeći kôd: GradeIn = InputBox("Enter A, B, C, D, or F", "Enter letter grade", "") Korisnik će uneti onoliko ocena koliko želi. Kada korisnik završi, uneće «no grade», ili će kliknuti na Cancel. U svakom slučaju, promenljiva GradeIn biće prazna. Prazna vrednost se kodira sa dva znaka navoda bez ičega među njima. Ocena A vredi 4 poena, ocena B vredi 3, ocena C vredi 2, ocena D vredi 1, a ocena F vredi 0 poena.
Savet instruktoru Petlja se završava sa GradeIn = “”
Ignoriši sva druga slova i brojeve. Korisnik može unositi i velika i mala slova. Sve što si uneo smesti u donji teks boks da bi kasnije znao koje si ocene unosio. Kada su unete sve ocene, izračunaj prosečnu ocenu. Dodatak / Skretanje sa puta Konvertuj prosečnu ocenu u slovnu ocenu. Dozvoli da ocene koje imaju + i – budu unete, kao npr B+ i C-. Koristi brojeve kao što se koriste u tvojoj školi ili iskoristi sledeće: 1.0 1.3 1.7 2.0 2.3 2.7 3.0 3.3 3.5 3.8 4.0
DD D+ CC C+ BB B+ AA
Lekcija 11 – Peking, Kina
Strana 25 od 26
I evo na kraju specijalnog kontrolnog kviza koji će ti ukazati na to da li dobro napreduješ.
Lekcija 11 – Peking, Kina
Strana 26 od 26
Lekcija 12 – Seul, Koreja
Strana 1 od 28
Seul, Koreja
Savet instruktoru Neki instruktori imaju običaj da polako uvedu učenike u ovo poglavlje nakon poglavlja o dodeli i aritmetici, pa da se naknadno vrate na njega na kraju kursa.
Vau, možeš li da poveruješ? Na poslednjoj smo stazi našeg putovanja! Još samo jedno odredište i naše putovanje „Programiranje je zakon“ je završeno. Stvarno je bilo zabavno! Ivana i ja smo stvarno uživali pokazujući ti znamenitosti i učeći te svemu onome što znamo o Visual Basic.NET-u i Visual Studio.NET-u tokom putovanja! Nadam se da ćemo uskoro napraviti još jedno putovanje „Programiranje je zakon“. Skoro si spreman za napredniji kurs! Najbolje odredište ostavili smo za kraj—a to je Seul, Koreja. Na ovom delu puta možeš da iskoristiš sve ono što si do sada naučio. Na ovoj stazi, pokazaću ti kako da napišeš sopstvene potprograme i funkcije i da koristiš neke koje su ugrađene u :NET okruženje. Ovo će biti zabavan ali dugačak deo putovanja. Imamo dosta toga da pređemo na našem putu ka Seulu, pa hajde da krenemo!
Lekcija 12 – Seul, Koreja
Strana 2 od 28
Šta su to potprogrami? Potprogrami (subs skraćeno od subroutines) pomalo su slični mini-programima. Pišeš ih da bi obavio specifične zadatke u svojoj aplikaciji. Kada pišeš aplikaciju, podeli je na nezavisne funkcionalne celine i napiši potprogram za svaki od njih. Tvoja aplikacija može sadržati onoliko potprograma koliko ti je potrebno. Nema potrebe da škrtariš pri korišćenju potprograma – napravi onoliko koliko ti je potrebno, ali pokušaj da napišeš potprograme koji sadrže specifične delove funkcionalnosti programa. Zašto koristiti potprograme? Potprogrami čine tvoj kod lakšim za pisanje i debagiranje jer oni dele tvoju aplikaciju u manje funkcionalne celine. Mnogo je lakše da pišeš i debagiraš nekoliko kratkih potprograma umesto celokupne aplikacije. Kada se jednom debagira tvoj potprogram on je gotov i spreman za korišđenje. On će raditi bez obzira gde ga ti kasnije koristiš. Kada imaš puno kôda kome želiš da pristupiš sa različitih mesta u tvom programu, potprogrami ti štede vreme. Mogu se koristiti iznova i iznova. Kada jednom napišeš potprogram, možeš ga koristiti (pristupiti) na bilo kom mestu u tvom programu. Potprogrami čak mogu i da koriste druge potprograme. Zamisli to! Potprogrami takođe predstavljaju i način deljenja programerskog rada u velikim aplikacijama. Pojedini programeri često su određeni da napišu specifičnu grupu potprograma za neku aplikaciju. Odgovorni su za pisanje i debagiranje svojih potprograma kao i za stvaranje uslova da ti potprogrami rade zajedno sa ostalim delovima programa. Neke uobičajene primene potprograma su: izvođenje izračunavanja, formatiranja i uređivanja informacija, prilagođavanje korisničkog interfejsa, obaveštavanje korisnika o podacima i obezbeđivanje ulaza i izlaza programa.
Lekcija 12 – Seul, Koreja
Strana 3 od 28
Pisanje sopstvenih potprograma Pisanje potprograma za aplikaciju je još jedna od oblasti u programiranju u kojoj stvarno uživam. Slično je dizajniranju formi – zahteva kombinaciju kreativnosti i programerskog znanja. Zato što su kao mali programi, potprogrami mogu sadržati bilo koji od kodnih iskaza koje si do sada naučio! Sada ćeš da napišeš sopstveni potprogram a zatim ću ti pokazati kako da ga koristiš u aplikaciji. Počećemo učenjem sintakse za pisanje potprograma, zatim ću ti pokazati kako da napišeš kôd. Evo sintakse za pisanje potprograma. Private Sub SubName() code statement 1 code statement 2 code statement etc. End Sub
Savet instruktoru Pogledajte primer Iks Oks jer su u njemu korišćeni potprogrami.
Zapazi da su "Private", "Sub" i "End Sub" ključne reči. One su obojene u plavo. Ključna reč Private znači da se ovom potprogramu može pristupiti samo preko ostalog koda u Form1. ImePotprograma je ime potprograma. Možeš da koristiš koje god poželiš ime ali je najbolje da koristiš nešto opisno, tako da znaš čemu služi potprogram. Zapazi par zagrada koje se nalaze posle imena potprograma. Kada se informacije prenose ka potprogramu, promenljive koje sadrže informacije smeštaju se između zagrada. Ovo si video u predhodnim poglavljima kursa. Iskazi potprograma nalaze se između linija Sub i End Sub. Iskazi se izvršavaju po redu. U potprogramu možeš koristiti skoro bilo koje iskaze koje želiš.
Lekcija 12 – Seul, Koreja
Strana 4 od 28
Sada ćeš da napišeš sopstveni potprogram a onda ću da ti pokažem kako da ga pozoveš iz kôda. Pokreni novu aplikaciju pod imenom JednostavanPotprogram. Otvori prozor za kôd. Pronađi kôd gde se nalazi "Windows Forms Designer generated code". U sledećoj liniji dodaj sledeći kôd: Private Sub MyMessage() MessageBox.Show("Ovo je poruka iz potprograma MojaPoruka.") End Sub Kao što možeš da vidiš, kada se kôd potprograma MojaPoruka izvrši, u prozoru za poruke biće prikazan tekst: "Ovo je poruka iz potprograma MojaPoruka". Ali na koji način se izvršava taj kôd, u bilo kom slučaju?
Savet instruktoru Ovaj uvodni kurs ne razmatra programe sa više formi.
Lekcija 12 – Seul, Koreja
Strana 5 od 28
Pozivanje sopstvenog potprograma Da bi se kôd tvog potprograma izvršio, u svom programu moraš da napišeš liniju kôda koja "poziva" potprogram. Posle pozivanja potprograma, kôd koji se nalazi u potprogramu se izvršava. Sintaksa za pozivanje potprograma je jednostavna. Samo koristiš ime potprograma sa parom zagrada. Evo sintakse za pozivanje potprograma: SubName() Sada, hajde da pozovemo onaj novi potprogram koji si upravo napisao. U tvoj projekat JednostavanPotprogram, dodaj dugme na Form1. Promeni Text osobinu dugmeta Button1 na "MojaPoruka". Duplim klikom na Button1 promeni događaj Klik na dugme. Dodaj sledeću liniju kôda: MojaPoruka() Napravi izvršnu verziju i pokreni svoj projekat. Klikni dugme "MojaPoruka". Prikazuje se prozor za poruke sa porukom "Ovo je poruka iz potprograma MojaPoruka". Odakle je to došlo? Ovo je linija koda koja se nalazi u tvom potprogramu MojaPoruka. Kada je potprogram pozvan od strane događaja Klik na dugme, izvršila se ova linija koda. Sad ćeš svom projektu JednostavanPotprogram da dodaš još jedan potprogram. On će prikazati drugačiju poruku. Otvori Prozor za kôd i dodaj sledeći kôd posle iskaza End Sub tvoga potprograma MojaPoruka: Private Sub TvojaPoruka() MessageBox.Show("Ovo je poruka iz potprograma TvojaPoruka." End Sub Ovog puta, hajde da pozovemo TvojaPoruka() iz MojaPoruka() umesto iz događaja Klik na dugme. Promeni potprogram MojaPoruka da izgleda ovako: Private Sub MojaPoruka() MessageBox.Show("Ovo je poruka iz potprograma TvojaPoruka.") TvojaPoruka() End Sub
Lekcija 12 – Seul, Koreja
Strana 6 od 28
U potprogram MojaPoruka dodali smo poziv potprograma TvojaPoruka. Napravi izvršnu verziju i pokreni projekat JednostavanPotprogram. Klikni na dugme "MojaPoruka". Prikazana su dva prozora za poruke. U prvom je prikazano "Ovo je poruka iz potprograma MojaPoruka.". Drugi prikazuje "Ovo je poruka iz potprograma TvojaPoruka.". Kako ovaj kod radi? Događaj Klik na dugme je pozvao potprogram MojaPoruka. Kada je ovaj potprogram pozvan izvršen je kôd koji on sadrži. Potprogram MojaPoruka sadrži dve linije kôda. Prva linija kôda prikazuje prozor sa porukom "Ovo je poruka iz potprograma MojaPoruka.". Druga linija poziva potprogram TvojaPoruka, koja zatim prikazuje prozor za poruke "Ovo je poruka iz potprograma TvojaPoruka". Zar to nije super? Napravio si svoja prva dva potprograma i jedan od njih si pozvao pomoću događaja Klik na dugme. Drugi potprogram je pozvan iz prvog!
Pisanje i pozivanje potprograma sa argumentima
Savet instruktoru Parametri nisu potpuno nov koncept. Svi potprogrami za klik događaje imaju parametre.
Jedna od korisnih stvari Visual Basic.NET-a, i većine modernih programskih jezika, jeste to da možeš da preneseš informacije ka svom potprogramu. Ovo je veoma korisno, zato što možeš da napišeš potprogram koji daje različite rezultate ili akcije zavisno od informacija koje mu prosleđuješ. Delovi informacija koje prosleđuješ u potprogram nazivaju se njegovim "argumentima". Kada pišeš potprogram kome želiš da proslediš argumente, moraš da definišeš koliko ima argumenata i kojeg su tipa. Evo sintakse za pisanje potprograma koji zahteva argumente Private Sub ImePotprograma(ByVal argumentIme1 As argumentTip1, ByVal argumentIme2 As argumentTip2, ByVal argumentImeN As argumentTipN) iskaz 1 Savet instruktoru iskaz 2 iskaz itd. ByVal parametar znači da je End Sub
Lekcija 12 – Seul, Koreja
vrednost parametra prosleđena potprogramu, a originalna varijabla ostaje ne promenjena.
Strana 7 od 28
Ovde zagrade nisu prazne. Sadrže listu argumenata i tipove argumenata koji će se proslediti potprogramu. Zapazi "ByVal" je ključna reč. Ona je plave boje. Tipovi argumenata su obični tipovi Integer, String, itd. Zapazi da je svaki argument razdvojen zarezom. Siguran sam da će pravi primer ovo razjasniti. U svom projektu JednostavanPotprogram otvori prozor za kôd. Ispod End Sub iskaza potprograma TvojaPoruka, dodaj sledeći novi potprogram: Private Sub OpštaPoruka (ByVal InMessage As String)
MessageBox.Show(UlaznaPoruka) End Sub Ovaj potprogram zahteva argument tipa String koji će mu biti prosleđen. Kada se ovaj potprogram pozove, prikazaće prozor za poruku koja prikazuje (string) argument. Hajde sada da pozovemo potprogram OpštaPoruka i da prosledimo String argument. Dodaj još jedno dugme na Form1 tvog projekta JednostavanPotprogram. Promeni osobinu Text objekta Button2 na "BiloKojaPoruka". Duplim klikom na dugme Button2 promeni kôd za dogadjaj Klik na dugme. Dodaj sledeće tri linije kôda: OpštaPoruka("Bilo koja poruka.") OpštaPoruka("Neka druga poruka.") OpštaPoruka("Različita poruka.") Napravi izvršnu verziju i pokreni svoj projekat. Klikni na dugme "BiloKojaPoruka". Prikazaće se tri poruke. Kako je ovo moguće? Kôd dogadjaja Klik na dugme poziva tri puta potprogram OpštaPoruka. Svaki put
Lekcija 12 – Seul, Koreja
Strana 8 od 28
prenosi različite tekstualne stringove ka potprogramu kao argumente. Prvi put, potprogram je pozvan sa String argumentom "Bilo koja poruka". Drugi put, potprogram je pozvan sa String argumentom "Neka druga poruka".Treći put, potprogram je pozvan sa String argumentom "Različita poruka". Kada se kôd potprograma izvrši, argument se predaje potprogramu i koristi se od strane iskaza MessageBox.Show. Hajde da pogledamo još jedan primer. Ovaj put nateraću te da pišeš potprogram koji uzima dva integera kao argumente, sabira ih, a zatim prikazuje rezultat u prozoru za poruke. Spreman? Dodaj novi potprogram pod imenom "Sabirači" u svoj projekat JednostavanPotprogram. Potprogram Sabirači trebao bi da izgleda ovako: Private Sub Sabirači(ByVal SaberiPrvi As Integer, ByVal SaberiDrugi As Integer) Dim Zbir As Integer Zbir = SaberiPrvi + SaberiDrugi MessageBox.Show(Zbir) End Sub Zapazi da su pri pozivanju ovog potprograma neophodna dva integer argumenta. Sada dodaj treće komandno dugme na Form1 projekta JednostavanPotprogram. Promeni osobinu Text objekta Button3 na "Sabirači". Duplim klikom na Button3 promeni kôd za dogadjaj Klik na dugme. Dodaj sledeću liniju kôda: Sabirači(34, 57) Napravi izvršnu verziju i pokreni svoj projekat. Klikni na dugme "Sabirači". Prikazaće se broj 91 u prozoru za poruke. Naš kôd dogadjaja Klik na dugme poziva potprogram Sabirači i predaje mu dva integer argumenta, 34 i 57. Potprogram Sabirač izvršava tri linije koda. Prva linija deklariše promenljivu pod imenom Zbir. Zatim se Zbir postavlja na zbir od SaberiPrvi (34) i SaberiDrugi (57). Argumenti SaberiPrvi i SaberiDrugi sadrže vrednosti koje se prenose u potprogram kada se on poziva. Napokon, potprogram prikazuje vrednost (91). Lekcija 12 – Seul, Koreja
Strana 9 od 28
Sada možeš sam da pišeš potprograme i da im prenosiš vrednosti. Zatim ću ti pokazati kako da pišeš funkcije. Korišćenjem argumenata možeš da prenosiš informacije, kao što to radiš kod potprograma. Za razliku od potprograma, međutim, od funkcije možeš i da dobiješ informacije.
Lekcija 12 – Seul, Koreja
Strana 10 od 28
Pisanje sopstvenih funkcija Glavna razlika između potprograma i funkcije je ta što od funkcije možeš da dobiješ informaciju. Ovo se zove povratna vrednost. Funkcija ima povratnu vrednost određenog tipa. Kada pišeš funkciju moraš odrediti tip povratne vrednosti. Hajde da ti pokažem sintaksu za pisanje funkcija koja prihvata argumente i ima povratnu vrednost: Private Function ImeFunkcije(ByVal argumentIme1 As argTip1, ByVal argumentIme2 As argTip2, ByVal argumentImeN As argTipN) As PovratniTip iskaz 1 iskaz 2 Savet instruktoru iskaz itd. Zapazite da je vrednost vraćena od ImeFunkcije=povratnaVre funkcije smeštena u samo ime funkcije. dnost Učenici su koristili funkcije u prethodnim End Function programima. Tražite od učenika da ih ponovo pozovu, kao recimo Val.
Zapazi da su reči "Private", "Function" i "End Function" ključne reči. One su plavo obojene. Ime funkcije trebalo bi da bude opisno. Lista argumenata i tipovi argumenata se nalaze u zagradi posle imena funkcije. Argumenti su razdvojeni zarezima. Možeš da imaš koliko želiš argumenata, ali samo jednu povratnu vrednost. Moraš da odrediš tip povratne vrednosti (na primer, As Integer ili As String). Poslednja linija kôda postavlja povratnu vrednost. Zapazi da ova linija kôda postavlja ime funkcije na vrednost koju će funkcija da vrati.
Lekcija 12 – Seul, Koreja
Strana 11 od 28
Primer iz realnog života pomoći će ti da objasniš sintaksu. Pokreni novu Windows aplikaciju pod imenom FunkcijaSpajanja. Otvori prozor za kôd i pronađi liniju kôda gde se kaže "Windows Forms Designer generated code". Na sledećoj liniji, dodaj sledeći kôd: Private Function Množači(ByVal MnožiPrvi As Integer, ByVal MnožiDrugi As Integer) As Integer Množači = MnožiPrvi * MnožiDrugi End Function Funkcija se zove Množači i uzima dva argumenta pod imenom MnožiPrvi i MnožiDrugi. Povratni tip je određen posle liste argumenata. U ovom slučaju, određen je kao ceo broj (As Integer). Funkcija sadrži jednu liniju kôda: Množači = MnožiPrvi * MnožiDrugi Ova linija koda množi dva argumenta i postavlja povratnu vrednost. Ime funkcije, Množači, mora se koristiti kao ime povratne vrednosti, ili će u suprotnom biti generisana greška. Sada, hajde da pozovemo ovu funkciju i iskoristimo njenu povratnu vrednost u našem programu.
Lekcija 12 – Seul, Koreja
Strana 12 od 28
Pozivanje sopstvene funkcije Jedan od načina za pozivanje funkcije sa povratnom vrednošću jeste da se promenljivoj dodeli vrednost kôda koji poziva funkciju. Promenljiva mora da bude istog tipa kao povratna vrednost funkcije. PromenljivaPovratnogTipa= ImeFunkcije(argument1, argument2, argumentN) Ajde da pozovemo ovu novu funkciju Množač koju si upravo napravio i da u našem kôdu iskoristimo njenu povratnu vrednost. Promeni osobinu Text objekta Button1 na "Pomnoži". Dodaj sledeći kôd u kôd dogadjaja Klik na dugme Button1: Dim Proizvod As Integer Proizvod = Množači(34, 57) MessageBox.Show(Proizvod) Napravi izvršnu verziju i pokreni svoj projekat. Klikni na dugme "Pomnoži". Prozor za poruke prikazuje proizvod 34x57, koji iznosi 1938. Kako ovaj kôd radi? Događaj Klik na dugme deklariše celobrojnu promenljivu pod imenom Proizvod. Kôd poziva funkciju množač MnožiPrvi(34) i MnožiDrugi(57) i postavlja njegovu povratnu vrednost (Množači) na proizvod MnožiPrvi * MnožiDrugi. Povratna vrednost je celobrojnog tipa. U događaju Klik na dugme, celobrojna promenljiva Proizvod postavlja se na vrednost Množači i prikazuje se u prozoru za poruke. Hej, imam ideju! Hajde da budemo malo moderniji, sada kada imamo fantastičnu funkciju Množači koju si ti napisao. Dodaj drugo dugme na Form1 tvog projekta SpajanjeFunkcija. Promeni osobinu Text objekta Button2 na "PonovoPomnoži". Dodaj sledeći kôd na događaj Klik na dugme Button2: Dim Proizvod As Integer Proizvod = Množači(Množači(2, 3), Množači(5, 7)) MessageBox.Show(Proizvod)
Lekcija 12 – Seul, Koreja
Strana 13 od 28
Napravi izvršnu verziju i pokreni svoj projekat. Klikni na dugme "PonovoPomnoži". Prozor za poruke prikazuje broj 210. Ovde tri puta pozivamo funkciju Množači. Prvi put pozivamo Množači sa argumentima 2 i 3. Povratna vrednost (6) koristi se kao prvi argument kada pozivamo Množači treći put. Drugi put pozivamo Množači sa argumentima 5 i 7. Povratna vrednost (35) koristi se kao drugi argument kada pozivamo Množači treći put. Kada treći put pozivamo Množači sa argumentima 6 (povratna vrednost prvog poziva Množači) i 35 (povratna vrednost drugog poziva Množači). Pogledaj kako ti možeš da pozoveš neku funkciju (čak i istu funkciju) iz funkcije?
Lekcija 12 – Seul, Koreja
Strana 14 od 28
12 Dokaži 01 Kanadska konvrezija Stalno mešam levo i desno. Jednom od ovih dana skrenuću levo tamo gde treba da skrenem desno i završiću u Kanadi. Za svaki slučaj, hajde da napišemo program za konverziju kako bi konvertovali iz US u Kanadske jedinice i obratno. Koristi kôd i formu koju ćeš naći u 12_proveit01_template. Forma izgleda ovako:
Kada se klikne na dugme Konvertuj na kanadski, konvertuj sa leva na desno. Kada se klikne na dugme Konvertuj na US, konvertuj sa desna na levo. Koristi ove faktore za konverziju: 1 Milja = 0.621 Kilometar 1 Galon = 3.79 Litara 1 Dolar = 1.27 Kanadska Dolara
Savet instruktoru Ovaj program može biti napisan i bez upotrebe funkcija. Ne dozvolite ovo. Proverite kod učenika. Podsetite ih da testiramo šta su do sada naučili, ne samo kakv rezultat daju.
Proučavao si samo definisane funkcije i podrutine. U ovom programu MORAŠ koristiti funkcije. Nećeš dobiti kredit ako to ne uradiš. Olakšali smo ti. Već smo napisali jednu od 6 funkcija. Ti moraš da napišeš ostalih 5. Nabavili smo celokupan kôd za dva dugmeta. Kada tvoj program bude radio korektno, pokaži ga svom instruktoru.
Lekcija 12 – Seul, Koreja
Strana 15 od 28
Ugrađeni potprogrami i funkcije .NET okruženje uključuje mnoge ugrađene potprograme za rešavanje uobičajenih zadataka. Ove funkcije su detaljno debagirane i testirane i dostupne su svim .NET jezicima. Kad god je moguće, trebalo bi da koristiš ugrađene potprograme ili funkcije umesto da ih sam pišeš. Ne samo da ovako štediš vreme, nego i standardizuješ kôd, čineći ga jednostavnijim za razumevanje. Pored toga, postoje neki ugrađeni potprogrami i funkcije koje ne bi mogao sam da napišeš. Mnogi od njih pristupaju .NET okruženje i Windows API klasama koje se nalaze ispod. Ne želiš da ideš tamo! Pokazaću ti neke od najčešće korišćenih potprograma i funkcija koje su ugrađene u .NET okruženje i može im se pristupiti uz pomoć Visual Basic.NET-a. Zapazićeš da ti neki od njih izgledaju poznato zato što su korišćeni u Dokaži koje smo radili uz put. Prošli put smo ti dali kôd bez objašnjenja!
Lekcija 12 – Seul, Koreja
Strana 16 od 28
Neke string funkcije .NET okruženje ima mnoge ugrađene funkcije koje se koriste za manipulaciju stringovima. Ove funkcije ti omogućavaju da odstraniš višak karaktera, i ekstrahuješ podstringove koji se sadrže u većim stringovima, i da promeniš tekst na velika ili mala slova. Mnogi od n jih se jednostavno demonstriraju kroz primere. Za sve string funkcije koje ću raspravljati, sintaksa je ista. Funkcije se mogu pozivati nad bilo kojim stringom. Neke od funkcija uzimaju argumente, neke ne. Mnoge od njih vraćaju string, iako Length() funkcija vraća ceo broj. Evo opšte sintakse za pozivanje ugrađenih funkcija u Visual Basic.NET gde povratnaVrednost i nekiString predstavljaju promenljive: povratnaVrednost = nekiString.ImeStringFunkcije(argument1, argument2, argumentN) Jedna korisna funkcija je Length. Ona vraća dužinu stringa kao ceo broj. Evo primera: MojTekst = "TekstBoks1" mojaDužina = MojTekst.Length ' vraća 10, to je dužina "TekstBoks1" Funkcije ToLower i ToUpper se koriste za izmenu teksta stringova u mala slova ili velika slova. Pogledaj sledeće primere: MojTekst = "TekstBoks1" MojaVelikaSlova = MojTekst.ToUpper ' vraća "TEKSTBOKS1" MojTekst = "TekstBoks1" MojaMalaSlova = MojTekst.ToLower ' vraća "tekstboks1"
Lekcija 12 – Seul, Koreja
Strana 17 od 28
Ponekad želiš da budeš siguran da tekst nema razmak na početku ili na kraju.To jest, želiš da ukloniš bilo koje razmake pre ili posle tekst stringa. Da bi ovo uradio koristi Trim funkciju kao što je prikazano u sledećem primeru: MojTekst = " TekstBoks1" mojeČišćenje = MojTekst.Trim ' vraća "TekstBoks1" MojTekst = " TekstBoks1 " MojeČišćenje = MojTekst.Trim ' vraća "TekstBoks1" Još jedna korisna funkcija je funkcija Substring. Substring funkcija vraća deo stringa koji pripada većem stringu. Kada pozoveš Substring funkciju, predaješ celobrojne argumente. Prvi argument je početna pozicija a drugi argument je dužina podstringa. Zapazi da je prvo slovo u stringu na poziciji 0 (ne na poziciji 1). Drugo slovo stringa je na poziciji 1 (ne na poziciji 2 ). MojTekst = " TekstBoks1" MojPodstring = MojTekst.Substring(0, 4) ' vraća "Teks", počinje na poziciji 0 sa dužinom = 4 MojTekst = " TekstBoks1" MojPodstring = MojTekst.Substring(1, 2) ' vraća "ek", počinje na poziciji 1 sa dužinom = 2 Funkcija Substring uzima dva celobrojna argumenta i vraća tekst string. Prvi argument je početna pozicija za pretragu. Drugi argument je dužina stringa koji se vraća. Zapamti, prvo slovo ima poziciju 0 (ne 1). Drugo slovo ima poziciju 1 (ne 2).
Lekcija 12 – Seul, Koreja
Strana 18 od 28
Znam da jedva čekaš da ove string funkcije vidiš u akciji, pa hajde da napravimo malu aplikaciju koja demonstrira kako oni rade! Pokrenimo novu Windows aplikaciju pod imenom Ugrađeni. Dodaj dva tekst boksa na Form1. Postavi Text osobinu objekta TextBox2 na prazno. Postavi osobinu Multiline objekta TextBox2 na "Yes". Postavi osobinu Scrollbars objekta TextBox2 na "Vertical". Povećaj TextBox2 tako da je njegova visina skoro jednaka visini forme. Dodaj komandno dugme na Form1. Dodaj sledeći kôd na događaj Klik na dugme Button1: Dim MojTekst As String Dim PrivremeniTekst As String = "" MojTekst = TextBox1.Text PrivremeniTekst = PrivremeniTekst & PrivremeniTekst = PrivremeniTekst & MojTekst.ToLower PrivremeniTekst = PrivremeniTekst & MojTekst.ToUpper PrivremeniTekst = PrivremeniTekst & MojTekst.Trim PrivremeniTekst = PrivremeniTekst & MojTekst.Substring(0, 4) PrivremeniTekst = PrivremeniTekst & MojTekst.Substring(1, 2) PrivremeniTekst = PrivremeniTekst & MojTekst.Length TextBox2.Text = PrivremeniTekst
MojTekst vbNewLine & vbNewLine & vbNewLine & vbNewLine & vbNewLine & vbNewLine &
Napravi izvršnu verziju i pokreni svoju aplikaciju. Klikni na Button1. TextBox2 prikazuje rezultate koje je dobio od svake string funkcije, korišćenjem osobine Text objekta TextBox1 kao tekst stringa. Sada, promeni tekst u TextBox1 i ponovo klikni na Button1 i ponovo klikni na Button1.
Savet instruktoru Gornji kod ima više smisla ako ga učenik smesti u program,a onda prođe kroz njega liniju po liniju korišćenjem alata za debagiranje.
Lekcija 12 – Seul, Koreja
Strana 19 od 28
Generator slučajnih brojeva U mnogim programima je potrebno generisati slučajne brojeve. Ovo je izuzetno značajno u aplikacijama gde je uključen faktor sreće, kao što su na primer igre bacanja novčića ili bacanja kocke. U .NET frejmvorku postoji klasa System.Random koja ima funkcije za generisanje slučajnih brojeva. Sada ću ti pokazati kako izgleda kôd koji simulira bacanje (šestostrane) kocke. Na formi Form1 tvog projekta BuiltIn dodaj i drugo dugme. Promeni osobinu Text dugmeta Button2 u «RollEm» (baci ih). Dodaj sledeći kôd za Klik događaj dugmeta Button2: Dim myRandomGenerator As System.Random Dim myRandomInteger As Integer myRandomGenerator = New System.Random myRandomInteger = myRandomGenerator.Next(1, 7) MessageBox.Show(myRandomInteger) Napravi izvršnu verziju (opcija build) i startuj tvoju aplikaciju. Klikni na «RollEm» dugme. Prozor za poruke prikazaće slučajni broj između 1 i 6. Klikni ponovo na isto dugme. Još jedan slučajan broj između 1 i 6 će biti prikazan. Kako ovaj kôd radi? Najpre ćemo deklarisati promenljivu myRandomGenerator koja treba da bude tipa System.Random. Nakon toga deklarišemo celobrojnu promenljivu myRandomInteger. Promenljiva myRandomGenerator je kreirana kao novi objekat tipa System.Random korišćešćenjem ključne reči New. Da bismo generisali slučajni broj između 1 i 6 pozivamo funkciju Next() objekta myRandomGenerator. Kada pozovemo Next() funkciju prosleđujemo joj argumente 1 i 6 koji predstavljaju donju i gornju granicu opsega u kome želimo da generišemo slučajne brojeve. Funkcija Next() će nam vratiti slučajan ceo broj između 1 i 6 koji će biti upamćeni u promenljivoj myRandomInteger. Poslednja linija kôda prikazuje dobijeni slučajni broj u prozoru za poruke.
Lekcija 12 – Seul, Koreja
Strana 20 od 28
Funkcije za konverziju Visual Basic.NET ima dve funkcije za konverziju koje mogu da budu korisne kada radiš sa brojevima. To su funkcije Val i Int. Hajde da prvo pogledamo funkciju Val. Funkcija Val se koristi da prevede (transformiše, konvertuje) string u broj. Ako string sadrži decimalnu tačku, onda Val vraća broj tipa Double (razlomljeni broj dvostruke tačnosti). Ako string ne sadrži decimalnu tačku, onda Val vraća broj tipa Integer (ceo broj). Val se često koristi da konvertuje osobinu Text tekst boksa u broj koji se koristi u izračunavanjima. Evo jednog primera koji koristi funkciju Val: Dim MyInt As Integer MyInt = Val("123") + 123 'vraća 246 Dim MyDouble As Double MyDouble = Val("123.22") + 123 'vraća 246.22 Funkcija Int vraća ceo deo broja, što je, zapravo, deo koji se nalazi sa leve strane decimalne tačke. Pogledajmo sledeće primere korišćenja Int funkcije da bismo videli kako ona funkcioniše: Dim MyInt As Integer MyInt = Int(123) 'vraća 123 MyInt = Int(123.45) 'vraća 123
Lekcija 12 – Seul, Koreja
Strana 21 od 28
Potprogrami u programskim jezicima J# i C# I u programskim jezicima C# i J# možeš pisati potprograme. Možeš praviti funkcije koje imaju argumente preko kojih im se prosleđuju vrednosti i funkcije koje vraćaju vrednosti. U jezicima C# i J# jedino se koriste funkcije. Strukture tipa Sub u njima nisu podržane. Takođe, u jezicima C# i J# ne postoji ključna reč Function. Funkcije se deklarišu korišćenjem posebne sintakse i posebnih ključnih reči. Hajde da kažemo Draganu i Jovani o funkcijama u ova dva jezika. Kao što je Miloš rekao, u jeziku C# ne postoje ključne reči Sub i Function. U jeziku Visual Basic.NET se podrazumeva da su procedure (Sub) i funkcije različite. U jeziku C# ne postoji razlika između procedure i funkcije. Hajde da pogledamo kôd koji deklariše funkciju koja ima dva argumenta i vraća celobrojnu vrednost, a koja je napisana u jeziku C#. private static int Adders_C(int oneAdd, int twoAdd) { int intSum=0; intSum = oneAdd + twoAdd; return intSum; } Uoči da nismo koristili ključnu reč Function kao u jeziku Visual Basic.NET. Ključne reči private i static ukazuju na to da ova funkcija može da bude pozvana jedino iz kôda koji se nalazi u Form1. Ključna reč int (posle static) označava tip vrednosti koju će funkcija vratiti (u ovom slučaju to je ceo broj). Dva argumenta koja moraju biti prosleđena kada se funkcija zove nalaze se unutar zagrada odmah nakon imena funkcije Adder_C. Oba argumenta, i oneAdd i twoAdd, su tipa int, što znači da su i oni celi brojevi. Uočite ključnu reč return. Ona označava vrednost koju će funkcija da vrati, u ovom slučaju to je intSum. Funkciju Adders_C možemo pozvati pomoću sledećeg C# koda, koji je, inače, veoma sličan pozivu funkcije u jeziku Visual Basic.NET: int theSum=0; theSum = Adders_C(3,4); MessageBox.Show(System.Convert.ToString(theSum));
Lekcija 12 – Seul, Koreja
Strana 22 od 28
Dolazak u Seul Ne mogu da verujem da smo već stigli u Seul u Koreji! Ovo je poslednje odredište na našem putovanju koje se bavilo pravilima kodiranja. Sigurno je bilo zabavno! Ivana i ja zaista volimo da ti objašnjavamo kako da pišeš kôd u jeziku Visual Basic.NET, dok su Miloš i Jovana uživali u mogućnosti da ti pokažu šta znaju o jezicima J# i C#. Sada sam možeš da sagledaš sve sličnosti i razlike između ovih jezika. Na putu ka našem poslednjem odredištu, pokazali smo ti kako da pišeš i pozivaš tvoje procedure i funkcije, kao i da koristiš neke od procedura i funkcija koje su ugrađene u .NET Framework-u. Zapamti, koristi procedure kada ti nije potrebno da vraćaš vrednosti a funkcije kada je vraćanje vrednosti neophodno. Možeteš proslediti argumete i procedurama i funkcijama kada ih pozivaš. Argumenti nisu potrebni ako su promenljive definisane globalno – odnosno, ako su deklarisane pre prvog potprograma. Pa, vidimo se još nekad. Nadamo se da svi zajedno možemo da nekada ponovimo ovakvo putovanje! Naravno, nisi valjda mislio da ćemo završiti a da ti ne uradiš poslednju Igru dokazivanja, zar ne?
Lekcija 12 – Seul, Koreja
Strana 23 od 28
12 Igra dokazivanja 02 Proricanje sudbine Ja zaista ne verujem da je moguće tačno predvideti budućnost, ali je bar zabavno to probati. Napišimo program koji će odgovarati na postavljena pitanja onako kako bi to uradio neko ko proriče budućnost. Iskoristi kod i formu koju budeš pronašao u 12_proveit02_template. Forma bi trebalo da izgleda ovako:
Kada se klikne na dugme «Potraži odgovor», iskoristi SubString metodu da prebrojiš sve samoglasnike u pitanju. Zapamti da se računaju i velika i mala slova, što znači da «a» i «A» nije isto. Proverit da li je pitanje uopšte uneto. Takođe, misli o petljama. Zapamti da metod Length daje broj karaktera prosleđenog stringa. Karakteri u stringu su označeni počev od nule, dakle ako imatš 10 karaktera oni se nalaze na pozicijama koje su označene brojevima od 0 do 9. Zapamtite da u jeziku Visual Basic.NET sve što koristi brojeve može koristiti, umesto njih, i promenljive odgovarajućeg tipa. Na osnovu broja samoglasnika generiši odgovor na pitanje. Iskoristi maštu da napraviš interesantne odgovore. «Da» i «Ne» su ispravni, ali dosadni
Lekcija 12 – Seul, Koreja
Strana 24 od 28
odgovori. Trebalo bi da imaš bar pet različitih odgovora, zapravo što više to bolje. Kad tvoj program ispravno proradi pokaži ga svom instruktoru. Savet instruktoru Kao što možete očekivati ovaj Izazov je teži nego drugi u ovom kursu. Učenik ne bi trebalo da pokušavaju da urade projekat odjednom. Prvo neka urade pomeranje miša . Onda zaustavljanje miša na granici, itd.
Uprava Relija ti predstavlja izazov za milion dolara! U stvari, ovo je zapravo tvoj poslednji izazov na ovom putovanju!
12 Izazov Mačka i miš Došli smo do poslednjeg izazova. Igra mačke i miša je ipak malo teža nego svi prethodni izazovi. Pošto si već stigao ovde, znamo da možeš da napišeš ovaj program koji vodi mačku da uhvati miša. Iskoristi 12_challenge_template koji ima formu kao što je prikazano na sledećoj slici:
Uzmi u obzir da je ekran širok 600 tačaka, a visok 300. Pomeraj mačku i miša po nekom slučajnom šablonu tako što ćeš menjati poziciju njihovih slika dodajući ili oduzimajući brojeve od njihovih trenutnih X i Y koordinata.
Lekcija 12 – Seul, Koreja
Strana 25 od 28
Dodat je takođe i Timer (tajmer) događaj koji se izvršava na svaku četvrtinu sekunde. U okviru Timer događaja pomeraj mačku i miša. To ne možeš učiniti direktno. Da bi pomerio sliku, moraš najpre izračunati nove X i Y koordinate a zatim iskoristi sledeću liniju koda: Mouse.Location = New Point(X, Y) Pošto si pomerio i mačku i miša, proveri sledeće:
Da Da Da Da
li li li li
je miš pobegao je mačka uhvatila miša miš treba da menja pravac pošto se mačka suviše približila su mačka i miš blizu ivice ekrana.
Prostor za sliku mačke je nazvan Cat, a ne PictureBox1. Slika miša je u prostoru za sliku koji se zove Mouse, a ne PictureBox2. Ako je mačka od miša udaljena manje od 20 tačaka, mereno između gornjih levih uglova miševog i mačkinog prostora za sliku, miš je uhvaćen. Ako je miš udaljen manje od 20 piksela od bilo kog crnog tekst boksa (prostora za tekst), mereno od gornjih levih uglova tekstboksa i miševog prostora za sliku, miš je pobegao. U bilo kom od ova dva slučaja zaustavi tajmer. Ako je rastojanje između mačke i miša manje od 40 tačaka, miš će promeniti pravac. Prva rupa je locirana u tački (50, 150), a druga u (530, 150). U šablonu postoji nekoliko stvari koje će ti pomoći da napišeš ovaj program. Funkcija HowFar (KolikoDaleko) vraća rastojanje između dve tačke ukoliko joj proslediš koordinate tih tačaka. Na primer, Distance = HowFar(Cat.Location.X, Cat.Location.Y, Mouse.Location.X,_ Mouse.Location.Y) Funkcija NewChg vraća ceo broj koji može biti pozitivan ili negativan. On predstavlja pomak za koji treba pomeriti mačku ili miša svaki put. Na primer, CatXChg = NewChg()
Lekcija 12 – Seul, Koreja
Strana 26 od 28
U kodu za Klik događaj dugmeta «Nova igra» odredi slučajne početne lokacije za mačku i miša. Dodeli svakom od njih vrednosti za koliko će se uvećavati njihove X i Y koordinate. Pokreni tajmer. Napomena: Mnogi programeri smatraju da je najbolje napisati malo koda pa onda to testirati, onda napisati još malo pa ponovo testirati. Trebalo bi da pišeš program po sledećem uputstvu:
Postavi mačku Pomeri mačku Proveri da li je Pomeri miša Proveri da li je Proveri da li je Proveri da li je Proveri da li je
i miša na određena početna mesta mačka unutar prostora u kome sme da se kreće miš unutar prostora u kome sme da se kreće miš pobegao mačka uhvatila miša mačka prišla blizu mišu
Nakon svakog od koraka testiraj tvoj kod. Kada program ispravno proradi pokaži ga svom instruktoru. Dodatak / Skretanje sa puta Vodi računa o pravcu kretanja i o smeru u kome je usmerena slika. Promeni smer slike u zavisnosti od promene pravca kretanja mačke ili miša. Iskoristi nešto ovako da bi rešio svoj problem: Cat.Image.RotateFlip(RotateFlipType.Rotate180FlipX) Uoči smer kretanja miša, a nakon toga prilagodi kretanje mačke kako bi ga pratila. Na primer, ako je X koordinata mačke 450, a X koordinata miša 250 onda je potrebno pomeriti mačku u negativnom smeru. Dodaj i psa da juri mačku.
Lekcija 12 – Seul, Koreja
Strana 27 od 28
Lekcija 12 – Seul, Koreja
Strana 28 od 28