====== Namigi ====== {{:codeq:codeq_ikone_demo.pdf|Primeri vizualnih namigov}} ===== Prolog ===== {{:codeq:img-810131658-0001.pdf|}} {{:codeq:img-810131802-0001.pdf|}} {{:codeq:img-810131827-0001.pdf|}} {{:codeq:img-810131839-0001.pdf|}} {{:codeq:img-116193005-0001.pdf|}} {{:codeq:img-116193010-0002.pdf|}} {{:codeq:img-116220737-0001.pdf|}} {{:codeq:img-116220754-0001.pdf|}} ===== Python ===== {{:codeq:naloge_prvisklop.odt|}} {{:codeq:naloge_drugisklop.odt|}} [[codeq:Tretji sklop|Tretji sklop]] ===== Prikaz ===== Glede na način prikaza ločimo tri tipe namigov: * znotraj urejevalnika * "popover" namig * označimo del kode in prikažemo sporočilo (mehurček z besedilom), ko uporabnik z miško pokaže na označeno kodo (na tablicah ob kliku ali kako drugače) * webapp dobi npr. (obseg, barva za highlight, besedilo) * trenutno te namige generira AI, kadar zna popraviti program * tudi tipkarske napake prikažemo na isti način; npr. pobarvamo besedo ''paret'' in prikažemo sporočilo "Ali si mislil ''parent''?" * "autocomplete" oziroma predlaganje sprememb * prikaže meni možnih sprememb / popravkov * zahteva jih uporabnik, npr. s posebnim gumbom; webapp pošlje kodo in lokacijo kurzorja * webapp dobi seznam možnosti (obseg, nova koda) * če uporabnik izbere neko možnost, se v editorju zamenja besedilo v obsegu z novo kodo * v posebnem ("streaming") oknu * vsi namigi, ki niso vezani na lokacijo v kodi * webapp dobi tag, za kateri namig gre, in vse potrebne parametre * namigi lahko imajo posebne lastnosti * če je v namigu testni primer, ga lahko uporabnik s klikom prenese v interpreter * če je v namigu animacija (GIF oz. SVG), jo lahko uporabnik po koncu predvajanja znova zažene ===== Triggerji ===== * na zahtevo * uporabnik klikne gumb "Daj mi namig" ali "Predlagaj popravek" * glede na število neuspelih oddaj * po N (npr. N = 3) neuspelih poskusih omogočimo prvi namig (prikaže se napis/ikona "namig je na voljo") * po 2*N neuspelih poskusih omogočimo drugi namig * … * ob testiranju glede na testne primere * za vsak statični namig imamo nabor testnih primerov - če program ne reši pravilno nobenega od teh primerov, je namig ustrezen ===== Vprašanja ===== * ali uporabnika tikamo ali vikamo? * gumb "prikaži več" ob namigu? * ko uporabnik zahteva namig, ali zmeraj najprej testiramo program? (zelo verjetno ja) * kje / kdaj / kako se izpisujejo protiprimeri - failed unit testi / naključno generirani? ===== Razno ===== Še nekaj idej: * Sistem uporabniku pove, na kateri "stopnji" namigov je trenutno - prvi namig je res le "namig", zadnji pa praktično že poda rešitev. Mogoče lahko z barvo (zelena/rumena/rdeča) prikažemo stopnjo namiga. * pri predikatih za delo z množicami izriši Vennova diagrama za pravilno in uporabnikovo rešitev.