summaryrefslogtreecommitdiff
path: root/prolog/intro_sl.html
diff options
context:
space:
mode:
authorAleksander Sadikov <aleksander.sadikov@fri.uni-lj.si>2016-02-29 13:49:20 +0100
committerAleksander Sadikov <aleksander.sadikov@fri.uni-lj.si>2016-02-29 13:49:20 +0100
commit4ef3db191d3b1f828d9db5746be9a1ff78c618e9 (patch)
tree8f341c76a88ff5da038ce32ee74efbcc018d0d74 /prolog/intro_sl.html
parent2d9a7b4323c8f78495ce45917cefdb502c846bbc (diff)
parent7335a43bbbb82de66132f12e504f2fbea736a45c (diff)
Merge branch 'master' of ssh://192.168.15.97/codeq-problems
Diffstat (limited to 'prolog/intro_sl.html')
-rw-r--r--prolog/intro_sl.html135
1 files changed, 135 insertions, 0 deletions
diff --git a/prolog/intro_sl.html b/prolog/intro_sl.html
new file mode 100644
index 0000000..e56e079
--- /dev/null
+++ b/prolog/intro_sl.html
@@ -0,0 +1,135 @@
+<!DOCTYPE html>
+<html lang="sl">
+ <head>
+ <meta charset="utf-8" />
+ <title>CodeQ: Prolog</title>
+ <link rel="stylesheet" type="text/css" href="style.css" />
+</head>
+<body>
+
+<h1><span class="codeq">CodeQ</span>: Prolog</h1>
+<p>
+V oknu, ki ga sedaj bereš, je nekaj praktičnih napotkov in teorije za vsak učni
+sklop. Ob tem je tudi seznam nalog tega sklopa. Naloge lahko načeloma rešuješ v
+poljubnem vrstnem redu, so pa tipično urejene po naraščajoči težavnosti.
+Nekatere naloge tudi lažje rešiš z uporabo rešitev predhodnih nalog. Teh
+rešitev ne potrebuješ prepisovati, sistem si jih zapomni sam od sebe in jih
+lahko takoj uporabljaš, če želiš.
+</p>
+
+<h2>Kako rešujem naloge?</h2>
+<p>
+Nalogo začneš reševati s klikom nanjo. S tem se odpre spletna stran, v kateri
+programiraš rešitev. Vsaka stran je povezana s konkretno nalogo in vsebuje
+štiri razdelke.
+Razpored razdelkov lahko spremeniš v nastavitvah.
+</p>
+<ul>
+ <li>
+ <p>
+Navodila, ki na kratko opišejo nalogo. Posebej bodi pozoren na ime predikata,
+ki ga moraš sprogramirati – poimenovati ga moraš točno tako, kot je navedeno,
+da bo sistem razpoznal tvojo rešitev.
+Seveda pa lahko sprogramiraš več pomožnih predikatov; tu ni nobenih omejitev.
+ </p>
+ <p>
+Poleg tega bodi pozoren tudi na število argumentov, ki jih ciljni predikat
+zahteva. Npr. predikat <code>mother(?X, ?Y)</code> zahteva dva argumenta,
+<code>X</code> in <code>Y</code>. Vprašaj pred imenom argumenta pomeni, da ta
+argument lahko predstavlja tako vhod kot izhod. Argumenti, ki delujejo le kot
+vhod, so označeni s <code>+</code>, argumenti, ki delujejo le kot izhod, pa z
+<code>-</code>.
+Na začetku se ne obremenjuj s tem, ampak preprosto programiraj, vhod/izhod se
+bo večinoma pravilno uredil sam od sebe. Prolog je pameten. 😉
+ </p>
+ </li>
+
+ <li>
+ <p>
+V levem razdelku, ti bo aplikacija dajala povratne informacije. Te so lahko v
+obliki splošnega plana (kako se neke naloge lotiti), ali pa specifični nasveti,
+kaj je morda narobe s tvojo <em>trenutno</em> rešitvijo.
+Namigi so različni, včasih bodo tudi v obliki protiprimera – konkretnega vhoda,
+na katerem tvoj program deluje narobe. Tukaj bodo tudi prologova opozorila in
+obvestila o napakah v programu.
+ </p>
+ <p>
+Če se ti kakšen namig zdi napačen, najprej dobro poglej svoj program.
+Če se ti še vedno zdi napačen, nas obvesti.
+Če bo res napačen, plačamo kavo mi, sicer jo plačaš ti! 😉
+ </p>
+ <p>
+(<em>Disclaimer</em>: včasih ni možno z gotovostjo ugotoviti, ali je neka
+napaka prisotna; takrat sistem uporabi besede, kot so <em>mogoče</em>,
+<em>morda</em> in <em>verjetno</em> – tega ne štejemo kot napačno.)
+ </p>
+ </li>
+
+ <li>
+ <p>
+Konzola, tipično črne barve in kjer te čaka prologov poziv <code>?-</code>, je
+namenjena tvojemu pogovoru s prologom. V ozadju teče minimalno okrnjen
+<a target="_blank" href="http://www.swi-prolog.org">SWI Prolog</a>,
+ki mu lahko zastavljaš vprašanja.
+Vse potrebne podatke za posamezno nalogo (npr. bazo znanja) ima sistem že
+naložene. Prav tako vedno samodejni naloži trenutno različico tvojega programa.
+Prologu lahko zastavljaš poljubna vprašanja, ne le ta, povezana s tvojim
+programom.
+ </p>
+ </li>
+
+ <li>
+ <p>
+Nazadnje je tu še osrednji del: urejevalnik besedila, v katerem pišeš svojo
+rešitev. Na prvi pogled morda res manjkajo reči, kot je npr. „autocomplete“, a
+boš hitro ugotovil, da so programi v prologu kratki in ne zahtevajo veliko
+tipkanja.
+ </p>
+ <p>
+Če tvoj program prerase 8‒10 vrstic, si ga verjetno preveč zakompliciral! 😉
+Najdaljši program v vseh sklopih nalog ne potrebuje več kot kakšnih 12 vrstic
+(in takšne naloge so redke). Prej omenjeni gumbi pa so opisani spodaj.
+ </p>
+ </li>
+</ul>
+
+<p>
+Osrednji programerski del vsebuje tudi gumba „Plan“ in „Testiraj“.
+Najpogosteje boš uporabljal slednjega, ki sproži samodejno preverjanje tvoje
+rešitve.
+Gumb „Plan“ ti da splošen nasvet, kako se lotiti dane naloge; včasih ga lahko
+pritisneš večkrat, za zmeraj bolj „izdajalske“ nasvete.
+Seveda pa poskusi vsako nalogo najprej rešiti brez uporabe namigov.
+</p>
+
+<p>
+Če program ni pravilen, ti bo <span class="codeq">CodeQ</span> poleg sporočila
+o opravljenih testih včasih ponudil gumb „Namig“.
+Ta gumb ti poda namig, kaj je morda narobe s tvojim programom.
+Nekateri namigi so pripravljeni ročno s strani avtorjev aplikacije, včasih bo
+na delu umetna inteligenca, včasih boš dobil protiprimer, na katerem program ne
+deluje, včasih pa namiga sploh ne bo.
+V tem primeru je program najbrž grozen! Malce se hecam… morda. 😉
+</p>
+
+<h2>Kako shranim rešitve?</h2>
+<p>
+Sistem <span class="codeq">CodeQ</span> avtomatsko shranjuje tvoje rešitve na
+strežnik, seveda pa moraš biti povezan na internet.
+Vse spremembe se beležijo v realnem času, zato ne potrebuješ skrbeti za
+shranjevanje kode ali se obremenjavati s tem kdaj ti bo potekla seja.
+Trajanje seje je načeloma 60 minut, prekine pa se tudi, če se na drugem
+računalniku ali v drugem zavihku prijaviš z istim uporabniškim imenom.
+</p>
+<p>
+Opozorilo: glede na to, da sistem v realnem času shranjuje vse, kar v njem
+pišeš (tako je, keylogger je!), priporočamo, da se zaupnih sporočil ne piše
+vanj. Sicer jih bomo prebrali, obljubimo! 😊
+</p>
+<p>
+Vse svoje rešitve za posamezni sklop si lahko ogledaš s klikom na povezavo ob
+naslovu.
+</p>
+
+</body>
+</html>