Peta’s Place

Delphi

Posted in SPR by Peta on June 16, 2009

Takze… Nevim jak jste na tom tenhle tejden co se ostatnich seminaru a dalsich veci tyce, jakoze jak moc vas trapi. Pokud vas moc netrapi, muzeme zacit ve ct driv, pripadne skoncit pozdejc, abyste mohli mit z Pascalu pres prazdniny radost;-)

Kdyztak dejte vedet

P.

Implementace LazyStringu

Posted in SPR by Peta on April 30, 2009

Protoze dneska palej venku pred nasim barakem carodejnice a doprovazej to prisernou a hlasitou hudbou pri ktery se nemuzu soustredit na psani diplomky, natozpak na uceni se na statnice, udelal sem vam ten lazy string. Takze tady ho mate v zipu, jsou tam ty nejzakladnejsi metody a operatory vzdycky s jinym lazy stringem, se std::stringem a s const char*. Melo by to vsechno fachat bez segfaultu, ale je mozny ze tam nejakej bude (moc casu sem tomu nevenoval a prelozilo se to napoprve, coz je spatny znameni;)

Za domaci ukol si to prostudujte, pochopte a kdyz budete mit cas a chut, pridelejte k tomu metodu slice() co udela slicy jako v pythonu (ovsem lazy!!!!;-). Tady je hlavicka:

LazyString slice(int fromIndex, intToIndex);

mala napoveda pro vas takhle metoda nemuze byt const (pokud nebude const i ta vracena slice).

A tady je odkaz na ten zdrojak (lazystring.h a .cpp). .h je komentovanej, .cpp si zkuste pochopit bez komentaru, ten kod neni zase takovej hardcore…

LazyString.tar.gz

Ukol

Posted in SPR by Peta on April 26, 2009

Takze ukol na pristi hodinu je nasledujici:

1) Udelejte zakladni objekt pro vlastni standard library. Bude umet veci o kterych jsme si rikali na hodine (tedy bude vedet jaka je trida, virtualni konstruktor, atd…) Pokud chcete a myslite si, ze mate nejakej napad co by mel ten objekt umet a o cem jsme nemluvili na hodine, zkuste to do nej schvalne pridat a uvidte pozdejc;)

2) napiste makro/funkci delete co vynuluje ukazatek po vymazani z pameti (a nevymaze z pameti neco co uz je null)

3) napiste ten lazy string. Tedy string, kterej nezkopiruje celej retezec pri vytvoreni kopie, ale az tehdy kdyz je to vazne treba, tedy kdyz dojde ke zmene…

Ukol na prani

Posted in SPR by Peta on April 2, 2009

Takze tady je ukol: Budeme se inspirovat Pythonem. Napiste seznam (neco jako vector, pro hardcore jedince to udelejte jako je vector sam, takze ne dynamickym seznamem, ale tim polem, jak jsme si rikali na minuly hodine (pole co se zvetsuje kdyz je treba), pro megahardcore jedince templatama) co bude umet slicing jako ma seznam v Pythonu.

Protoze nemuzete az tak predelat operator[] udelate metodu slice, ktera bude vypadat asi takhle:

Item List::slice(int index) const; //vrati index-tej prvek
Item& List::slice(int index);
List List::slice(int index1,int index2) const; // vrati seznam od index1tyho prvku do index2tyho prvku
List& List::slice(int index1,int index2);

Bacha na ty druhy dve, tam musite vazne premejslet jak je napsat aby fungovaly ty const a ty reference… (to je taky dost hardcore samo o sobe;-)

Tadydadydadyda

Streamy

Posted in SPR by Peta on March 19, 2009

Pres prazdniny

Posted in SPR by Peta on February 25, 2009

Takze… Delali jsme operatory… Jeste jsem se nedostal k tomu, abych vyplodil nejaky slidy, mame posledni tejden zkouskovyho a tak to nejde uplne jak bych predpokladal, hehe;) Konec vymluv, budou pristi tejden.

Domaci ukol je jasnej, prepsat co jste meli na minulou hodinu do operatoru.

A ted k tomu, co bude dal: Pristi hodinu dame jeste trosku teorie, rekneme si neco vic o friend funkcich a operatorech (tedy naucime se se streamy = cteni/zapis do souboru). A jeste k tomu prihodime jen uplnej uvod do uvodu sablon. Pak dame praktickou hodinu abyste videli co a jak s tim a abych ja videl ze vy vidite…

A potom: Ackoli by asi spousta z vas chtela delat grafiku (tedy OpenGL), tak tady je nekolik duvodu, proc myslim ze to neni dobrej napad:

  • grafika je relativne hardcore C (tedy ne C++) programovani, coz ve vetsine pripadu znamena tuny a tuny pointeru a struktur…
  • grafika je tim padem hodne narocna na praci… Nejen ze vam spoustu casu sezere jen napsat si nejaky minimalisticky OOP framework ve kterem se da uz neco malo udelat (ani se nebavime o odladeni takoveho monstra (radove 2000-4000 radku)) ale taky udelat a nakreslit vsechny textury, 3D modely a podobne zabere spoustu casu a bez nich bude vase aplikace vypadat jako hodne oslive kacatko…
  • grafika je narocna na matematiku… tedy lze to delat i skoro bez matematiky, ale to uz neni programovani…

To staci asi… Verim ze programovani a matyku byste zvladli, nejsem si tak jistej tim casem… Pokud nejste schopni vyhradit programovani aspon tak 15 hodin tydne, nema vubec cenu o grafice uvazovat…

Misto toho nabizim umelou inteligenci (a taky samozrejme duvody proc):

  • AI je nesmirne zajimava ;-)
  • Muzete zacit “na zelene louce” tedy s C++ a objekty a vasim krasnym kodem
  • Programy v AI jsou obecne mensi tedy min pisete a min ladite
  • Jsou ale narocnejsi na Vase uvazovani -> napsani dobreho programu na umelou inteligenci vas vazne potesi;-)
  • A co se programovani tyce nejsou casove narocne (premyslet jak na to muzete i v metru;-)
  • Hlavne: Je velika sance ze co se naucite z AI jeste nekolikrat ve vasem programatorskym zivote pouzijete

Dal znamkovani v letnim semestru: tentokrat bez pisemky, udelate projekt. Projekty muzete delat klidne v tymech, ale maximalne, maximalne trech lidi (radsi bych ale videl jen dvojice, 3 lidi v oduvodnenych pripadech;-). O tom, na co presne byste projekt delali se dohodneme na nektere z nasledujicich hodin, ale pravdepodobne to bude neco jako treba AI tanciky, AI slepa baba,  AI bojujici roboti, atd… Moje vize je ze budete vsichni delat stejnou vec a na konci budeme moct postavit jednotlivy teamy proti sobe a videt vysledky.

PS: Kluci mozna mysli ze neco podobnyho uz delali minulej rok, rad bych je upozornil, ze nedelali;-) Ackoli zacneme prohledavanim stavovyho prostoru, pak se presuneme na jeho optimalizace, hledani globalnich optim, orezavani, soft metody a zakoncime to agenty (to bude teziste vasi semestralky).

Takze ted bych rad nejakou diskuzi k tomu… Bud napiste pripominky, nebo napiste Super super uz se tesim;-)

Seminar 12.2 odpada

Posted in SPR by Peta on February 11, 2009

Zdravim, protoze to neni napsany na suplovani na agcku, tak vam vsem pripominam, ze zejtra (tedy 12.2, proste ctvrtek) neni seminar.

Ukol na dalsich 14 dni

Posted in SPR by Peta on February 5, 2009

Takze tady mate co jsme delali…

Ukol je jasnej:

1) dopsat vsechny metody co je treba tak aby fungovalo a pridat kratkej program co ukaze jak se s tou tridoi dela

2) metodu gcd() prepiste z rekurze na iteraci (tzn napiste ji cyklem bez pouziti rekurze)

Tady je zdrojak:
cpp_ivtcka.cpp

pripominam, ze ukol je povinnej pro vsechny… Kdo umi operatory muze si k tomu pripsat operatory. A jeste pripominam, ze tu pristi tejden nebudu.

Rekurzivni ukol

Posted in SPR by Peta on January 23, 2009

Takze, na dnesni ukol jsme se inspirovali Lispem a ceka nas krasna rekurze: Vasim ukolem bude naprogramovat funkci, ktera vezme jako parametry dva seznamy a vrati novy seznam, ktery bude obsahovat pouze ty prvky, ktere existuji v obou dvou vstupnich seznamech. Pro prehlednost tady mate hlavicku datoveho typu seznam:

clas List {
  public:
     int car(); // Vrati prvni prvek seznamu
     List* cdr(); // Vrati seznam zbyvajicich prvku krome prvniho. Kdyz ma seznam jen jeden prvek, vrati NULL
     append(int i); // Prida cislo i na konec seznamu
} ;

Pokud budete chtit, muzete si tyhle metody i naimplementovat. Muzete si i pridat vlastni metody pro usnandneni prace, ale tyhle metody MUSI byt rekurzivni. Stejne tak muzete udelat libovolnej pocet funkci, ale vsechny musi byt rekurzivni. Vysledna funkce pak bude mit hlavicku co vypada takhle:

List* intersection(List* list1, List* list2);

Reseni pisemky

Posted in SPR by Peta on January 15, 2009

Ok, vase testy dneska fakt opravovat nebudu, ale tady mate vzorovy reseni.

test_winter_results

takze si muzete udelat obrazek o tom co mate a co nemate dobre… P.