Search
 
 
  Engleski
 
 
 
Open in this window (click to change)
Forum@DeGiorgi: Početna
Forum za podršku nastavi na PMF-MO
Login Registracija FAQ Smajlići Članstvo Pretražnik Forum@DeGiorgi: Početna

3. Zadaća - ČPP (objasnjenje gradiva)
WWW:

Moja sarma
 
Započnite novu temu   Odgovorite na temu   printer-friendly view    Forum@DeGiorgi: Početna -> Kolegiji 2. godine -> Računarski praktikum 1
Prethodna tema :: Sljedeća tema  
Autor/ica Poruka
Marvin
Forumaš(ica)
Forumaš(ica)


Pridružen/a: 01. 12. 2006. (15:46:10)
Postovi: (56)16
Sarma = la pohva - posuda
52 = 56 - 4

PostPostano: 14:52 čet, 5. 5. 2011    Naslov: 3. Zadaća - ČPP Citirajte i odgovorite

[b]Ovdje ću stavljati:[/b]
- Odgovore na pitanja vezana uz treću zadaću koja dobijem emailom
- Dodatna objašnjenja i [color=red]moguće ispravke teksta zadataka (pokušat ću ih označiti crvenom bojom)[/color]

[b]Pravila za pitanja su ovakva:[/b]
- Izbjegavat ću odgovarati na pitanja postavljena na forumu
- Na pitanja postavljena na email koja bi mogla zanimati i druge studente odgovorit ću na forumu, a na email ću odgovoriti sa linkom na odgovor
- Pitanja bi trebala razjašnjavati nejasnoće [i]u zadatku[/i], ne nejasnoće [i]u rješavanju zadataka[/i]. Ako ste u dvojbi, radije pitajte.

[b]P1:[/b] Smiju li se koristiti pomoćne varijable i funkcije u klasama?
[b]O1:[/b] Naravno, ali one ne bi trebale biti javno dostupne.

[b]P2 (Obaveze, Računi):[/b] Trebamo li deklarirati zadane enumeracije u header datotekama ili će biti uključene u testne mainove?
[b]O2:[/b] Da, trebate ih deklarirati u header datotekama. Neće biti uključene u testne mainove.

[b]P3 (Hack and slash):[/b] [i]Regenerira li trol 20% od trenutnog ili maksimalnog zdravlja?[/i]
[b]O3:[/b] Od trenutnog. obratite pozornost na primjer main funkcije.
[code:1]18 Zdravlje trola: 30
19 Zdravlje trola: 36[/code:1]

[b]P4 (Hack and slash):[/b] [i]Pojasnite 40% više štete oružjem za Olog-Hai biće.[/i]
[b]O4:[/b] Neka je vrijednost temeljnog napada 20, a vrijednost oružja 10. Tada je obranjivi napad 20 + 1.4*10 = 34. Uz to može postojati još i neobranjiv napad. U primjeru main funkcije
[code:1]45 chogall.opremiOruzje(20);
46 alleria.opremiOklop(10.0);
47 chogall.napadni(alleria); // obranjivi napad 20+20*1.4, neobranjivi
napad 5[/code:1]
[code:1]
23 Zdravlje vilenjakinje: 50
24 Zdravlje vilenjakinje: 7[/code:1]
50 zdravlja + 10 oklopa napada se sa 48 obranjivog napada i 5 neobranjivog. 10 oklopa propada, ostaje 38 obranjivog napada. 38+5 = 43 štete na zdravlje, stoga vilenjakinja ima 50 - 43 = 7 zdravlja nakon napada.
[b]
P5 (Hack and slash):[/b] [i]Kod Olog-Hai bića, oklop se smanjuje za pola vrijednosti kod opremanja. Znači li da ako je oklop unešen na vrijednost 40, vrijednost oklopa treba podesiti na 20 za Olog-Hai biće?[/i]
[b]O5:[/b] Točnije, [i]postojećoj [/i]vrijednosti oklopa treba [i]dodati [/i]20.

[b]P6 (Hack and slash):[/b] [i]Nije mi jasno značenje statičkih varijabli. Što bi s njima trebalo raditi?[/i]
[b]O6:[/b] Ideja statičkih varijabli je da vrijednosti nisu sadržane u svakoj instanci klase, već u definiciji klase. Time se štedi nešto memorije. Pogledajte [URL=http://web.math.hr/nastava/rp1/slideovi/vjezbe_07b.pdf]vježbe 7b[/URL].

Općenita prednost korištenja varijabli i funkcija umjesto numerički zadanih vrijednosti je da dobivate jedan stupanj indirektnosti. Zamislite da pišete program u kojoj se neke vrijednosti više puta povećavaju za 20%. Mogli biste:
- više puta napisati [tt]vrijednost_i * 1.2[/tt]
- definirati varijablu [tt]faktor[/tt] pa napisati [tt]vrijednost_i * faktor[/tt]

Ako bi se nekad postotak promijenio (na 15%, 30% ili neku treću vrijednost), lakše je samo promijeniti vrijednost varijable faktor, nego promijeniti linije [tt]vrijednost_i * 1.2[/tt] u npr. [tt]vrijednost_i * 1.15[/tt], za sve i. Također, nećemo se dovesti u situaciju da jednu od linija zaboravimo izmjeniti i time imati nekonzistentno ponašanje.

[b]P7 (Računi):[/b] [i]Kod uplaćivanja običnog honorara na žiro račun, zadatak kaže da treba oduzeti 20% radi doprinosa, a zatim da je potrebno napraviti statičku varijablu stopa doprinosa. Znači li to da se tih 20% može promijeniti?[/i]
[b]O7:[/b] Da, moguće je da se 20% mijenja nekad u budućnosti. Pogledajte i odgovor [b]O6[/b].

[b]P8 (Računi):[/b] [i]Kako metoda void podigni() treba raditi na štednom tekućem računu. Je li ona treba biti nasljeđena iz tekućeg računa?[/i]
[b]O8:[/b] Metoda je nasljeđena iz tekućeg računa. Treba podići novac s stanja računa. Metoda ne dira štednju (nju ćemo podići nakon 10 godina za veliki put oko svijeta).

[color=red][b]P9 (Računi):[/b] [i]Imamo konstruktor [tt]ZiroRacun(double ulazna naknada, double izlaznaNaknada)[/tt]. Treba li on biti [tt]ZiroRacun(double ulaznaNaknada, double izlaznaNaknada)[/tt]?[/i]
[b]O9:[/b] Da! Ispričavam se na propustu. Umjesto [tt]ulazna naknada[/tt], što je neispravno, treba biti [tt]ulaznaNaknada[/tt].[/color]

[b]P10: Mogu li svi parametri funkcije biti pretpostavljeni?[/b]
[b]O10:[/b] Da. Pogledajte [URL=http://web.math.hr/nastava/rp1/slideovi/vjezbe_07b.pdf]vježbe 7b[/URL].

[b]P11 (Obaveze, Računi):[/b] [i]Kako se koriste enumeracije?[/i]
[b]O11:[/b] [URL=http://enel.ucalgary.ca/People/Norman/enel315_winter1997/enum_types/]Pročitajte ovu stranicu o enumeracijama[/URL]. Ukratko, enumeracije se deklariraju van svih klasa i funkcija.
[code:1]enum TipHonorara { obican, autorski, umjetnicki };[/code:1]
Nakon deklaracije možemo ih koristiti kao tip podataka, npr.
[code:1]void Foo(TipHonorara tip) { if (tip == obicni) std::cout << "Pa to je najobicniji honorar!"; }[/code:1]
U "pozadini" oni se ponašaju kao cijeli brojevi. U gornjoj deklaraciji implicitno su im dodijeljene vrijednosti obican === 0, autorski === 1, umjetnicki === 2. No možete im i sami zadati vrijednosti, kao u ovoj liniji koda:
[code:1]enum PrioritetObaveze { mali = 10, srednji = 20, veliki = 40 };[/code:1]
Njima se možete koristiti kao običnim cijelim brojevima, ali ne mogu poprimiti druge vrijednosti od onih nabrojenih u deklaraciji (enumeriranih).
[code:1]PrioritetObaveze prioritet; // kao da piše int prioritet
prioritet = veliki; // kao da piše prioritet = 40;
std::cout << prioritet // ispiše se 40
[/code:1]
U kombinaciji s nekim objektima, to bi moglo izgledati ovako:
[code:1]enum VaznoPitanje { P1, P2, P9 };
class Upitnik
{
public:
Foo(VaznoPitanje pitanje) { if (pitanje == P9) std::cout << "Vrlo vazno!"; }
};
[/code:1]

[color=red][b]P12 (Obaveze):[/b] [i]U klasi [tt]Obaveza[/tt] trebalo bi napraviti funkciju koja otkazuje obavezu, ali njeno ime navedeno je kao [tt]otkazi obavezu[/tt] (sto očito nije dozvoljeno ime za funkciju). Po analogiji sa svim ostalim funkcijama, pretpostavljam da bi ime funkcije trebalo biti [tt]otkaziObavezu[/tt]?[/i]
[b]O12:[/b] Da! Ispričavam se na propustu. Umjesto [tt]void otkazi obavezu()[/tt], što je neispravno, signatura funkcije treba biti [tt]void otkaziObavezu()[/tt].[/color]

[b]P13 (Hack and slash):[/b] [i]Što je točno faktor snage kod OlogHai trolova?[/i]
[b]O13:[/b] Taj dio je malo nejasan. Radi se o tome da 40% više štete od oružja treba implementirati kao [tt]šteta od oružja[/tt] * [tt]faktor snage[/tt]. Znači za zadanu vrijednost 40%, faktor snage ćete unijeti kao 1.4. Pogledajte i odgovor [b]O6[/b].

[b]P14:[/b] [i]Treba li implementirati neki destruktor za klase?[/i]
[b]O14:[/b] Treba li? Što se dešava ako nije implementiran destruktor? Je li to željeno ponašanje za vašu klasu? Pogledajte [URL=http://web.math.hr/nastava/rp1/slideovi/vjezbe_02.pdf]vježbe 2[/URL], [URL=http://web.math.hr/nastava/rp1/slideovi/predavanja_06.pdf]predavanja 6[/URL] i odličnu stranicu [URL=http://www.parashift.com/c++-faq-lite/]C++ faq lite[/URL].

[b]P15:[/b] [i]Kad u header datoteci kod bazne klase navedemo virtualne funkcije, trebamo li ih navoditi i u ostalim, naslijeđenih klasama?[/i]
[b]O15:[/b] Trebate li? Što se dešava ako ih ne navedete? Je li to očekivano? Zašto to radi/ne radi? Pogledajte [URL=http://web.math.hr/nastava/rp1/slideovi/vjezbe_08.pdf]vježbe 8[/URL] i [URL=http://www.parashift.com/c++-faq-lite/]C++ faq lite[/URL], dijelove [19]-[23].

[b]P16 (Hack and slash):[/b] [i]Što ako se nekom biću zdravlje spusti na nulu? "Umire li ono"?[/i]
[b]O16:[/b] U čarobnom svijetu trolova i vilenjaka, bića nikad ne umiru. Glavni dizajner igre kaže da će ta opcija biti implementirana u nekom drugom izdanju igre. [i]Patch[/i] će biti samo 0.99$!

[b]P17 (Hack and slash):[/b] [i]Ako bića nikada ne umiru, kako se trolovi s negativnim zdravljem regeneriraju?[/i]
[b]O17:[/b] Možete napraviti da dobivaju [tt]-1*stopaRegeneracije*zdravlje[/tt] umjesto da ga gube sa [tt]stopaRegeneracija*zdravlje[/tt]. Ali takav slučaj se neće testirati.

[color=red][b]P18 (Hack and slash):[/b] [i]Kod konstruktora Vilenjak(double zdravlje, double napad, double starost) stoji rečenica: "Ukoliko napad ili zdravlje nisu eksplicitno navedeni, pretpostavlja se da su redom 10.0 i 100.0". Kako to mogu biti defaultni argumenti, jer je poslije njih još i starost?[/i]
[b]O18:[/b] Ispričavam se na propustu. Kao i kod klase Patuljak, pretpostavljeni parametri su napad i [b]starost[/b]. Rečenica bi trebala glasiti: "Ukoliko napad ili starost nisu eksplicitno navedeni, pretpostavlja se da su redom 10.0 i 100.0".[/color]

[b]P19 (Hack and slash):[/b] [i]Smije li funkcija [tt]void izracunajIshod(double obranjiviNapad, double neobranjiviNapad)[/tt] biti javna?[/i]
[b]O19:[/b] Da, funkcija [tt]izracunajIshod[/tt] može biti javna. [quote="Hack and slash"]Vodite računa o nedostupnosti podataka iz klasa vanjskim korisnicima kojima nisu
potrebni (enkapsulaciji). Samo bi [b]funkcije trebale biti javno dostupne[/b].[/quote]
Elegantnije rješenje koristilo bi koncept friend klasa ili funkcija, ali to nije obrađeno prije zadavanja treće zadaće.

[b]P20:[/b] [i]Navedeno je da će se provjeravati mogu li se na konstantnim objektima pozivati funkcije koje ne mijenjaju objekt. Što se očekuje kao rezultat provjere?[/i]
[quote="Hack and slash"]Također će se provjeriti mogu li se na konstantnim objektima pozvati funkcije koje vraćaju trenutno zdravlje, najveće moguće zdravlje i druge funkcije koje ne mijenjaju objekt[/quote][quote="Obaveze"]Također će se provjeriti mogu li se na konstantnim objektima pozvati funkcije koje ne mijenjaju objekte, kao što su int stanjeBodova(), unsigned idObaveze(), string slavljenik() i slične.[/quote]
[b]O20:[/b] Očekuje se da je moguće pozivati funkcije koje ne mijenjaju objekt. Pogledajte [url=http://web.math.hr/nastava/rp1/slideovi/vjezbe_07a.pdf]vježbe 7a[/url] i [url=http://www.parashift.com/c++-faq-lite/const-correctness.html]C++ faq lite o const ispravnosti[/url].

[b]P21:[/b] [i]Što točno znači vanjski kôd? Kako inicijalizirati statičke varijable ako ne smijemo koristiti vanjski kôd?[/i]
[quote="Tekst zadatka"]Pri testiranju programa uzimat će se u obzir samo napisane klase, a ne i eventualni vanjski kôd (kao što su na primjer globalne varijable).[/quote]
[b]O21:[/b] Izrazom "vanjski kôd" sam nazvao varijable i funkcije koje ne pripadaju nekoj klasi. Primjer toga su globalne varijable u pravom smislu riječi (one koje se dosežu "praznim dosegom" [tt]::imeVarijable[/tt]). Naravno da smijete koristiti inicijalizaciju statičkih varijabli [tt]tipvarijable ImeKlase::imeVarijable = vrijednost[/tt]. Te varijable nisu globalne nego pripadaju nekoj klasi. Obično se i nazivaju statičke članske varijable (i pristupa im se "nepraznim" operatorom razrješenja dosega [tt]ImeKlase::imeVarijable[/tt]).

[b]P22:[/b] [i]Kako postaviti da su neke varijable konstantne kad ih tek moramo "učitati" sa konstruktorom?[/i]
[b]O22:[/b] Takav slučaj nije eksplicitno naveden na vježbama, iako smo spominjali sve što je potrebno za riješiti ga. Svakako pročitajte [url=http://www.parashift.com/c++-faq-lite/ctors.html]nešto više o konstruktorima na C++ faq lite[/url].

[color=red][b]P23 (Obaveze):[/b] [i]U tekstu zadatka piše da [tt]lokacijaSastanka()[/tt] vraća lokaciju sastanka. Nedostaje li tu povratna vrijednost?[/i]
[b]O23:[/b] Da! Ispričavam se na propustu. Umjesto signature [tt]lokacijaSastanka()[/tt], što je neispravno, treba biti [tt]string lokacijaSastanka()[/tt].[/color]

[b]P24:[/b] [i]Jesu li definicije funkcija zadane u zadacima "potpune"? Ako piše [tt]izlazniTip ImeFunkcije(ulazniTip ulazniParametar)[/tt], treba li funkcija izgledati točno tako?[/i]
[b]O24:[/b] Ne. Zadane su samo [i]signature funkcija[/i]; kakvog tipa su i kako se zovu ulazni parametri i što funkcija vraća. Neke funkcije mogu (i moraju) [b]uz to[/b] biti označene kao konstantne, statičke, virtualne, potpuno virtualne (ili neka druga vrsta koju sam možda propustio navesti). Znači, ono što je zadano mora biti poštovano, no definicija funkcije se može i dodatno označiti ako je to potrebno.

[b]P25:[/b] [i]Kako patuljak prima štetu?[/i]
[b]O25:[/b] Kada izračunavaju ishod, patuljci odbijaju 10% od obranjivog napada zbog otpornosti. Oklop funkcionira kao i kod drugih bića; preostala vrijednost napada se prvo primjenjuje na oklop (pri tome se vrijednost oklopa umanjuje za vrijednost napada, do najmanje 0.0), a mogući preostali iznos napada se odbija od trenutnog zdravlja. Neobranjivi napad se direktno odbija od zdravlja, bez obzira na postojanje oklopa i otpornosti.

Za početne vrijednosti: [tt]starost = 100, oklop = 5, zdravlje = 20[/tt] i [tt]napad = {20 obranjivo, 10 neobranjivo}[/tt] računamo:

Otpornost je 10%. Obranjivi napad je zato 20 - 10 = 10. Od toga je 5 utrošeno na uništavanje oklopa, pa je preostala vrijednost 5. Zdravlje zato pada na 15 od obranjivog napada. Konačno, zdravlje pada na 5 zbog neobranjivog napada.

Konačne vrijednosti: [tt]starost = 100, oklop = 0, zdravlje = 5[/tt]

Ilija Pavlic.
Ovdje ću stavljati:
- Odgovore na pitanja vezana uz treću zadaću koja dobijem emailom
- Dodatna objašnjenja i moguće ispravke teksta zadataka (pokušat ću ih označiti crvenom bojom)

Pravila za pitanja su ovakva:
- Izbjegavat ću odgovarati na pitanja postavljena na forumu
- Na pitanja postavljena na email koja bi mogla zanimati i druge studente odgovorit ću na forumu, a na email ću odgovoriti sa linkom na odgovor
- Pitanja bi trebala razjašnjavati nejasnoće u zadatku, ne nejasnoće u rješavanju zadataka. Ako ste u dvojbi, radije pitajte.

P1: Smiju li se koristiti pomoćne varijable i funkcije u klasama?
O1: Naravno, ali one ne bi trebale biti javno dostupne.

P2 (Obaveze, Računi): Trebamo li deklarirati zadane enumeracije u header datotekama ili će biti uključene u testne mainove?
O2: Da, trebate ih deklarirati u header datotekama. Neće biti uključene u testne mainove.

P3 (Hack and slash): Regenerira li trol 20% od trenutnog ili maksimalnog zdravlja?
O3: Od trenutnog. obratite pozornost na primjer main funkcije.
Kod:
18 Zdravlje trola: 30
19 Zdravlje trola: 36


P4 (Hack and slash): Pojasnite 40% više štete oružjem za Olog-Hai biće.
O4: Neka je vrijednost temeljnog napada 20, a vrijednost oružja 10. Tada je obranjivi napad 20 + 1.4*10 = 34. Uz to može postojati još i neobranjiv napad. U primjeru main funkcije
Kod:
45 chogall.opremiOruzje(20);
46 alleria.opremiOklop(10.0);
47 chogall.napadni(alleria); // obranjivi napad 20+20*1.4, neobranjivi
napad 5

Kod:

23 Zdravlje vilenjakinje: 50
24 Zdravlje vilenjakinje: 7

50 zdravlja + 10 oklopa napada se sa 48 obranjivog napada i 5 neobranjivog. 10 oklopa propada, ostaje 38 obranjivog napada. 38+5 = 43 štete na zdravlje, stoga vilenjakinja ima 50 - 43 = 7 zdravlja nakon napada.

P5 (Hack and slash):
Kod Olog-Hai bića, oklop se smanjuje za pola vrijednosti kod opremanja. Znači li da ako je oklop unešen na vrijednost 40, vrijednost oklopa treba podesiti na 20 za Olog-Hai biće?
O5: Točnije, postojećoj vrijednosti oklopa treba dodati 20.

P6 (Hack and slash): Nije mi jasno značenje statičkih varijabli. Što bi s njima trebalo raditi?
O6: Ideja statičkih varijabli je da vrijednosti nisu sadržane u svakoj instanci klase, već u definiciji klase. Time se štedi nešto memorije. Pogledajte vježbe 7b.

Općenita prednost korištenja varijabli i funkcija umjesto numerički zadanih vrijednosti je da dobivate jedan stupanj indirektnosti. Zamislite da pišete program u kojoj se neke vrijednosti više puta povećavaju za 20%. Mogli biste:
- više puta napisati vrijednost_i * 1.2
- definirati varijablu faktor pa napisati vrijednost_i * faktor

Ako bi se nekad postotak promijenio (na 15%, 30% ili neku treću vrijednost), lakše je samo promijeniti vrijednost varijable faktor, nego promijeniti linije vrijednost_i * 1.2 u npr. vrijednost_i * 1.15, za sve i. Također, nećemo se dovesti u situaciju da jednu od linija zaboravimo izmjeniti i time imati nekonzistentno ponašanje.

P7 (Računi): Kod uplaćivanja običnog honorara na žiro račun, zadatak kaže da treba oduzeti 20% radi doprinosa, a zatim da je potrebno napraviti statičku varijablu stopa doprinosa. Znači li to da se tih 20% može promijeniti?
O7: Da, moguće je da se 20% mijenja nekad u budućnosti. Pogledajte i odgovor O6.

P8 (Računi): Kako metoda void podigni() treba raditi na štednom tekućem računu. Je li ona treba biti nasljeđena iz tekućeg računa?
O8: Metoda je nasljeđena iz tekućeg računa. Treba podići novac s stanja računa. Metoda ne dira štednju (nju ćemo podići nakon 10 godina za veliki put oko svijeta).

P9 (Računi): Imamo konstruktor ZiroRacun(double ulazna naknada, double izlaznaNaknada). Treba li on biti ZiroRacun(double ulaznaNaknada, double izlaznaNaknada)?
O9: Da! Ispričavam se na propustu. Umjesto ulazna naknada, što je neispravno, treba biti ulaznaNaknada.


P10: Mogu li svi parametri funkcije biti pretpostavljeni?
O10: Da. Pogledajte vježbe 7b.

P11 (Obaveze, Računi): Kako se koriste enumeracije?
O11: Pročitajte ovu stranicu o enumeracijama. Ukratko, enumeracije se deklariraju van svih klasa i funkcija.
Kod:
enum TipHonorara { obican, autorski, umjetnicki };

Nakon deklaracije možemo ih koristiti kao tip podataka, npr.
Kod:
void Foo(TipHonorara tip) { if (tip == obicni) std::cout << "Pa to je najobicniji honorar!"; }

U "pozadini" oni se ponašaju kao cijeli brojevi. U gornjoj deklaraciji implicitno su im dodijeljene vrijednosti obican === 0, autorski === 1, umjetnicki === 2. No možete im i sami zadati vrijednosti, kao u ovoj liniji koda:
Kod:
enum PrioritetObaveze { mali = 10, srednji = 20, veliki = 40 };

Njima se možete koristiti kao običnim cijelim brojevima, ali ne mogu poprimiti druge vrijednosti od onih nabrojenih u deklaraciji (enumeriranih).
Kod:
PrioritetObaveze prioritet; // kao da piše int prioritet
prioritet = veliki; // kao da piše prioritet = 40;
std::cout << prioritet // ispiše se 40   

U kombinaciji s nekim objektima, to bi moglo izgledati ovako:
Kod:
enum VaznoPitanje { P1, P2, P9 };
class Upitnik
{
public:
   Foo(VaznoPitanje pitanje) { if (pitanje == P9) std::cout << "Vrlo vazno!"; }
};


P12 (Obaveze): U klasi Obaveza trebalo bi napraviti funkciju koja otkazuje obavezu, ali njeno ime navedeno je kao otkazi obavezu (sto očito nije dozvoljeno ime za funkciju). Po analogiji sa svim ostalim funkcijama, pretpostavljam da bi ime funkcije trebalo biti otkaziObavezu?
O12: Da! Ispričavam se na propustu. Umjesto void otkazi obavezu(), što je neispravno, signatura funkcije treba biti void otkaziObavezu().


P13 (Hack and slash): Što je točno faktor snage kod OlogHai trolova?
O13: Taj dio je malo nejasan. Radi se o tome da 40% više štete od oružja treba implementirati kao šteta od oružja * faktor snage. Znači za zadanu vrijednost 40%, faktor snage ćete unijeti kao 1.4. Pogledajte i odgovor O6.

P14: Treba li implementirati neki destruktor za klase?
O14: Treba li? Što se dešava ako nije implementiran destruktor? Je li to željeno ponašanje za vašu klasu? Pogledajte vježbe 2, predavanja 6 i odličnu stranicu C++ faq lite.

P15: Kad u header datoteci kod bazne klase navedemo virtualne funkcije, trebamo li ih navoditi i u ostalim, naslijeđenih klasama?
O15: Trebate li? Što se dešava ako ih ne navedete? Je li to očekivano? Zašto to radi/ne radi? Pogledajte vježbe 8 i C++ faq lite, dijelove [19]-[23].

P16 (Hack and slash): Što ako se nekom biću zdravlje spusti na nulu? "Umire li ono"?
O16: U čarobnom svijetu trolova i vilenjaka, bića nikad ne umiru. Glavni dizajner igre kaže da će ta opcija biti implementirana u nekom drugom izdanju igre. Patch će biti samo 0.99$!

P17 (Hack and slash): Ako bića nikada ne umiru, kako se trolovi s negativnim zdravljem regeneriraju?
O17: Možete napraviti da dobivaju -1*stopaRegeneracije*zdravlje umjesto da ga gube sa stopaRegeneracija*zdravlje. Ali takav slučaj se neće testirati.

P18 (Hack and slash): Kod konstruktora Vilenjak(double zdravlje, double napad, double starost) stoji rečenica: "Ukoliko napad ili zdravlje nisu eksplicitno navedeni, pretpostavlja se da su redom 10.0 i 100.0". Kako to mogu biti defaultni argumenti, jer je poslije njih još i starost?
O18: Ispričavam se na propustu. Kao i kod klase Patuljak, pretpostavljeni parametri su napad i starost. Rečenica bi trebala glasiti: "Ukoliko napad ili starost nisu eksplicitno navedeni, pretpostavlja se da su redom 10.0 i 100.0".


P19 (Hack and slash): Smije li funkcija void izracunajIshod(double obranjiviNapad, double neobranjiviNapad) biti javna?
O19: Da, funkcija izracunajIshod može biti javna.
Hack and slash (napisa):
Vodite računa o nedostupnosti podataka iz klasa vanjskim korisnicima kojima nisu
potrebni (enkapsulaciji). Samo bi funkcije trebale biti javno dostupne.

Elegantnije rješenje koristilo bi koncept friend klasa ili funkcija, ali to nije obrađeno prije zadavanja treće zadaće.

P20: Navedeno je da će se provjeravati mogu li se na konstantnim objektima pozivati funkcije koje ne mijenjaju objekt. Što se očekuje kao rezultat provjere?
Hack and slash (napisa):
Također će se provjeriti mogu li se na konstantnim objektima pozvati funkcije koje vraćaju trenutno zdravlje, najveće moguće zdravlje i druge funkcije koje ne mijenjaju objekt
Obaveze (napisa):
Također će se provjeriti mogu li se na konstantnim objektima pozvati funkcije koje ne mijenjaju objekte, kao što su int stanjeBodova(), unsigned idObaveze(), string slavljenik() i slične.

O20: Očekuje se da je moguće pozivati funkcije koje ne mijenjaju objekt. Pogledajte vježbe 7a i C++ faq lite o const ispravnosti.

P21: Što točno znači vanjski kôd? Kako inicijalizirati statičke varijable ako ne smijemo koristiti vanjski kôd?
Tekst zadatka (napisa):
Pri testiranju programa uzimat će se u obzir samo napisane klase, a ne i eventualni vanjski kôd (kao što su na primjer globalne varijable).

O21: Izrazom "vanjski kôd" sam nazvao varijable i funkcije koje ne pripadaju nekoj klasi. Primjer toga su globalne varijable u pravom smislu riječi (one koje se dosežu "praznim dosegom" ::imeVarijable). Naravno da smijete koristiti inicijalizaciju statičkih varijabli tipvarijable ImeKlase::imeVarijable = vrijednost. Te varijable nisu globalne nego pripadaju nekoj klasi. Obično se i nazivaju statičke članske varijable (i pristupa im se "nepraznim" operatorom razrješenja dosega ImeKlase::imeVarijable).

P22: Kako postaviti da su neke varijable konstantne kad ih tek moramo "učitati" sa konstruktorom?
O22: Takav slučaj nije eksplicitno naveden na vježbama, iako smo spominjali sve što je potrebno za riješiti ga. Svakako pročitajte nešto više o konstruktorima na C++ faq lite.

P23 (Obaveze): U tekstu zadatka piše da lokacijaSastanka() vraća lokaciju sastanka. Nedostaje li tu povratna vrijednost?
O23: Da! Ispričavam se na propustu. Umjesto signature lokacijaSastanka(), što je neispravno, treba biti string lokacijaSastanka().


P24: Jesu li definicije funkcija zadane u zadacima "potpune"? Ako piše izlazniTip ImeFunkcije(ulazniTip ulazniParametar), treba li funkcija izgledati točno tako?
O24: Ne. Zadane su samo signature funkcija; kakvog tipa su i kako se zovu ulazni parametri i što funkcija vraća. Neke funkcije mogu (i moraju) uz to biti označene kao konstantne, statičke, virtualne, potpuno virtualne (ili neka druga vrsta koju sam možda propustio navesti). Znači, ono što je zadano mora biti poštovano, no definicija funkcije se može i dodatno označiti ako je to potrebno.

P25: Kako patuljak prima štetu?
O25: Kada izračunavaju ishod, patuljci odbijaju 10% od obranjivog napada zbog otpornosti. Oklop funkcionira kao i kod drugih bića; preostala vrijednost napada se prvo primjenjuje na oklop (pri tome se vrijednost oklopa umanjuje za vrijednost napada, do najmanje 0.0), a mogući preostali iznos napada se odbija od trenutnog zdravlja. Neobranjivi napad se direktno odbija od zdravlja, bez obzira na postojanje oklopa i otpornosti.

Za početne vrijednosti: starost = 100, oklop = 5, zdravlje = 20 i napad = {20 obranjivo, 10 neobranjivo} računamo:

Otpornost je 10%. Obranjivi napad je zato 20 - 10 = 10. Od toga je 5 utrošeno na uništavanje oklopa, pa je preostala vrijednost 5. Zdravlje zato pada na 15 od obranjivog napada. Konačno, zdravlje pada na 5 zbog neobranjivog napada.

Konačne vrijednosti: starost = 100, oklop = 0, zdravlje = 5

Ilija Pavlic.





Konstruktori.pdf
 Description:
Nekoliko primjedbi o konstruktorima.

Download
 Filename:  Konstruktori.pdf
 Filesize:  99.41 KB
 Downloaded:  371 Time(s)



Zadnja promjena: Marvin; 11:07 sri, 18. 5. 2011; ukupno mijenjano 14 put/a.
[Vrh]
Korisnički profil Pošaljite privatnu poruku
Marvin
Forumaš(ica)
Forumaš(ica)


Pridružen/a: 01. 12. 2006. (15:46:10)
Postovi: (56)16
Sarma = la pohva - posuda
52 = 56 - 4

PostPostano: 21:58 sub, 7. 5. 2011    Naslov: Dodan sadržaj Citirajte i odgovorite

Dodana pitanja 2-11.
Dodana pitanja 2-11.


[Vrh]
Korisnički profil Pošaljite privatnu poruku
Marvin
Forumaš(ica)
Forumaš(ica)


Pridružen/a: 01. 12. 2006. (15:46:10)
Postovi: (56)16
Sarma = la pohva - posuda
52 = 56 - 4

PostPostano: 14:33 ned, 8. 5. 2011    Naslov: Dodan sadržaj Citirajte i odgovorite

Dodano [color=red]pitanje 12[/color].
Dodano pitanje 12.


[Vrh]
Korisnički profil Pošaljite privatnu poruku
Marvin
Forumaš(ica)
Forumaš(ica)


Pridružen/a: 01. 12. 2006. (15:46:10)
Postovi: (56)16
Sarma = la pohva - posuda
52 = 56 - 4

PostPostano: 19:06 ned, 8. 5. 2011    Naslov: Dodan sadržaj Citirajte i odgovorite

Dodana pitanja 13-17.
Dodana pitanja 13-17.


[Vrh]
Korisnički profil Pošaljite privatnu poruku
Marvin
Forumaš(ica)
Forumaš(ica)


Pridružen/a: 01. 12. 2006. (15:46:10)
Postovi: (56)16
Sarma = la pohva - posuda
52 = 56 - 4

PostPostano: 23:37 ned, 8. 5. 2011    Naslov: Dodan sadržaj Citirajte i odgovorite

Dodano [color=red]pitanje 18[/color] i pitanje 19.
Dodano pitanje 18 i pitanje 19.


[Vrh]
Korisnički profil Pošaljite privatnu poruku
Marvin
Forumaš(ica)
Forumaš(ica)


Pridružen/a: 01. 12. 2006. (15:46:10)
Postovi: (56)16
Sarma = la pohva - posuda
52 = 56 - 4

PostPostano: 12:54 uto, 10. 5. 2011    Naslov: Dodan sadržaj Citirajte i odgovorite

Dodana pitanja 20-22.
Dodana pitanja 20-22.


[Vrh]
Korisnički profil Pošaljite privatnu poruku
Marvin
Forumaš(ica)
Forumaš(ica)


Pridružen/a: 01. 12. 2006. (15:46:10)
Postovi: (56)16
Sarma = la pohva - posuda
52 = 56 - 4

PostPostano: 8:28 sri, 11. 5. 2011    Naslov: Dodan sadržaj Citirajte i odgovorite

Dodano [color=red]pitanje 23[/color] i pitanje 24.
Dodano pitanje 23 i pitanje 24.


[Vrh]
Korisnički profil Pošaljite privatnu poruku
Marvin
Forumaš(ica)
Forumaš(ica)


Pridružen/a: 01. 12. 2006. (15:46:10)
Postovi: (56)16
Sarma = la pohva - posuda
52 = 56 - 4

PostPostano: 15:32 sri, 11. 5. 2011    Naslov: Citirajte i odgovorite

Dodao sam nekoliko primjedbi o konstruktorima kao attachment u originalni post. To je nešto proširena verzija odgovora koji sam slao na neku od primljenih email poruka. Za ispravnost ne garantiram, možda nekome pomogne.
Dodao sam nekoliko primjedbi o konstruktorima kao attachment u originalni post. To je nešto proširena verzija odgovora koji sam slao na neku od primljenih email poruka. Za ispravnost ne garantiram, možda nekome pomogne.


[Vrh]
Korisnički profil Pošaljite privatnu poruku
Alisa
Forumaš(ica)
Forumaš(ica)


Pridružen/a: 16. 02. 2008. (15:34:59)
Postovi: (4E)16
Sarma = la pohva - posuda
= 5 - 0

PostPostano: 13:27 čet, 12. 5. 2011    Naslov: Citirajte i odgovorite

Je li točna informacija da se rok za predaju zadaće produžuje? Ako da, kada je novi datum predaje?
Je li točna informacija da se rok za predaju zadaće produžuje? Ako da, kada je novi datum predaje?


[Vrh]
Korisnički profil Pošaljite privatnu poruku
Marvin
Forumaš(ica)
Forumaš(ica)


Pridružen/a: 01. 12. 2006. (15:46:10)
Postovi: (56)16
Sarma = la pohva - posuda
52 = 56 - 4

PostPostano: 14:13 čet, 12. 5. 2011    Naslov: Citirajte i odgovorite

[quote="Alisa"]Je li točna informacija da se rok za predaju zadaće produžuje? Ako da, kada je novi datum predaje?[/quote]
[strike][b]Moguće je[/b] da će se produžiti rok za predaju zadaće grupi asistenta Petričevića. [b]Ako[/b] ćemo odlučiti produžiti rok, informacija o tome će biti objavljena na nekom službenom mjestu. Koliko ja znam, za sad takva informacija nije objavljena.[/strike]

[quote="http://web.math.hr/nastava/rp1/zadace.php"]Objavljeni su zadaci za treću zadaću. Termin predaje zadaće je produljen do četvrtka, 19. svibnja 2011. u 12h00.[/quote]
Alisa (napisa):
Je li točna informacija da se rok za predaju zadaće produžuje? Ako da, kada je novi datum predaje?

Moguće je da će se produžiti rok za predaju zadaće grupi asistenta Petričevića. Ako ćemo odlučiti produžiti rok, informacija o tome će biti objavljena na nekom službenom mjestu. Koliko ja znam, za sad takva informacija nije objavljena.

http://web.math.hr/nastava/rp1/zadace.php (napisa):
Objavljeni su zadaci za treću zadaću. Termin predaje zadaće je produljen do četvrtka, 19. svibnja 2011. u 12h00.


[Vrh]
Korisnički profil Pošaljite privatnu poruku
Marvin
Forumaš(ica)
Forumaš(ica)


Pridružen/a: 01. 12. 2006. (15:46:10)
Postovi: (56)16
Sarma = la pohva - posuda
52 = 56 - 4

PostPostano: 11:08 sri, 18. 5. 2011    Naslov: Dodan sadržaj Citirajte i odgovorite

Dodano pitanje 25.
Dodano pitanje 25.


[Vrh]
Korisnički profil Pošaljite privatnu poruku
ante c
Forumaš(ica)
Forumaš(ica)


Pridružen/a: 10. 10. 2009. (19:18:15)
Postovi: (62)16
Sarma = la pohva - posuda
= 4 - 4

PostPostano: 17:22 sri, 18. 5. 2011    Naslov: Citirajte i odgovorite

zanima me samo jel postoji ikakva šansa da se dobije još jedna mogućnost slanja zadaće uspio sam ispucat sve 3 mogućnosti i na kraju poslat krivo :
zanima me samo jel postoji ikakva šansa da se dobije još jedna mogućnost slanja zadaće uspio sam ispucat sve 3 mogućnosti i na kraju poslat krivo :


[Vrh]
Korisnički profil Pošaljite privatnu poruku
some_dude
Forumaš(ica)
Forumaš(ica)


Pridružen/a: 08. 11. 2009. (16:23:13)
Postovi: (59)16
Spol: muško
Sarma = la pohva - posuda
17 = 17 - 0
Lokacija: Zd-Zg

PostPostano: 23:17 sri, 18. 5. 2011    Naslov: Pitanje22 Citirajte i odgovorite

Vezano uz pitanje 22, evo konkretan odgovor na to pitanje:

http://www.learncpp.com/cpp-tutorial/101-constructor-initialization-lists/
Vezano uz pitanje 22, evo konkretan odgovor na to pitanje:

http://www.learncpp.com/cpp-tutorial/101-constructor-initialization-lists/


[Vrh]
Korisnički profil Pošaljite privatnu poruku
Cobs
Forumaš(ica)
Forumaš(ica)


Pridružen/a: 21. 01. 2008. (13:32:15)
Postovi: (206)16
Spol: muško
Sarma = la pohva - posuda
26 = 40 - 14
Lokacija: Geto

PostPostano: 1:22 čet, 19. 5. 2011    Naslov: Citirajte i odgovorite

vezano uz sve i malo više od toga ( na hrvatskom i jako dobro objašnjeno ):

http://web.math.hr/nastava/opepp/C++.html

obratite pozornost na poglavlja 3 i 4 jer je dosta toga baš u ovoj zadaći
vezano uz sve i malo više od toga ( na hrvatskom i jako dobro objašnjeno ):

http://web.math.hr/nastava/opepp/C++.html

obratite pozornost na poglavlja 3 i 4 jer je dosta toga baš u ovoj zadaći


[Vrh]
Korisnički profil Pošaljite privatnu poruku Posjetite Web stranice
Marvin
Forumaš(ica)
Forumaš(ica)


Pridružen/a: 01. 12. 2006. (15:46:10)
Postovi: (56)16
Sarma = la pohva - posuda
52 = 56 - 4

PostPostano: 9:10 čet, 19. 5. 2011    Naslov: Re: Pitanje22 Citirajte i odgovorite

[quote="some_dude"]Vezano uz pitanje 22, evo konkretan odgovor na to pitanje:

http://www.learncpp.com/cpp-tutorial/101-constructor-initialization-lists/[/quote]
Ideja nekonkretnog odgovora i upućivanja na materijale je da se uči i po mogućnosti shvati [b]zašto[/b] nešto radi umjesto samo [b]kako[/b] (da proradi za zadaću).

[quote="Cobs"]vezano uz sve i malo više od toga ( na hrvatskom i jako dobro objašnjeno ):

http://web.math.hr/nastava/opepp/C++.html

obratite pozornost na poglavlja 3 i 4 jer je dosta toga baš u ovoj zadaći[/quote]
Ovo je odličan odgovor. Stvarno mi je žao što sam zaboravio da imamo dostupne i vlastite materijale :oops:.
some_dude (napisa):
Vezano uz pitanje 22, evo konkretan odgovor na to pitanje:

http://www.learncpp.com/cpp-tutorial/101-constructor-initialization-lists/

Ideja nekonkretnog odgovora i upućivanja na materijale je da se uči i po mogućnosti shvati zašto nešto radi umjesto samo kako (da proradi za zadaću).

Cobs (napisa):
vezano uz sve i malo više od toga ( na hrvatskom i jako dobro objašnjeno ):

http://web.math.hr/nastava/opepp/C++.html

obratite pozornost na poglavlja 3 i 4 jer je dosta toga baš u ovoj zadaći

Ovo je odličan odgovor. Stvarno mi je žao što sam zaboravio da imamo dostupne i vlastite materijale Embarassed.


[Vrh]
Korisnički profil Pošaljite privatnu poruku
Marvin
Forumaš(ica)
Forumaš(ica)


Pridružen/a: 01. 12. 2006. (15:46:10)
Postovi: (56)16
Sarma = la pohva - posuda
52 = 56 - 4

PostPostano: 10:39 čet, 19. 5. 2011    Naslov: Citirajte i odgovorite

[quote="ante c"]zanima me samo jel postoji ikakva šansa da se dobije još jedna mogućnost slanja zadaće uspio sam ispucat sve 3 mogućnosti i na kraju poslat krivo :[/quote]

Ako ga pošaljete na email adresu prije 12, možemo razmisliti o tome. Bilo bi zgodnije da ste vaše pitanje postavili na email umjesto na forum (suprotno pravilima za pitanja).
ante c (napisa):
zanima me samo jel postoji ikakva šansa da se dobije još jedna mogućnost slanja zadaće uspio sam ispucat sve 3 mogućnosti i na kraju poslat krivo :


Ako ga pošaljete na email adresu prije 12, možemo razmisliti o tome. Bilo bi zgodnije da ste vaše pitanje postavili na email umjesto na forum (suprotno pravilima za pitanja).


[Vrh]
Korisnički profil Pošaljite privatnu poruku
Marvin
Forumaš(ica)
Forumaš(ica)


Pridružen/a: 01. 12. 2006. (15:46:10)
Postovi: (56)16
Sarma = la pohva - posuda
52 = 56 - 4

PostPostano: 14:20 čet, 19. 5. 2011    Naslov: Istek roka Citirajte i odgovorite

[quote="[url=http://web.math.hr/nastava/rp1/zadace.php]Računarski praktikum I - [zadaće][/url]"]U četvrtak, 19. svibnja 2011. u 12h00 je istekao rok za predaju treće zadaće.[/quote]
Zahvaljujem se svima studentima koji su postavljali pitanja na suradnji u razjašnjavanju i traženju grešaka u zadaći.
Ukupno smo razmijenili okruglih 100 email poruka. Ako nekome nisam odgovorio, ispričavam se, nije bilo namjerno.

Zbog odgode, četvrta zadaća će doći vrlo skoro nakon predaje treće:
[quote="[url=http://web.math.hr/nastava/rp1/zadace.php]Računarski praktikum I - [zadaće][/url]"]Četvrta zadaća bi trebala biti objavljena tijekom dana.[/quote]
Računarski praktikum I - [zadaće] (napisa):
U četvrtak, 19. svibnja 2011. u 12h00 je istekao rok za predaju treće zadaće.

Zahvaljujem se svima studentima koji su postavljali pitanja na suradnji u razjašnjavanju i traženju grešaka u zadaći.
Ukupno smo razmijenili okruglih 100 email poruka. Ako nekome nisam odgovorio, ispričavam se, nije bilo namjerno.

Zbog odgode, četvrta zadaća će doći vrlo skoro nakon predaje treće:
Računarski praktikum I - [zadaće] (napisa):
Četvrta zadaća bi trebala biti objavljena tijekom dana.


[Vrh]
Korisnički profil Pošaljite privatnu poruku
Gost






PostPostano: 12:15 sub, 21. 5. 2011    Naslov: Citirajte i odgovorite

kada bi trebali doci rezultati trece zadace?
kada bi trebali doci rezultati trece zadace?


[Vrh]
vancika
Forumaš(ica)
Forumaš(ica)


Pridružen/a: 08. 07. 2007. (20:11:36)
Postovi: (92)16
Sarma = la pohva - posuda
= 6 - 3
Lokacija: Varaždin

PostPostano: 12:51 sub, 4. 6. 2011    Naslov: Citirajte i odgovorite

Da li netko ima tekst 3. zadace Fantasy?
Da li netko ima tekst 3. zadace Fantasy?



_________________
People are strange when you're a stranger...
[Vrh]
Korisnički profil Pošaljite privatnu poruku Pošaljite e-mail
Marvin
Forumaš(ica)
Forumaš(ica)


Pridružen/a: 01. 12. 2006. (15:46:10)
Postovi: (56)16
Sarma = la pohva - posuda
52 = 56 - 4

PostPostano: 12:55 sub, 4. 6. 2011    Naslov: Citirajte i odgovorite

[quote="vancika"]Da li netko ima tekst 3. zadace Fantasy?[/quote]
Tekstovi bi trebali biti dostupni na [url=http://ilijapavlic.com/rp1/]ovoj stranici[/url].

edit: Tekstovi su dostupni i na [url=http://web.math.hr/nastava/rp1/zadace.php]službenim stranicama kolegija[/url].
vancika (napisa):
Da li netko ima tekst 3. zadace Fantasy?

Tekstovi bi trebali biti dostupni na ovoj stranici.

edit: Tekstovi su dostupni i na službenim stranicama kolegija.


[Vrh]
Korisnički profil Pošaljite privatnu poruku
Prethodni postovi:   
Započnite novu temu   Odgovorite na temu   printer-friendly view    Forum@DeGiorgi: Početna -> Kolegiji 2. godine -> Računarski praktikum 1 Vremenska zona: GMT + 01:00.
Stranica 1 / 1.

 
Forum(o)Bir:  
Možete otvarati nove teme.
Možete odgovarati na postove.
Ne možete uređivati Vaše postove.
Ne možete izbrisati Vaše postove.
Ne možete glasovati u anketama.
You can attach files in this forum
You can download files in this forum


Powered by phpBB © 2001, 2002 phpBB Group
Theme created by Vjacheslav Trushkin
HR (Cro) by Ančica Sečan