Maturitná práca - matus - Matúš KováÄik
Maturitná práca - matus - Matúš KováÄik
Maturitná práca - matus - Matúš KováÄik
You also want an ePaper? Increase the reach of your titles
YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.
S t r e d n á p r i e m y s e l n á š k o l a J o z e f a M u r g a š a<br />
B a n s k á B y s t r i c a<br />
Maturitná práca<br />
Trieda: 4.F Meno: Matúš Kováčik<br />
Školský rok: 2000 / 2001<br />
Konzultant: Mgr. Peter Vítko
S t r e d n á p r i e m y s e l n á š k o l a J o z e f a M u r g a š a<br />
B a n s k á B y s t r i c a<br />
Maturitná práca<br />
Testovací systém<br />
Trieda: 4.F Meno: Matúš Kováčik<br />
Školský rok: 2000 / 2001<br />
Konzultant: Mgr. Peter Vítko<br />
2
Čestné prehlásenie<br />
• Čestne prehlasujem, že som túto prácu vytvoril sám bez ďalšej pomoci, ktorá nieje<br />
vyznačená v dokumentácii.<br />
• Všetky informácie prevzaté z iných zdrojov sú v dokumentácii označené.<br />
.................................................<br />
Matúš Kováčik<br />
3
Poďakovanie<br />
Touto cestou by som chcel poďakovať hlavne môjmu konzultantovi<br />
Mgr. Petrovi Vítkovi, za jeho nenahraditeľnú pomoc a užitočné rady prakticky vo všetkých<br />
oblastiach tvorby tejto aplikácie, ktoré veľmi výraznou mierou pomohli skvalitniť jej celkovú<br />
úroveň.<br />
Moje ďalšie poďakovanie patrí mojím spolužiakom:<br />
• Michalovi Konrádovi<br />
• Martinovi Stankovičovi<br />
• Petrovi Pršancovi<br />
• Petrovi Osterovi<br />
• Jozefovi Rejkovi<br />
• Petrovi Kupcovi<br />
• Jánovi Jackuliakovi<br />
Za pomoc pri preklade otázok, ktoré tvoria základ vzorovej databázy, z anglického<br />
jazyka do slovenčiny.<br />
V neposlednom rade ďakujem Tomášovi Pilarčíkovi, ktorý vytvoril pozadie aplikácie<br />
a poskytol mi cenný námet na dizajn celého programu.<br />
Na záver ďakujem mojím rodičom za ich trpezlivosť a psychickú podporu, ktoré mi<br />
umožňovali sa naplno venovať vývoju tejto práce.<br />
4
Obsah<br />
Úvod ................................................................................................................................. 6<br />
Didaktický význam testovania ......................................................................................... 7<br />
Všeobecne o programe ..................................................................................................... 8<br />
Samostatné testovanie ...................................................................................................... 9<br />
Hodnotené testovanie ....................................................................................................... 12<br />
Popis databázy .................................................................................................................. 14<br />
Tabuľky, ktoré program využíva ...................................................................................... 15<br />
Popis stĺpcov tabuľky Otazky ........................................................................................... 17<br />
Popis programu ................................................................................................................. 20<br />
Popis fungovania programu .............................................................................................. 22<br />
Autorizácia ........................................................................................................................ 23<br />
Hodnotené testovanie ........................................................................................................ 28<br />
Framework Ovládanie hodnoteného testovania ................................................................ 29<br />
H_Rozrodni ....................................................................................................................... 35<br />
Otázka H_TF ..................................................................................................................... 38<br />
Otázka H_YN .................................................................................................................... 40<br />
Otázka H_SXY .................................................................................................................. 41<br />
Otázka H_MXY ................................................................................................................ 46<br />
Samostatné testovanie ....................................................................................................... 51<br />
Framework Ovládanie testovania ..................................................................................... 52<br />
Otázka TF .......................................................................................................................... 58<br />
Otázka YN ......................................................................................................................... 60<br />
Otázka SXY ...................................................................................................................... 60<br />
Otázka MXY ..................................................................................................................... 65<br />
Práca s databázou .............................................................................................................. 70<br />
Výber modulu .................................................................................................................... 71<br />
Popis tém, z ktorých sú otázky .......................................................................................... 73<br />
Automatická inštalácia databázy ....................................................................................... 74<br />
Koniec aplikácie ................................................................................................................ 76<br />
Záver .................................................................................................................................. 77<br />
Použitá literatúra ................................................................................................................ 78<br />
5
Úvod<br />
Overovanie vedomostí študentov je pevnou súčasťou vyučovacieho procesu. V súčasnosti sa<br />
čoraz viac ustupuje od ústneho skúšania žiakov a presadzujú sa objektívnejšie metódy<br />
zisťovania úrovne ich vedomostí. Najobjektívnejšou a zároveň najrýchlejšou metódou sa<br />
ukázalo písomné testovanie žiakov z daného učiva pomocou didaktických testov.<br />
Kvalitne navrhnutý didaktický test je oveľa vhodnejší a objektívnejší prostriedok na<br />
hodnotenie vedomostí žiaka ako napríklad ústna odpoveď, kde výsledná známka závisí len od<br />
subjektívneho názoru učiteľa, ktorý môže byť ovplyvnený ďalšími negatívnymi faktormi. Pri<br />
prijímacích skúškach na veľkú väčšinu vysokých škôl ako aj v budúcnosti plánovaných<br />
centralizovaných maturitných skúškach z vybraných predmetov sa budú schopnosti a<br />
vedomosti študentov hodnotiť výhradne pomocou didaktických testov.<br />
Z rozmachom výpočtovej techniky narastá vo svete aj počet aplikácií, ktoré sa využívajú vo<br />
vyučovacom procese. Napriek tomuto všeobecnému rozmachu na Slovensku je badateľne<br />
chýbajú podobné aplikácie. Popri existencii niekoľkých multimediálnych CD, ktoré sa venujú<br />
výučbe najrôznejších oblastí, z ktorých podstatná väčšina je v českom jazyku, chýba software,<br />
ktorý by zabezpečoval objektívne a univerzálne zisťovanie študentových vedomostí<br />
nadobudnutých buď pomocou multimediálnych CD, alebo v štandardnom vyučovacom<br />
procese. Mojou snahou bolo čiastočne vyrovnať deficit spomenutých aplikácií tým, že<br />
vytvorím program, ktorý by bol jednoduchý, graficky príťažlivý, univerzálny a v ktorý by<br />
v prvom rade spĺňal náročné požiadavky na jeho plnohodnotné používanie pri hodnotení<br />
vedomostí študentov vo vyučovacom procese.<br />
6
Didaktický význam testovania<br />
Z kvalitne navrhnutého testu dokáže učiteľ získať nové a cenné didaktické vedomosti,<br />
skúsenosti a súvislosti aj v dobre známom obsahu učiva. Má možnosť dostať sa k zamysleniu<br />
nad obsahom učiva, preniknúť do problematiky učebných cieľov a úloh. Môže potom<br />
nadväzne upravovať svoj pedagogicko-didaktický prístup, v snahe zefektívniť výchovnovzdelávací<br />
proces.<br />
Didaktický test je krátka písomná skúška alebo skúška zostavená len z úloh pre výber<br />
odpovede. Didaktické testy sa používajú hlavne preto, že poskytujú adekvátne a spoľahlivé<br />
informácie v pomerne krátkom čase. Didaktickým testom je možné získať kontrolné<br />
informácie od väčšieho počtu žiakov spôsobom, ktorý umožňuje porovnateľnosť výsledkov.<br />
Kontrolná funkcia DT sa vzťahuje na získavanie spätnej väzby, informácie potrebnej<br />
pre reguláciu vyučovania a učenia. Pre učiteľa je to informácia, potrebná pre prípadnú<br />
korekciu plánu vyučovania a pre žiaka, má charakter posilnenia a je rozhodujúcim prvkom<br />
pre reguláciu jeho učenia. V prípade, že kontrolná informácia je určená pre žiaka pomocou<br />
priebežného testu je významným motivačným prostriedkom pre jeho učenie.<br />
Najdôležitejšou vlastnosťou dobrého testu je validita (platnosť, vhodnosť). Je to miera<br />
zhody medzi výsledkami testu a tým, čo sme chceli testom zistiť. Didaktický test je obsahovo<br />
validný, ak zaradené testové úlohy účelne pokrývajú a vystihujú učivo, ktoré sa vyučovalo.<br />
Keďže zdroje otázok v tejto aplikácii sú tie isté ako zdroje použitých učebných textov pre<br />
aplikáciu Multimediálna učebnica počítačových sietí, na ktorú tento program nadväzuje,<br />
nemožno pochybovať o dostatočnej validite otázok, ktoré sú v tomto programe použité.<br />
7
Všeobecne o programe<br />
Aplikácia Testovací systém slúži na overovanie vedomostí študentov z oblasti počítačových<br />
sietí. Bola vytvorená v programe na vývoj multimediálnych apliktácií Macromedia<br />
Authorware 5.2. Otázky do tohto programu sú získané z renomovaného kurzu počítačových<br />
sietí Microsoft Networking Essentials. Vďaka zaujímavému a graficky príťažlivému designu<br />
vytvorenému v Adobe Photoshop 5.5 poskytuje aplikácia užívateľovi príjemné pracovné<br />
prostredie oslobodené od štandardnej grafiky a ovládacích prvkov na ktoré je bežný užívateľ<br />
zvyknutý v MS Windows. Aplikácia dokáže pracovať v dvoch režimoch: samostatného a<br />
hodnoteného testovania. Prvý režim umožňuje študentovi zhodnotiť vlastné vedomosti,<br />
vlastné slabé stránky, prípadne mu umožní pripraviť sa na písomnú prácu, alebo pripraviť sa<br />
na testovanie v druhom režime. Zjednodušene povedané tento režim umožňuje študentovi<br />
poučiť sa na vlastných chybách. V druhom režime - hodnotenom testovaní kladie program<br />
študentovi otázky z vybraných tém a vyhodnocuje jeho odpovede. Informácie o správnosti<br />
odpovedí spolu s ďalšími informáciami zapisuje do databázy. Z týchto výsledkov môže potom<br />
učiteľ vychádzať pri známkovom hodnotení študenta.<br />
Aplikácia Testovací systém Spolupracuje s aplikáciami Multimediálna učebnica počítačových<br />
sietí a Learning management system. Prvá slúži na multimediálnu výučbu daných tém<br />
z oblasti počítačových sietí a druhá na štatistické a grafické prezentovanie výsledkov<br />
hodnoteného testovania, vytváranie nových tém a nových otázok pre môj program. Testovací<br />
systém je ľahko aktualizovateľný vďaka podrobným komentárom a popisom zdrojových<br />
kódov. Bol vyvíjaný tak, aby jeho zdrojové kódy a ikony boli prehľadné a umožňovali rýchle<br />
zorientovanie sa v jeho štruktúre. Program sa dá v budúcnosti jednoducho modifikovať inými<br />
osobami a prispôsobovať ich individuálnym požiadavkám.<br />
Mojím cieľom bolo vytvoriť aplikáciu, ktorá by v budúcnosti plnohodnotne umožňovala<br />
testovanie študentov a ich objektívne hodnotenie. Pri dostatočnom počte otázok dokáže tento<br />
program zabezpečiť vyššiu objektivitu zisťovania vedomostí študentov a ich známkového<br />
hodnotenia ako pri teraz používaných subjektívnych písomných prácach, alebo ústnych<br />
odpovediach.<br />
8
Obr. 1: Úvodné pozadie programu<br />
Samostatné testovanie<br />
Pri samostatnom testovaní kladie program študentovi otázky z vybraných tém. Študent má tri<br />
pokusy na správne zodpovedanie otázky, pričom pri každej nesprávnej možnosti program<br />
vypíše pomocný text, ktorý nadefinoval tvorca príslušnej otázky. Tento text sa vypíše<br />
v priestore pod otázkou a možnosťami, ktorý je na to určený. Jeho úlohou je pomôcť<br />
študentovi otázku správe zodpovedať, keď sa mu to nepodarilo na prvýkrát. Poskytuje<br />
študentovi ďalšie informácie k téme, ktorej sa daná otázka dotýka. Takisto sa vypíšu texty,<br />
ktoré nadefinoval tvorca otázky v prípade, že študent odpovie správne. V tomto prípade bude<br />
ich obsah závislý od toho, či študent odpovedal správne na prvý, druhý, alebo tretí pokus.<br />
Ak odpovedal správne na prvý pokus, znamená to, že si je odpoveďou istý a teda danú tému<br />
(samozrejme podľa náročnosti a typu otázky) ovláda. Správne zodpovedanie otázky na druhý<br />
pokus hovorí o menšom zaváhaní, alebo neistote. Odpoveď na tretí pokus hovorí viac-menej o<br />
tom, že študent otázku uhádol. Z týchto predpokladov by mali učitelia vychádzať pri<br />
udeľovaní bodov za správne zodpovedanie danej otázky a pri vytváraní pomocných textov.<br />
Musia samozrejme prihliadať aj na obtiažnosť otázny, typ otázky a počet možností. Pretože<br />
napríklad najťažší typ otázky MXY (viac správnych odpovedí z viac možností) so siedmimi<br />
možnosťami dáva žiakovi pravdepodobnosť 1:128, že otázku zodpovie správne na prvý<br />
pokus, naopak pri otázkach typu TF(Pravda / Nepravda), alebo YN (Áno / Nie) má žiak<br />
9
pravdepodobnosť 1:2. Pri druhom spomenutom type otázky má žiak samozrejme len jeden<br />
pokus a pomocné texty sú tu tiež len dva (Text, ktorý sa vypíše pri správnom zodpovedaní<br />
otázky a text, ktorý sa vypíše pri jej nesprávnom zodpovedaní). Na ľavej strane obrazovky sa<br />
študentovi v tabuľke vypisujú priebežné výsledky jeho testu. Má možnosť vidieť koľko času<br />
strávil pri odpovedaní na danú otázku, koľko bodov dostal za správne zodpovedanie danej<br />
otázky (v prípade, že ju zodpovedal správne) a na koľký pokus otázku správne zodpovedal.<br />
Samostatné testovanie ponúka študentovi (respektíve tvorcovi otázok) štyri základné typy<br />
otázok:<br />
• MXY - Viac správnych odpovedí z viac možností.<br />
• SXY - Jedna správna odpoveď z viac možností.<br />
• TF - Tvrdenie, ktoré môže byť pravdivé, alebo nepravdivé.<br />
• YN - Otázka z možnosťami odpovede Áno, alebo Nie.<br />
K typom otázok MXY a SXY existujú aj ich podtypy, ktoré sa rozlišujú počtom možností,<br />
ktoré daná otázka môže obsahovať. Oba spomenuté typy otázok môžu mať 2 až 7 možností.<br />
Podľa toho sa označujú napr. MXY_3 (MXY s tromi možnosťami), alebo SXY_5 (SXY<br />
s piatimi správnymi možnosťami) a t. ď. Na každú s otázok, ktorá je typu MXY, alebo SXY<br />
má študent pri samostatnom testovaní možnosť odpovedať trikrát.<br />
Obr. 2: Samostatné testovanie<br />
10
V režime samostatného testovania sa na rozdiel od hodnoteného testovania študent nemôže až<br />
do dokončenia testu viac vrátiť k otázke, ktorú už raz začal odpovedať. Má možnosť si<br />
pozrieť znenie otázky aj možnosti a potom sa venovať inej otázke. Ak však vyberie hociktorú<br />
možnosť (začne odpovedať na otázku), otázka je v tej chvíli zablokovaná. Študent tak musí<br />
dokončiť odpovedanie danej otázky (či už správne, alebo nesprávne), lebo len tak môže<br />
pokračovať v teste ďalej a len tak môže prejsť na ďalšiu otázku. Po zodpovedaní otázky sa už<br />
na danú otázku vrátiť nemôže.<br />
Pri každom prístupe k danej otázke sa možnosti usporiadajú náhodne (nie tak ako sú zapísané<br />
v databáze). Náhodné zoradenie núti študenta viac rozmýšľať nad možnosťami ako keby boli<br />
v každom teste zoradené rovnako. Keď má študent napr. otázku, kde možnosťami je 7 vrstiev<br />
OSI a správne odpovede sú Fyzická a Linková vrstva, študentovi nestačí vedieť, že správne sú<br />
posledné dve, ale musí presne vedieť ich mená. Tento spôsob náhodného usporiadania<br />
možností, akoby obmedzuje používanie fotografickej pamäte študenta. Pri otázkach typu<br />
TF(Pravda / Nepravda) a YN (Áno / Nie) zostávajú tieto dve možnosti vždy usporiadané<br />
rovnako.<br />
Poradie otázok v režime samostatného testovania zostáva zachované. Teda na rozdiel od<br />
hodnoteného testovania sa tu otázky náhodne nepremiešajú.<br />
Výhodou testovacieho systému je, že v režime samostatného aj hodnoteného testovania<br />
program používa otázky z toho istého zdroja, teda študent sa pred hodnoteným testovaním<br />
môže pripraviť tak, že sa pokúsi zvládnuť test v režime samostatného testovania, kde môže<br />
spoznať svoje slabé stránky a dobrať učivo súvisiace s otázkami, s ktorými mal problémy.<br />
Zjednodušene povedané, samostatné testovanie žiakovi umožňuje naučiť sa odpovedať na<br />
otázky z hodnoteného testovania, čo mu s veľkou pravdepodobnosťou môže priniesť lepšie<br />
výsledky pri hodnotenom testovaní.<br />
Ovládanie samostatného testovania<br />
Medzi otázkami sa študent pohybuje tlačidlami Ďalej a Späť. V prípade, že je študent na<br />
poslednej nezodpovedanej otázke, tlačidlo Ďalej sa zablokuje (zmizne) a znovu sa obnoví len<br />
keď sa študent pomocou tlačidla Späť vráti na takú otázku, za ktorou ešte existujú nejaké<br />
nezodpovedané otázky.<br />
Podobne zmizne tlačidlo Späť vo chvíli, keď sa študent nachádza na otázke, pred ktorou<br />
neexistujú žiadne nezodpovedané otázky. Pri spustení samostatného testovania je toto tlačidlo<br />
automaticky zablokované (neviditeľné).<br />
Samostatné testovanie má možnosť používateľ ukončiť tlačidlom Ukonči samotestovanie,<br />
ktoré sa stále počas samostatného testovania nachádza v ľavej časti spodného panela tlačítok.<br />
Toto tlačidlo je počas samostatného testovania stále aktívne, čiže sa nezablokuje ani pri<br />
odpovedaní na akúkoľvek otázku.<br />
V prípade, že študent predčasne ukončí samostatné testovanie, program mu vypíše výsledky,<br />
ktoré zatiaľ dosiahol. Vypíše počet bodov, ktoré dosiahol, počet bodov, ktoré mohol získať vo<br />
všetkých otázkach, ktoré zatiaľ zodpovedal, čas, ktorý strávil pri odpovedaní na dané otázky a<br />
percentuálnu úspešnosť danú podielom dosiahnutých a možných bodov. Všetky tieto údaje<br />
má možnosť užívateľ vidieť počas celého samostatného testovania v ľavom dolnom rohu<br />
obrazovky.<br />
11
Hodnotené testovanie<br />
V režime hodnoteného testovania kladie program študentovi otázky z vybraných tém, pričom<br />
študent nieje obmedzený počtom pokusov. Po odpovedi na ľubovoľnú otázku má ešte možnos<br />
odpoveď kedykoľvek modifikovať. Keď sa študent vráti na otázku, ktorú už raz zodpovedal,<br />
program mu vyznačí jeho poslednú odpoveď (červenou farbou vyznačí možnosti, ktoré<br />
študent pri poslednom prístupe k danej otázke vybral).<br />
Pri prvom otvorení otázky sa možnosti zoradia náhodne (nie tak ako sú zapísané v databáze).<br />
Pri každom ďalšom prístupe k danej otázke zostávajú možnosti zoradené tak ako pri prvom<br />
prístupe. Počiatočné náhodné zoradenie donúti študenta viac rozmýšľať nad možnosťami ako<br />
keby boli v každom teste zoradené rovnako.<br />
Na rozdiel od samostatného testovania, v tomto režime je poradie otázok náhodné. Teda<br />
otázky sa užívateľovi nekladú v takom poradí, v akom sú zapísané v databáze.<br />
Hodnotené testovanie, tak ako samostatné, ponúka študentovi (respektíve tvorcovi otázok)<br />
štyri základné typy otázok: MXY, SXY, TF, YN a ich podtypy.<br />
Pri hodnotenom testovaní študentovi program nevypisuje žiadne pomocné texty, takže sa<br />
svoje výsledky dozvie až po definitívnom uzatvorení daného testu. Teda v čase, keď už<br />
študent svoje odpovede nemôže ovplyvniť.<br />
Obr. 3: Hodnotené testovanie<br />
12
Hlavným rozdielom hodnoteného testovanie oproti samostatnému testovaniu teda je, že<br />
študent počas testovania nemá možnosť kontrolovať svoje priebežné výsledky a tak nemá<br />
možnosť ovplyvňovať svoju úspešnosť. Výsledky jeho testovania sa mu zobrazia až po tom,<br />
ako sú zapísané do databázy. Výsledky v databáze už študent nijako zmeniť nemôže. Z týchto<br />
výsledkov môže učiteľ vychádzať pri hodnotení žiakov.<br />
Program hodnotí správnosť odpovede príslušnými bodmi, ktorých počet získa z databázy.<br />
Tvorca testu teda môže (mal by) za každú otázku, podľa jej typu, obtiažnosti a počtu možností<br />
prideliť individuálne iný počet bodov. Na rozdiel od samostatného testovania program<br />
udeľuje buď maximálny počet bodov, ktorý sa dá za danú otázku získať pri jej správnom<br />
zodpovedaní na prvý pokus, alebo nulu bodov pri jej nesprávnom zodpovedaní. Tu sa<br />
nehodnotí, na koľký pokus žiak otázku zodpovedal. Hodnotí sa vždy len posledná odpoveď<br />
na danú otázku (či už je správna, alebo nesprávna).<br />
Výsledky hodnoteného testovania sa zapisujú do databázy. Program zapisuje výsledok<br />
odpovedania na každú otázku zvlášť do iného riadku tabuľky.<br />
Do databázy sa pre každú otázku zapisujú tieto údaje:<br />
• Rodné číslo žiaka (používa sa na jeho jednoznačnú identifikáciu, prístup k tomuto údaju<br />
má len správca databázy)<br />
• Číslo testu<br />
• Číslo otázky<br />
• Čas odpovedania na danú otázku<br />
• Čas začatia testu<br />
• Dátum začatia testu<br />
• Správnosť odpovede (Hovorí o tom, či žiak odpovedal správne, alebo nesprávne)<br />
• Počet dosiahnutých bodov<br />
Ovládanie hodnoteného testovania<br />
Medzi otázkami sa študent pohybuje tlačidlami Ďalej a Späť. Tlačidlo Ďalej sa pri otvorení<br />
poslednej otázky zablokuje (zmizne). Podobne tlačidlo späť zmizne vo chvíli, keď sa študent<br />
nachádza na prvej otázke.<br />
Tak ako samostatné testovanie, aj hodnotené testovanie má študent možnosť predčasne<br />
ukončiť stlačením tlačidla Uzavri test, ktoré sa stále počas hodnoteného testovania nachádza<br />
v ľavej časti spodného panela tlačítok. V prípade, že študent ešte nezodpovedal všetky otázky,<br />
program mu zobrazí varovanie, pri ktorom má ešte možnosť vrátiť sa do testu. Ak sa aj v tak<br />
rozhodne hodnotené testovanie ukončiť, program zapíše do databázy výsledky zo všetkých<br />
nezodpovedaných otázok tak, akoby boli zodpovedané nesprávne.<br />
Po ukončení testovania, program študentovi vypíše výsledky, ktoré pri teste dosiahol. Vpíše<br />
počet bodov, ktoré dosiahol, počet bodov, ktoré mohol získať vo všetkých otázkach, čas,<br />
ktorý strávil pri odpovedaní na dané otázky a percentuálnu úspešnosť danú podielom<br />
dosiahnutých a možných bodov. Hodnotené testovanie na rozdiel od samostatného testovania,<br />
užívateľovi ako počet možných dosiahnutých bodov udáva nie počet bodov, ktoré mohol<br />
dosiahnuť pri všetkých otázkach na ktoré odpovedal, ale ako počet bodov, ktoré mohol získať<br />
za správne zodpovedanie všetkých otázok v celom teste.<br />
13
Popis databázy<br />
Program pre svoje správne fungovanie vyžaduje databázu, z ktorej číta potrebné informácie a<br />
do ktorej zapisuje svoje výstupy. Meno databázy, s ktorou program spolupracuje je : “main“ .<br />
Táto databáza je chránená prístupovým heslom. Úplnú kontrolu nad všetkými údajmi<br />
v databáze má len jej správca - Administrátor. Učitelia, alebo iné vybrané osoby majú prístup<br />
len k niektorým informáciám z tejto databázy. Na jednoznačnú identifikáciu konkrétneho<br />
žiaka sa používa jeho rodné číslo. Keďže ide osobný údaj študenta, rodné číslo využívajú len<br />
aplikácie na prácu s databázou, ktoré ho však nikomu nesprístupňujú. Prístup k tomuto údaju<br />
má len správca databázy. Databáza je vytvorená v programe Microsoft Access. Meno súboru,<br />
v ktorom je databáza uložená je main.dbm. Meno tohto súboru nieje fixné. V prípade, že<br />
databáza nieje správne nainštalovaná (je vymazaná, premenovaná, premiestnená,<br />
nenainštalovaná...), program ponúkne užívateľovi možnosť databázu automaticky<br />
nainštalovať a nedovolí užívateľovi pokračovať v práci s programom, kým databázu správne<br />
nenainštaluje.<br />
Túto databázu využíva viac aplikácií, takže Testovací systém z nej využíva len štyri tabuľky,<br />
z toho len dve tabuľky sú nevyhnutné pre jeho fungovanie (do zvyšných dvoch program len<br />
zapisuje). Teda program dokáže pracovať aj keď zvyšné tabuľky v databáze chýbajú, alebo sú<br />
neúplné, alebo poškodené.<br />
Táto databáza musí byť nainštalovaná v ODBC (Open DataBase Connectivity) buď ako<br />
Používateľské (User) DSN, alebo ako Systémové (System) DSN.<br />
Údaje z databázy program získava cez ODBC pomocou jazyka SQL (Structured Query<br />
Language)<br />
Meno databázy, ako aj prístupové heslo a mená jednotlivých tabuliek sú v programe zapísané<br />
úplne na začiatku - v prvej ikone s názvom: “Údaje o databáze“. V tejto ikone nie sú uvedené<br />
mená stĺpcov v jednotlivých tabuľkách. Tie sa vzťahujú ku konkrétnym SQL príkazom.<br />
Všetky ikony v programe, v ktoré sa používajú na prácu s databázou sú viditeľne označené<br />
ružovou farbou. Teda pri akejkoľvek modifikácii databázy pri zachovaní pôvodných údajov,<br />
je jednoduché prispôsobiť program novej, alebo zmenenej databáze. Pri zmene jej mena,<br />
hesla, alebo mien tabuliek stačí zmeniť údaje v prvej ikone. Pri zmene mien stĺpcov databázy<br />
je potrebné zmeniť príkazy v jednotlivých ikonách označených ružovou farbou. Tu sa ale<br />
nesmie meniť poradie informácií, ktoré sa z databázy získavajú, ani sa nesmie žiadna<br />
informácia vynechať, pretože ikony, ktoré spracovávajú výstupný reťazec už nie sú označené<br />
ružovou farbou. Čiže formáty reťazcov (návratových hodnôt SQL príkazov), ktoré databáza<br />
vracia musia po ľubovoľnej zmene zostať rovnaké. Napr. keď v SQL príkaze žiadame<br />
databázu o vrátenie čísla otázky, typu otázky a správnej odpovede na otázku, nesmieme daný<br />
SQL príkaz zmeniť tak, že vráti tieto údaje v inom poradí, alebo vynechá, alebo pridá<br />
ľubovoľný údaj.<br />
Databáza main obsahuje tabuľky:<br />
• Admin - Meno a heslo Administrátora – správcu databázy<br />
• Kody predmetov - Mená predmetov a k nim prislúchajúce kódy<br />
• Log - Údaje o prihlasovaní a odhlasovaní študentov<br />
• Otazky - Údaje o otázkach potrebné pre tento program<br />
• Pristup ucitelov - Prístupové práva učiteľov k jednotlivým testom<br />
• Testy - Údaje o testoch z rôznych tém (túto tabuľku tento program nevyužíva)<br />
• Ucitelia - Údaje o učiteľoch a ich prístupové heslá<br />
• Vysledky - Výsledky hodnoteného testovania študentov<br />
• Ziaci - Údaje o študentoch a ich prístupové heslá<br />
14
Tabuľky, ktoré program využíva<br />
Program využíva len nasledovné štyri tabuľky:<br />
• Ziaci<br />
• Log<br />
• Vysledky<br />
• Otazky<br />
Tabuľka Ziaci<br />
Tabuľku Ziaci využíva program len na začiatku pri prihlasovaní žiaka do programu (pri<br />
Autorizácii) na overenie správnosti prihlasovacieho mena a hesla študentov. V prípade, že sú<br />
tieto údaje správne, program z nej zistí rodné číslo študenta, ktoré ďalej používa v celom<br />
programe na jeho jednoznačnú identifikáciu pri práci s ďalšími tabuľkami.<br />
Tabuľka Ziaci obsahuje tieto stĺpce:<br />
• Meno<br />
• Priezvisko<br />
• Login<br />
• Heslo<br />
• Rodne_cislo<br />
• Rocnik<br />
• Trieda<br />
• Odbor<br />
Z tejto tabuľky program využíva len stĺpce Login, Heslo a Rodne cislo.<br />
Tabuľka Log<br />
Do tabuľky Log program zapisuje dátum prihlásenia, čas prihlásenia, dátum odhlásenia, čas<br />
odhlásenia, rodné číslo študenta a meno počítača, na ktorom študent pracoval. Zapisuje sa do<br />
nej pri korektnom prihlásení študenta do programu (ak zadá správne meno a heslo) a pri jeho<br />
korektnom odhlásení.<br />
Všetky údaje v tabuľke Log sú typu text. Táto tabuľka obsahuje nasledovné stĺpce:<br />
• Rodne_cislo<br />
• Datum_Prihlasenia<br />
• Cas_Prihlasenia<br />
• Datum_Odhlasenia<br />
• Cas_Odhlasenia<br />
• Meno_pocitaca<br />
Z tejto tabuľky program využíva všetky stĺpce. Žiadne informácie z nej nezískava, používa ju<br />
len na zápis.<br />
15
Tabuľka Vysledky<br />
Tabuľku Vysledky program využíva na zápis výsledkov hodnoteného testovania jednotlivých<br />
študentov. Zapisuje výsledok odpovede na každú otázku zvlášť do iného riadku tabuľky.<br />
Program využíva všetky stĺpce tejto tabuľky, do ktorých zapisuje nasledovné hodnoty:<br />
• Rodne_Cislo - Rodné číslo žiaka<br />
• Cislo_testu - Číslo testu<br />
• Cislo_otazky - Číslo otázky<br />
• Cas_odpovede - Čas odpovedania na danú otázku<br />
• Cas_zacatia_testu - Čas začatia testu<br />
• Datum_zacatia_testu - Dátum začatia testu<br />
• Odpoved_OK - Má hodnotu TRUE, ak žiak zodpovedal otázku správne<br />
• Pocet_dosiahnutych_bodov - Počet bodov, ktoré žiak za danú otázku získal<br />
Tabuľka Otazky<br />
Tabuľka Otazky je najdôležitejšia tabuľka nevyhnutná pre správnu činnosť tohto programu.<br />
Zatiaľ čo predošlá tabuľka Vysledky sa používa len v hodnotenom testovaní, táto sa používa<br />
v oboch režimoch. Do tejto tabuľky program nič nezapisuje, používa ju len na získavanie<br />
informácií o otázkach. V hodnotenom testovaní sa na rozdiel od samostatného testovania z nej<br />
nečítajú pomocné texty, ale inak sa tabuľka využíva v oboch režimoch rovnako. Pri začatí<br />
testovania sa z tabuľky vyberú (SQL príkazom SELECT) kódy tých otázok, ktoré majú číslo<br />
testu vyhovujúce danému výrazu. Zjednodušene povedané, načítajú sa kódy všetkých otázok,<br />
ktoré patria do užívateľom vybraného testu. Neskôr pri prístupe k jednotlivým otázkam sa<br />
z tabuľky načítajú ďalšie hodnoty len pre konkrétnu otázku, z ktorých sa vytvorí samotná<br />
otázka. Teda pri prvom prístupe k databáze pri začiatku testovania sa načítajú len niektoré<br />
hodnoty patriace do stĺpca Kod otazky. Pri každom ďalšom prístupe k databáze v tom istom<br />
teste sa z databázy načítavajú hodnoty zo stĺpcov: Typ, body, Odpoved, Otazka, moznost1,<br />
moznost2, moznost3, moznost4, moznost5, moznost6, moznost7, spravna_odozva1,<br />
spravna_odozva2, spravna_odozva3, nespravna_odozva1, nespravna_odozva2,<br />
nespravna_odozva3. Keďže pri hodnotenom testovaní program užívateľovi neradí, tak sa<br />
posledných šesť položiek vôbec nenačítáva.<br />
Tabuľku Otazky tvoria nasledovné stĺpce:<br />
• Kod_otazky - Primárna konštanta jednoznačne identifikujúca otázku<br />
• Cislo_testu - Otázky s rovnakým číslom testu patria do toho istého testu<br />
• typ - Typ otázky. Môže byť MXY, SXY, TF a YN<br />
• body - Počet bodov za správne zodpovedanie danej otázky<br />
• odpoved - Čísla správnych odpovedí<br />
• otazka - Text otázky<br />
• moznost1 - 1. Možnosť<br />
• moznost2 - 2. Možnosť<br />
• moznost3 - 3. Možnosť<br />
• moznost4 - 4. Možnosť<br />
• moznost5 - 5. Možnosť<br />
• moznost6 - 6. Možnosť<br />
• moznost7 - 7. Možnosť<br />
16
• spravna_odozva1 - Odozva pri správnom zodpovedaní otázky na prvý pokus<br />
• spravna_odozva2 - Odozva pri správnom zodpovedaní otázky na druhý pokus<br />
• spravna_odozva3 - Odozva pri správnom zodpovedaní otázky na tretí pokus<br />
• nespravna_odozva1 - Odozva pri prvom pomýlení<br />
• nespravna_odozva2 - Odozva pri druhom pomýlení<br />
• nespravna_odozva3 - Odozva pri treťom (poslednom) pomýlení<br />
Všetky tieto stĺpce (okrem stĺpca Kod_otazky, ktorý je typu Automatické číslo) sú typu text.<br />
Keďže sa na začiatku testu namiesto všetkých informácií o všetkých vybraných otázkach<br />
načítavajú len ich kódy, znižuje sa nárazové zaťaženie databázy. Ďalší prístup do databázy je<br />
stochastický, čo umožňuje celkové zrýchlenie práce databázového servera, pretože sa server<br />
venuje naraz len jednej, alebo malému počtu požiadaviek.<br />
Popis stĺpcov tabuľky Otazky<br />
Stĺpec Kod_otazky<br />
Hodnoty tohto stĺpca tvoria primárnu konštantu tabuľky Otazky. Jednoznačne identifikujú<br />
každú otázku. Tieto hodnoty sa do programu načítavajú pri spustení konkrétneho testu a počas<br />
celého testu sa používajú na výber (adresovanie) jednotlivých otázok SQL príkazom<br />
SELECT. Spolu s číslom testu sa zapisujú aj do tabuľky Vysledky. Typ tohto stĺpca je<br />
Automatické číslo. V celej tabuľke neexistujú dve rovnaké hodnoty tohto stĺpca (neexistujú<br />
dve otázky s rovnakým kódom).<br />
Stĺpec Cislo_testu<br />
Aj napriek svojmu menu sú hodnoty tohto stĺpca typu text, pretože aj keď sa skladajú z číslic,<br />
nepracuje sa s nimi ako s číslom, ale ako so skupinou číslic, z ktorých každá číslica má<br />
vlastný význam. Ide o osem číslic z ktorých prvé dve tvoria kód predmetu, ďalšie dve<br />
reprezentujú poradové číslo daného testu, pre ktorý bol daný test vytvorený, ďalšie dve<br />
znamenajú kód témy v danom predmete (číslo skupiny otázok) a posledné dve označujú<br />
konkrétny test z danej témy (číslo podskupiny otázok), alebo akúsi podtému danej témy.<br />
Syntax čísla testu<br />
Stĺpec typ<br />
Jeho položky označujú typ danej otázky. Sú typu text. Môžu nadobúdať nasledovné štyri<br />
hodnoty:<br />
• MXY - Viac správnych odpovedí z viac možností.<br />
• SXY - Jedna správna odpoveď z viac možností.<br />
• TF - Tvrdenie, ktoré môže byť pravdivé, alebo nepravdivé.<br />
• YN - Otázka z možnosťami odpovede Áno, alebo Nie.<br />
17
Stĺpec body<br />
Označuje počet bodov, ktoré môže užívateľ získať za správne zodpovedanie danej otázky. Pri<br />
otázkach typu YN (Áno / Nie) a TF (Pravda / Nepravda) musí obsahovať práve jedno číslo.<br />
Ak užívateľ odpovie na danú otázku správne, získa počet bodov, ktorý je uvedený práve<br />
v tomto stĺpci v riadku príslušnej otázky. Pri otázkach typu SXY (Jedna správna z viac<br />
možností), alebo MXY (Viac správnych z viac možností) musí obsahovať najmenej jedno<br />
číslo a najviac tri čísla oddelené čiarkami. Pri hodnotenom testovaní sa berie do úvahy vždy<br />
len prvé číslo. Pri samostatnom testované prvé číslo reprezentuje počet bodov, ktoré užívateľ<br />
získa pri správnom zodpovedaní otázky na prvý pokus, druhé číslo znamená počet bodov,<br />
ktoré užívateľ získa pri správnom zodpovedaní otázky na druhý pokus a tretie číslo označuje<br />
počet bodov, ktoré užívateľ získa pri správnom zodpovedaní otázky na tretí (posledný) pokus.<br />
Tak ako všetky ostatné položky (okrem Kódu otázky) je typu text.<br />
Učiteľ by mal prideľovať jednotlivým otázkam body tak, aby čo najobjektívnejšie odrážali<br />
vedomosti študenta. Najdôležitejšie je prvé číslo, ktoré sa berie do úvahy pri hodnotenom<br />
testovaní a teda aj pri celkovom hodnotení žiaka. Mal by samozrejme prihliadať aj na typ,<br />
počet možností a obtiažnosť otázky.<br />
Stĺpec odpoved<br />
Hovorí o tom, ktoré z daných možností sú správne. Je typu text. Tvorí ju minimálne jedna a<br />
maximálne sedem číslic oddelených čiarkami. Pri otázkach typu YN (Áno / Nie) a TF (Pravda<br />
/ Nepravda) musí obsahovať práve jednu číslicu, ktorá môže nadobúdať hodnoty 0, alebo 1.<br />
Pri otázke typu TF (Pravda / Nepravda) hodnota 0 hovorí o tom, že dané tvrdenie je<br />
nepravdivé a naopak hodnota 1 vyjadruje pravdivosť daného tvrdenia. Ak má položka v tomto<br />
stĺpci pri otázke typu YN (Áno / Nie) hodnotu 0, odpoveď na danú otázku je Nie. Ak má<br />
hodnotu 1, odpoveď je Áno. Pri otázke typu SXY (Jedna správna z viac možností) obsahuje<br />
položka tohto stĺpca jedno číslo s hodnotou od 1 do 7 vyjadrujúce, ktorá z daných možností je<br />
správna. MXY (Viac správnych z viac možností) je jediný typ otázky pri ktorom môže tento<br />
stĺpec obsahovať viac ako jednu číslicu. Tieto číslice môžu nadobúdať hodnoty od 1 do 7<br />
označujúce poradové číslo správnych možností. Podobne, ako v tomto type otázok pri stĺpci<br />
body, tak aj v tomto stĺpci sú čísla správnych odpovedí oddelené čiarkami.<br />
Stĺpec otazka<br />
Sú v ňom uložené texty (zadania) jednotlivých otázok. Je typu text. Môže obsahovať<br />
maximálne 124 znakov. Formát textu otázky je pre každý typ rovnaký. Text otázky typu TF<br />
(Pravda / Nepravda) by mal obsahovať tvrdenie a typ YN (Áno / Nie) by mal obsahovať<br />
otázku. Pri ostatných typoch otázok je obsah textu ľubovoľný.<br />
Stĺpce moznost1 až moznost7<br />
Obsahujú možnosti odpovede na dané otázky. Počet možností program zisťuje tak, že<br />
načítáva texty týchto možností a keď príde na poslednú (siedmu) možnosť, alebo keď nájde<br />
prázdne pole, ukončí načítávanie možností a číslo možnosti posledného stĺpca, z ktorého<br />
načítal hodnotu je zároveň počtom možností danej otázky. Pri otázkach typu TF (Pravda /<br />
Nepravda), alebo YN (Áno / Nie) sú položky týchto stĺpcov prázdne, lebo sa z nich<br />
nenačítavajú žiadne možnosti. Text možnosti môže mať maximálne 80 znakov.<br />
18
Stĺpce spravna_odozva1 až spravna_odozva3<br />
Obsahujú pomocné texty, ktoré program vypíše užívateľovi keď v režime samostatného<br />
testovania správne zodpovie danú otázku. spravna_odozva1 sa vypíše v prípade, že užívateľ<br />
správne odpovedal na prvý pokus. Ak odpovedal správne na prvý pokus, znamená to, že si je<br />
odpoveďou istý a teda danú tému (samozrejme podľa náročnosti a typu otázky) ovláda.<br />
spravna_odozva1 by mala obsahovať pochvalu študenta a možno pár slov k téme, ktorej sa<br />
otázka týka. spravna_odozva2 sa zobrazí pre správnom zodpovedaní otázky na druhý pokus.<br />
Tu môže tvorca otázky uviesť napríklad oznam o správnom zodpovedaní otázky a odporučiť<br />
študentovi, aby si danú látku zopakoval. Pri správnom zodpovedaní otázky na tretí pokus sa<br />
študentovi zobrazí spravna_odozva3. Môže to znamenať, že otázku len uhádol. Tieto<br />
pomocné texty do veľkej miery závisia od tvorcu otázky a nedá sa jednoznačne odporučiť,<br />
ktorý text je pri akej otázke najvhodnejší.<br />
Maximálna dĺžka pomocného textu je 42 znakov.<br />
Stĺpce nespravna_odozva1 až nespravna_odozva3<br />
Ich obsah sa zobrazí pri nesprávnom zodpovedaní danej otázky. Nesprvana_odozva1 sa<br />
zobrazí pri prvom pomýlení. Jej obsahom by mal byť pomocný text, ktorý študentovi pomôže<br />
tanú otázku na druhý pokus zodpovedať správne. Ak to nepomôže a študent sa pomýli aj po<br />
druhýkrát, zobrazí sa mu Nespravna_odozva3. V nej by mal byť ďalší pomocný text, ktorý<br />
študentovi pomôže viac ako predošlý. Táto pomoc by sa samozrejme mala odraziť aj na<br />
zníženom počte bodov, ktoré študent môže získať pri nesprávnom zodpovedaní danej otázky<br />
na tretí pokus. Ak sa študent pomýli aj na tretíkrát, znamená to, že študent otázku<br />
nezodpovedal správne a môže sa k nej vrátiť už len pri opätovnom spustení daného testu.<br />
V tom prípade mu program zobrazí text zo stĺpca nespravna_odozva3. Tento text by ho mohol<br />
obsahovať napríklad informáciu o tom, že študent otázku nezodpovedal a odporučiť mu<br />
opätovné preštudovanie témy, ktorej sa otázka týkala. Mohol by obsahovať aj správnu<br />
odpoveď na danú otázku, aby sa študent mohol poučiť a zistiť, kde spravil chybu.<br />
Maximálna dĺžka pomocného textu je 42 znakov.<br />
19
Popis programu<br />
Pri spustení programu sa autorizácia, v ktorej sa užívateľ prihlási svojim prihlasovacím<br />
menom (tzv. Loginom) a autorizačným heslom. Správnosť týchto údajov sa skontroluje<br />
v databáze. Pri autorizácii užívateľ zadáva najprv svoje prihlasovacie meno. Ak program<br />
zistí, že užívateľom zadané prihlasovacie meno v tabuľke neexistuje, vypíše príslušné<br />
chybové hlásenie a požiada užívateľa o opätovné zadanie jeho užívateľského mena.<br />
V prípade, že program detekuje inú (neznámu chybu) databázy taktiež vypíše príslušné<br />
chybové hlásenie, ku ktorému pripojí a chybové hlásenie, ktoré vrátila databáza. Program<br />
dovolí užívateľovi zadať jeho heslo až potom, ako zadá správne prihlasovacie meno. Taký<br />
istý postup platí aj pri zadávaní autorizačného hesla. V prípade, že sú zadané údaje pravdivé,<br />
program pokračuje ďalej a spolu s prihlásením študenta (zápisom jeho údajov a údajov o čase<br />
a mieste jeho prihlásenia do príslušnej tabuľky (tabuľky Log) databázy) a zobrazí ďalšiu<br />
obrazovku - Hlavné menu (Hlavnú navigáciu).<br />
Obr. 4: Hlavná navigácia<br />
20
Tu má užívateľ možnosť vybrať si ďalší režim práce programu. Prvá položka: “Samostatné<br />
testovanie“ ho uvedie do rovnomenného režimu testovania. Druhá položka: “Hodnotené<br />
testovanie“ prepína program do tohto režimu. Viac o týchto režimoch činnosti programu sa<br />
dočítate v častiach tejto dokumentácie, ktoré sa im osobitne venujú. Po ukončení testovania<br />
v ktoromkoľvek z týchto režimov, alebo po predčasnom uzavretí ľubovoľného testu na to<br />
určeným tlačidlom sa užívateľ vracia opäť do hlavného menu. Ďalšia položka s názvom: „O<br />
aplikácii a autorovi“ informuje užívateľa o autoroch a autorských právach na túto aplikáciu.<br />
Obr. 5: O aplikácii a autorovi<br />
Z tejto obrazovky má možnosť užívateľ dostať sa do hlavného menu stlačením tlačidla Späť,<br />
ktoré sa nachádza v spodnej časti obrazovky v strede). Posledná položka hlavného menu:<br />
“Koniec aplikácie“ slúži ako názov napovedá na ukončenie práce v tomto programe. Po<br />
stlačení tohto tlačidla sa nás program ešte opýta, či chceme naozaj ukončiť aplikáciu. Po<br />
stlačení tlačidla Áno, program bez ďalších zdržaní aplikáciu ukončí. Spolu s ukončením<br />
aplikácie nás aj odhlási z databázy, teda doplní čas a dátum nášho odhlásenia do príslušnej<br />
tabuľky (tabuľky Log) databázy.<br />
21
Princíp fungovania programu<br />
Pri spustení programu sa v prvom rade inicializujú niektoré premenné, ktoré sa už nikde<br />
v programe nemenia (okrem premennej kod_otazky sa všetky používajú ako konštanty). Ide o<br />
údaje o databáze a tabuľkách, ktoré program využíva. Tieto počiatočné inicializácie sa<br />
nachádzajú vo výraze (v ikone) „Údaje o databáze“. Táto ikona by mala vždy zostať na<br />
začiatku programu, aby bol k nej jednoduchý prístup a aby správca databázy, aj keď<br />
nerozumie zdrojovým kódom, mohol jednoducho zmeniť údaje o databáze. V mape „Úvod“<br />
je uložené prvé pozadie aplikácie (pozadie, ktoré sa používa pri autorizácii a v hlavnom<br />
menu). Mapa „Automatická inštalácia fontov“, ktorá zabezpečujúca automatické<br />
nainštalovanie textových fontov, ktoré program používa v prípade, že v systéme ešte niesú<br />
nainštalované. V mape „Úvod“ je ešte uložené volanie mapy „Automatická inštalácia<br />
databázy“, ktorá skontroluje, či je databáza správne nainštalovaná a ak nieje, zabezpečí jej<br />
správnu inštaláciu. Za mapou „Úvod“ nasleduje autorizačný skript nachádzajúci sa v mape<br />
Autorizácia. Po správnom zadaní mena a hesla program pokračuje do frameworku „Hlavná<br />
navigácia“, kde automaticky vojde do mapy „Hlavná stránka“. Tu máme na výber päť<br />
grafických tlačidiel, pomocou ktorých môžeme skákať do jednej z máp: „Samostatné<br />
testovanie“, „Hodnotené testovanie“, „O autorovi“, „O programe“, „Koniec aplikácie“. Po<br />
ukončení práce v niektorej z týchto máp sa program opäť vráti do hlavného menu.<br />
Hlavný vývojový diagram<br />
Framework „Podprogramy“ obsahuje mapy „Výber modulu“, „Volanie databázy“ a<br />
„Automatická inštalácia databázy“. Prvá sa používa pri výbere druhu testu, z ktorého sa ide<br />
užívateľ testovať, druhá pri akejkoľvek operácii s databázou ako rozhranie medzi týmto<br />
programom a danou databázou. Automatická inštalácia databázy zistí, či je databáza správne<br />
nainštalovaná a ak nieje, zabezpečí jej inštaláciu.<br />
Vo frameworku „Koniec aplikácie“ sa nachádza jediná mapa s rovnakým menom, ktorá<br />
v prípade, že to užívateľ potvrdí slúži na ukončenie celého programu a odhlásenie užívateľa s<br />
22
databázy. Väčšina máp v hlavnom vývojovom diagrame je rozdelená do troch frameworkov,<br />
pretože Macromedia Authorware dovoľuje skákať aj s návratom len do mapy, ktorá je<br />
uložená v inom frameworku, ako v tom, z ktorého sa skáče. Ak by boli všetky len v jednom<br />
frameworku, program by sa pri ľubovoľnom skoku do inej mapy už nevrátil späť, čo by<br />
znemožňovalo správne fungovanie celej aplikácie. Skoky s návratom z hlavného menu do<br />
máp „Samostatné testovanie“ a „Hodnotené testovanie“ sú vyriešené tak, že v týchto mapách<br />
sa nachádzajú samostatné frameworky s rovnomennými názvami, do ktorých už je možné<br />
skákať aj s návratom.<br />
Autorizácia<br />
Autorizácia (Autorizačný script) slúži na overenie platnosti užívateľovho<br />
prihlasovaciehomena a hesla a na jeho prihlásenie do databázy.<br />
Obr. 6: Autorizácia<br />
23
Autorizácia<br />
V ikone „Počiatočná inicializácia“ sú zapísané inicializácie a definície premenných:<br />
Initialize(rodne_cislo)<br />
Initialize(stav)<br />
Initialize(login)<br />
stav := ""<br />
login := ""<br />
-- Rodné číslo žiaka, ktorý sa prihlasuje<br />
–- do programu.<br />
–- Používa sa ako primárna konštanta<br />
–- alebo orientačná<br />
-- premenná v databázach.<br />
-– Premenná, do ktorej sa zapisujú<br />
–- chybové hlásenia pre užívateľa.<br />
-– V tejto premennej je počas celého<br />
–- programu uložené<br />
–- prihlasovacie meno užívateľa.<br />
–- Pre ich ďalšie bezchybné použitie<br />
–- treba premenné vynulovať.<br />
V ikonách „autorizacia.psd“ a „Zadajteváš login“ je uložený desidn autorizačného scriptu.<br />
Vo frameworku „Autorizácia“ sú uložené mapy „Login“ a „Heslo“. Len čo sa program<br />
dostane na toto miesto, mapa „Login“ je automaticky spustená a až po zadaní korektného<br />
prihlasovacieho mena program skáče do mapy „Heslo“. V tomto frameworku je uložené aj<br />
tlačidlo „Koniec“, ktoré umožňuje počas celej autorizácie ukončiť celý program.<br />
Login<br />
Heslo<br />
Interakcia „Login“ obsahuje len jedno editačné pole, ktoré čaká na stlačenie klávesy Enter a<br />
následne skočí do mapy prislúchajúcej danému editačnému poľu. Interakcia v mape Heslo sa<br />
správa tak isto, len s tým rozdielom, že obsahuje aj tlačidlo Späť, ktoré umožňuje užívateľovi<br />
vrátiť sa do mapy „Login“ a tak opätovne zadať svoje prihlasovacie meno.<br />
24
Mapa * patriaca do interakcie Login<br />
V ikone „Zapísanie loginu“ sa zadaný text príkazom: “ login := EntryText“ priradí<br />
premennej login.<br />
Ďalšia ikona vytvorí SQL príkaz, ktorý vyhľadá v databáze rodné číslo študenta, ktorého<br />
prihlasovacie meno bolo zadané. Jej obsahom je nasledujúci príkaz:<br />
DB_SQLString := "SELECT [Rodne_cislo] FROM "^meno_tabulky_ludi^"<br />
WHERE [Login] LIKE '"^EntryText^"'"<br />
Výsledný SQL výraz môže vyzerať napríklad takto:<br />
SELECT [Rodne_cislo] FROM Ziaci WHERE [Login] LIKE '97kovacik_m'<br />
Skok s menom „Zadanie SQL príkazu“ volá podprogram „Volanie databázy“, ktorý do<br />
premennej DB_SQLString zapíše výsledok hľadania požadovaných údajov v databáze,<br />
prípadne chybové hlásenie.<br />
Ikona „Vyhodnotenie údajov“ vyhodnotí výstup databázy (premennú DB_SQLString) a z nej<br />
zistí, či zadané užívateľské meno v databáze existuje, alebo či nedošlo k chybe databázy.<br />
Podľa výsledku vyhodnocovania zapíše do premennej skoc_na hodnotu, podľa ktorej<br />
podmienka „Je meno správne?“ skočí na požadovanú ikonu, ktorá vykoná operáciu<br />
prislúchajúcu výsledku vyhľadávania.<br />
Initialize(skoc_na)<br />
Vyhodnotenie údajov<br />
if Find("Doslo k chybe"; DB_ODBCData) = 0 then<br />
if DB_ODBCData "" then<br />
skoc_na := 1<br />
rodne_cislo := DB_ODBCData<br />
else<br />
skoc_na := 2<br />
end if<br />
else<br />
skoc_na := 3<br />
-- Chyba nenastala<br />
-- Meno je správne<br />
-- Meno je nesprávne<br />
-- Chyba nastala<br />
end if<br />
25
Ak bolo zadané užívateľské meno nájdené v tabuľke, vykoná sa skok „Meno je správne“,<br />
ktorý skočí do mapy „Heslo“. Ak prihlasovacie meno nebolo v tabuľke nájdené, vykoná sa<br />
skok „Meno je nesprávne“, ktorý vypíše užívateľovi chybové hlásenie, v ktorom ho požiada o<br />
opätovné zadanie jeho prihlasovacieho mena a skočí naspäť na ikonu „Login“. Ak nastala<br />
v databáze neznáma chyba, vykoná sa skok „Nastala chyba“, ktorý skočí do mapy „Login“ a<br />
užívateľovi vypíše chybové hlásenie, ktoré vrátila databáza.<br />
Mapa * patriaca do interakcie Heslo<br />
Mapa „Heslo“ pracuje okrem rozdielov, ktoré tu bližšie opíšem tak isto ako mapa Login. SQL<br />
príkaz, ktorý sa vytvorí v ikone „Volanie databázy“ je:<br />
DB_SQLString := "SELECT [Heslo] FROM "^meno_tabulky_ludi^" WHERE<br />
[Rodne_cislo] LIKE '"^rodne_cislo^"'"<br />
Výsledný SQL výraz môže vyzerať napríklad takto:<br />
SELECT [Heslo] FROM Ziaci WHERE [Rodne_cislo] LIKE '830424/7855'<br />
Initialize(skoc_na)<br />
Vyhodnocovanie údajov<br />
if DB_ODBCError = "" then<br />
else<br />
if EntryText = DB_ODBCData then<br />
skoc_na := 1<br />
else<br />
skoc_na := 2<br />
end if<br />
-- Chyba nenastala<br />
-- Heslo je správne<br />
-- Heslo je nesprávne<br />
-- Chyba nastala<br />
end if<br />
skoc_na := 3<br />
26
Jedným z rozdielov je, že užívateľom zadané heslo sa nezapíše do žiadnej premennej, pretože<br />
sa už nikde inde v programe nevyskytuje. Ďalší (podstatný) rozdiel spočíva v reakcii na<br />
správne zadané heslo. Tentoraz sa namiesto skoku vykoná séria príkazov uložená v mape<br />
„Heslo je správne“.<br />
Heslo je správne<br />
Mapa „Zistenie mena počítača“ obsahuje jedinú ikonu – výpočet s menom „Zistenie mena<br />
počítača“, ktorý vráti meno počítača, z ktorého sa užívateľ nahlasuje.<br />
Adresa registra, v ktorom je uložené meno počítača je:<br />
„System\CurrentControlSet\control\ComputerName\ComputerName\ComputerName“<br />
Zdrojový kód výpočtu je:<br />
Initialize(meno_pocitaca)<br />
meno_pocitaca := baReadRegString(<br />
"System\\CurrentControlSet\\control\\ComputerName\\ComputerName";<br />
"ComputerName" ; "Zlé meno počítača" ; "HKEY_LOCAL_MACHINE" )<br />
Ikona „Zapísanie času prihlásenia do databázy“ vytvorí SQL príkaz, ktorý zapíše údaje o<br />
prihlásení študenta. Zdrojový kód tejto ikony je:<br />
Initialize(datum_prihlasenia)<br />
datum_prihlasenia := Date<br />
cas_prihlasenia := FullTime<br />
DB_SQLString := "INSERT INTO "^meno_tabulky_logov^" VALUES (<br />
'"^rodne_cislo^"' , '"^datum_prihlasenia^"' , '"^cas_prihlasenia^"'<br />
, '01.01.2001' , '00:00:00' , '"^meno_pocitaca^"' );"<br />
Výsledný SQL príkaz môže vyzerať napríklad takto:<br />
INSERT INTO Log VALUES ( '830424/7855' , '21.04.2001' , '10:04:32' ,<br />
'01.01.2001' , '00:00:00' , 'PC01' );<br />
27
Za touto ikonou nasleduje „Zadanie SQL príkazu“ a ikona „Zmaž autorizačný obrázok“, ktorá<br />
vymaže s obrazovky všetku, čo tam bol počas autorizácie vypísané, aby tak vytvorila priestor<br />
pre ďalšiu prácu programu.<br />
Ikona „Navigate to “Hlavná stránka““ skočí na mapu „Hlavná stránka“ na ktorej sa nachádza<br />
hlavné menu, čo umožní užívateľovi začať plnohodnotne pracovať s Testovacím systémom.<br />
Hodnotené testovanie<br />
Hodnotené testovanie je najdôležitejšia a zároveň najzložitejšia činnosť tohto programu. Je<br />
navonok jednoduchšie, ale programovo zložitejšie ako samostatné testovanie.<br />
Keďže Macromedia Authorware dovoľuje skákať aj s návratom len do mapy, ktorá je uložená<br />
v inom frameworku, ako v tom, z ktorého sa skáče, je mapa „test“ uložená v osobitnom<br />
frameworku s menom taktiež „Hodnotené testovanie“ v mape „Hodnotené testovanie“.<br />
Hodnotené testovanie<br />
Takže samotné hodnotené testovanie sa nachádza v mape „test“, ktorá patrí do frameworku<br />
„Hodnotené testovanie“. Tento framework patrí do mapy „Hodnotené testovanie“, ktorá patrí<br />
do frameworku „Hlavná navigácia“.<br />
Samotný program hodnoteného testovania sa nachádza v mape „test“.<br />
test<br />
28
Na začiatku spustenia testovania je potrebné najprv vybrať test, ktorému sa chce užívateľ<br />
ďalej venovať. Na tento účel slúži skok „Navigate to "Výber modulu"“, ktorý skočí na<br />
podprogram (mapu) „Výber modulu“, ktorá zabezpečí výber užívateľom požadovaného testu.<br />
Druhou ikonou v hodnotenom(samostatnom) testovaní je „Inicializácia niektorých<br />
premenných“ V hodnotenom testovaní sa tu inicializujú premenné cas_zacatia_testovania a<br />
datum_zacatia_testovania v ktorých sú uložené hodnoty času a dátumu spustenia testu, ktoré<br />
sa neskôr budú zapisovať do databázy výsledkov testovania.<br />
Framework „Ovládanie hodnoteného<br />
testovania“<br />
Pri svojom štarte spustí program na inicializáciu hodnoteného testovania, ktorý je uložený ako<br />
postupnosť ikon (príkazov) v jeho štartovacej časti.<br />
Štartovacia časť frameworku „Ovládanie hodnoteného testovania“<br />
V prvej ikone s názvom „Hodnotene_testovanie.jpg“ je uložené pozadie hodnoteného<br />
testovania. Je to obrázok vložený z knižnice.<br />
Získanie čísel otázok z databázy<br />
DB_SQLString := "SELECT [Kod_otazky] FROM "^meno_tabulky_otazok^"<br />
WHERE [Cislo_testu] LIKE '"^cislo_testu^"'"<br />
Vytvorí SQL príkaz slúžiaci na nahranie čísel otázok, ktoré vyhovujú podmienke daného<br />
testu. To znamená, že nahrá z databázy len tie otázky, ktoré patria do užívateľom vybraného<br />
testu. Skok s názvom „Zadanie SQL príkazu“ volá databázu a odovzdá jej vytvorenú<br />
požiadavku a do premennej DB_ODBCData zapíše výstup z databázy.<br />
Výsledný SQL príkaz by mohol vyzerať napríklad takto:<br />
SELECT [Kod_otazky] FROM Otazky WHERE [Cislo_testu] LIKE '01000403'<br />
29
Inicializácia poradia otázok<br />
Initialize(lok_index)<br />
-- Pomocná premenná<br />
Initialize(lok_pom1)<br />
-- Pomocná premenná<br />
Initialize(lok_pom2)<br />
-- Pomocná premenná<br />
Initialize(lok_pomocne_pole) -- Pomocná premenná<br />
Initialize(zostavajucich_otazok) -- Počet ešte nezodpovedaných<br />
–- otázok<br />
Initialize(otazky)<br />
-- Pole, v ktorom sú údaje o každej<br />
–- otázke<br />
Initialize(posledne_odpovede) -- Pole, v ktorom je napísané ako<br />
–- kto naposledy odpovedal na<br />
–- príslušnú otázku<br />
Initialize(nahodne_cisla) -- Náhodné čísla pre premiešanie<br />
–- možností<br />
Initialize(pocet_otazok)<br />
-- Počet otázok v tomto teste<br />
Initialize(pocet_bodov)<br />
-- Celkový počet získaných bodov v<br />
–- celom teste<br />
Initialize(vsetkych_bodov) -- Celkový počet bodov, ktorý je<br />
–- možné získať v celom teste<br />
Initialize(cas_testovania) -- Celkový čas testovania<br />
pocet_otazok := LineCount(DB_ODBCData; "\r")<br />
-- Počet otázok - zistíme ho tak, že spočítame všetky oddeľovače<br />
riadkov "\r"v návratovej hodnote SQL<br />
zostavajucich_otazok := pocet_otazok<br />
otazky := Array(""; pocet_otazok; 5)<br />
posledne_odpovede := Array(0; pocet_otazok; 7)<br />
nahodne_cisla := Array(0; pocet_otazok; 7)<br />
-------------------------------------------------------------------<br />
-- Náhodné premiešanie otázok:<br />
repeat while lok_index < pocet_otazok<br />
lok_pom2 := Random(1; pocet_otazok; 1)<br />
if FindValue(lok_pomocne_pole; lok_pom2) = 0 then<br />
otazky[lok_index + 1][1] := GetLine(DB_ODBCData; lok_pom2)<br />
-- ID otázok sa uloží do prvej položky poľa otazky<br />
lok_pomocne_pole[lok_index + 1] := lok_pom2<br />
lok_index := lok_index + 1<br />
end if<br />
end repeat<br />
Inicializácia poradia otázok je tu najdôležitejšia ikona. Inicializuje väčšinu dôležitých<br />
premenných, ktoré sa budú pri hodnotenom testovaní využívať. Zistí počet otázok a vytvorí<br />
viacrozmerné polia : otazky, posledne_odpovede, nahodne_cisla. V poli otazky sú uložené<br />
všetky potrebné informácie o otázkach, ktoré sa budú užívateľovi klásť v danom teste. V tejto<br />
ikone sa na prvé položky poľa otazky zapíšu čísla otázok získané z databázy (z reťazca<br />
DB_ODBCData). Zároveň sa zabezpečí náhodné premiešanie otázok. To znamená, že otázky<br />
v teste nebudú zoradené v takom poradí ako sú zapísané v databáze. Pole posedne_odpovede<br />
slúži na uloženie odpovedí, ktoré užívateľ vybral pri poslednom odpovedaní na danú otázku.<br />
Keďže v hodnotenom testovaní na rozdiel od samostatného testovania sa užívateľ môže<br />
30
kedykoľvek vrátiť k otázke, ktorú už raz zodpovedal, program mu vyznačí odpovede, ktoré<br />
naposledy v tejto otázke vybral. Na uloženie týchto odpovedí slúži spomenuté pole<br />
posledne_odpovede. Keďže v každej otázke sú aj možnosti premiešané náhodne (nie sú<br />
zoradené tak ako sú zapísané v databáze), je potrebné,, aby pri ďalšom prístupe do otázky,<br />
ktorá už raz bola zodpovedaná tieto možnosti už neboli opätovne premiešané. Čiže aby sa pri<br />
celom hodnotenom testovaní pri každom zobrazení určitej otázky zobrazovali možnosti v tom<br />
istom poradí ako boli zoradení pri jej prvom zobrazení. Pri prvom náhodnom premiešaní<br />
možností sa údaje o ich poradí uložia do poľa nahodne_cisla. Pri každom ďalšom zobrazení<br />
sa možnosti už nepremiešanú, ale sa zoradia podľa údajov zapísaných v poli nahodne_cisla.<br />
Nasledujúca ikona „informacie“ zabezpečuje zobrazenie informácií užívateľovi počas celého<br />
hodnoteného testovania. Zobrazuje číslo aktuálnej otázky, počet ešte nezodpovedaných<br />
otázok a čas.<br />
Za týmito ikonami nasleduje interakcia „Riadenie“. Obsahuje tri tlačidla. Tlačidlo Uzavri<br />
(užívateľovi sa zobrazí ako tlačidlo „Uzavri test“) a tlačidla Späť a Ďalej. Tlačidlo Uzavri<br />
slúži na uzavretie celého hodnoteného testovania. Tlačidlami Späť a Ďalej sa pohybujeme<br />
medzi otázkami. Tlačidlo Späť sa zablokuje (skryje), keď sa užívateľ nachádza na prvej<br />
otázke, tlačidlo Ďalej sa zablokuje (skryje), keď sa užívateľ nachádza na poslednej otázke.<br />
Inak sú na všetkých ostatných otázkach obidve tlačidla aktívne. Užívateľ sa v priebehu celého<br />
hodnoteného testovania môže kedykoľvek premiestniť na ktorúkoľvek otázku bez ohľadu na<br />
to, či dokončil odpoveď na otázku, na ktorej sa práve nachádza. Výpočty pripojené<br />
k tlačidlám Späť a Ďalej slúžia práve na zablokovanie daného tlačidla na poslednej, alebo<br />
prevej otázke a na inkrementáciu, alebo dekrementáciu čísla otázky (premennej cislo_otazky).<br />
Obsahujú:<br />
cislo_otazky := cislo_otazky - 1<br />
if cislo_otazky = 1 then<br />
zakaz_spat := FALSE<br />
else<br />
zakaz_spat := TRUE<br />
end if<br />
zakaz_dalej := TRUE<br />
Tlačidlo Uzavri<br />
Podmienka „Zodpovedané všetky?“ zistí, či už boli zodpovedané všetky otázky. Ak áno,<br />
skočí do mapy „Áno“, v ktorej sa nachádza ďalšia interakcia kde sa program opýta užívateľa,<br />
či chce skutočne ukončiť hodnotené testovanie.<br />
31
Mapa Áno<br />
Užívateľ má na výber tlačidlá Áno a Nie. V prípade, že stlačí tlačidlo Nie program sa vráti<br />
naspäť do hodnoteného testovania. Ak stlačí Áno, program skočí do ďalšej mapy s menom<br />
„Áno“.<br />
Mapa Áno<br />
Táto mapa obsahuje interakciu „Priebežné výsledky“, ktorá užívateľovi zobrazí výsledky<br />
hodnoteného testovania. Tu sa užívateľ dozvie čas testovania, počet dosiahnutých bodov,<br />
počet všetkých bodov, ktoré bolo možné dosiahnuť a percentuálnu úspešnosť danú podielom<br />
počtu dosiahnutých bodov a počtu všetkých bodov, ktoré bolo možné dosiahnuť za správne<br />
zodpovedanie všetkých otázok, na ktoré užívateľ odpovedal. Stlačením tlačidla Zavri info sa<br />
užívateľ vráti do hlavného menu.<br />
Mapa „Zápis výsledkov do databázy“<br />
32
Zabezpečí zapísanie výsledkov testovania do databázy. Tu sa nepoužíva štandardná mapa<br />
„Volanie databázy“, ktorá v programe slúži na prácu z databázou, pretože umožňuje zadať<br />
databáze vždy len jeden SQL príkaz. Pri tom databázu vždy otvorí aj uzavrie. Toto otváranie a<br />
uzatváranie databázy pri zapisovaní veľkého počtu riadkov veľmi zdržuje prácu s databázou.<br />
Preto tu ikona „Otvor databázu“ otvorí databázu na začiatku zápisu výsledkov. Ikona „Zápis<br />
výsledkov do databázy“ zabezpečí generovanie SQL príkazov a ich zadávanie databáze a<br />
ikona „Uzavri databázu“ databázu na konci zápisu uzavrie. Tu sa teda pri zápise ľubovoľného<br />
množstva riadkov databáza otvorí aj uzavrie iba raz.<br />
Zdrojový kód ikony „Zápis výsledkov do databázy“<br />
Initialize(odpoved_OK)<br />
Initialize(kod_testu)<br />
-- Má hodnotu TRUE ak táto<br />
–- otázka bola zodpovedaná správne a<br />
–– hodnotu FALSE, ak bola<br />
–– zodpovedaná nesprávne<br />
-- cislo_testu v tvare, v ktorom sa<br />
–– zapisuje do databázy. Namiesto znakov<br />
–– '_' (podčiarkovník) sa zapíšu znaky<br />
–– '0' (nula)<br />
–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />
–- Zmení tvar čísla testu. Namiesto znakov “_” (podčiarkovník)<br />
–- zapíše do databázy “0” nuly.<br />
if Find("__";cislo_testu) then<br />
else<br />
if Find("____";cislo_testu) then<br />
kod_testu := SubStr(cislo_testu; 1; 4)^"0000"<br />
else<br />
kod_testu := SubStr(cislo_testu; 1; 6)^"00"<br />
end if<br />
kod_testu := cislo_testu<br />
end if<br />
–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––<br />
–- Cyklus, ktorý zabezpečí vygenerovanie SQL príkazu pre každú<br />
–– otázku zvlášť a tak zapíše údaje o zodpovedaní každej otázky na<br />
–– zvláštny riadok tabuľky.<br />
repeat with lok_index := 1 to pocet_otazok<br />
if otazky[lok_index][4] 0 then<br />
odpoved_OK := "TRUE"<br />
else<br />
odpoved_OK := "FALSE"<br />
end if<br />
-- Otázka bola zodpovedaná<br />
–– správne (počet bodov nieje 0)<br />
-- Otázka bola zodpovedaná<br />
–– nesprávne<br />
33
if otazky[lok_index][3] 0 then -- Otázka bola zodpovedaná<br />
DB_SQLString := "INSERT INTO "^meno_tabulky_vysledkov^" VALUES (<br />
'"^rodne_cislo^"' , '"^kod_testu^"' , "^otazky[lok_index][1]^" ,<br />
"^otazky[lok_index][5]^" , '"^cas_zacatia_testu^"' ,<br />
'"^datum_zacatia_testu^"' , "^odpoved_OK^" ,<br />
"^otazky[lok_index][4]^");"<br />
else<br />
DB_SQLString := "INSERT INTO "^meno_tabulky_vysledkov^" VALUES (<br />
'"^rodne_cislo^"' , '"^kod_testu^"' , "^otazky[lok_index][1]^" ,<br />
"^0^" , '"^cas_zacatia_testu^"' , '"^datum_zacatia_testu^"' ,<br />
"^"FALSE"^" , "^0^");"<br />
end if<br />
ODBCExecute(DB_ODBCHandle; DB_SQLString)<br />
end repeat<br />
Úlohou tejto ikony je generovanie SQL príkazov na zápis výsledkov odpovedania na<br />
jednotlivé otázky do tabuľky (meno tejto tabuľky je uložené v premennej<br />
meno_tabulky_vysledkov). Do tejto tabuľky sa zapisuje rodné číslo študenta, číslo testu, číslo<br />
otázky, čas odpovedania na danú otázku, čas začatia testu, dátum začatia testu, informácia o<br />
tom, či je odpoveď správna, alebo nesprávna a počet bodov získaných za zodpovedanie danej<br />
otázky. V prípade, že žiak nejakú otázku nezodpovedal, zapíšu sa údaje o nej s tým, že otázka<br />
nebola zodpovedaná správne a študent za ňu získal 0 bodov. Skok „Navigate to “Volanie<br />
databázy““ odovzdáva databáze jednotlivé SQL príkazy a databáza pridáva jednotlivé riadky<br />
prislúchajúce otázkam do danej tabuľky.<br />
Príklad SQL príkazu zapisujúceho výsledky otázky, ktorá už bola zodpovedaná:<br />
INSERT INTO Vysledky VALUES ( '830421/7511' , '01000203' , 23 , 30 ,<br />
'09:51:20' , '24.04.2001' , TRUE , 3 );<br />
Príklad SQL príkazu zapisujúceho výsledky otázky, ktorá ešte nebola zodpovedaná:<br />
INSERT INTO Vysledky VALUES ( '830421/7511' , '01000203' , 23 , 0 ,<br />
'09:51:20' , '24.04.2001' , FALSE , 0 );<br />
Ak neboli zodpovedané všetky otázky a užívateľ chce napriek tomu ukončiť hodnotené<br />
testovanie, postup je taký istý s tým rozdielom, že sa užívateľovi zobrazí aj varovanie o tom,<br />
že ešte nezodpovedal všetky otázky. Jediný rozdiel je v interakcii „Ukončiť test?“, v ktorej je<br />
toto varovanie uložené.<br />
34
Obsah frameworku „Ovládanie hodnoteného testovania“<br />
Prvá ikona, ktorá sa v tu nachádza je skok s názvom „Spustenie prvej otázky“, ktorá<br />
zabezpečí automatické nahranie prvej otázky užívateľovi. Za ňou nasleduje ikona<br />
„H_Rozhodni“ Táto slúži na zistenie typu otázky, načítanie vstupných informácií o otázke a<br />
skok na niektorú z preddefinovaných typov otázok. Všetky ikony v tomto frameworku (okrem<br />
prvej) majú pred svojím menom „H_“, čo znamená, že ide o hodnotené testovanie.<br />
H_Rozhodni<br />
Počiatočná inicializácia<br />
Initialize(lok_spravne_odpovede) -- Správne odpovede na otázku<br />
Initialize(lok_otazka)<br />
-- Text otázky<br />
Initialize(lok_body)<br />
-- Body za správne zodpovedanie<br />
–- otázky<br />
Initialize(lok_moznosti)<br />
-- Možnosti odpovede na otázku<br />
Initialize(lok_odozva)<br />
-- Reakcie programu na správne,<br />
–- alebo nesprávne zodpovedanie<br />
–- otázky<br />
35
Volanie databázy<br />
DB_SQLString:= "SELECT [typ], [body], [odpoved], [otazka],<br />
[moznost1], [moznost2], [moznost3], [moznost4], [moznost5],<br />
[moznost6], [moznost7] FROM "^meno_tabulky_otazok^" WHERE<br />
[Kod_otazky] = "^otazky[cislo_otazky][1]<br />
Výsledný SQL príkaz by mohol vyzerať napríklad takto:<br />
SELECT [typ], [body], [odpoved], [otazka], [moznost1], [moznost2],<br />
[moznost3], [moznost4], [moznost5], [moznost6], [moznost7] FROM<br />
Otazky WHERE [Kod_otazky] = 17<br />
Vytvorí SQL príkaz na získanie týchto informácií z databázy pomocou kódu otázky, ktorý<br />
má každá premenné uložený v poli otazky. Z databázy sa načítajú informácie typ otázky,<br />
body za správne zodpovedanie otázky, správna odpoveď, znenie otázky a možnosti odpovede.<br />
Skok s menom „Zadanie SQL príkazu“, ktorý nasleduje za touto ikonou odošle vytvorený<br />
SQL príkaz databáze. Jej návratová hodnota sa uloží do premennej DB_ODBCData , ktorá sa<br />
vyhodnocuje v nasledujúcej ikone „Rozhodovanie“.<br />
Rozhodni<br />
Toto je asi najdôležitejší proces v celom programe. Táto ikona rozloží reťazec<br />
DB_ODBCData na premenné a polia, do ktorých zapíše informácie potrebné pre spustenie<br />
otázky. Zároveň sa zistí počet možností, ktoré sú v databáze nadefinované pre túto otázku (len<br />
pokiaľ ide o typ MXY, alebo SXY). Podľa typu otázky a počtu možností sa program<br />
rozhodne, na ktorú z preddefinovaných otázok skočí tým, že číslo cieľovej informácie zapíše<br />
do premennej skoc_na. Za ikonou rozhodovanie nasleduje skok na ikonu, ktorej číslo bolo<br />
zapísané do premennej skoc_na. Týmto sa spustí daná preddefinovaná šablóna otázky, ktorá<br />
má už potrebné informácie zapísané v premenných, ktoré bude používať. Po skončení<br />
odpovedania na otázku program čaká na ďalšie inštrukcie (na stlačenie nejakého tlačítka).<br />
Pokiaľ stlačíme Ďalej, alebo Späť program inkrementuje, alebo dekrementuje číslo otázky a<br />
znovu spustí mapu Rozhodovanie (H_Rozhodni). Farebné značnie ikon v tomto frameworku<br />
sa neriadi žiadnym pravidlom. Slúži len na optické rozlíšenie rozhodovania a jednotlivých<br />
typov otázok.<br />
36
Zdrojový kód ikony Rozhodni<br />
lok_moznosti := Array("";7) -- Možnosti odpovede na otázky<br />
lok_otazka := GetLine(DB_ODBCData; 4; 4; "\t")<br />
-- Načítanie textu<br />
–- otázky<br />
lok_spravne_odpovede := GetLine(DB_ODBCData; 3; 3; "\t")<br />
-- Načítanie správnych odpovedí<br />
lok_body := GetNumber(1; GetLine(GetLine(DB_ODBCData; 2 ; 2; "\t");<br />
1; 1; ",")) -- Načítanie počtu bodov za správne odpovedanie otázky<br />
repeat with lok_index := 1 to 7 -- Načítanie možností a<br />
–- zistenie ich počtu<br />
lok_moznosti[lok_index] := GetLine(DB_ODBCData; lok_index + 4;<br />
lok_index + 4; "\t")<br />
if lok_moznosti[lok_index] = "" then<br />
exit repeat<br />
end if<br />
end repeat<br />
lok_index := lok_index - 1<br />
-- Premenná lok index sa odteraz nesmie meniť, lebo je v nej počet<br />
možností, podľa ktorého preberne samotné rozhodovanie<br />
if GetLine(DB_ODBCData; 1 ; 1; "\t") = "MXY" then<br />
-- Zisťuje, či<br />
–- otázka je<br />
–- typu MXY<br />
end if<br />
skoc_na := IconID("H_MXY"^"_"^lok_index)<br />
-- Výber typu otázky<br />
–- MXY podľa počtu<br />
–- možností<br />
if GetLine(DB_ODBCData; 1 ; 1; "\t") = "SXY" then -- Zisťuje, či<br />
–- otázka je<br />
–- typu SXY<br />
skoc_na := IconID("H_SXY"^"_"^lok_index) -- Výber typu otázky<br />
–- MXY podľa počtu<br />
–- možností<br />
end if<br />
if GetLine(DB_ODBCData; 1 ; 1; "\t") = "TF" then<br />
skoc_na := IconID("H_TF")<br />
end if<br />
if GetLine(DB_ODBCData; 1 ; 1; "\t") = "YN" then<br />
skoc_na := IconID("H_YN")<br />
end if<br />
-- Otázky typu TF<br />
-- True / False<br />
-- Otázky typu YN<br />
-- Yes / NO<br />
37
Otázka H_TF<br />
V tejto otázke má užívateľ len dve možnosti odpovede : Pravda a Nepravda.<br />
V prvej ikone s názvom „Čítaj ma“ sú len poznámky o farebnom značení ďalších ikon. Za<br />
ňou nasleduje „Počiatočná inicializácia“, ktorá inicializuje premenné použité v otázke.<br />
Počiatočná inicializácia<br />
Initialize(lok_odpoved)<br />
Initialize(spravna_odpoved)<br />
Initialize(uziv_odpoved)<br />
-- Možné odpovede na otázku<br />
-- Správna odpoveď<br />
-- Odpoveď užívateľa<br />
Definovanie otázky<br />
V premennej lok_spravne_odpovede je správna odpoveď načítaná z databázy. Ak má hodnotu<br />
1, odpoveď je Pravda, ak 0 odpoveď je Nepravda. V poli lok_odpoved sú možnosti odpovede<br />
na tuto otázku.<br />
lok_odpoved[1] := "Pravda"<br />
lok_odpoved[2] := "Nepravda"<br />
if lok_spravne_odpovede = 1 then<br />
spravna_odpoved := lok_odpoved[1] -- Správna odpoveď je<br />
Pravda<br />
else<br />
spravna_odpoved := lok_odpoved[2] -- Správna odpoveď je<br />
Nepravda<br />
end if<br />
38
-------------------------------------------------------------------<br />
-- Zapísanie predošlých odpovedí<br />
if posledne_odpovede[cislo_otazky][1] = 1 then -- Ak posledná<br />
odpoveď bola Pravda<br />
uziv_odpoved := lok_odpoved[1]<br />
-- zapíše ju do<br />
premennej uziv_odpoved<br />
end if<br />
if posledne_odpovede[cislo_otazky][2] = 1 then -- Ak posledná<br />
odpoveď bola Nepravda<br />
uziv_odpoved := lok_odpoved[2]<br />
-- zapíše ju do<br />
premennej uziv_odpoved<br />
end if<br />
Definuje možnosti odpovede a z údajov ktoré boli zistené v H_Rozhodni zistí, ktorá z týchto<br />
nadefinovaných odpovedí je správna. Ďalej z poľa posledna_odpovede zistí, ktorá odpoveď<br />
bola vybratá pri poslednom zodpovedaní tejto otázky.<br />
Označenie skôr vybraných možností<br />
Checked@"Áno2" := posledne_odpovede[cislo_otazky][1]<br />
Checked@"Nie2" := posledne_odpovede[cislo_otazky][2]<br />
Užívateľovi vyznačí tú možnosť, ktorú tu naposledy vybral. Ďalšiu možnosť automaticky<br />
odznačí (uvedie dané tlačidlo do východiskového stavu). V interakcii „Pravda / nepravda“ sa<br />
nachádza text otázky a tlačidla pravda a nepravda. Pri stlačení ktoréhokoľvek z nich sa do<br />
premennej uziv_odpoved zapíše meno tlačidla, ktoré stlačil a program automaticky opustí<br />
interakciu.<br />
Podmienka „Aká je odpoveď?“ zistí, či užívateľ odpovedal správne, alebo nesprávne. Je<br />
k nej pripojený výpočet, ktorého zdrojový kód je:<br />
if otazky[cislo_otazky][3] 0 then -- Na otázku už bolo odpovedané<br />
end if<br />
pocet_bodov := pocet_bodov - otazky[cislo_otazky][4]<br />
V prípade, že táto otázka už bola zodpovedaná odčíta z celkového počtu bodov získaných za<br />
všetky otázky počet bodov, ktoré užívateľ pri poslednom zodpovedaní tejto otázky získal. Ak<br />
odpovedal správne, body mu program znovu pridelí, ak odpovedal nesprávne, pridelí mu 0<br />
bodov. Ak by tu tento výpočet nebol, tak v prípade, že by užívateľ viackrát otvoril a správne<br />
zodpovedal danú otázku, program by mu pridelil za ňu body viackrát. Ak bola odpoveď<br />
správna, tak do poľa otazky sa zapíše počet bodov, ktoré užívateľ získal, ak bola odpoveď<br />
nesprávna, zapíše sa 0.<br />
39
Zápis vybraných možností<br />
repeat with lok_index := 1 to 2<br />
if uziv_odpoved = lok_odpoved[lok_index] then<br />
posledne_odpovede[cislo_otazky][lok_index] := 1<br />
else<br />
posledne_odpovede[cislo_otazky][lok_index] := 0<br />
end if<br />
end repeat<br />
Zapíše do poľa posledne_odpovede odpoveď, ktorú užívateľ vybral, aby sa mu zobrazila pri<br />
opätovnom otvorení tejto otázky.<br />
Zápis informácií o zodpovedaní otázky<br />
otazky[cislo_otazky][5] := INT(TimeInInteraction)<br />
pocet_bodov<br />
:= pocet_bodov + otazky[cislo_otazky][4]<br />
cas_testovania := cas_testovania + otazky[cislo_otazky][5]<br />
if otazky[cislo_otazky][3] 1 then<br />
vsetkych_bodov := vsetkych_bodov + lok_body<br />
zostavajucich_otazok := zostavajucich_otazok – 1<br />
end if<br />
otazky[cislo_otazky][3] := 1<br />
Do poľa otazky zapíše čas strávený pri odpovedaní na túto otázku, k celkovému počtu bodov<br />
(premenná pocet_bodov) pripočíta počet bodov, ktoré užívateľ získal za odpovedanie tejto<br />
otázky. K celkovému času testovania (premenná cas_testovania) sa pripočíta čas, ktorý<br />
užívateľ strávil pri odpovedaní na túto otázku. V prípade, že táto otázka ešte nebola predtým<br />
zodpovedaná, tak k celkovému počtu bodov, ktoré je možné získať za správne zodpovedanie<br />
všetkých otázok (premenná vsetkych_bodov) pripočíta počet bodov, ktoré bolo možné získať<br />
za správne zodpovedanie tejto otázky a inkrementuje počet zostávajúcich otázok (premenná<br />
zostavajucich_otazok). Na koniec program do poľa otazky zapíše, že táto otázka už bola raz<br />
zodpovedaná.<br />
Skok na ďalšiu otázku<br />
Výpočet, ktorý je k tejto ikone pripojený vypočíta číslo ďalšej otázky, zablokuje, alebo povolí<br />
tlačidlá Späť a Ďalej, a ak sa nenachádza práve na poslednej otázke, skočí na ďalšiu otázku.<br />
Presnejšie povedané skočí na mapu H_Rozhodni, ktorá zabezpečí skok na ďalšiu otázku.<br />
Otázka H_YN<br />
Je úplne zhodná s otázkou H_TF, len s tým rozdielom, že namiesto tlačítok „Pravda“ a<br />
„Nepravda“ sa tu používajú tlačidla „Áno“ a „Nie“.<br />
40
Otázka H_SXY<br />
V tejto otázke má užívateľ možností vybrať jednu z dvoch až siedmich možností.<br />
Počiatočná inicializácia<br />
Initialize(lok_odpoved_je_spravna)<br />
Initialize(lok_odpoved)<br />
Initialize(spravna_odpoved)<br />
Initialize(uziv_odpoved)<br />
-- má hodnotu TRUE pri správnom<br />
–- zodpovedaní otázky<br />
-- Možnosti, ktoré sú náhodne<br />
–- premiešané<br />
-- Správna odpoveď<br />
-- Odpoveď užívateľa (možnosť,<br />
–- ktorú vybral užívateľ)<br />
Initialize(lok_pocet_moznosti)<br />
Initialize(rozostup_moznosti)<br />
Initialize(sirka_moznosti)<br />
Initialize(lok_index)<br />
Initialize(lok_pomocne_pole)<br />
-- Počet možností v tejto otázke<br />
-- Medzery medzi jednotlivými<br />
–- možnosťami (rosdiel ich Y-ových –<br />
–- súradníc)<br />
-- Šírka možnosti (rozdiel X-ových<br />
–- súradníc začiatku a konca textu –<br />
–- otázky)<br />
-- Pomocná premenná.<br />
-- Poomocná premenná.<br />
lok_pocet_moznosti := GetNumber(1; IconTitle(skoc_na))<br />
-- Priraďuje počet možností tejto otázky<br />
lok_odpoved := Array(""; lok_pocet_moznosti)<br />
41
Slúži na inicializáciu dôležitých premenných použitých v tejto otázke, zistí počet možností<br />
z mena mapy, v ktorej sa táto otázka nachádza a vytvorí pole „lok_odpoved“, ktoré je také<br />
veľké, ako počet možností.<br />
Definovanie otázky<br />
if otazky[cislo_otazky][3] 1 then -– bola otázka už zodpovedaná<br />
end if<br />
lok_index := 1<br />
repeat while lok_index < lok_pocet_moznosti + 1<br />
lok_pom2 := Random(1; lok_pocet_moznosti; 1) -- Generovanie<br />
–- náhodného<br />
–– čísla<br />
if FindValue(lok_pomocne_pole; lok_pom2) = 0 then<br />
-- Ak už to náhodné číslo bolo raz<br />
–– vygenerované, generuje sa ďalšie<br />
nahodne_cisla[cislo_otazky][lok_index] := lok_pom2<br />
-- Pridanie náhodného čísla do poľa<br />
lok_pomocne_pole[lok_index] := lok_pom2<br />
-- Náhorné číslo, ktoré bolo ––<br />
–– vygenerované na začiatku sa ––<br />
–– zapíše do pomocného poľa, aby sa<br />
–– už viac nepoužilo<br />
lok_index := lok_index + 1<br />
end if<br />
end repeat<br />
--------------------------------------------------------------------<br />
-- Usporiadanie možností podľa náhodných čísel, ktoré sú zapísané v<br />
–– poli nahodne_cisla<br />
-- Z poľa lok_moznosti sa postupne zapisujú možnosti na náhodné<br />
–– pozície v poli lok_odpoved.<br />
-- Tie, ktoré sú správne sa zapíšu do poľa spravna_odpoved na takú<br />
–– istú položku, na akú sú zapísané v poli lok_odpoved<br />
repeat with lok_index := 1 to lok_pocet_moznosti<br />
lok_odpoved[nahodne_cisla[cislo_otazky][lok_index]] :=<br />
lok_moznosti[lok_index] -- Priradenie možnosti do poľa lok_odpoved<br />
if Find(String(lok_index); lok_spravne_odpovede) 0 then<br />
-- Ak je daná odpoveď správna, zapíše sa<br />
–– do poľa spravna_odpoved<br />
spravna_odpoved := lok_moznosti[lok_index]<br />
-- Priradenie správnej odpovede do<br />
–– premennej spravna_odpoved<br />
end if<br />
end repeat<br />
repeat with lok_index := 1 to lok_pocet_moznosti<br />
if posledne_odpovede[cislo_otazky][lok_index] = 1 then<br />
uziv_odpoved := lok_odpoved[lok_index]<br />
end if<br />
end repeat<br />
42
V prípade, že otázka ešte nebola nikdy odpovedaná, vygeneruje toľko náhodných čísel, koľko<br />
je možností v danej otázke a zapíše ich do poľa nahodne_cisla. Zabezpečí, aby sa náhodné<br />
čísla neopakovali. Podľa týchto náhodných čísel premieša možnosti tak, aby sa užívateľovi<br />
nezobrazili v takom poradí, v akom sú zapísané v databáze. Podľa čísla, ktoré je zapísané<br />
v premennej lok_spravne_odpovede vyberie správnu odpoveď z týchto možností. Ak otázka<br />
už bola zodpovedaná, do poľa uziv_odpoved zapíše odpoveď, ktorá bola vybraná pri<br />
správnom zodpovedaní tejto otázky.<br />
Zaškrtnutie predtým vybraných tlačítok<br />
Checked@"Možnosť 35" := posledne_odpovede[cislo_otazky][1]<br />
Checked@"Možnosť 36" := posledne_odpovede[cislo_otazky][2]<br />
Checked@"Možnosť 37" := posledne_odpovede[cislo_otazky][3]<br />
Checked@"Možnosť 38" := posledne_odpovede[cislo_otazky][4]<br />
Checked@"Možnosť 39" := posledne_odpovede[cislo_otazky][5]<br />
Checked@"Možnosť 40" := posledne_odpovede[cislo_otazky][6]<br />
Checked@"Možnosť 41" := posledne_odpovede[cislo_otazky][7]<br />
Vyznačí užívateľovi odpoveď, ktorú vybral pri poslednom odpovedaní tejto otázky a ostatné<br />
možnosti automaticky odznačí.<br />
Rozmiestňovanie<br />
Zabezpečí, aby možnosti boli rovnomerne rozmiestnené na ploche, ktorá je pre ne určená.<br />
Body „Začiatok rozmiestnenia“ a „Koniec rozmiestenia“ ľavý horný a pravý dolný roh tejto<br />
plochy.<br />
43
Definovanie vzťažných súradníc<br />
sirka_moznosti := DisplayX@"Koniec rozmiestnenia" -<br />
DisplayX@"Začiatok rozmiestnenia"<br />
rozostup_moznosti := (DisplayY@"Koniec rozmiestnenia" -<br />
DisplayY@"Začiatok rozmiestnenia") / lok_pocet_moznosti<br />
X := DisplayX@"Začiatok rozmiestnenia" + 310<br />
-- Súradnice prvej možnosti<br />
Y := DisplayY@"Začiatok rozmiestnenia" + rozostup_moznosti / 2<br />
Z týchto bodov vypočíta, aká je šírka plochy pre jednu možnosť, aký je rozstup medzi<br />
možnosťami a vygeneruje súradnice, na ktoré sa budú texty jednotlivých možností<br />
zobrazovať. Po zobrazení všetkých možností nasleduje ikona „Posun textu oproti tlačidlám“.<br />
Keďže súradnice textu sa udávajú v jeho strede a tlačidla sú umiestené naľavo od textu,<br />
súradnice tlačítok musia byť oproti súradniciam textu posunuté. Práve toto zabezpečuje ikona<br />
„Posun textu oproti tlačidlám“.<br />
V interakcii s názvom „Otázka (1 správna z N)“ sú tlačidlá reprezentujúce jednotlivé<br />
možnosti. Po stlačení ľubovoľného tlačidla sa do premennej uziv_odpoved, ktorá reprezentuje<br />
užívateľovu odpoveď zapíše názov možnosti, ktorú vybral a program automaticky opustí<br />
interakciu.<br />
Podmienka „Aká je odpoveď?“ zistí, či užívateľ odpovedal správne, alebo nesprávne. Je<br />
k nej pripojený výpočet, ktorého zdrojový kód je:<br />
if otazky[cislo_otazky][3] 0 then -- Na otázku už bolo odpovedané<br />
end if<br />
pocet_bodov := pocet_bodov - otazky[cislo_otazky][4]<br />
V prípade, že táto otázka už bola zodpovedaná odčíta z celkového počtu bodov získaných za<br />
všetky otázky počet bodov, ktoré užívateľ pri poslednom zodpovedaní tejto otázky získal. Ak<br />
odpovedal správne, body mu program znovu pridelí, ak odpovedal nesprávne, pridelí mu 0<br />
bodov. Ak by tu tento výpočet nebol, tak v prípade, že by užívateľ viackrát otvoril a správne<br />
zodpovedal danú otázku, program by mu pridelil za ňu body viackrát. Ak bola odpoveď<br />
správna, tak do poľa otazky sa zapíše počet bodov, ktoré užívateľ získal, ak bola odpoveď<br />
nesprávna, zapíše sa 0.<br />
Zápis vybraných možností<br />
repeat with lok_index := 1 to lok_pocet_moznosti<br />
if uziv_odpoved = lok_odpoved[lok_index] then<br />
posledne_odpovede[cislo_otazky][lok_index] := 1<br />
else<br />
posledne_odpovede[cislo_otazky][lok_index] := 0<br />
end if<br />
end repeat<br />
Zapíše do poľa posledne_odpovede odpovede, ktoré užívateľ vybral, aby sa mu zobrazili pri<br />
opätovnom otvorení tejto otázky.<br />
44
Zápis informácií o zodpovedaní otázky<br />
otazky[cislo_otazky][5] := INT(TimeInInteraction)<br />
pocet_bodov<br />
:= pocet_bodov + otazky[cislo_otazky][4]<br />
cas_testovania := cas_testovania + otazky[cislo_otazky][5]<br />
if otazky[cislo_otazky][3] 1 then<br />
vsetkych_bodov := vsetkych_bodov + lok_body<br />
zostavajucich_otazok := zostavajucich_otazok – 1<br />
end if<br />
otazky[cislo_otazky][3] := 1<br />
Do poľa otazky zapíše čas strávený pri odpovedaní na túto otázku, k celkovému počtu bodov<br />
(premenná pocet_bodov) pripočíta počet bodov, ktoré užívateľ získal za odpovedanie tejto<br />
otázky. K celkovému času testovania (premenná cas_testovania) sa pripočíta čas, ktorý<br />
užívateľ strávil pri odpovedaní na túto otázku. V prípade, že táto otázka ešte nebola predtým<br />
zodpovedaná, tak k celkovému počtu bodov, ktoré je možné získať za správne zodpovedanie<br />
všetkých otázok (premenná vsetkych_bodov) pripočíta počet bodov, ktoré bolo možné získať<br />
za správne zodpovedanie tejto otázky a inkrementuje počet zostávajúcich otázok (premenná<br />
zostavajucich_otazok). Na koniec program do poľa „otazky“ zapíše, že táto otázka už bola raz<br />
zodpovedaná.<br />
Skok na ďalšiu otázku<br />
Výpočet, ktorý je k tejto ikone pripojený vypočíta číslo ďalšej otázky, zablokuje, alebo povolí<br />
tlačidlá Späť a Ďalej, a ak sa nenachádza práve na poslednej otázke, skočí na ďalšiu otázku.<br />
Presnejšie povedané skočí na mapu H_Rozhodni, ktorá zabezpečí skok na ďalšiu otázku.<br />
45
Otázka H_MXY<br />
Užívateľovi dáva možnosť výberu viacerých správnych odpovedí z dvoch až siedmich<br />
možností.<br />
Počiatočná inicializácia<br />
Initialize(lok_odpoved_je_spravna)<br />
Initialize(lok_odpoved)<br />
Initialize(spravna_odpoved)<br />
Initialize(uziv_odpoved)<br />
-- má hodnotu TRUE pri správnom<br />
–-zodpovedaní otázky<br />
-- Možnosti, ktoré sú náhodne<br />
–- premiešané<br />
-- Správna odpoveď<br />
-- Odpoveď užívateľa (možnosť,<br />
–- ktorú vybral užívateľ)<br />
Initialize(lok_pocet_moznosti)<br />
Initialize(rozostup_moznosti)<br />
Initialize(sirka_moznosti)<br />
Initialize(lok_index)<br />
Initialize(lok_pomocne_pole)<br />
-- Počet možností v tejto otázke<br />
-- Medzery medzi jednotlivými<br />
–- možnosťami (rosdiel ich Y-ových –<br />
–- súradníc)<br />
-- Šírka možnosti (rozdiel X-ových<br />
–- súradníc začiatku a konca textu –<br />
–- otázky)<br />
-- Pomocná premenná.<br />
-- Poomocná premenná.<br />
lok_pocet_moznosti := GetNumber(1; IconTitle(skoc_na))<br />
-- Priraďuje počet možností tejto otázky<br />
lok_odpoved := Array(""; lok_pocet_moznosti)<br />
spravna_odpoved := Array(""; lok_pocet_moznosti)<br />
uziv_odpoved := Array(""; lok_pocet_moznosti)<br />
46
Tu sa inicializujú dôležité premenné použité v tejto otázke. Z mena mapy sa zistí počet<br />
možností, v tejto otázke. Vytvoria sa tri jednorozmerné polia, ktorých veľkosť je zhodná<br />
s číslom zapísanom v premennej pocet_moznosti.<br />
V poli lok_moznosti sú uložené texty možností odpovedí na túto otázku. Pole<br />
spravna_odpoved obsahuje zapísané len tie možnosti, ktoré sú správne a pole uziv_odpoved<br />
v sebe zahŕňa odpovede, ktoré vybral užívateľ.<br />
Definovanie otázky<br />
if otazky[cislo_otazky][3] 1 then -– bola otázka už zodpovedaná<br />
end if<br />
lok_index := 1<br />
repeat while lok_index < lok_pocet_moznosti + 1<br />
lok_pom2 := Random(1; lok_pocet_moznosti; 1) -- Generovanie<br />
–- náhodného<br />
–– čísla<br />
if FindValue(lok_pomocne_pole; lok_pom2) = 0 then<br />
-- Ak už to náhodné číslo bolo raz<br />
–– vygenerované, generuje sa ďalšie<br />
nahodne_cisla[cislo_otazky][lok_index] := lok_pom2<br />
-- Pridanie náhodného čísla do poľa<br />
lok_pomocne_pole[lok_index] := lok_pom2<br />
-- Náhorné číslo, ktoré bolo ––<br />
–– vygenerované na začiatku sa ––<br />
–– zapíše do pomocného poľa, aby sa<br />
–– už viac nepoužilo<br />
lok_index := lok_index + 1<br />
end if<br />
end repeat<br />
repeat with lok_index := 1 to lok_pocet_moznosti<br />
lok_odpoved[nahodne_cisla[cislo_otazky][lok_index]] :=<br />
lok_moznosti[lok_index]<br />
-- Priradenie možnosti do poľa<br />
–- lok_odpoved<br />
if Find(String(lok_index); lok_spravne_odpovede) 0 then<br />
-- Ak je daná odpoveď správna,<br />
–- zapíše sa do poľa<br />
–– spravna_odpoved<br />
spravna_odpoved[nahodne_cisla[cislo_otazky][lok_index]] :=<br />
lok_moznosti[lok_index] -- Priradenie správnych<br />
–– odpovedí do poľa<br />
–– spravna_odpoved<br />
end if<br />
end repeat<br />
repeat with lok_index := 1 to lok_pocet_moznosti<br />
if posledne_odpovede[cislo_otazky][lok_index] = 1 then<br />
uziv_odpoved[lok_index] := lok_odpoved[lok_index]<br />
end if<br />
end repeat<br />
47
V prípade, že otázka ešte nebola zodpovedaná, vykoná generovanie toľkých náhodných čísel,<br />
koľko je v tejto otázke možností a ich uloženie do poľa nahodne_cisla tak, aby sa žiadne<br />
náhodné číslo neopakovalo a náhodné premiešanie možností podľa týchto vygenerovaných<br />
náhodných čísel tak, aby sa užívateľovi nezobrazili možnosti v tom poradí, v akom sú<br />
zapísané v databáze. Popri tom vyberie zo všetkých možností správne možnosti, ktoré zapíše<br />
do poľa spravna_odpoved. Zároveň z poľa posledné_odpovede zapíše do poľa uziv_odpoved<br />
možnosti, ktoré užívateľ vybral pri poslednom odpovedaní na túto otázku. Ikona „Zaškrtnutie<br />
predtým vybraných tlačidiel“ vyznačí užívateľovi možnosti, ktoré vybral pri poslednom<br />
odpovedaní na túto otázku.<br />
Rozmiestňovanie<br />
Zabezpečí, aby možnosti boli rovnomerne rozmiestnené na ploche, ktorá je pre ne určená.<br />
Body „Začiatok rozmiestnenia“ a „Koniec rozmiestenia“ ľavý horný a pravý dolný roh tejto<br />
plochy.<br />
Definovanie vzťažných súradníc<br />
sirka_moznosti := DisplayX@"Koniec rozmiestnenia" -<br />
DisplayX@"Začiatok rozmiestnenia"<br />
rozostup_moznosti := (DisplayY@"Koniec rozmiestnenia" -<br />
DisplayY@"Začiatok rozmiestnenia") / lok_pocet_moznosti<br />
X := DisplayX@"Začiatok rozmiestnenia" + 310<br />
-- Súradnice prvej možnosti<br />
Y := DisplayY@"Začiatok rozmiestnenia" + rozostup_moznosti / 2<br />
Z týchto bodov vypočíta, aká je šírka plochy pre jednu možnosť, aký je rozstup medzi<br />
možnosťami a vygeneruje súradnice, na ktoré sa budú texty jednotlivých možností<br />
zobrazovať. Po zobrazení všetkých možností nasleduje ikona „Posun textu oproti tlačidlám“.<br />
Keďže súradnice textu sa udávajú v jeho strede a tlačidla sú umiestené naľavo od textu,<br />
48
súradnice tlačítok musia byť oproti súradniciam textu posunuté. Práve toto zabezpečuje ikona<br />
„Posun textu oproti tlačidlám“.<br />
Interakcia s názvom „Otázka (viac správ. z N)“ obsahuje tlačidlo Uzavri otázku a tlačidlá,<br />
ktoré reprezentujú možnosti odpovede na túto otázku. v prípade, že užívateľ stlačí niektoré<br />
z tlačidiel slúžiace na vyznačenie odpovede, tak sa do poľa uziv_odpoved zapíše tá možnosť,<br />
ktorú vybral. V prípade, že daná možnosť už bola označená, na dané miesto poľa<br />
uziv_odpoved sa zapíše prázdny reťazec (možnosť sa odznačí). Keď užívateľ vyberie všetky<br />
možnosti, ktoré pokladá za správne, stlačí tlačidlo Uzavri otázku. Program potom vstúpi do<br />
mapy prislúchajúcej tomuto tlačidlu, kde skontroluje, či užívateľ odpovedal správne, alebo<br />
nesprávne. Podmienka „Aká je odpoveď?“ nachádzajúca sa v tejto mape zistí, či užívateľ<br />
odpovedal správne, alebo nesprávne.<br />
Je k nej pripojený výpočet, ktorého zdrojový kód je:<br />
if otazky[cislo_otazky][3] 0 then -- Na otázku už bolo odpovedané<br />
end if<br />
pocet_bodov := pocet_bodov - otazky[cislo_otazky][4]<br />
V prípade, že táto otázka už bola zodpovedaná odčíta z celkového počtu bodov získaných za<br />
všetky otázky počet bodov, ktoré užívateľ pri poslednom zodpovedaní tejto otázky získal. Ak<br />
odpovedal správne, body mu program znovu pridelí, ak odpovedal nesprávne, pridelí mu 0<br />
bodov. Ak by tu tento výpočet nebol, tak v prípade, že by užívateľ viackrát otvoril a správne<br />
zodpovedal danú otázku, program by mu pridelil za ňu body viackrát. Ak bola odpoveď<br />
správna, tak do poľa otazky sa zapíše počet bodov, ktoré užívateľ získal, ak bola odpoveď<br />
nesprávna, zapíše sa 0.<br />
Zápis vybraných možností<br />
repeat with lok_index := 1 to lok_pocet_moznosti<br />
if uziv_odpoved = lok_odpoved[lok_index] then<br />
posledne_odpovede[cislo_otazky][lok_index] := 1<br />
else<br />
posledne_odpovede[cislo_otazky][lok_index] := 0<br />
end if<br />
end repeat<br />
Zapíše do poľa posledne_odpovede odpovede, ktoré užívateľ vybral, aby sa mu zobrazili pri<br />
opätovnom otvorení tejto otázky.<br />
49
Zápis informácií o zodpovedaní otázky<br />
otazky[cislo_otazky][5] := INT(TimeInInteraction)<br />
pocet_bodov<br />
:= pocet_bodov + otazky[cislo_otazky][4]<br />
cas_testovania := cas_testovania + otazky[cislo_otazky][5]<br />
if otazky[cislo_otazky][3] 1 then<br />
vsetkych_bodov := vsetkych_bodov + lok_body<br />
zostavajucich_otazok := zostavajucich_otazok – 1<br />
end if<br />
otazky[cislo_otazky][3] := 1<br />
Do poľa otazky zapíše čas strávený pri odpovedaní na túto otázku, k celkovému počtu bodov<br />
(premenná pocet_bodov) pripočíta počet bodov, ktoré užívateľ získal za odpovedanie tejto<br />
otázky. K celkovému času testovania (premenná cas_testovania) sa pripočíta čas, ktorý<br />
užívateľ strávil pri odpovedaní na túto otázku. V prípade, že táto otázka ešte nebola predtým<br />
zodpovedaná, tak k celkovému počtu bodov, ktoré je možné získať za správne zodpovedanie<br />
všetkých otázok (premenná vsetkych_bodov) pripočíta počet bodov, ktoré bolo možné získať<br />
za správne zodpovedanie tejto otázky a inkrementuje počet zostávajúcich otázok (premenná<br />
zostavajucich_otazok). Na koniec program do poľa „otazky“ zapíše, že táto otázka už bola raz<br />
zodpovedaná.<br />
Skok na ďalšiu otázku<br />
Výpočet, ktorý je k tejto ikone pripojený vypočíta číslo ďalšej otázky, zablokuje, alebo povolí<br />
tlačidlá Späť a Ďalej, a ak sa nenachádza práve na poslednej otázke, skočí na ďalšiu otázku.<br />
Presnejšie povedané skočí na mapu H_Rozhodni, ktorá zabezpečí skok na ďalšiu otázku.<br />
50
Samostatné testovanie<br />
Keďže Macromedia Authorware dovoľuje skákať aj s návratom len do mapy, ktorá je uložená<br />
v inom frameworku, ako v tom, z ktorého sa skáče, je mapa „test“ uložená v osobitnom<br />
frameworku s menom taktiež „Samostatné testovanie“ v mape „Samostatné testovanie“.<br />
Mapa „Samostatné testvanie“<br />
Takže samotné samostatné testovanie sa nachádza v mape „test“, ktorá patrí do frameworku<br />
„Samostatné testovanie“. Tento framework patrí do mapy „Samostatné testovanie“, ktorá patrí<br />
do frameworku „Hlavná navigácia“.<br />
Samotný program hodnoteného testovania sa nachádza v mape „test“.<br />
Mapa „test“<br />
Na začiatku spustenia testovania je potrebné najprv vybrať test, ktorému sa chce užívateľ<br />
ďalej venovať. Na tento účel slúži skok „Navigate to "Výber modulu"“, ktorý skočí na<br />
podprogram (mapu) „Výber modulu“, ktorá zabezpečí výber užívateľom požadovaného testu.<br />
Druhou ikonou samostatnom testovaní je „Inicializácia niektorých premenných“<br />
V Samostatnom testovaní je táto ikona použitá len na inicializáciu premennej zakaz, ktorá<br />
slúži na zakázanie(skrytie) a povolenie (zobrazenie) tlačidiel Ďalej a Späť, ktorými sa<br />
užívateľ pohybuje medzi otázkami. Tieto tlačidlá sú zakázané vtedy, keď užívateľ začal<br />
odpovedať na nejakú otázku a ešte nedokončil jej odpovedanie.<br />
51
Framework „Ovladanie testovania“<br />
Framework „Ovladanie testovania“ pri svojom štarte spustí program na inicializáciu<br />
samostatného testovania, ktorý je uložený ako postupnosť ikon (príkazov) v jeho štartovacej<br />
časti.<br />
Štartovacia časť frameworku „Ovladanie testovania“<br />
V prvej ikone s názvom „Samotestovanie.jpg“ je uložené pozadie samostatného testovania. Je<br />
to obrázok vložený z knižnice.<br />
Získanie čísel otázok z databázy<br />
DB_SQLString := "SELECT [Kod_otazky] FROM "^meno_tabulky_otazok^"<br />
WHERE [Cislo_testu] LIKE '"^cislo_testu^"'"<br />
Vytvorí SQL príkaz slúžiaci na nahranie čísel otázok, ktoré vyhovujú podmienke daného<br />
testu. To znamená, že nahrá z databázy len tie otázky, ktoré patria do užívateľom vybraného<br />
testu. Skok s názvom „Zadanie SQL príkazu“ volá databázu a odovzdá jej vytvorenú<br />
požiadavku a do premennej DB_ODBCData zapíše výstup z databázy.<br />
Vytvorený SQL príkaz by mohol vyzerať takto:<br />
SELECT [Kod_otazky] FROM Otazky WHERE [Cislo_testu] LIKE '01000204'<br />
Inicializácia poradia otázok<br />
Initialize(lok_index)<br />
-- Pomocná premenná<br />
Initialize(lok_pom1)<br />
-- Pomocná premenná<br />
Initialize(lok_pom2)<br />
-- Pomocná premenná<br />
Initialize(lok_pomocne_pole) -- Pomocná premenná<br />
Initialize(zostavajucich_otazok) -- Počet ešte nezodpovedaných<br />
–- otázok<br />
Initialize(otazky)<br />
-- Pole, v ktorom sú údaje o každej<br />
–- otázke<br />
52
Initialize(pocet_otazok)<br />
Initialize(pocet_bodov)<br />
-- Počet otázok v tomto teste<br />
-- Celkový počet získaných bodov v<br />
–– celom teste<br />
-- Celkový počet bodov, ktorý je<br />
Initialize(vsetkych_bodov)<br />
možné získať pri správnom zodpovedaní všetkých otázok<br />
Initialize(cas_testovania) -- Celkový čas testovania<br />
pocet_otazok := LineCount(DB_ODBCData; "\r")<br />
-- Počet otázok - zistíme ho tak, že spočítame všetky oddeľovače<br />
riadkov "\r"v návratovej hodnote SQL<br />
zostavajucich_otazok := pocet_otazok<br />
otazky := Array( ""; pocet_otazok; 5)<br />
-------------------------------------------------------------------<br />
-- Náhodné premiešanie otázok<br />
repeat while lok_index < pocet_otazok<br />
lok_pom2 := Random(1; pocet_otazok; 1)<br />
if FindValue(lok_pomocne_pole; lok_pom2) = 0 then<br />
otazky[lok_index + 1][1] := GetLine(DB_ODBCData; lok_pom2)<br />
lok_pomocne_pole[lok_index + 1] := lok_pom2<br />
lok_index := lok_index + 1<br />
end if<br />
end repeat<br />
Inicializácia poradia otázok je tu najdôležitejšia ikona. Táto ikona inicializuje väčšinu<br />
dôležitých premenných, ktoré sa budú pri samostatnom testovaní využívať. Zistí počet otázok<br />
a vytvorí viacrozmerné pole otazky. V poli otazky budú uložené všetky potrebné informácie o<br />
otázkach, ktoré sa budú užívateľovi klásť v danom teste. V tejto ikone sa na prvé položky<br />
poľa otazky zapíšu čísla otázok získané z databázy (z reťazca DB_ODBCData).<br />
Nasledujúca ikona „informacie“ zabezpečuje zobrazenie informácií užívateľovi počas celého<br />
samostatného testovania. Zobrazuje číslo aktuálnej otázky, počet ešte nezodpovedaných<br />
otázok, čas (hodiny), čas testovania, počet dosiahnutých bodov, počet všetkých bodov, ktoré<br />
bolo možné dosiahnuť a percentuálnu úspešnosť danú podielom počtu dosiahnutých bodov a<br />
počtu všetkých bodov, ktoré bolo možné dosiahnuť za správne zodpovedanie všetkých<br />
otázok, na ktoré užívateľ odpovedal.<br />
Za týmito ikonami nasleduje interakcia „Riadenie“. Obsahuje tri tlačidlá. Tlačidlo Uzavri<br />
(užívateľovi sa zobrazí ako tlačidlo Ukonči samotestovanie) a tlačidlá Späť a Ďalej.<br />
Tlačidlo Uzavri slúži na uzavretie celého samostatného testovania. Tlačidlámi Späť a Ďalej<br />
sa pohybujeme medzi otázkami s tým, že otázky, ktoré už boli zodpovedané sa automaticky<br />
preskočia (užívateľ nemá možnosť otvoriť otázku, ktorú už raz zodpovedal).<br />
Výpočet čísla predchádzajúce otázky pri tlačidle Späť<br />
repeat while cislo_otazky > 0<br />
cislo_otazky := cislo_otazky - 1<br />
if otazky[cislo_otazky][2] = "" then -- Ak je táto položka poľa<br />
–- prázdna, otázka ešte<br />
–- nebola zodpovedaná<br />
–– ( druhá položka poľa<br />
–- hovorí, na koľký pokus<br />
–- bola otázka zodpovedaná )<br />
53
exit repeat<br />
end if<br />
end repeat<br />
--------------------------------------------------------------------<br />
-- Zisťuje, či po zodpovedaní nasledujúcej otázky sa dá ešte ísť<br />
–- vzad<br />
lok_index := cislo_otazky<br />
repeat while lok_index > 0<br />
lok_index := lok_index - 1<br />
if otazky[lok_index][2] = "" then<br />
exit repeat<br />
end if<br />
end repeat<br />
-- Ak je táto položka poľa<br />
–- prázdna, otázka ešte<br />
–- nebola zodpovedaná<br />
–– ( druhá položka poľa<br />
–- hovorí, na koľký pokus<br />
–- bola otázka zodpovedaná )<br />
if lok_index = 0 then<br />
zakaz_spat := FALSE<br />
else<br />
zakaz_spat := TRUE<br />
end if<br />
--------------------------------------------------------------------<br />
-- Zisťuje, či po zodpovedaní nasledujúcej otázky sa dá ešte ísť<br />
–- vpred<br />
lok_index := cislo_otazky<br />
repeat while lok_index pocet_otazok then<br />
zakaz_dalej := FALSE<br />
else<br />
zakaz_dalej := TRUE<br />
end if<br />
Tlačidlo Späť sa zablokuje (zmaže), keď sa užívateľ nachádza na prvej otázke, ktorá ešte<br />
nebola zodpovedaná. Tlačidlo Ďalej sa zablokuje (zmaže), keď sa užívateľ nachádza na<br />
poslednej otázke, ktorá ešte nebola zodpovedaná. Inak sú na všetkých ostatných otázkach<br />
obidve tlačidla aktívne. Výpočty pripojené k tlačidlám Späť a Ďalej slúžia práve na<br />
zablokovanie daného tlačidla na poslednej, alebo prevej nezodpovedanej otázke, na<br />
54
inkrementáciu, alebo dekrementáciu čísla otázky (premennej cislo_otazky) a na preskočenie<br />
tých otázok, ktoré už boli zodpovedané.<br />
Uzavri<br />
Tlačidlo Uzavri obsahuje mapu, v ktorej sa nachádza podmienka s názvom „Zodpovedané<br />
všetky?“. Táto podmienka zistí, či už boli zodpovedané všetky otázky. Ak áno, program vojde<br />
do mapy Áno. Ak nie, program vstúpi do mapy Nie. Tieto mapy sa líšia len tým, že mapa Nie<br />
upozorní užívateľa na to, že ešte nezodpovedal všetky otázky a užívateľ má možnosť sa z nej<br />
vrátiť späť do testu. Mapa Áno túto možnosť nemá.<br />
Nie<br />
Tu interakcia „Priebežné výsledky“ zobrazí priebežné výsledky samostatného testovania a dá<br />
užívateľovi na výber, či chce skutočne ukončiť samostatné testovanie, alebo nie. V prípade,<br />
že stlačí tlačidlo „Nie“ program sa vráti naspäť do samostatného testovania. Ak stlačí „Áno“,<br />
program ukončí samostatné testovanie, ak stlačí nie, program sa vráti späť do testu.<br />
Obsah frameworku „Ovladanie testovania“<br />
Prvá ikona, ktorá sa v tu nachádza je skok s názvom „Spustenie prvej otázky“, ktorá<br />
zabezpečí automatické nahranie prvej otázky užívateľovi. Za ňou nasleduje ikona „Rozhodni“<br />
Táto slúži na zistenie typu otázky, načítanie vstupných informácií o otázke a skok na niektorú<br />
z preddefinovaných typov otázok.<br />
Rozhodni<br />
55
Počiatočná inicializácia<br />
Initialize(lok_spravne_odpovede)<br />
Initialize(lok_otazka)<br />
Initialize(lok_body)<br />
Initialize(lok_moznosti)<br />
Initialize(lok_odozva)<br />
-- Správne odpovede na otázku<br />
-- Text otázky<br />
-- Body za správne zodpovedanie<br />
–- otázky<br />
-- Možnosti odpovede na otázku<br />
-- Reakcie programu na správne,<br />
–- alebo nesprávne zodpovedanie<br />
–– otázky<br />
Volanie databázy<br />
DB_SQLString:= "SELECT [typ], [body], [odpoved], [otazka],<br />
[moznost1], [moznost2], [moznost3], [moznost4], [moznost5],<br />
[moznost6], [moznost7], [spravna_odozva1], [spravna_odozva2],<br />
[spravna_odozva3], [nespravna_odozva1], [nespravna_odozva2],<br />
[nespravna_odozva3] FROM "^meno_tabulky_otazok^" WHERE [Kod_otazky]<br />
= "^otazky[cislo_otazky][1]<br />
Vytvorí SQL príkaz na získanie týchto informácií z databázy pomocou kódu otázky, ktorý<br />
má každá premenné uložený v poli otazky. Z databázy sa načítajú informácie typ otázky,<br />
body za správne zodpovedanie otázky, správna odpoveď, znenie otázky, možnosti odpovede a<br />
odozvy na odpovede užívateľa.<br />
Výsledný SQL príkaz môže vyzerať takto:<br />
SELECT [typ], [body], [odpoved], [otazka], [moznost1], [moznost2],<br />
[moznost3], [moznost4], [moznost5], [moznost6], [moznost7],<br />
[spravna_odozva1], [spravna_odozva2], [spravna_odozva3],<br />
[nespravna_odozva1], [nespravna_odozva2], [nespravna_odozva3] FROM<br />
Otazky WHERE [Kod_otazky] = 26<br />
Skok s menom „Zadanie SQL príkazu“, ktorý nasleduje za touto ikonou odošle vytvorený<br />
SQL príkaz databáze. Jej návratová hodnota sa uloží do premennej DB_ODBCData ,ktorá sa<br />
vyhodnocuje v nasledujúcej ikone „Rozhodovanie“.<br />
Rozhodovanie<br />
lok_moznosti<br />
lok_odozva<br />
lok_body<br />
lok_otazka<br />
lok_spravne_odpovede<br />
:= Array("";7)<br />
:= Array("";6)<br />
:= Array("";3)<br />
:= GetLine(DB_ODBCData; 4; 4; "\t")<br />
:= GetLine(DB_ODBCData; 3; 3; "\t")<br />
-- Načítanie počtu bodov za správne odpovedané otázky<br />
repeat with lok_index := 1 to LineCount(GetLine(DB_ODBCData; 2 ; 2;<br />
"\t"); ",")<br />
lok_body[lok_index] := GetNumber(1;<br />
GetLine(GetLine(DB_ODBCData; 2 ; 2; "\t"); lok_index;<br />
lok_index; ","))<br />
end repeat<br />
56
-- Načítanie reakcií na správne, alebo nesprávne odpovede<br />
repeat with lok_index := 1 to 6<br />
lok_odozva[lok_index] := GetLine(DB_ODBCData; lok_index +<br />
11; lok_index + 11; "\t")<br />
end repeat<br />
-- Načítanie možností a zistenie ich počtu<br />
repeat with lok_index := 1 to 7<br />
lok_moznosti[lok_index] := GetLine(DB_ODBCData; lok_index + 4;<br />
lok_index + 4; "\t")<br />
if lok_moznosti[lok_index] = "" then<br />
exit repeat<br />
end if<br />
end repeat<br />
lok_index := lok_index - 1<br />
-- Premenná lok_index sa odteraz nesmie meniť, lebo je v nej počet<br />
–– možností, podľa ktorého preberne samotné rozhodovanie<br />
-- Výber typu otázky (rozhodovanie)<br />
if GetLine(DB_ODBCData; 1 ; 1; "\t") = "MXY" then<br />
skoc_na := IconID("MXY"^"_"^lok_index) -- Výber typu otázky MXY<br />
–- podľa počtu možností<br />
end if<br />
if GetLine(DB_ODBCData; 1 ; 1; "\t") = "SXY" then<br />
skoc_na := IconID("SXY"^"_"^lok_index)<br />
end if<br />
if GetLine(DB_ODBCData; 1 ; 1; "\t") = "TF" then<br />
skoc_na := IconID("TF")<br />
end if<br />
if GetLine(DB_ODBCData; 1 ; 1; "\t") = "YN" then<br />
skoc_na := IconID("YN")<br />
end if<br />
-- Otázky typu TF<br />
-- Otázky typu YN<br />
Toto je asi najdôležitejší proces v celom programe. Táto ikona rozloží reťazec<br />
DB_ODBCData na premenné a polia, do ktorých zapíše informácie potrebné pre spustenie<br />
otázky. Zároveň sa zistí počet možností, ktoré sú v databáze nadefinované pre túto otázku (len<br />
pokiaľ ide o typ MXY, alebo SXY). Podľa typu otázky a počtu možností sa program<br />
rozhodne, na ktorú z preddefinovaných otázok skočí tým, že číslo cieľovej informácie zapíše<br />
do premennej skoc_na. Za ikonou rozhodovanie nasleduje skok na ikonu, ktorej číslo bolo<br />
zapísané do premennej skoc_na. Týmto sa spustí daná preddefinovaná šablóna otázky, ktorá<br />
má už potrebné informácie zapísané v premenných, ktoré bude používať. Po skončení<br />
odpovedania na otázku program čaká na ďalšie inštrukcie (na stlačenie nejakého tlačítka).<br />
Pokiaľ stlačíme „Ďalej“, alebo „Späť“ program inkrementuje, alebo dekrementuje číslo<br />
otázky a znovu spustí mapu Rozhodovanie (H_Rozhodni). Farebné značenie ikon v tomto<br />
frameworku sa neriadi žiadnym pravidlom. Slúži len na optické rozlíšenie rozhodovania a<br />
jednotlivých typov otázok.<br />
57
Otázka TF<br />
V tejto otázke má užívateľ len dve možnosti odpovede : Pravda a Nepravda.<br />
V prvej ikone s názvom „Čítaj ma“ sú len poznámky o farebnom značení ďalších ikon.<br />
Počiatočná inicializácia<br />
Initialize(lok_odpoved)<br />
Initialize(spravna_odpoved)<br />
Initialize(uziv_odpoved)<br />
-- Možné odpovede na otázku<br />
-- Správna odpoveď<br />
-- Odpoveď užívateľa<br />
Inicializuje premenné použité v otázke.<br />
Definovanie otázky<br />
lok_odpoved[1] := "Áno"<br />
lok_odpoved[2] := "Nie"<br />
–– Možnosti odpovede<br />
if lok_spravne_odpovede = 1 then –- Aká je odpoveď?<br />
spravna_odpoved := lok_odpoved[1] –– Odpoveď je Pravda<br />
else<br />
spravna_odpoved := lok_odpoved[2] –- Odpoveď je Neprevda<br />
end if<br />
Je tu najdôležitejšia ikona. Definuje možnosti odpovede a z údajov ktoré boli zistené<br />
v „Rozhodni“ zistí, ktorá z týchto nadefinovaných odpovedí je správna. V interakcii „Pravda /<br />
nepravda“ sa nachádza text otázky a tlačidlá „Pravda“ a „Nepravda“. Pri stlačení<br />
ktoréhokoľvek z nich sa do premennej uziv_odpoved zapíše meno tlačidla, ktoré stlačil a<br />
program opustí interakciu.<br />
58
Podmienka „Aká je odpoveď?“ zistí, či užívateľ odpovedal správne, alebo nesprávne. Ak bola<br />
odpoveď správna, program vypíše užívateľovi informáciu o správnej odpovedi<br />
(lok_odozva[1]) a do poľa „otazky“ zapíše počet bodov, ktoré užívateľ získal, ak bola<br />
odpoveď nesprávna, program mu vypíše informáciu o nesprávnom zodpovedaní otázky<br />
(lok_odozva[4]) a do poľa otazky zapíše 0 bodov.<br />
Zapíš zvyšné informácií o zodpovedaní otázky<br />
pocet_bodov := pocet_bodov + otazky[cislo_otazky][4]<br />
vsetkych_bodov := vsetkych_bodov + lok_body[1]<br />
cas_testovania := cas_testovania + otazky[cislo_otazky][5]<br />
zostavajucich_otazok := zostavajucich_otazok - 1<br />
Program zapíše do poľa „otazky“ čas strávený pri odpovedaní na túto otázku, k celkovému<br />
počtu bodov (premenná pocet_bodov) pripočíta počet bodov, ktoré užívateľ získal za<br />
odpovedanie tejto otázky. K celkovému počtu bodov, ktoré je možné získať za správne<br />
zodpovedanie všetkých otázok (premenná vsetkych_bodov) pripočíta počet bodov, ktoré bolo<br />
možné získať za správne zodpovedanie tejto otázky a k celkovému času testovania (premenná<br />
cas_testovania) pripočíta čas, ktorý užívateľ strávil pri odpovedaní na túto otázku. Na koniec<br />
a inkrementuje počet zostávajúcich otázok (premenná zostavajucich_otazok).<br />
Aktualizácia informácií<br />
informacny_retazec := ""<br />
repeat with lok_index := 1 to pocet_otazok<br />
if lok_index < 100 then<br />
if lok_index < 10 then<br />
informacny_retazec := informacny_retazec ^ " "<br />
else<br />
informacny_retazec := informacny_retazec ^ " "<br />
end if<br />
end if<br />
informacny_retazec := informacny_retazec ^ String(lok_index) ^<br />
"\t\t\t\t\t\t\t\t\t\t" ^ String(otazky[lok_index][2]) ^<br />
"\t\t\t\t\t\t\t\t\t" ^ String(otazky[lok_index][4]) ^<br />
"\t\t\t\t\t\t\t\t\t" ^ String(otazky[lok_index][5])^"\r"<br />
end repeat<br />
Ikona aktualizuje informačný reťazec o informácie o zodpovedaní tejto otázky tým, že zmaže<br />
a opätovne vytvorí celý informačný reťazec. Podmienka v ikone slúži na zarovnanie čísel<br />
otázok na pravú stranu, aby sa všetky čísla v informačnom reťazci zobrazili rovno pod sebou.<br />
Skok na ďalšiu otázku<br />
Výpočet, ktorý je k tejto ikone pripojený vypočíta číslo ďalšej ešte nezodpovedanej otázky,<br />
zablokuje, alebo povolí tlačidlá Späť a Ďalej, a ak sa nenachádza práve na poslednej otázke,<br />
skočí na ďalšiu otázku. Presnejšie povedané skočí na mapu H_Rozhodni, ktorá zabezpečí<br />
skok na ďalšiu otázku.<br />
59
Otázka YN<br />
Je úplne zhodná s otázkou TF, len s tým rozdielom, že namiesto tlačítok „Pravda“ a<br />
„Nepravda“ sa tu používajú tlačidla „Áno“ a „Nie“.<br />
Otázka SXY<br />
V tejto otázke má užívateľ možností vybrať jednu z dvoch až siedmich možností.<br />
Počiatočná inicializácia<br />
Initialize(lok_odpoved_je_spravna) -- má hodnotu TRUE pri správnom<br />
––zodpovedaní otázky<br />
Initialize(lok_chybnych_odpovedi) -- počet chybných odpovedí<br />
Initialize(lok_odpoved)<br />
Initialize(spravna_odpoved)<br />
Initialize(uziv_odpoved)<br />
ktorú vybral užívateľ)<br />
-- Možnosti, ktoré sú náhodne<br />
–– premiešané<br />
-- Správna odpoveď<br />
-- Odpoveď užívateľa (možnosť,<br />
Initialize(lok_pocet_moznosti)<br />
Initialize(rozostup_moznosti)<br />
-- Počet možností v tejto otázke<br />
-- Medzery medzi jednotlivými<br />
–– možnosťami (rosdiel ich Y-<br />
–– ových súradníc)<br />
Initialize(sirka_moznosti) -- Šírka možnosti (rozdiel X-<br />
–– ových súradníc začiatku a<br />
–– konca textu otázky)<br />
Initialize(lok_index)<br />
-- Pomocná premenná<br />
60
Initialize(lok_pomocne_pole)<br />
-- Poomocná premenná<br />
-- Premenné lok_pom2 a lok_index sa v tomto type otázky tiež<br />
–– využívanú,<br />
-- ale sú použíté tak, že ich hodnotu tu nieje potrebné anulovať<br />
lok_pocet_moznosti := GetNumber(1; IconTitle(skoc_na))<br />
-- Priraďuje počet možností tejto otázky tak, že zistí číslo z<br />
–– mana mapy.<br />
lok_odpoved := Array(""; lok_pocet_moznosti)<br />
Slúži na inicializáciu dôležitých premenných použitých v tejto otázke, zistí počet možností<br />
z mena mapy, v ktorej sa táto otázka nachádza a vytvorí pole „lok_odpoved“, ktoré je také<br />
veľké, ako počet možností.<br />
Definovanie otázky<br />
lok_index := 1<br />
repeat while lok_index < lok_pocet_moznosti + 1<br />
lok_pom2 := Random(1; lok_pocet_moznosti; 1)<br />
-- Generovanie<br />
–– náhodného čísla<br />
if FindValue(lok_pomocne_pole; lok_pom2) = 0 then<br />
-- Ak už to náhodné číslo bolo raz<br />
–– vygenerované, generuje sa ďalšie<br />
lok_odpoved[lok_pom2] := lok_moznosti[lok_index]<br />
if Find(String(lok_index); lok_spravne_odpovede) 0 then<br />
-- Ak je daná odpoveď správna,<br />
–– zapíše sa do premennej spravna_odpoved<br />
spravna_odpoved := lok_moznosti[lok_index]<br />
end if<br />
lok_pomocne_pole[lok_index] := lok_pom2<br />
-- Náhorné číslo, ktoré bolo vygenerované na začiatku sa<br />
–– zapíše do pomocného poľa, aby sa už viac nepoužilo<br />
lok_index := lok_index + 1<br />
end if<br />
end repeat<br />
Premieša možnosti tak, aby sa užívateľovi nezobrazili v takom poradí, v akom sú zapísané<br />
v databáze. Podľa čísla, ktoré je zapísané v premennej lok_spravne_odpovede vyberie<br />
z týchto možností správnu odpoveď.<br />
61
Rozmiestňovanie<br />
Zabezpečí, aby možnosti boli rovnomerne rozmiestnené na ploche, ktorá je pre ne určená.<br />
Body „Začiatok rozmiestnenia“ a „Koniec rozmiestenia“ určujú ľavý horný a pravý dolný roh<br />
tejto plochy.<br />
Definovanie vzťažných súradníc<br />
sirka_moznosti := DisplayX@"Koniec rozmiestnenia" -<br />
DisplayX@"Začiatok rozmiestnenia"<br />
rozostup_moznosti := (DisplayY@"Koniec rozmiestnenia" -<br />
DisplayY@"Začiatok rozmiestnenia") / lok_pocet_moznosti<br />
X := DisplayX@"Začiatok rozmiestnenia" + 310<br />
-- Súradnice prvej<br />
–– možnosti<br />
Y := DisplayY@"Začiatok rozmiestnenia" + rozostup_moznosti / 2<br />
Interakcia s názvom „Otázka (1 správna z N)“ obsahuje ikonu (výpočet) „~MatchedEver“.<br />
Táto ikona zablokuje tlačítka na pohyb medzi otázkami v prípade, že užívateľ začal<br />
odpovedať na otázku (vybral hociktorú možnosť).<br />
lok_odpoved_je_spravna<br />
62
V prípade, že užívateľ odpovedal správne, táto mapa zistí, na koľký pokus odpovedal správne<br />
a podľa toho pridelí daný počet bodov (je uložený v poli lok_body) a zabezpečí výpis<br />
hlásenia. Nachádza sa v nej podmienka „Odozva pri spravnej odpovedi“, v ktorej sú tri mapy<br />
: Správne na 1x, Správne na 2x a Správne na 3x. Všetky tri obsahujú hlásenia o správnom<br />
zodpovedaní otázky prislúchajúce poradovému číslu pokusu, na ktorý bola otázka správne<br />
zodpovedaná a príkaz, ktorý zapíše do poľa otazky počet získaných bodov. Po vykonaní<br />
týchto príkazov program opustí interakciu. Ďalej sa v tejto interakcii nachádzajú tlačidlá<br />
reprezentujúce jednotlivé možnosti odpovede. Každému tlačidlu prislúcha mapa s menom<br />
„Možnosť N“, v ktorej je podmienka s názvom „Aká je odpoveď ?“.<br />
Možnosť N<br />
Táto podmienka zistí, či užívateľom vybraná odpoveď je správna. Ak áno, do premennej<br />
lok_odpoved_je_spravna zapíše TRUE. Ak je nesprávna, skočí do mapy „Nesprávna“.<br />
Nesprávna<br />
V tejto mape sa nachádza príkaz „Zvysenie poctu chyb. odpovedi“, v ktorom sa hodnota<br />
premennej lok_chybnych_odpovedi zvýši o 1. Za ňou je podmienka „odozva pri nespravnej<br />
odpovedi“, ktorá zistí, či sa užívateľ pomýlil prvý, alebo druhý krát.<br />
V interakcii „odozva pri nespravnej odpovedi“ sa nachádzajú mapy, ktoré užívateľovi vypíšu<br />
príslušné hlásenie (pomocný text). V prípade, že sa užívateľ pomýlil trikrát, v premennej<br />
lok_chybnych_odpovedi bude zapísané číslo 3. Program potom automaticky skočí do mapy<br />
„lok_chybnych_odpovedi=3“.<br />
lok_chybnych_odpovedi=3<br />
V ikone „Otázku si nezodpovedal“ je uložené príslušné hlásenie. Ikona „zapis 0 body“ zapíše<br />
do poľa otazky 0 (informáciu o tom, že užívateľ získal 0 bodov). Ikona „zapis kolko pokusov“<br />
63
zapíše do poľa otázky na koľký pokus užívateľ otázku nezodpovedal (tu vždy zapíše 3). Po<br />
tom program opustí interakciu.<br />
Ikona zmazanie možností slúži na zmazanie textov možností, aby sa tam mohli zobraziť<br />
možnosti ďalšej otázky.<br />
Ikona „povolenie tlačítok“ povolí používanie tlačítok „Späť“ a „Ďalej“, ktoré sú počas<br />
odpovedania na otázku zakázané.<br />
Zapíš zvyšné informácií o zodpovedaní otázky<br />
pocet_bodov := pocet_bodov + otazky[cislo_otazky][4]<br />
vsetkych_bodov := vsetkych_bodov + lok_body[1]<br />
cas_testovania := cas_testovania + otazky[cislo_otazky][5]<br />
zostavajucich_otazok := zostavajucich_otazok - 1<br />
Program zapíše do poľa „otazky“ čas strávený pri odpovedaní na túto otázku, k celkovému<br />
počtu bodov (premenná pocet_bodov) pripočíta počet bodov, ktoré užívateľ získal za<br />
odpovedanie tejto otázky. K celkovému počtu bodov, ktoré je možné získať za správne<br />
zodpovedanie všetkých otázok (premenná vsetkych_bodov) pripočíta počet bodov, ktoré bolo<br />
možné získať za správne zodpovedanie tejto otázky a k celkovému času testovania (premenná<br />
cas_testovania) pripočíta čas, ktorý užívateľ strávil pri odpovedaní na túto otázku. Na koniec<br />
a inkrementuje počet zostávajúcich otázok (premenná zostavajucich_otazok).<br />
Aktualizácia informácií<br />
informacny_retazec := ""<br />
repeat with lok_index := 1 to pocet_otazok<br />
if lok_index < 100 then<br />
if lok_index < 10 then<br />
informacny_retazec := informacny_retazec ^ " "<br />
else<br />
informacny_retazec := informacny_retazec ^ " "<br />
end if<br />
end if<br />
informacny_retazec := informacny_retazec ^ String(lok_index) ^<br />
"\t\t\t\t\t\t\t\t\t\t" ^ String(otazky[lok_index][2]) ^<br />
"\t\t\t\t\t\t\t\t\t" ^ String(otazky[lok_index][4]) ^<br />
"\t\t\t\t\t\t\t\t\t" ^ String(otazky[lok_index][5])^"\r"<br />
end repeat<br />
Ikona aktualizuje informačný reťazec o informácie o zodpovedaní tejto otázky tým, že zmaže<br />
a opätovne vytvorí celý informačný reťazec. Podmienka v ikone slúži na zarovnanie čísel<br />
otázok na pravú stranu, aby sa všetky čísla v informačnom reťazci zobrazili rovno pod sebou.<br />
Skok na ďalšiu otázku<br />
Výpočet, ktorý je k tejto ikone pripojený vypočíta číslo ďalšej ešte nezodpovedanej otázky,<br />
zablokuje, alebo povolí tlačidlá Späť a Ďalej, a ak sa nenachádza práve na poslednej otázke,<br />
skočí na ďalšiu otázku. Presnejšie povedané skočí na mapu H_Rozhodni, ktorá zabezpečí<br />
skok na ďalšiu otázku.<br />
64
Otázka MXY<br />
Užívateľovi dáva možnosť výberu viacerých správnych odpovedí z dvoch až siedmich<br />
možností.<br />
Počiatočná inicializácia<br />
Initialize(lok_odpoved_je_spravna) -- má hodnotu TRUE pri správnom<br />
––zodpovedaní otázky<br />
Initialize(lok_chybnych_odpovedi) -- počet chybných odpovedí<br />
Initialize(lok_odpoved)<br />
Initialize(spravna_odpoved)<br />
Initialize(uziv_odpoved)<br />
ktorú vybral užívateľ)<br />
-- Možnosti, ktoré sú náhodne<br />
–– premiešané<br />
-- Správna odpoveď<br />
-- Odpoveď užívateľa (možnosť,<br />
Initialize(lok_pocet_moznosti)<br />
Initialize(rozostup_moznosti)<br />
-- Počet možností v tejto otázke<br />
-- Medzery medzi jednotlivými<br />
–– možnosťami (rosdiel ich Y-<br />
–– ových súradníc)<br />
Initialize(sirka_moznosti) -- Šírka možnosti (rozdiel X-<br />
–– ových súradníc začiatku a<br />
–– konca textu otázky)<br />
Initialize(lok_index)<br />
Initialize(lok_pomocne_pole)<br />
-- Pomocná premenná<br />
-- Poomocná premenná<br />
-- Premenné lok_pom2 a lok_index sa v tomto type otázky tiež<br />
–– využívanú,<br />
-- ale sú použíté tak, že ich hodnotu tu nieje potrebné anulovať<br />
65
lok_pocet_moznosti := GetNumber(1; IconTitle(skoc_na))<br />
-- Priraďuje počet možností tejto otázky tak, že zistí číslo z<br />
–– mana mapy.<br />
lok_odpoved := Array(""; lok_pocet_moznosti)<br />
spravna_odpoved := Array(""; lok_pocet_moznosti)<br />
uziv_odpoved := Array(""; lok_pocet_moznosti)<br />
V nej sa inicializujú dôležité premenné použité v tejto otázke. Z mena mapy sa zistí počet<br />
možností, v tejto otázke. Vytvoria sa tri jednorozmerné polia, ktorých veľkosť je zhodná<br />
s číslom zapísanom v premennej pocet_moznosti.<br />
V poli lok_moznosti sú uložené texty možností odpovedí na túto otázku. Pole<br />
spravna_odpoved obsahuje zapísané len tie možnosti, ktoré sú správne a pole uziv_odpoved<br />
v sebe zahŕňa odpovede, ktoré vybral užívateľ.<br />
Definovanie otázky<br />
lok_index := 1<br />
repeat while lok_index < lok_pocet_moznosti + 1<br />
lok_pom2 := Random(1; lok_pocet_moznosti; 1)<br />
-- Generovanie<br />
–– náhodného čísla<br />
if FindValue(lok_pomocne_pole; lok_pom2) = 0 then<br />
-- Ak už to náhodné číslo bolo raz<br />
–– vygenerované, generuje sa ďalšie<br />
lok_odpoved[lok_pom2] := lok_moznosti[lok_index]<br />
if Find(String(lok_index); lok_spravne_odpovede) 0 then<br />
-- Ak je daná odpoveď správna, zapíše sa<br />
–– do poľa spravna_odpoved<br />
spravna_odpoved[lok_pom2] := lok_moznosti[lok_index]<br />
end if<br />
lok_pomocne_pole[lok_index] := lok_pom2<br />
-- Náhorné číslo, ktoré bolo vygenerované<br />
–- na začiatku sa zapíše do pomocného<br />
–– poľa, aby sa už viac nepoužilo<br />
lok_index := lok_index + 1<br />
end if<br />
end repeat<br />
Ikona vykoná premiešanie možností podľa týchto vygenerovaných náhodných čísel tak, aby<br />
sa užívateľovi nezobrazili možnosti v tom poradí, v akom sú zapísané v databáze. Popri tom<br />
vyberie zo všetkých možností správne možnosti, ktoré zapíše do poľa spravna_odpoved.<br />
Checked@"Možnosť 1" := FALSE<br />
Checked@"Možnosť 2" := FALSE<br />
. . .<br />
Checked@"Možnosť N" := FALSE<br />
Odškrtnutie všetkých tlačítok<br />
Uvedie všetky tlačítka do východiskového stavu, pretože inak by boli stlačené tak, ako zostali<br />
pri poslednom spustení tejto mapy.<br />
66
Rozmiestňovanie<br />
Zabezpečí, aby možnosti boli rovnomerne rozmiestnené na ploche, ktorá je pre ne určená.<br />
Body „Začiatok rozmiestnenia“ a „Koniec rozmiestenia“ ľavý horný a pravý dolný roh tejto<br />
plochy.<br />
Definovanie vzťažných súradníc<br />
sirka_moznosti := DisplayX@"Koniec rozmiestnenia" -<br />
DisplayX@"Začiatok rozmiestnenia"<br />
rozostup_moznosti := (DisplayY@"Koniec rozmiestnenia" -<br />
DisplayY@"Začiatok rozmiestnenia") / lok_pocet_moznosti<br />
X := DisplayX@"Začiatok rozmiestnenia" + 310 -- Súradnice prvej<br />
–– možnosti<br />
Y := DisplayY@"Začiatok rozmiestnenia" + rozostup_moznosti / 2<br />
Interakcia s názvom „Otázka (viac spra. z N)“ obsahuje ikonu (výpočet) „~MatchedEver“.<br />
Táto ikona zablokuje tlačítka na pohyb medzi otázkami v prípade, že užívateľ začal<br />
odpovedať na otázku (vybral hociktorú možnosť).<br />
lok_odpoved_je_spravna<br />
67
V prípade, že užívateľ odpovedal správne, táto mapa zistí, na koľký pokus odpovedal správne<br />
a podľa toho pridelí daný počet bodov (je uložený v poli lok_body) a zabezpečí výpis<br />
hlásenia. Nachádza sa v nej podmienka „Odozva pri spravnej odpovedi“, v ktorej sú tri mapy<br />
: Správne na 1x, Správne na 2x a Správne na 3x. Všetky tri obsahujú hlásenia o správnom<br />
zodpovedaní otázky prislúchajúce poradovému číslu pokusu, na ktorý bola otázka správne<br />
zodpovedaná a príkaz, ktorý zapíše do poľa otazky počet získaných bodov.<br />
Interakcia s názvom „Otázka (viac správ. z N)“ obsahuje tlačidlo „Skontroluj“ a tlačidlá, ktoré<br />
reprezentujú možnosti „Možnosť N“ odpovede na túto otázku. v prípade, že užívateľ stlačí<br />
niektoré z tlačidiel slúžiace na vyznačenie odpovede, tak sa do poľa uziv_odpoved zapíše tú<br />
možnosť, ktorú vybral. Ak táto možnosť bola v okamihu stlačenia vybratá, na dané miesto<br />
poľa uziv_odpoved zapíše prázdny reťazec (možnosť sa odznačí). Keď užívateľ vyberie<br />
všetky možnosti, ktoré pokladá za správne, stlačí tlačidlo „Skontroluj“.<br />
Skontroluj<br />
Program potom vstúpi do mapy prislúchajúcej tomuto tlačidlu, v ktorej je podmienka<br />
s názvom „Aká je odpoveď ?“. Táto podmienka zistí, či užívateľom vybraná odpoveď je<br />
správna. Ak áno, do premennej lok_odpoved_je_spravna zapíše TRUE. Ak je nesprávna,<br />
skočí do mapy „Nesprávna“.<br />
Nesprávna<br />
V nej sa nachádza príkaz „Zvysenie poctu chyb. odpovedi“, v ktorom sa hodnota premennej<br />
lok_chybnych_odpovedi zvýši o 1. Za ňou je podmienka „odozva pri nespravnej odpovedi“,<br />
ktorá zistí, či sa užívateľ pomýlil prvý, alebo druhý krát. V nej sa nachádzajú mapy, ktoré<br />
užívateľovi vypíšu príslušné hlásenie (pomocný text).<br />
V prípade, že sa užívateľ pomýlil trikrát, v premennej lok_chybnych_odpovedi bude zapísané<br />
číslo 3. Program potom automaticky skočí do mapy „lok_chybnych_odpovedi=3“.<br />
68
lok_chybnych_odpovedi=3<br />
V ikone „Otázku si nezodpovedal“ je uložené príslušné hlásenie. Ikona „zapis 0 body“ zapíše<br />
do poľa otazky 0 (informáciu o tom, že užívateľ získal 0 bodov). Ikona „zapis kolko pokusov“<br />
zapíše do poľa otázky na koľký pokus užívateľ otázku nezodpovedal (tu vždy zapíše 3). Po<br />
tom program opustí interakciu.<br />
Ikona zmazanie možností slúži na zmazanie textov možností, aby sa tam mohli zobraziť<br />
možnosti ďalšej otázky.<br />
Ikona „povolenie tlačítok“ povolí používanie tlačítok „Späť“ a „Ďalej“, ktoré sú počas<br />
odpovedania na otázku zakázané.<br />
Zapíš zvyšné informácií o zodpovedaní otázky<br />
pocet_bodov := pocet_bodov + otazky[cislo_otazky][4]<br />
vsetkych_bodov := vsetkych_bodov + lok_body[1]<br />
cas_testovania := cas_testovania + otazky[cislo_otazky][5]<br />
zostavajucich_otazok := zostavajucich_otazok - 1<br />
Program zapíše do poľa „otazky“ čas strávený pri odpovedaní na túto otázku, k celkovému<br />
počtu bodov (premenná pocet_bodov) pripočíta počet bodov, ktoré užívateľ získal za<br />
odpovedanie tejto otázky. K celkovému počtu bodov, ktoré je možné získať za správne<br />
zodpovedanie všetkých otázok (premenná vsetkych_bodov) pripočíta počet bodov, ktoré bolo<br />
možné získať za správne zodpovedanie tejto otázky a k celkovému času testovania (premenná<br />
cas_testovania) pripočíta čas, ktorý užívateľ strávil pri odpovedaní na túto otázku. Na koniec<br />
a inkrementuje počet zostávajúcich otázok (premenná zostavajucich_otazok).<br />
Aktualizácia informácií<br />
informacny_retazec := ""<br />
repeat with lok_index := 1 to pocet_otazok<br />
if lok_index < 100 then<br />
if lok_index < 10 then<br />
informacny_retazec := informacny_retazec ^ " "<br />
else<br />
informacny_retazec := informacny_retazec ^ " "<br />
end if<br />
end if<br />
informacny_retazec := informacny_retazec ^ String(lok_index) ^<br />
"\t\t\t\t\t\t\t\t\t\t" ^ String(otazky[lok_index][2]) ^<br />
"\t\t\t\t\t\t\t\t\t" ^ String(otazky[lok_index][4]) ^<br />
"\t\t\t\t\t\t\t\t\t" ^ String(otazky[lok_index][5])^"\r"<br />
end repeat<br />
69
Ikona aktualizuje informačný reťazec o informácie o zodpovedaní tejto otázky tým, že zmaže<br />
a opätovne vytvorí celý informačný reťazec. Podmienka v ikone slúži na zarovnanie čísel<br />
otázok na pravú stranu, aby sa všetky čísla v informačnom reťazci zobrazili rovno pod sebou.<br />
Skok na ďalšiu otázku<br />
Výpočet, ktorý je k tejto ikone pripojený vypočíta číslo ďalšej ešte nezodpovedanej otázky,<br />
zablokuje, alebo povolí tlačidlá Späť a Ďalej, a ak sa nenachádza práve na poslednej otázke,<br />
skočí na ďalšiu otázku. Presnejšie povedané skočí na mapu H_Rozhodni, ktorá zabezpečí<br />
skok na ďalšiu otázku.<br />
Práca s databázou<br />
Mapa Volanie databázy<br />
Pri každom použití databázy sa nachádza skok do mapy „Volanie databázy“. Táto mapa<br />
obsahuje 4 ikony. Pomocou funkcie DB_ODBCOpen, ktorej parametrami sú nami zadané<br />
parametre databázy : ukazovateľ na okno, premenná, do ktorej sa zapíše prípadné chybové<br />
hlásenie databázy, meno databázy, meno administrátora a heslo prístupu do databázy. Táto<br />
funkcia vráti ukazovateľ na databázu, ktorý sa zapíše do premennej DB_ODBCHandle. Ďalej<br />
nasleduje ikona „Zadaj SQL príkaz“. Táto pomocou funkcie ODBCExecute zadá databáze<br />
parametre ukazovateľa na databázu (premennú DB_ODBCHandle) a SQL príkaz, ktorý<br />
chceme databáze zadať (premennú DB_SQLString). Výstup databázy sa tu uloží do<br />
premennej DB_ODBCData. Nasledujúca ikona s názvom „Skontroluj, či nedošlo k chybe pri<br />
práci s databázou“ analyzuje premennú DB_ODBCError, do ktorej predošlá databázová<br />
funkcia zapísala chybové hlásenie (v prípade, že došlo k chybe). Ak je táto premenná prázdna,<br />
k chybe nedošlo. Ak chyba nastala, do premennej DB_ODBCData sa zapíše text: “ Doslo k<br />
chybe. ODBC ovladac vratil nasledujuce hlasenie: “ a doplní sa k nemu príslušné chybové<br />
hlásenie z premennej DB_ODBCError. Ďalšia ikona - „Uzavri databázu“ – uzavrie databázu<br />
pomocou funkcie ODBCClose, ktorej parametrom je DB_ODBCHandle. Vynuluje premenné<br />
DB_ODBCError a DB_ODBCHandle aby ich bolo možné použiť pri ďalšom volaní databázy.<br />
Skok „Exit“ na konci mapy slúži na návrat programu na miesto, odkiaľ bola táto mapa volaná.<br />
70
Výber modulu<br />
Tu má užívateľ možnosť vybrať si tému (modul) testu , ktorý chce spustiť. Moduly sú<br />
rovnaké pre samostatné aj hodnotené testovania. Po výbere modulu nasleduje výber podtémy.<br />
Každý z modulov obsahuje 4, alebo 5 podtém. Je možné vybrať aj test skladajúci sa z otázok<br />
zo všetkých modulov, alebo zo všetkých podtém prislúchajúcich k danému modulu.<br />
Z obrazovky „Výmer modulu“ má užívateľ pomocou tlačidla Späť možnosť vrátiť sa do<br />
hlavného menu. Podobne sa užívateľ môže z výber podtémy vrátiť pomocou tlačidla Späť<br />
vrátiť do výberu modulu.<br />
Obr. 7: Výber modulu<br />
71
Mapa Výber modulu<br />
Je volaná na začiatku samostatného, aj hodnoteného testovania. Prvá ikona „Vyber tem.psd“<br />
je obrázok z knižnice, v ktorom sú uložené obrázky šiestich základných modulov. Tieto<br />
obrázky tvoria pozadie pri práci s touto mapu. V ikone „Nastavenie konštantného<br />
začiatočného čísla testov“ priradí premennej cislo_testu (ktorá v celom programe reprezentuje<br />
číslo testu, ktorý chce užívateľ spustiť) konštantné prvé šesťčíslie všetkých testov použitých<br />
v tomto programe. Za ňou nasleduje interakcia s názvom „Výber modulu“. Táto obsahuje 7<br />
tlačidiel, z ktorých prvých 6 sú hlavné moduly (hlavné témy testov). Posledné tlačidlo<br />
Všetky, reprezentuje všetky testy. V prípade, že užívateľ stlačí jedno z prvých šiestich<br />
tlačidiel, do premennej cislo_testu sa doplní ďalšie dvojčíslie reprezentujúce modul<br />
testovania. V prípade, že stlačí tlačidlo Všetky, do premennej sa doplní reťazec “____” ( štyri<br />
podčiarkovníky), čo znamená, že užívateľovi budú kladené otázky zo všetkých modulov a<br />
všetkých podtém. Ak stlačí jedno z prvých šiestich tlačidiel, má možnosť vybrať si z ďalších<br />
podtém vybraného modulu. Program vstúpi do mapy prislúchajúcej stlačenému tlačidlu:<br />
Typy sietí<br />
Tá obsahuje ikonu s príkazom na doplnenie spomenutého dvojčíslia a interakciu obsahujúcu<br />
niekoľko tlačidiel (toľko, koľko je podtém vo vybranom module + tlačítko všetky). Tu výber<br />
prebieha podobným spôsobom, ako výber modulu. Ak užívateľ stlačí tlačítko všetky, do<br />
premennej cislo_testu sa doplní len “__“ (dva podčiarkovníky). Takto budú užívateľovi<br />
kladené všetky otázky z daného modulu. Po tomto výbere program opustí obe interakcie a<br />
skok „Exit“ zabezpečí jeho návrat na miesto, odkiaľ bola mapa volaná.<br />
72
Popis tém, z ktorých sú otázky<br />
Program v súčasnosti využíva otázky z prvých šiestich modulov kurzu počítačových sietí<br />
Microsoft Networking Essentials. Tieto otázky sú uložené v tabuľke Otazky, ktorá sa dá<br />
ľubovoľne rozširovať, alebo meniť bez akéhokoľvek zásahu do programu. Každý zo<br />
spomenutých modulov obsahuje ešte niekoľko podtém, ktorým sa venujú príslušné kurzy.<br />
Mená modulov ako aj k nim prislúchajúcich podtém sú uvedené v nasledujúcom prehľade:<br />
1. Typy sietí<br />
• Sieťovanie<br />
• Siete typu Peer-to-peer<br />
• Siete na serverovom základe<br />
2. Prepájanie sietí<br />
• Úvod do prepojovania sietí<br />
• Sieťové kabeláže<br />
• Bezdrôtové siete LAN<br />
• Rozšírenia sietí LAN<br />
3. Sieťové karty<br />
• Úvod do sieťových kariet<br />
• Práca so sieťovými kartami<br />
• Sieťové záležitosti<br />
4. Sieťové modely a ovládače<br />
• Model OSI<br />
• Model 802<br />
• Ovládače sietí<br />
5. Prenos dát<br />
• Pakety<br />
• Princípy protokolov<br />
• Spoločné protokoly<br />
• Princípy prístupových metód<br />
6. Architektúry sietí<br />
• Štandardné topológie<br />
• Ethernet<br />
• Token Ring<br />
• AppleTalk a ARCnet<br />
73
Automatická inštalácia databázy<br />
Táto mapa je pri spustení aplikácie volaná z mapy „Úvod“ a slúži na overenie funkčnosti<br />
databázy. Zistí, či je databáza správne nainštalovaná a ak nieje, zabezpečí jej inštaláciu.<br />
Mapa Automatická inštalácia databázy<br />
Ikona Otvor databázu sa pomocou funkcie ODBCOpen() pokúsi otvoriť databázu. Jej<br />
zdrojový kód je:<br />
DB_ODBCHandle := ODBCOpen(WindowHandle;"DB_ODBCError"; meno_databazy<br />
; meno_administratora ; heslo_databazy)<br />
Ak nastala pri otváraní databázy chyba, ODBC zapíše chybové hlásenie do premennej<br />
DB_ODBCError.<br />
Podmienka „Je databáza OK?“ overí, že je v premennej DB_ODBCError niečo zapísané. Ak<br />
je táto premenná prázdna, čiže chyba nenastala, ikona „Uzavri databázu“ pomocou funkcie<br />
ODBCClose() uzavrie databázu a skok Exit vráti program naspäť do mapy Úvod.<br />
Ak je v premennej DB_ODBCError je niečo zapísané, znamená to, že nastala chyba a<br />
program vstúpi to mapy „Automatická inštalácia databázy“.<br />
74
Mapa Automatická inštalácia databázy<br />
(patrí do mapy s rovnakým menom)<br />
nterakcia ďalej upozorní užívateľa na fakt, že je bola zaznamenaná chyba databázy, a že<br />
databázu treba nainštalovať. Stlačením tlačidla Ďalej užívateľ pokračuje v inštalácii.<br />
Ikona „Open File Dialog Knowledge Object“ obsahuje dialóg, pomocou ktorého užívateľ<br />
vyberie súbor s databázou.<br />
Výpočet „Automatická inštalácia databázy“ pomocou funkcie tMsDBRegister() zabezpečí<br />
samotnú inštaláciu databázy. Jej parametrami sú:<br />
• DB ReqType - Číslo pomocou ktorého povieme funkcii, čo chceme s databázou<br />
robiť. Číslo 4 znamená, že chceme inštalovať systémové DSN.<br />
• DB Type - Typ databázy. V našom prípade: „Microsoft Access Driver (*.mdb)“<br />
• DB List - Reťazec, do ktorého zapíšeme ďalšie parametre databázy, ktoré<br />
musíme oddeliť znakom ‘;’ (bodkočiarka).<br />
V samotnom výpočte sú tieto parametre vysvetlené podrobnejšie.<br />
Výsledná funkcia by mohla byť zapísaná napríklad takto:<br />
tMsDBRegister( 4 ; Microsoft Access Driver (*.mdb) ; "DSN=main;<br />
Description=Databaze pre aplikacie Testovaci system a Learning<br />
management system; Access; C:\\database\\main.mdb;" )<br />
Tu treba pripomenúť, všetky parametre tejto funkcie použité vo výpočte „Automatická<br />
inštalácia databázy“ sú nemenné, okrem cesty k súboru s databázou, ktorú zistíme<br />
z návratovej hodnoty ikony „Open File Dialog Knowledge Object“<br />
Podmienka „Je už databáza OK“ overí, či inštalácia databázy prebehla v poriadku. Spraví to<br />
presne takým istým spôsobom, ako mapa „Automatická inštalácia databázy“, ktorá je<br />
popísaná na predošlej strane. Ak ani teraz nieje databáza nainštalovaná správne, skok<br />
s názvom „Skús ju nainštalovať znovu“ skočí do mapy „Automatická inštalácia databázy“ (jej<br />
popis ja na predošlej strane) a celý proces sa začne odznova.<br />
75
Koniec aplikácie<br />
Je uložená v rovnomennom frameworku. Slúži na definitívne ukončenie celého programu a<br />
odhlásenie užívateľa zo systému. Je volaná z viacerých miest v celom programe.<br />
Koniec aplikácie<br />
Obsahuje interakciu s názvom „Chceš ukončiť aplikáciu?“, v ktorej program užívateľovi<br />
zobrazí dialóg, v ktorom sa ho pýta, či chce skutočne ukončiť aplikáciu. V prípade, že stlačí<br />
„Nie“ program sa vráti na miesto, odkiaľ bola táto mapa volaná. Ak stlačí „Áno“, program<br />
vojde do mapy s menom „Áno“.<br />
Áno<br />
Zapísanie času odhlásenia do databázy<br />
DB_SQLString := "UPDATE "^meno_tabulky_logov^" SET<br />
[Datum_Odhlasenia] = '"^Date^"' , [Cas_Odhlasenia] = '"^FullTime^"'<br />
WHERE [Rodne_Cislo] LIKE '"^rodne_cislo^"' AND [Datum_Prihlasenia]<br />
LIKE '"^datum_prihlasenia^"' AND [Cas_Prihlasenia] LIKE<br />
'"^cas_prihlasenia^"' AND [Meno_pocitaca] LIKE '"^meno_pocitaca^"'<br />
;"<br />
Vytvorí SQL príkaz, ktorý zapíše údaje o odhlásení zo systému do dataabázy. Tento príkaz<br />
zmení riadok databázy, ktorý bol vytvorený pri prihlásení do systému tak, že k údajom, ktoré<br />
sú tam zapísané doplní dátum a čas odhlásenia zo systému. Výsledný SQL prííkaz môže<br />
vyzerať napríklad takto:<br />
UPDATE Log SET [Datum_Odhlasenia] = '21.04.2001' , [Cas_Odhlasenia]<br />
= '10:29:41' WHERE [Rodne_Cislo] LIKE '830424/7855' AND<br />
[Datum_Prihlasenia] LIKE '21.04.2001' AND [Cas_Prihlasenia] LIKE<br />
'10:04:32' AND [Meno_pocitaca] LIKE 'PC01' ;<br />
Ikona „Zadanie SQL príkazu“ odovzdá vytvorený príkaz databáze. Ikona „Definitívny koniec<br />
aplikácie“ pomocou funkcie Quit() definitívne ukončí celú aplikáciu.<br />
76
Záver<br />
Snaha o zobjektívnenie hodnotenia študentov si stále viac vynucuje skúšanie, ktoré je<br />
jednoduché, rýchle, objektívne a umožňuje presne porovnávať úroveň študentov podľa ich<br />
nimi dosiahnutých výsledkov, teda skúšanie pomocou didaktických testov.<br />
V budúcnosti sa očakáva ďalší rast počtu multimediálnych aplikácií a programov na<br />
počítačom podporovanú výuku. Ich nepopierateľnou súčasťou budú aj aplikácie na<br />
overovanie dosiahnutých výsledkov. Táto aplikácia vytyčuje ďalší možný smer skúšania a<br />
objektívnejšieho hodnotenia študentov v budúcnosti. Spolu s ďalšími aplikáciami môže<br />
vytvoriť ucelený systém vyučovania, skúšania, hodnotenia a evidencie výsledkov študentov.<br />
Jej ďalší možný rozvoj ju predurčuje na využitie v školstve pri výučbe prakticky<br />
v ľubovoľných predmetov. Jej jednoduchosť umožňuje, aby ju používali aj užívatelia s<br />
elementárnymi znalosťami práce s počítačom.<br />
Takáto a podobné aplikácie sa v budúcnosti pre ich rýchlosť, jednoduchosť a hlavne<br />
objektívnosť stanú nenahraditeľnými pomôckami pri hodnotení vedomostí žiakov či už<br />
v školstve, alebo ako sprievodné aplikácie multimediálnych výučbových CD.<br />
Program je vytvorený len na testovanie študentov z oblasti počítačových sietí v šiestich<br />
hlavných oblastiach, z ktorých každá má niekoľko kapitol. Dokopy obsahuje približne 500<br />
otázok. Jedno z jeho možných vylepšení spočíva v rozšírení okruhov a to nie len z oblastí<br />
súvisiacich s počítačovými sieťami, ale prakticky z ľubovoľných predmetov a ľubovoľných<br />
tém. Na to, aby program umožňoval tento cieľ dosiahnuť je potrebná modifikácia algoritmov<br />
pracujúcich s kódom testu tak, aby dokázali namiesto s pevne zadanými premennými<br />
pracovať s dynamicky získanými údajmi z databáz. Ďalej by bolo potrebné úplné , ale<br />
jednoduché prepracovanie dialógov slúžiacich na Výber modulu a samozrejme aj patričné<br />
prispôsobenie databázy.<br />
Ďalší vývoj programu spočíva hlavne v pridávaní ďalších otázok z tém, ktoré sú už vytvorené,<br />
alebo pridávaní ďalších testov, nových tém a nových otázok. V prípade, že sa tento program<br />
úspešne uchytí medzi pedagógmi, budú tieto zlepšenia v budúcnosti prebiehať automaticky,<br />
lebo sa stanú samozrejmosťou a nutnosťou jeho ďalšieho úspešného fungovania. Hlavné<br />
rozšírenie programu teda spočíva v rozšírení zdrojov údajov – otázok a testov – ktoré program<br />
využíva.<br />
77
Použitá literatúra<br />
• Bc. Ivan Glos: Diplomová práca, Špecifický pohľad na tvorbu multimediálnych aplikácií<br />
78