Prethodna tema :: Sljedeća tema |
Autor/ica |
Poruka |
venovako Forumaš(ica)
Pridružen/a: 07. 11. 2002. (22:46:38) Postovi: (2F9)16
|
|
[Vrh] |
|
Gost
|
|
[Vrh] |
|
venovako Forumaš(ica)
Pridružen/a: 07. 11. 2002. (22:46:38) Postovi: (2F9)16
|
|
[Vrh] |
|
B&I Forumaš(ica)
Pridružen/a: 06. 09. 2006. (07:56:55) Postovi: (44)16
|
|
[Vrh] |
|
venovako Forumaš(ica)
Pridružen/a: 07. 11. 2002. (22:46:38) Postovi: (2F9)16
|
Postano: 9:33 sri, 24. 1. 2007 Naslov: |
|
|
U kolokvij ulaze poglavlja:
12.*, 13.(1-3), 14.*, 15.(1-7), 16.(1-4, 6-7), 17.(1, 3), 18.(2-3)
(Nadam se da ovo mozete jednoznacno parsirati...)
Naravno, ulaze i stvari radjene na vjezbama (pogledajte i zadnje slajdove na mom Webu -- bit ce nadopunjeni u ponedjeljak).
Napominjem da je naglasak u kolokviju na razumijevanju koncepata i njihovih medjusobnih veza, a manje na algoritamskoj strani.
Kolokvij ce nositi i dodatne bodove. Nisam jos tocno siguran koliko, ali suma svih bodova kretat ce se izmedju 25 i 30, inkluzivno.
Kolokvij se pise u 003, od 16h (+ zakasnjenje potrebno da se 003 isprazni, napuni i zauzmete svoja mjesta). Trajanje je 120 minuta.
Za razliku od prethodnog kolokvija, dobit cete tekst zadataka na A4 papiru, kojeg potpisujete i predajete, ali zadatke rjesavate na [b]svojim[/b] papirima!
Po obicaju, pomagala nisu dozvoljena, no od standardne biblioteke trebate najvise 5 stvari, za koje slobodno pitate ako niste sigurni u sintaksu.
U kolokvij ulaze poglavlja:
12.*, 13.(1-3), 14.*, 15.(1-7), 16.(1-4, 6-7), 17.(1, 3), 18.(2-3)
(Nadam se da ovo mozete jednoznacno parsirati...)
Naravno, ulaze i stvari radjene na vjezbama (pogledajte i zadnje slajdove na mom Webu – bit ce nadopunjeni u ponedjeljak).
Napominjem da je naglasak u kolokviju na razumijevanju koncepata i njihovih medjusobnih veza, a manje na algoritamskoj strani.
Kolokvij ce nositi i dodatne bodove. Nisam jos tocno siguran koliko, ali suma svih bodova kretat ce se izmedju 25 i 30, inkluzivno.
Kolokvij se pise u 003, od 16h (+ zakasnjenje potrebno da se 003 isprazni, napuni i zauzmete svoja mjesta). Trajanje je 120 minuta.
Za razliku od prethodnog kolokvija, dobit cete tekst zadataka na A4 papiru, kojeg potpisujete i predajete, ali zadatke rjesavate na svojim papirima!
Po obicaju, pomagala nisu dozvoljena, no od standardne biblioteke trebate najvise 5 stvari, za koje slobodno pitate ako niste sigurni u sintaksu.
|
|
[Vrh] |
|
Ribizl Forumaš(ica)
Pridružen/a: 19. 04. 2004. (19:01:30) Postovi: (16)16
|
|
[Vrh] |
|
venovako Forumaš(ica)
Pridružen/a: 07. 11. 2002. (22:46:38) Postovi: (2F9)16
|
|
[Vrh] |
|
venovako Forumaš(ica)
Pridružen/a: 07. 11. 2002. (22:46:38) Postovi: (2F9)16
|
Postano: 22:06 sub, 3. 2. 2007 Naslov: Komentari na kolokvij |
|
|
Primjerak kolokvija mozete naci ovdje:
[url]http://web.math.hr/nastava/rp4/?download=KOL2_06_07.pdf[/url]
Zelio bih komentirati neke stvari:
Kao prvo, vidim da je dosta problema proizaslo iz nerazumijevanja zadatka.
Ispricavam se ako zadaci nisu bili dovoljno jednoznacni, no ako ste imali i najmanju sumnju sto tocno treba napisati, trebali ste odmah pitati.
Dosta vas je pisalo puno vise no sto je trebalo i tako izgubilo vrijeme. To je zapravo posebni slucaj prve stavke.
Jasno mi je da peti zadatak moze predstavljati problem, no nije mi jasno zasto je drugi zadatak stvorio toliko teskoca.
Ako rijec "datoteka" zamijenite s "alocirana memorija" dobit cete zahtijev da reimplementirate nista drugo do std::auto_ptr (cak bez price o predloscima). Ideja i implementacija su [i]doslovno[/i] iste, a opis tog sistemskog predloska imate i u C++ Primeru i u TC++PLu.
Ponovno, ispricavam se ako to niste razumjeli, ali sva poanta zadatka bila je to prepoznati.
Treci zadatak uglavnom nije lose realiziran, no premalo vas se sjetilo dynamic_cast-a, a i neki koji jesu imali su ovakve konstrukte:
ZracnaJedinica *zj = dynamic_cast<ZracnaJedinica*>(...nesto...);
(*zj)->ubojitost();
Bez zlih primisli o prepisivanju, razmislite: zj je pokazivac na objekt, a ne pokazivac na jos jedan pokazivac! Ispravna sintaksa:
zj->ubojitost();
Cetvrti zadatak uglavnom nije problem, osim sto vas se premalo sjetilo da ce kompajler puci na konstruktu:
C::iterator it = c.begin();
Morate koristiti typename:
typename C::iterator it = c.begin();
Sesti zadatak (barem opcija za 2 boda) zbilja nije bila teska.
Stovise, to je najlaksi neteoretski zadatak na kolokviju.
Rekurzija (koja vam je zapravo vec napisana) umotana kao metoda neke klase, pozvana iz konstruktora ili destruktora, i jos jedan globalni objekt te klase. I to je to. Da ne spominjem kako je slicnih zadataka bilo na prethodnim kolokvijima.
Poanta: ne plasiti se zvjezdica kraj zadatka!
No, "pravi" sesti, a pogotovo peti zadatak stvorio je nezamisliv pokolj gdje ga nije smjelo biti. Uzrok je uglavnom nerazlucivanje pojmova compile-time i run-time. U mnogim jezicima distinkcija je bitno blaza, no to je kamen temeljac C++a (i srodnih jezika).
[b]Sve[/b] sto ima ikakve veze s parametrima predloska rezolvira se pri kompilaciji. Dakle, to odradjuje kompajler. Iako su neki pametniji od drugih, kompajler opcenito ne zna izvrsiti naredbe ili pozvati funkcije i sl.
Ono sto zna je izvrijedniti aritmeticki izraz u konstantama, dakle, (5 < 6) ? 7 : 8 i CHAR_BIT * sizeof(dobule) su izrazi cija vrijednost pri kompilaciji iznosi 7, odnosno broj bitova za double tip, dok npr. (a < 6) ? 1 : 2, gdje a nije compile-time konstanta, nije izvrednjivo pri kompilaciji.
Svojstvo da se sve rezolvira pri kompilaciji daje mogucnost da matricu nad (ne-perverznim) tipom T s Row redaka i Col stupaca deklarirate kao:
T mtx[Row][Col];
Moze li jednostavnije od toga (imate slican primjer u Primeru).
Takodjer, ispitivanje ulancanosti matrica kompajler moze provesti:
[code:1]template <typename T, size_t K, size_t L, size_t M>
MyMatrix<T, K, M> operator*(const MyMatrix<T, K, L> &a, const MyMatrix<T, L, M> &b) { /* pomnozi a i b */ }[/code:1]
Poziv mnozenja na neulancanim matricama se [b]nece[/b] uspjeti iskompajlirati, pa ne treba posebno provjeravati jesu li matrice ulancane.
Primjerak kolokvija mozete naci ovdje:
http://web.math.hr/nastava/rp4/?download=KOL2_06_07.pdf
Zelio bih komentirati neke stvari:
Kao prvo, vidim da je dosta problema proizaslo iz nerazumijevanja zadatka.
Ispricavam se ako zadaci nisu bili dovoljno jednoznacni, no ako ste imali i najmanju sumnju sto tocno treba napisati, trebali ste odmah pitati.
Dosta vas je pisalo puno vise no sto je trebalo i tako izgubilo vrijeme. To je zapravo posebni slucaj prve stavke.
Jasno mi je da peti zadatak moze predstavljati problem, no nije mi jasno zasto je drugi zadatak stvorio toliko teskoca.
Ako rijec "datoteka" zamijenite s "alocirana memorija" dobit cete zahtijev da reimplementirate nista drugo do std::auto_ptr (cak bez price o predloscima). Ideja i implementacija su doslovno iste, a opis tog sistemskog predloska imate i u C++ Primeru i u TC++PLu.
Ponovno, ispricavam se ako to niste razumjeli, ali sva poanta zadatka bila je to prepoznati.
Treci zadatak uglavnom nije lose realiziran, no premalo vas se sjetilo dynamic_cast-a, a i neki koji jesu imali su ovakve konstrukte:
ZracnaJedinica *zj = dynamic_cast<ZracnaJedinica*>(...nesto...);
(*zj)→ubojitost();
Bez zlih primisli o prepisivanju, razmislite: zj je pokazivac na objekt, a ne pokazivac na jos jedan pokazivac! Ispravna sintaksa:
zj→ubojitost();
Cetvrti zadatak uglavnom nije problem, osim sto vas se premalo sjetilo da ce kompajler puci na konstruktu:
C::iterator it = c.begin();
Morate koristiti typename:
typename C::iterator it = c.begin();
Sesti zadatak (barem opcija za 2 boda) zbilja nije bila teska.
Stovise, to je najlaksi neteoretski zadatak na kolokviju.
Rekurzija (koja vam je zapravo vec napisana) umotana kao metoda neke klase, pozvana iz konstruktora ili destruktora, i jos jedan globalni objekt te klase. I to je to. Da ne spominjem kako je slicnih zadataka bilo na prethodnim kolokvijima.
Poanta: ne plasiti se zvjezdica kraj zadatka!
No, "pravi" sesti, a pogotovo peti zadatak stvorio je nezamisliv pokolj gdje ga nije smjelo biti. Uzrok je uglavnom nerazlucivanje pojmova compile-time i run-time. U mnogim jezicima distinkcija je bitno blaza, no to je kamen temeljac C++a (i srodnih jezika).
Sve sto ima ikakve veze s parametrima predloska rezolvira se pri kompilaciji. Dakle, to odradjuje kompajler. Iako su neki pametniji od drugih, kompajler opcenito ne zna izvrsiti naredbe ili pozvati funkcije i sl.
Ono sto zna je izvrijedniti aritmeticki izraz u konstantama, dakle, (5 < 6) ? 7 : 8 i CHAR_BIT * sizeof(dobule) su izrazi cija vrijednost pri kompilaciji iznosi 7, odnosno broj bitova za double tip, dok npr. (a < 6) ? 1 : 2, gdje a nije compile-time konstanta, nije izvrednjivo pri kompilaciji.
Svojstvo da se sve rezolvira pri kompilaciji daje mogucnost da matricu nad (ne-perverznim) tipom T s Row redaka i Col stupaca deklarirate kao:
T mtx[Row][Col];
Moze li jednostavnije od toga (imate slican primjer u Primeru).
Takodjer, ispitivanje ulancanosti matrica kompajler moze provesti:
Kod: | template <typename T, size_t K, size_t L, size_t M>
MyMatrix<T, K, M> operator*(const MyMatrix<T, K, L> &a, const MyMatrix<T, L, M> &b) { /* pomnozi a i b */ } |
Poziv mnozenja na neulancanim matricama se nece uspjeti iskompajlirati, pa ne treba posebno provjeravati jesu li matrice ulancane.
|
|
[Vrh] |
|
Gost
|
|
[Vrh] |
|
venovako Forumaš(ica)
Pridružen/a: 07. 11. 2002. (22:46:38) Postovi: (2F9)16
|
|
[Vrh] |
|
B&I Forumaš(ica)
Pridružen/a: 06. 09. 2006. (07:56:55) Postovi: (44)16
|
|
[Vrh] |
|
Gost
|
|
[Vrh] |
|
MrkiMedzed Gost
|
|
[Vrh] |
|
venovako Forumaš(ica)
Pridružen/a: 07. 11. 2002. (22:46:38) Postovi: (2F9)16
|
Postano: 14:39 uto, 6. 2. 2007 Naslov: |
|
|
[quote="Anonymous"]Da li mozete okvirno reci koliki bi maksimalni broj bodova mogli dobiti ako nemamo alokator?[/quote]
Ne znam na kakav alokator mislite, u kolokviju niceg takvog nije bilo.
Ako je rijec o zadaci, postoje 4 bitne komponente kod ocjenjivanja:
--> spremanje/ucitavanje FS slike
--> kopiranje datoteka izmedju datotecnih sustava
--> memory management (dakle, alokatori i sl.)
--> ispravnost semantike FSa
Od 25+5 bodova koje mozete dobiti na alokator otpada cca 10, no opet, svaki program ce biti individualno vrednovan.
Anonymous (napisa): | Da li mozete okvirno reci koliki bi maksimalni broj bodova mogli dobiti ako nemamo alokator? |
Ne znam na kakav alokator mislite, u kolokviju niceg takvog nije bilo.
Ako je rijec o zadaci, postoje 4 bitne komponente kod ocjenjivanja:
→ spremanje/ucitavanje FS slike
→ kopiranje datoteka izmedju datotecnih sustava
→ memory management (dakle, alokatori i sl.)
→ ispravnost semantike FSa
Od 25+5 bodova koje mozete dobiti na alokator otpada cca 10, no opet, svaki program ce biti individualno vrednovan.
|
|
[Vrh] |
|
venovako Forumaš(ica)
Pridružen/a: 07. 11. 2002. (22:46:38) Postovi: (2F9)16
|
|
[Vrh] |
|
|