[ Pobierz całość w formacie PDF ]
.Wszystkie trzyfunkcje bêd¹ omówione w sekcji im poœwiêconej.Zmienne globalneZaraz za instrukcj¹ powoduj¹c¹ w³¹czenie pliku Ÿród³owego JavaScriptquestions.js w wierszu 5 mo¿na znaleŸæ zmienne globalne u¿ywane w aplikacji.Oto wiersze 5 do 22:var qIdx = 0;var correct = 0;var howMany = 50;var keeper = new Array();var rank = new Array('Nie obraŸ siê, ale potrzebna Ci pomoc.','Byli i tacy, co zrobili jeszcze gorzej.','Cosik tam wiesz.Przynajmniej tego nie zapomnij.','Zdaje siê, ¿e pracujesz nad swoj¹ wiedz¹.','Lepiej od przeciêtnego niedŸwiedzia.','Jesteœ niez³ym programist¹ JavaScriptu.','Jesteœ znawc¹ JavaScriptu.', 'Jesteœ doskona³y w JavaScripcie.','Og³aszam Ciê guru JavaScriptu.');var stopOK = false;var nextQ = '';var results = '';var aFrame = parent.frames[1];var qFrame = parent.frames[2];Na poni¿szej liœcie opisujemy znaczenie poszczególnych zmiennych.Dok³adniejprzyjrzymy siê im przy omawianiu poszczególnych funkcji.qldxZmienna u¿ywana do monitorowania bie¿¹cego pytania, wyœwietlanego na ekranie.correctZmienna rejestruj¹ca liczbê poprawnych odpowiedzi podczas oceny testu.howManyNiezmienna liczba okreœlaj¹ca liczbê pytañ, na które odpowiadaæ ma u¿ytkownik.keeperPocz¹tkowo pusta tablica, zawiera odpowiedzi udzielone przez u¿ytkownika.rankTablica napisów okreœlaj¹cych poziom umiejêtnoœci.stopOKZmienna logiczna okreœlaj¹ca, czy przerwaæ test.nextQPusty napis, któremu przypisywany jest tekst kolejnych pytañ.resultsPocz¹tkowo napis pusty, póŸniej ocena testu.aFrameProsta metoda odwo³ania siê do drugiej ramki.qFrameProsta metoda odwo³ania siê do trzeciej ramki.FunkcjeTeraz przechodzimy do funkcji.Zaczniemy od itemReset().itemReset()Pierwsza z funkcji wywo³ywanych w aplikacji to itemReset().Pojawia siê, kiedyu¿ytkownik wciœnie przycisk Zaczynamy (wiersze 128-129):itemReset() przywraca zmiennym globalnym ich pierwotne wartoœci i mieszazawartoœæ tablicy obiektów pytañ (wiêcej o mieszaniu ju¿ wkrótce).Spójrzmyna wiersze 31–37:function itemReset() {qIdx = 0;correct = 0;stopOK = false;keeper = new Array();shuffle();}Warto zwróciæ uwagê, ¿e u¿ytkownik nie widzia³ jeszcze pierwszego pytania,a JavaScript ju¿ napracowa³ siê przy ustawianiu zmiennych globalnych.Po co?Za³Ã³¿my, ¿e ju¿ test rozwi¹zaliœmy i tylko na dwa pytania odpowiedzieliœmypoprawnie wtedy wciskamy jeszcze raz przycisk Zaczy­namy.Jednak wielezmiennych globalnych ma ju¿ ró¿ne nieoczekiwane wartoœci i tym w³aœnie zajmujesiê funkcja itemReset(): odœwie¿a wartoœci tych zmiennych.Zauwa¿my, ¿e nie dotyczy to zmiennej howMany.Wartoœæ ta pozostaje niezmiennaprzez ca³y czas dzia³ania aplikacji.Zmienne netQ i results na pocz¹tku maj¹ci¹g pusty jako wartoœæ, ale ich wartoœci nie s¹ zerowane.Nie ma po prostutakiej potrzeby.Zajrzyjmy do wierszy 43 i 86, a zoba­czymy, jak te zmienne s¹ustawiane na bie¿¹co.Kiedy zmienne s¹ ju¿ odpowiednio ustawione, mo¿na wywo³aæ w wierszu 36 funkcjêshuffle().shuffle()Ta ma³a funkcja daje administratorowi testu ogromn¹ elastycznoœæ – zmienia onalosowo kolejnoœæ pytañ, dziêki czemu daje prawie pewnoœæ, ¿e testowany dostanieza ka¿dym razem inny zestaw.Aby unaoczniæ wynikaj¹ce z tego mo¿liwoœci,przypomnijmy, ¿e liczba mo¿liwych kombinacji (ró¿nych uporz¹dkowañ) pytañ testuwynosi n(n-1), przy czym n to liczba pytañ.Zatem najmniej­szy nawet tekstz dziesiêciu pytañ da 10*(10–1) kombinacji, czyli 90.W przypadku testu z 20pytañ mo¿liwoœci jest ju¿ 380.Z kolei test z 50 pytañ oznacza 2 450 mo¿liwychkombinacji.To mo¿e byæ nieciekawa wiadomoœæ dla oszustów.Test jest tak¿e niepowtarzalny dlatego, ¿e choæ ca³a tablica units ma 75 pytañ,zmienna howMany ustawiana jest na 50.Kiedy skoñczy siê mieszanie, wybieranychjest 50 pierwszych pytañ.Wobec tego istnieje du¿a szansa, ¿e zestaw nastêpnych50 pytañ jest inny, ni¿ pierwsze 50.Oznacza to, ¿e w teœcie tym istniej¹tysi¹ce mo¿liwych kombinacji pytañ.Zdumiewaj¹ce, jak prosty jest procesmieszania tych¿e pytañ.Oto wiersze 23 do 30:function shuffle() {for (var i = 0; i < units.length; i++) {var j = Math.floor(Math.random() * units.length);var tempUnit = units[i];units[i] = units[j];units[j] = tempUnit;}}Dla ka¿dego elementu tablicy units:Wybierana jest przypadkowa liczba miêdzy 0 a units.length - 1.Wartoœæ zmiennej lokalnej tempUnit ustawiana jest na bie¿¹cy indeks (units[i]).Wartoœæ elementu bie¿¹cego indeksu (units[i]) ustawiana jest na wartoœæelementu o przypadkowym indeksie ca³kowitym (units[j]).Wartoœæ elementu o przypadkowym indeksie staje siê równa wartoœci zmiennejlokalnej tempUnit.Innymi s³owy, kolejno przegl¹dane s¹ wszystkie elementy tablicy i parami s¹zamieniane wartoœci z losowo wybranym elementem.Pytania zosta³y ju¿ zatem losowo wymieszane i czekaj¹ na u¿ytkownika.buildQuestion()Funkcja ta pe³ni rolê administratora testu.Jak zapewne ³atwo zauwa¿yæna poprzednim schemacie, buildQuestion() jest u¿ywana kilkakrotnie.Spoczywana niej wielka odpowiedzialnoœæ [ Pobierz caÅ‚ość w formacie PDF ]

  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • listy-do-eda.opx.pl