Zk. 2.6.

Přednáška je věnována neprocedurálnímu programování. Většina semestru je věnována programování v jazyku Prolog, ve kterém studenti i ladí zápočtové programy. Informativně se studenti seznámí i s jazykem LISP a neprocedurálními částmi programovacích systémů.
-

Zk. 2.6.

Příspěvek od - »

Pre tych co nevedeli co znamena pojem "lahke technicke priklady".

PROLOG
1. Sifra vyzera tak, ze text poukladate do matic 4x4, napr chcem sifrovat "ahoj ako sa mas"
ahoj
_ako
_sa_
mas_
Dlhsi text by siel na viac takych matic, posledna doplnena napr _.
Potom mame mriezku, ktoru akoby polozime na tie matice a ona ma 4 diery, cize vidime 4 pismena, otocime mriezku o 90 vpravo a vidime dalsie 4 atd kym mame celu jednu maticu. Ulohou je napisat predikat co takto sifruje desifruje a este zisti ci je ta mriezka ok.

Riesenie - hlavne predpokladat ze text je dlhy a netocit mriezku stale, ale len si pripravit 4 polohy. Idealne vyuzit neuplne datove struktury aby ten predikat rovno fungoval obojstranne.

2. Vypustit z BVS prvky nepatriace intervalu <A,B>
Riesenie je lahke, vyuzit vlastnosti BVS a je to.

HASKELL
3. Definovat datovy typ pre orientovany graf ktory ma vrcholy identifikovane jednoznacnym intom a este maju nejaky string na sebe. Napisat fciu ktora vrati vsetky vrcholy s ich vzdialenostami od zadanej startovacej mnoziny - prehladavanie do sirky.

data Node = Node NodeID String [Node]
type NodeID = Int
type Graf = [Node]

vzdialenosti :: Graf -> [NodeID] -> [(NodeID,Vzdialenost)]

dalej by to malo byt ok.

4. Vypisat zoznam prvociselnych delitelov cisla v tvare [(prvocislo,nasobnost)]
Urobit efektivne, tj eratostenovo sito plus algoritmus nejak rozumne.


Tak. Na to boli dve hodiny a dalo sa to vymysliet, ale je potrebne to mat dotiahnute aj syntakticky. Resp, mat spravny postup nestaci.

Co sa tyka velkeho prikladu k tomu sa nebudem vyjadrovat. Snad len niekolko rad. Hlavne vymysliet algoritmus a popisat ho slovne. Potom by stacili nejake kusy kodu, cele sa to aj tak neda. V principe je to fakt rovnake ako na skuske Programovani II, lenze o pol hodinu menej.

Dalsie tipy:
1. na ustnu cast si so sebou vezmite stvorlistok, podkovu a ine talizmany pre stastie.
2. ak dostanete na ustej dodatocny priklad, poriadne si ho rozmyslite, cas mate, skuste akoby odtraceovat co to robi. moze vas to stat zivot.
3. rozdielove zoznamy - prevod tam a naspat, pan doktor Kryl to ma v skriptach.
4. ked sa pripravujete stylom, ze ulohy pisete na pocitaci, pustite, zistite ze to robi nieco ine, opravite drobnu chybu a zase pustite, skrtnite si najblizsi termin, zmente metodu a skuste rovno ten dalsi.

PS. nie je to tazke, len sa treba sustredit a mat nieco natrenovane.
Sesquideus
Matfyz(ák|ačka) level I
Příspěvky: 1
Registrován: 21. 9. 2009 23:27
Typ studia: Informatika Bc.

Re: Zk. 2.6.

Příspěvek od Sesquideus »

4. ked sa pripravujete stylom, ze ulohy pisete na pocitaci, pustite, zistite ze to robi nieco ine, opravite drobnu chybu a zase pustite, skrtnite si najblizsi termin, zmente metodu a skuste rovno ten dalsi.
Ja som to robil presne tak a podľa toho to aj dopadlo... akurát ani od teba, ani od Dr. Kryla som sa nedozvedel, aká metóda je správna.

Inak ústna mi prišla úplne pohodová, minimálne pre toho, kto aspoň niečo vie (a stačí mu 3 s výkričníkom). Z písomnej som mal BVS dobre, v prvočíslach sa mu niečo nepáčilo, ale nakoniec to asi uznal, mriežku som stihol len načrtnúť, BFS nič a z veľkého príkladu som mal možno tretinu (som to chcel previesť na tok, ale na niečo také zjavne nemám :)). Možno by pomohlo tak dvakrát viac času... Nakoniec ma ale pustil ďalej s tým, že keď mu zadefinujem rozdielové zoznamy, popíšem na čo sú, etc., tak mi tú trojku dá.

Na záver som dostal päťminútový príhovor do duše, a som sa dozvedel, že ako matfyzák by som sa mal vedieť vyjadrovať, že takto určite neurobím štátnice, a že ďalší štvrtok tam radšej ani nemám ísť, lebo by to znovu skončilo v krvi. Takže ma vyexpedoval dverami... možno ešte uvidíme v septembri.
Jonáš
Matfyz(ák|ačka) level I
Příspěvky: 15
Registrován: 19. 1. 2010 10:57
Typ studia: Informatika Mgr.

Re: Zk. 2.6.

Příspěvek od Jonáš »

Chtěl jsem se zeptat na ústní část.
Jsou na to nějaké rozpisy nebo se tam prostě čeká a pak se jde domů a čeká se druhý den?
Dá se nějak ovlivnit, kdy na ni půjdete?
-

Re: Zk. 2.6.

Příspěvek od - »

Ano robi sa rozpis, na jedneho pripada 30min, ale zvykne sa to trochu pretiahnut. Sanca vybrat si svoj termin aspon priblizne je.
Drakoii
Matfyz(ák|ačka) level I
Příspěvky: 5
Registrován: 12. 10. 2008 23:47
Typ studia: Informatika Bc.

Re: Zk. 2.6.

Příspěvek od Drakoii »

- píše: data Node = Node NodeID String [Node]
type NodeID = Int
type Graf = [Node]

vzdialenosti :: Graf -> [NodeID] -> [(NodeID,Vzdialenost)]
Jak bude toto prosim fungovat, kdyz graf bude obsahovat orientovany cyklus? To bych prece mel vrchol, ktery v seznamu vrcholu obsahuje sam sebe? Nemelo by tam byt spise?

Kód: Vybrat vše

data Node = Node NodeID String [NodeID]
-

Re: Zk. 2.6.

Příspěvek od - »

jj mas pravdu, sorry
Odpovědět

Zpět na „PRG005 Neprocedurální programování“