Všem vám doporučuju přečíst si tenhle článek - chtěl bych, abyste se těch doporučení ve vašich projektech drželi.
http://www.linuxsoft.cz/article.php?id_article=815
neděle 9. prosince 2007
úterý 4. prosince 2007
Výsledky 2. testu
Výsledky druhého testu. Opravný termín bude příští týden, sledujte adresář Cvičení na disku V:\. K těm vašim projektům se dostanu během víkendu, pak zde najdete vyjádření.
pátek 30. listopadu 2007
Co na další středu
Tak, v rychlosti co tedy na příští středu.
- Odevzdejte mi do pondělka všechny projekty a úkoly, které mi dlužíte
- Projděte si znovu projekt balls, který jsme měli teď na semináři a pokuste se pochopit jak funguje:)
- Najděte si někde, co to jsou vnitřní třídy a jak s nimi pracujeme
úterý 27. listopadu 2007
2007-11-28
Nj, dávám to sem hodně pozdě, omlouvám se, ale dřív jsem se k tomu nedostal. Takže jen tak v bodech připomenutí toho důležitého na seminář tuhle středu.
- Projekty pro ukládání testů, platí pro toho, kdo mi to ještě nedal. Kdyžtak mám připravených pár jiných příkladů, opravdu chci, abyste si zkusili udělat nějaký projekt sami
- Projekt mail-system, vytvořit metodu getAllMailItems(String who) která vrátí nějak šikovným způsobem všechny mailové zprávy od daného uživatele. Stačí, když mi to hodíte do texťáku s vaším jménem a dáte to do V:\Share, nemusíte odevzdávat celý projekt. Ale odevzdáte to všichni zase:)
- Bonus task - projekt PoleČísel a vytvořit metodu (popř. upravit metodu toString()). která bude vypisovat liché prvky z kolekce. Tímto děkuji panu Jandovi za funkční řešení:)
úterý 20. listopadu 2007
Výsledky posledního opravného testu (15.11.2007)
Heřman, Michal 13 bodů
Králík, Martin x
Mrštíková, Květa 9 bodů
Ryba, Vítězslav 11 bodů
Sobotič, Zoltán x
Poslední možnost opravy Testu 1 se koná dne 21. 11. 2007 od 8 hodin na J-329.
Králík, Martin x
Mrštíková, Květa 9 bodů
Ryba, Vítězslav 11 bodů
Sobotič, Zoltán x
Poslední možnost opravy Testu 1 se koná dne 21. 11. 2007 od 8 hodin na J-329.
Projekt Ukládání a vyhodnocování testu - výsledky
Takže, jsou tady poznámky a připomínky k vašim projektům. Některé poznámky vám možná přijdou nadbytečné, ale nejsou, věřte mi. Existují jisté způsoby a konvence a pokud se je naučíte, budete mít dál méně starostí, budete psát programy rychleji a efektivněji. A o tom to je:) Nechci vám nutit svůj styl programování, každý ať si najde svůj, ale zároveň byste se také měli držet zlaté střední cesty, protože ta tu není bezdůvodně:)
Úvodem
Nejdříve jednu poznámku k těm návrhům, jednu věc jste tam měli hodně často. Z hlediska objektového programování byste měli metodě pro přidání testu do kolekce předávat jako parametr už objekt typu test. Princip objektového programování je pokusit se modelovat reálný svět tak, aby i vaše programy vypadaly logicky. Takže když vy objekt typu test vytváříte ve třídě pro zpracování výsledků, vypadá to asi tak, že učitel si sedne a jde opravovat testy, stojí u něj řada studentů a učitel tomu prvnímu v řadě dá test, ten jej vypní a vrátí jej učiteli, který ho opraví a založí do desek. První student odejde, na řadu přijde ten za ním, opět dostane prázdný test, vypní, vrátí, učitel ho vyhodnotí a založí. Jo, neříkám, že ta vaše řešení nefungují. Jde jen o ten návrh, programování není jen o tom, že napíšu program, který mi něco vypočítá, ale hlavně je to o efektivitě, jednoduchosti a přehlednosti řešení. Takže, něříkám že to je špatně, říkám jen, že by to šlo líp.
Dále v zadání bylo i korektní zadání dokumentačních komentářů, do toho se spoustě z vás nechtělo a když už, tak jen tak aby tam něco bylo. A nevyplňovali jste např. parametry a návraty metod.. Takže příště..
A teď už konkrétně:)
Tak a teď už konkrétně:) Píšu opravdu jen věcné poznámky, neboduje se to, říkal jsem vám, že nic na tom nezávisí. Šlo mi opravdu jen o to, abyste si to zkusili sami. Takže je mnohem přínosnější projekt, kde sice třeba nic moc není, než projekt, který je až na pár drobností stejný s někým jiným. Ale tak to už je vaše věc...
Albrechtová, Monika
Co má za úkol metoda getBodyHodnota() ze třídy Student? A program vám nejde přeložit, protože metoda má vrátit hodnotu jakési proměnné uspel, která ale neexistuje. Jinak tam toho moc nemáte:) A také nevím na co byly parametry u konstruktoru třídy Student. Ale tak nevadí, cílem bylo zkusit si to, a vy jste to odevzdala tak, jak jste to sama zkoušela.
Balej, Marek
V pořádku, pouze jedna věc. V metodě pro výpočet aritmetického průměru sice pracujete s double, ale jako výsledek podílu dvou integerů. Takže vždycky jako průměr dostanete celé číslo, což není úplně ono. A metodám prumer() a pocetuspesnych() jste mohl dát jako návratovou hodnotu int nebo double místo void, když byste dál chtěl s tím výsledkem pracovat, bude to řešení jednodušší. Jinak ale OK. Až na ty dokumentační komentáře, které tam tak nějak chybí.
Bečvář, Stanislav
(Až na ty dokumentační komentáře, které vy tam máte) platí to samé, jako u kolegy Baleje. A "zadavac" je zajímavý název pro třídu..:)
Beneš, Jiří
Nemám váš projekt.
Černý, Lukáš
Viz o řádek výše.
Erhart, Jaroslav
Uf. Vy to máte zmatené:) Kódu je tam sice dost, ale v podstatě nic to neudělá. Přitom si myslím, že jste nezačal špatně a stačilo se nad tím jen pořádně zamyslet. Třída test je u vás úplně zbytečná, tam se jen vytvoří nějaký List a dál se s ním nic neděje a ten je zase v klidu odstraněn interpretem Javy. A metodu addBody máte logicky špatně - když tam přidáte 20 bodů tak napřed se zbytečně vyhodnotí jako uspěl a hned se to přepíše, stejně tak vypíše uspěl pokud zadám zápornou hodnotu. A další problém je v tom přičítání, body += celkemBodu; jakým způsobem nastavím hodnotu bodů? Takhle se mi pořád jen k hodnotě přičítá nebo odčítá. Takže - myslím si, že jste to mohl zkusit dotáhnout dál, zamyslet se nad tím a taky ten program otestovat na různá vstupní data. Ale zase plus za to, že jste to zkoušel:)
Frencl, Ondřej
Člověče, co to je?:) Když jste vymyslel tohle tak mi neříkejte že byste neudělal ten projekt:) Dobrý no:)
Haškovec, Milan
Také nemám.
Heřman, Michal
No, tohle se mi taky nehodnotilo moc dobře:) Máte to celkem zajímavě okomentované, ale tím to končí.. Nevadí..
Janda, Vilém
Super, jediná drobnost je ten objektový přístup. Ale jinak v pořádku.
Kondelík, Jan
Moc pěkné řešení, propracované, okomentované (pozn. k parametrům v dokumentačním komentáři nemusíte psát jejich typ, javadoc si to zjistí sám). Dvě drobnosti - main není až tak úplně vhodný název pro třídu a pak je tam zase ta záležitost s aritmetickým průměrem. Ale jinak nemám co bych tomu vytknul, líbilo se mi to.
Kouklík, Tomáš
Vždyť jste začal dobře, proč jste to nedodělal? Moc už by tam toho nechybělo dodělat.. Na třídě zaci se nedá už v podstatě nic moc dodělávat a kdybyste se podíval na práci s kolekcemi a zkusil vymyslet jak udělat ten aritmetický průměr..
Králík, Martin
Nemám vás tady.
Lískovcová, Jana
Máte udělané přidání testu do kolekce, jakž takž ošetřené body, takže stačilo vymyslet práci se seznamem a metody pro získání těch potřebných údajů. Jinak by to vůbec nemuselo být špatné, jen to dodělat.
Mlejnek, Josef
V podstatě v pořádku, ale zase je tam ten problém s aritmetickým průměrem a totálně tam postrádám dokumentační komentáře.
Mrštíková, Květa
Taky v podstatě v pořádku, ale opět platí to, co jsem psal poprvé u pana Baleje... Myslím tím tu záležitost s aritmetickým průměrem...
Pasák, Václav
Kde nic není...
Peka, Karel
Lehce nevhodné názvy tříd, testy a tests si snadno spletete. Jinak opět tradiční aritmetickoprůměrová záležitost:) Asi budu rovnou psát viz. pan Balej:) Nevím, kdo z vás je autorem, ale u pana Baleje jsem na to narazil jako u prvního, takže vy, kterých se to týká si to přečtěte u něj, ať to nepíšu pořád dokola:)
Petýrek, Tomáš
Jo, v pohodě:) Nevadí mi, že vám s tím pomáhal pan Janda (ta aritmetickoprůměrová záležitost je tedy asi od něj, že), aspoň jste s tím strávili nějaký čas a to bylo cílem. Okomentoval jste každý řádek v programu a snažil jste se pochopit, jak to vlastně funguje. V pořádku! Takže jen dodám problém s aritmetickým průměrem a lehkou nelogičnost v tom, kdy jako studenta, který vyhověl, počítáte toho, kdo měl méně než 5 bodů.
Přílepek, Miroslav
Nemáááááám.
Ryba, Vítězslav
Také nemám.
Směšný, Roman
Nechci se opakovat, ale také nemám.
Sobotič, Zoltán
Opět bych se opakoval.
Veith, Miroslav
No, konečně na konec trošku originality:) Škoda, že jste to nedotáhl do konce. U třídy test byste asi potřeboval metodu na vrácení počtu bodů, ta tam chybí, na privátní proměnnou se nedá přistoupit z jiné třídy. Jinak mě potěšilo, že jste jediný, kdo udělal metodu pro přidání testu tak, že její parametr je opravdu objekt typu test. SUPER! A jinak líbí se mi, že jste zkoušel tu práci s iterátorem, akorát víte, v čem je problém? Že vy ten objekt test hned vracíte, return vám ukončí metodu a vrátí první test ze seznamu. Pokud byste ten kód s iterátorem použil šikovněji, máte prostředek pro procházení celou kolekcí a v těle cyklu while se staráte jen o získání dat z AKTUÁLNÍ pozice v seznamu a jejich zpracování. Když na to kouknete, tak možná i sám vidíte, že ten foreach je lehce elegantnější, s iterátorem se dá zase dělat více věcí.
Závěrem
Hlavní problém tedy byl v tom, že jste používali int pro výpočet aritmetického půměru a čísla to vracela zaokrouhlená. Další věc byly komentáře, které mnohdy chyběly. Občas trošku nevhodné pojmenovávání proměnných. Ale pro většinu z vás to byl první projekt, který jste zkoušeli a příště to snad bude lepší. Jo a spousta těch řešení byla vážně až nápadně podobná, ale tak to je vaše věc, cílem bylo zkusit si vlastní projekt a ne získat za něj nějaké body.
A pro vás ostatní, kteří jste mi ten projekt neodevzdali, vymyslím jiné zadání a nějaký projekt mi také odevzdáte. Jinak nevím, kolik z vás zkusilo aspoň ten program pustit a vyzkoušet na nějakých datech a nebo jste jenom vzali jedno řešení a hotovo. Nevadí, něco podobného zkusíme asi ještě jednou během semestru. Během dneška nebo zítřka se zde objeví ještě pár věcí, co budu chtít, abyste o nich měli přehled na příští seminář. Jinak pořád platí hlavní témata a to práce s kolekcemi, číselné proměnné a cykly. Plus se podívejte na algoritmy pro hledání maxima a minima v poli nebo seznamu, podrobné zadání bude v dalším postu.
Pozn.: Kdyby vás zajímalo, jaké nejjednodušší řešení stačilo udělat, můžete si z tohoto odkazu stáhnout moje řešení a prozkoumat ho.
Jinak budu rád za vaše poznámky, komentáře a připomínky, které tady zanecháte.
Úvodem
Nejdříve jednu poznámku k těm návrhům, jednu věc jste tam měli hodně často. Z hlediska objektového programování byste měli metodě pro přidání testu do kolekce předávat jako parametr už objekt typu test. Princip objektového programování je pokusit se modelovat reálný svět tak, aby i vaše programy vypadaly logicky. Takže když vy objekt typu test vytváříte ve třídě pro zpracování výsledků, vypadá to asi tak, že učitel si sedne a jde opravovat testy, stojí u něj řada studentů a učitel tomu prvnímu v řadě dá test, ten jej vypní a vrátí jej učiteli, který ho opraví a založí do desek. První student odejde, na řadu přijde ten za ním, opět dostane prázdný test, vypní, vrátí, učitel ho vyhodnotí a založí. Jo, neříkám, že ta vaše řešení nefungují. Jde jen o ten návrh, programování není jen o tom, že napíšu program, který mi něco vypočítá, ale hlavně je to o efektivitě, jednoduchosti a přehlednosti řešení. Takže, něříkám že to je špatně, říkám jen, že by to šlo líp.
Dále v zadání bylo i korektní zadání dokumentačních komentářů, do toho se spoustě z vás nechtělo a když už, tak jen tak aby tam něco bylo. A nevyplňovali jste např. parametry a návraty metod.. Takže příště..
A teď už konkrétně:)
Tak a teď už konkrétně:) Píšu opravdu jen věcné poznámky, neboduje se to, říkal jsem vám, že nic na tom nezávisí. Šlo mi opravdu jen o to, abyste si to zkusili sami. Takže je mnohem přínosnější projekt, kde sice třeba nic moc není, než projekt, který je až na pár drobností stejný s někým jiným. Ale tak to už je vaše věc...
Albrechtová, Monika
Co má za úkol metoda getBodyHodnota() ze třídy Student? A program vám nejde přeložit, protože metoda má vrátit hodnotu jakési proměnné uspel, která ale neexistuje. Jinak tam toho moc nemáte:) A také nevím na co byly parametry u konstruktoru třídy Student. Ale tak nevadí, cílem bylo zkusit si to, a vy jste to odevzdala tak, jak jste to sama zkoušela.
Balej, Marek
V pořádku, pouze jedna věc. V metodě pro výpočet aritmetického průměru sice pracujete s double, ale jako výsledek podílu dvou integerů. Takže vždycky jako průměr dostanete celé číslo, což není úplně ono. A metodám prumer() a pocetuspesnych() jste mohl dát jako návratovou hodnotu int nebo double místo void, když byste dál chtěl s tím výsledkem pracovat, bude to řešení jednodušší. Jinak ale OK. Až na ty dokumentační komentáře, které tam tak nějak chybí.
Bečvář, Stanislav
(Až na ty dokumentační komentáře, které vy tam máte) platí to samé, jako u kolegy Baleje. A "zadavac" je zajímavý název pro třídu..:)
Beneš, Jiří
Nemám váš projekt.
Černý, Lukáš
Viz o řádek výše.
Erhart, Jaroslav
Uf. Vy to máte zmatené:) Kódu je tam sice dost, ale v podstatě nic to neudělá. Přitom si myslím, že jste nezačal špatně a stačilo se nad tím jen pořádně zamyslet. Třída test je u vás úplně zbytečná, tam se jen vytvoří nějaký List a dál se s ním nic neděje a ten je zase v klidu odstraněn interpretem Javy. A metodu addBody máte logicky špatně - když tam přidáte 20 bodů tak napřed se zbytečně vyhodnotí jako uspěl a hned se to přepíše, stejně tak vypíše uspěl pokud zadám zápornou hodnotu. A další problém je v tom přičítání, body += celkemBodu; jakým způsobem nastavím hodnotu bodů? Takhle se mi pořád jen k hodnotě přičítá nebo odčítá. Takže - myslím si, že jste to mohl zkusit dotáhnout dál, zamyslet se nad tím a taky ten program otestovat na různá vstupní data. Ale zase plus za to, že jste to zkoušel:)
Frencl, Ondřej
Člověče, co to je?:) Když jste vymyslel tohle tak mi neříkejte že byste neudělal ten projekt:) Dobrý no:)
Haškovec, Milan
Také nemám.
Heřman, Michal
No, tohle se mi taky nehodnotilo moc dobře:) Máte to celkem zajímavě okomentované, ale tím to končí.. Nevadí..
Janda, Vilém
Super, jediná drobnost je ten objektový přístup. Ale jinak v pořádku.
Kondelík, Jan
Moc pěkné řešení, propracované, okomentované (pozn. k parametrům v dokumentačním komentáři nemusíte psát jejich typ, javadoc si to zjistí sám). Dvě drobnosti - main není až tak úplně vhodný název pro třídu a pak je tam zase ta záležitost s aritmetickým průměrem. Ale jinak nemám co bych tomu vytknul, líbilo se mi to.
Kouklík, Tomáš
Vždyť jste začal dobře, proč jste to nedodělal? Moc už by tam toho nechybělo dodělat.. Na třídě zaci se nedá už v podstatě nic moc dodělávat a kdybyste se podíval na práci s kolekcemi a zkusil vymyslet jak udělat ten aritmetický průměr..
Králík, Martin
Nemám vás tady.
Lískovcová, Jana
Máte udělané přidání testu do kolekce, jakž takž ošetřené body, takže stačilo vymyslet práci se seznamem a metody pro získání těch potřebných údajů. Jinak by to vůbec nemuselo být špatné, jen to dodělat.
Mlejnek, Josef
V podstatě v pořádku, ale zase je tam ten problém s aritmetickým průměrem a totálně tam postrádám dokumentační komentáře.
Mrštíková, Květa
Taky v podstatě v pořádku, ale opět platí to, co jsem psal poprvé u pana Baleje... Myslím tím tu záležitost s aritmetickým průměrem...
Pasák, Václav
Kde nic není...
Peka, Karel
Lehce nevhodné názvy tříd, testy a tests si snadno spletete. Jinak opět tradiční aritmetickoprůměrová záležitost:) Asi budu rovnou psát viz. pan Balej:) Nevím, kdo z vás je autorem, ale u pana Baleje jsem na to narazil jako u prvního, takže vy, kterých se to týká si to přečtěte u něj, ať to nepíšu pořád dokola:)
Petýrek, Tomáš
Jo, v pohodě:) Nevadí mi, že vám s tím pomáhal pan Janda (ta aritmetickoprůměrová záležitost je tedy asi od něj, že), aspoň jste s tím strávili nějaký čas a to bylo cílem. Okomentoval jste každý řádek v programu a snažil jste se pochopit, jak to vlastně funguje. V pořádku! Takže jen dodám problém s aritmetickým průměrem a lehkou nelogičnost v tom, kdy jako studenta, který vyhověl, počítáte toho, kdo měl méně než 5 bodů.
Přílepek, Miroslav
Nemáááááám.
Ryba, Vítězslav
Také nemám.
Směšný, Roman
Nechci se opakovat, ale také nemám.
Sobotič, Zoltán
Opět bych se opakoval.
Veith, Miroslav
No, konečně na konec trošku originality:) Škoda, že jste to nedotáhl do konce. U třídy test byste asi potřeboval metodu na vrácení počtu bodů, ta tam chybí, na privátní proměnnou se nedá přistoupit z jiné třídy. Jinak mě potěšilo, že jste jediný, kdo udělal metodu pro přidání testu tak, že její parametr je opravdu objekt typu test. SUPER! A jinak líbí se mi, že jste zkoušel tu práci s iterátorem, akorát víte, v čem je problém? Že vy ten objekt test hned vracíte, return vám ukončí metodu a vrátí první test ze seznamu. Pokud byste ten kód s iterátorem použil šikovněji, máte prostředek pro procházení celou kolekcí a v těle cyklu while se staráte jen o získání dat z AKTUÁLNÍ pozice v seznamu a jejich zpracování. Když na to kouknete, tak možná i sám vidíte, že ten foreach je lehce elegantnější, s iterátorem se dá zase dělat více věcí.
Závěrem
Hlavní problém tedy byl v tom, že jste používali int pro výpočet aritmetického půměru a čísla to vracela zaokrouhlená. Další věc byly komentáře, které mnohdy chyběly. Občas trošku nevhodné pojmenovávání proměnných. Ale pro většinu z vás to byl první projekt, který jste zkoušeli a příště to snad bude lepší. Jo a spousta těch řešení byla vážně až nápadně podobná, ale tak to je vaše věc, cílem bylo zkusit si vlastní projekt a ne získat za něj nějaké body.
A pro vás ostatní, kteří jste mi ten projekt neodevzdali, vymyslím jiné zadání a nějaký projekt mi také odevzdáte. Jinak nevím, kolik z vás zkusilo aspoň ten program pustit a vyzkoušet na nějakých datech a nebo jste jenom vzali jedno řešení a hotovo. Nevadí, něco podobného zkusíme asi ještě jednou během semestru. Během dneška nebo zítřka se zde objeví ještě pár věcí, co budu chtít, abyste o nich měli přehled na příští seminář. Jinak pořád platí hlavní témata a to práce s kolekcemi, číselné proměnné a cykly. Plus se podívejte na algoritmy pro hledání maxima a minima v poli nebo seznamu, podrobné zadání bude v dalším postu.
Pozn.: Kdyby vás zajímalo, jaké nejjednodušší řešení stačilo udělat, můžete si z tohoto odkazu stáhnout moje řešení a prozkoumat ho.
Jinak budu rád za vaše poznámky, komentáře a připomínky, které tady zanecháte.
úterý 13. listopadu 2007
Výsledky testu z 24. října 2007 (UPDATED)
Výsledky si můžete prohlédnout zde na stránkách, popřípadě pokud by se vám nezobrazovaly, je možné je otevřít tímto odkazem.
UPDATED: Výsledky opravného testu z 8. a 9. listopadu 2007
UPDATED: Výsledky opravného testu z 8. a 9. listopadu 2007
Přihlásit se k odběru:
Příspěvky (Atom)