Nagyhatékonyságú logikai programozás

A VIK Wikiből

Ez az oldal a korábbi SCH wikiről lett áthozva.

Ha úgy érzed, hogy bármilyen formázási vagy tartalmi probléma van vele, akkor, kérlek, javíts rajta egy rövid szerkesztéssel!

Ha nem tudod, hogyan indulj el, olvasd el a migrálási útmutatót.


Tárgy adatok

Kedvcsináló

A tárgy méltó folytatása a Deklaratív programozásnak. Megtanuljuk, hogy a nagy házi feladathoz hasonló jellegű problémákat hogyan oldjuk meg egyharmad annyi kóddal, és nagyságrendekkel jobb futásidővel. Elég a feladatot leíró szabályokat (constraint) pontosan definiálni, a keresést elvégzi a SICStus valamelyik CSP modulja. A CLPFD modulban gazdag constraint gyűjteményből válogathatunk, de magunk is definiálhatunk összetett korlátozásokat.

Az utolsó néhány órán a Prologhoz kísértetiesen hasonló Mercury nyelv alapjait sajátítjuk el. A fő különbség az, hogy kiirtottak minden olyan nyelvi elemet, ami meghatározza a klózok végrehajtási sorrendjét. A beolvasást és a kiírást is deklaratív módon oldották meg. Eltűnt a vágó, megjelent a típusok, a predikátum hívási és determinizmus módok támogatása.

Év közben teljesíteni lehet néhány kis- és egy nagy házi feladatot. Nem kötelezők, de egyrészt pontot jelentenek a vizsgán, másrészt gyakorlati tapasztalat nélkül nagyon nehéz jól teljesíteni vizsgán. A számonkérés szóbeli, egyszerűbb feladatokat kell papíron megoldani, majd bemutatni. Szeredi nagyon rendes a javításnál: az egyik feladatot csak harmadik nekifutásra sikerült helyesen megoldanom, de így is csak két pontot vont le, és mindig segített, hogy hol rontottam el. Aki becsületesen végigcsinálta a házi feladatokat, gond nélkül megkapja az ötöst. Hivatalos létraverseny nincs, de a vizsgaidőszakban összeültünk egyszer, és kielemeztük a beadott házifeladatokban alkalmazott trükköket.

-- Peti - 2006.07.10.

Példaprogramok

(megjegyzés: a megoldáshoz a SICStushoz adott suudoku modult használtam)
(megjegyzés: a megoldás nem egyértelmű)
(megjegyzés: nem használtam ki minden megkötést)


-- Peti - 2007.08.28.

%META:FORM{name="ValaszthatoForm"}% %META:FIELD{name="Trgy" title="Tárgy" value="Nagyhatékonyságú logikai programozás"}% %META:FIELD{name="Trgykd" title="Tárgykód" value="vima9359"}% %META:FIELD{name="Tanszk" title="Tanszék" value="SZIT"}% %META:FIELD{name="Elad" title="Előadó" value="Szeredi Péter"}% %META:FIELD{name="Kreditszm" title="Kreditszám" value="3"}% %META:FIELD{name="raszm" title="Óraszám" value="2"}% %META:FIELD{name="Flv" title="Félév" value=""}% %META:FIELD{name="Terlet" title="Terület" value="Programozás"}% %META:FIELD{name="raijelenlt" title="Órai jelenlét" value="ajánlott"}% %META:FIELD{name="Jegy" title="Jegy" value="vizsga , kis házik , nagy házi "}% %META:FIELD{name="Elvrtmin.munka" title="Elvárt min. munka" value="bejárás"}% %META:FIELD{name="Minimumrajrjegy" title="Minimumra járó jegy" value="4"}% %META:FIELD{name="Elvrtmax.munka" title="Elvárt max. munka" value="kis utánaolvasás - kis munka"}% %META:FIELD{name="Munkrajrjegy" title="Munkára járó jegy" value="5"}%