diff options
author | Timotej Lazar <timotej.lazar@fri.uni-lj.si> | 2016-02-28 19:32:04 +0100 |
---|---|---|
committer | Timotej Lazar <timotej.lazar@fri.uni-lj.si> | 2016-02-28 19:32:04 +0100 |
commit | 7335a43bbbb82de66132f12e504f2fbea736a45c (patch) | |
tree | ff08317c712353c58c9630ad7f6e94caebbc8798 /prolog/intro_sl.html | |
parent | e756acb31c54558ee16a0bbcda13f991b7d4f714 (diff) |
Prolog: add general and family relations intro
Diffstat (limited to 'prolog/intro_sl.html')
-rw-r--r-- | prolog/intro_sl.html | 135 |
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> |