• Apgrejdovali smo forum na XenForo 2.1.1, ukoliko imate predloga vezanih za izgled ili funkcionalnost foruma, ili ukoliko naletite na neki problem, javite nam OVDE

    DEFINISALI SMO PRAVILA FORUMA. Pročitajte ih, pojaviće se automatski kada krenete da čitate nešto!

XNA Programiranje Igara | Tutorijal #06 | Iteracije

Uni

PCAXE Addicted
Učlanjen(a)
31.08.2018.
Poruka
2.469
Rezultat reagovanja
984
Moja konfiguracija
PC / Laptop Name:
Lenovo ThinkPad X250 - i5 5300U/8GB/256GB EVO 860/6 Cell
Mice & keyboard:
Bloody V7M & Stock Thinkpad X250 Keyboard
OS & Browser:
Windows 10 + Microsoft Edge | ArcoLinux + i3 + Mozilla Firefox Quantum
Pre svega, kao i uvek, apelujem na vas da, ukoliko ste propustili iti jedan tutorijal iz serije ovih, iščitate dotične, pošto se svi nadovezuju jedni na druge. Ovo možete učiniti unosom "#xna-gwid" bez navodnika u polje foruma "Pretraga...". :)

Takođe, zahvalio bih se ovom prilikom (nije kao da smo se dogovarali na privatnoj prepisci već) članu @Zivko koji je utrošio nekoliko sati u pisanje tutorijala, testiranje, analiziranje koda i pravljenje skrinšotova. :)

Šta ćemo danas obraditi?
Kao što ste u prethodnim turtorijalima mogli zapaziti, za rešavanje problema, tj. pisanje koda korišćene su dve strukture:
  1. Sekvenca-struktura gde se linije koda izvršavaju redom,jedna za drugom kako su ispisane.
  2. Selekcija-Pruža mogućnost izbora u zavisnosti od nekog uslova.
I napokon, dođosmo do srećnog broja 3 koji će malo da nam zakomplikuje učenje - Petlje.

Petlje
Da bismo koristili petlje, pre svega moramo znati šta su one.

Iteracija(Petlja) - koristi se ako ima potrebe za ponavljanje nekih komandi ili linija koda više puta

Postoje dve vrste petlji :
  • Petlje sa promenjivim brojem prolaza
  • Petlje sa konstantnim brojem brojem prolaza
Petlje sa promenljivim brojem prolaza
To su petlje kod kojih se broj prolaza odredjuje u telu petlje a zavisi od više elemenata, kao što su promenjive i slično.
Komande koje se koriste kod petlji sa promenljivim brojem prolaza su while I do-while. U prevodu na srpski, komanda while znači DOK. U svom zapisu, prihvataju samo jedan argument (ranije smo pisali atribut radi lakšeg razumevanja), tačnije uslov.
Znači, sve dok je neki uslov zadovoljen (povratna vrednost "true"), telo petlje će se izvršavati. Nakon izvršenja poslednje naredbe u telu petlje, opet se proverava uslov koji je zadat petljom while I petlja će se prekinuti onog trenutka kada uslov nije zadovoljen (povratna vrenost "false").
Evo I primera:
While.png
Prvo što ćete primetiti jeste sam naziv imenskog prostora (biblioteke) @while. U C# jeziku postoji nekoliko rezervisanih reči, koje ne možemo koristiti za nazive novih klasa, metoda i promenljivih. Međutim, postoji prefiks @ koji nam omogućuje da ih koristimo kao nazive.

Dakle while (n<10), zadat je uslov da se telo izvršava sve dok je n manje od 10. Kao što ste zapazili iza uslova, tj. srednjih zagrada, ne dodaje se znak ; jer se petlje ponašaju kao klase, a ne kao metode

Kada kompajliramo ovaj program, dobićemo sledeće.
While kompajlirano.png

** Savet #01 Telo petlje se uobičajeno zadaje u vitičastim zagradama, čime se omogućava korišćenje više različitih komandi (Zivko ovde nije to koristio, jer izvršava samo jednu komandu). Ranije sam pomenuo da se kod čita bez obzira na nove redove, pa bi radi čitkosti trebalo odvojiti blokove znakom enter, a tela upita i petlji koje izvršavaju samo jednu komandu odvojiti znakom tab

** Savet #02 Primetićete da u metodi Console.WriteLine() Živko povećava vrednost broja n korišćenjem komande n++, ali je to moguće uraditi i sa ++n. Razlika između ova dva je u poretku računanja. Uzmimo za primer brojeve j i n, želimo da n bude veće za 1 od j. Razmotrimo sledeće kodove :
int j = 4;
int n = j++;
(n = j = 4, zatim j = j + 1 = 5)
int j = 4;
int n = ++j;
(j = j + 1 = 5, n = j = 5)
Pošto računar čita kod redom koji je napisan, ova dva koda se razlikuju po redosledu radnji, pa će se u prvom primeru broju n prvo dodeliti trenutna vrednost broja j, a tek onda povećati vrednost broja j. U drugom je obrnuto, te se prvo povećava vredost broja j, a zatim se ta ista vrednost dodeljuje broju n.

Sledeća komanda koju koristimo za petlje sa promenjivim brojem ponavljanja je do-while.
Jedina razlika izmedju do-while I while je što se kod while prvo proverava uslov pa izvršava telo petlje, a kod do-while se izvršava telo petlje pa se proverava uslov. Najlakše će se objasniti primerom:

Do while.png
Ova petlja bi se ponašala identično kao i while u ovom slučaju.

** Savet #03 Živko je pri pisanju tutorijala rekao : "Bukvalno je isto kao While.", što je velika greška pa evo nekog mog objašnjenja. Ako želite da se sigurno telo petlje izvrši barem jednom, koristite do...while. Ovo može prouzrokovati greške u igrama. Recimo da čovek ne može da skoči ako je u živom blatu, ali može ako je na zemlji. Ako bismo koristili do...while u tom slučaju, čovek bi jednom skočio a zatim ne bi mogao da skače, sa while petljom ne bi skočio niti jedan jedini put.

Petlje sa konstantnim brojem prolaza
Primetili ste da smo kod prošle vrste petlji koristili uslov da bi ispitali koliko puta će se izvršiti petlja, a taj broj je mogao biti promenljiv. Kod ove vrste petlji, tačno je određeno koliko će se puta izvršiti petlja, što može biti prekinuto isključivo greškom pri prevođenju koda.

Postoje dve petlje kojima odgovara ovakav opis, a to su for i foreach. Počećemo sa petljom for, da bismo je lakše razumeli evo i primera :
For 1.png
Prvo što smo zapazile je ova linija: for (int i = 0; i < 5; i++)

Dakle for (u prevodu ako) i = 0 u ovom slučaju označava početnu vrednost, i < 5 označava krajnju vrednost, tj. uslov do kog se izvršava petlja (da je i manje od 5), i++ povecava vrednost za +1.
Ostala dva reda su vam poznata iz predhodnih turtorijala.

Znači, pokretanjem ovog programa dobijate sledeće:
for kompajlirano.png

** Savet #04 Primećujete da ne postoje znakovi sa kvačicama, arapski, kineski, kao i neki nacionalni simboli. Ovo je usled nepodržanosti UTF-8 tipa karaktera po default podešavanjima radi čuvanja resursa.

Šta dalje?
Pošto ste verovatno primetili, nisam pisao o foreach petlji iako je pomenuta. Ovo je petlja koja se koristi za pretragu nizova (kolekcija istoimenog tipa), koji još nisu obrađeni. Sledeća dva tutorijala namenjeni su obradi kolekcija, lista, rečnika, skupova i nizova. Ako vam se dopao ovaj način pisanja saveta i ispravljanja Živkovih grešaka, napišite u odgovoru, isto važi i za umetanje skrinšotova. Još jednom bih se zahvalio Živku na ukazanoj pomoći i podršci :)
 
Vrh