15.06.2015 Views

Maturitná práca - matus - Matúš Kováčik

Maturitná práca - matus - Matúš Kováčik

Maturitná práca - matus - Matúš Kováčik

SHOW MORE
SHOW LESS

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

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!