Programmier-Informationen
"Einfache Rechenaufgaben"


Beschreibung

Alle Programme dieser Gruppe sind vom gleichen Muster bzw. voneinander abgeleitet. Sie unterscheiden sich lediglich in der Art der Aufgabenstellung:

Das Programm soll einfach Rechenaufgaben stellen und das Ergebnis vom Schüler abfragen. Dabei soll eine Statistik geführt werden, die jederzeit abgerufen werden kann und anzeigt, wie viele der Aufgaben richtig und wie viele falsch bzw. garnicht gerechnet wurden.

Das Stellen der Aufgabe ist nicht weiter kompliziert: Die beiden Operanden werden per Zufallszahlengenerator bestimmt und dem Schüler angeboten. Die Lösung muss in das Eingabefeld eingetragen werden. Wenn der Schüler den OK-Button anklickt oder die Return-Taste drückt, wird über die Funktion "Check" das eingegebene Ergebnis mit dem berechneten Ergebnis überprüft.

Die Aufgabenstellung wird als String erstellt, um sie später in der Rückmeldung verwenden zu können. Das erleichtert auch die Erstellung von Ableitungen dieser Übungsaufgabe.

Genauso wird die Überschrift der Aufgabe nicht noch einmal als HTML-Text eingegeben sondern aus dem <TITLE>-Tag ausgelesen.

Die Erfassung der statistischen Daten ist etwas komplexer, da diese Daten über die gesamte Sitzung erhalten bleiben müssen. Alternativ zu der hier verwendeten Lösung könnte dafür auch ein Cookie verwendet werden. Die hier verwendete Lösung habe ich gewählt, weil sie einfacher ist als ein Cookie. Allerdings funktioniert diese Methode nur, wenn von dem Aufgabenfenster aus nicht auf andere HTML-Seiten verzweigt wird!

Ich nutze in meiner Lösung aus, dass HTML beim Abschicken eines Formulars mit der GET-Methode (<FORM METHOD="GET">) die Werte der Eingabefelder an die URL anhängt, wenn diese an den Server geschickt wird. Da die URL nicht verändert wird - also auf keine andere HTML-Seite verzweigt wird oder ein CGI-Programm aufgerufen wird - wird die gleiche HTML-Seite wieder von neuem aufgebaut. Die statistischen Daten vom letzten Aufruf entnehme ich nun einfach der Aufruf-URL. (Hinweis: document.URL liefert bei Netscape und IE unterschiedliche Ergebnisse, besser window.location.href verwenden!)

Damit meine statistischen Daten als Eingabefelder erscheinen, verwende ich die sogenannten versteckten Felder (<INPUT TYPE="HIDDEN>).

Erstellung von weiteren Aufgaben dieser Art

Um weitere Aufgaben von diesem JavaScript abzuleiten müssen Sie an folgenden Stellen Änderungen vornehmen (alle Stellen sind im Source-Code mit 3 Ausrufezeichen markiert):


...
<TITLE>Addieren einstelliger Zahlen</TITLE> <!-- !!! -->
...

// !!! Fuer neue Aufgaben hier anpassen !!!
nOp1 = GetInt( 9 );
nOp2 = GetInt( 9 );
sTask = nOp1 + " + " + nOp2;
nXRes = nOp1 + nOp2;
// !!! Ende !!! ///

  1. Der Text ab dem <TITLE>-Tag wird als Überschrift der HTML-Seite verwendet
  2. nOp1 und nOp2 sind die beiden Operanden, in diesem Beispiel sind es zwei Zufallszahlen zwischen 1 und 9.
  3. In der nächsten Zeile wird die zu berechnende Formel zusammengestellt, wie sie als Aufgabe erscheinen soll: hier die Addition des ersten und des zweiten Operanden mit einem einfachen Plus-Zeichen als Operator. Dieser Text wird auch in der Fehlermeldung verwendet. Sie können hier andere Operatoren zur Darstellung der Aufgabe verwenden als JavaScript für die Rechnung benötigt: zum Beispiel " x " statt " * " oder " : " statt " / ". Wenn Sie den Mal-Punkt " · " verwenden wollen, müssen Sie Folgendes eingeben: ... + unescape(" %b7 ") + ... . Dann erscheint der Aufgabentext auch richtig in der Rückmeldung.
  4. Die letzte Zeile berechnet das erwartete Ergebnis.

Aus den abgeleiteten Beispielen dieser Aufgabe können Sie mit diesen Informationen leicht herauslesen, welche Änderungen gegebenenfalls erforderlich sind. Zum Beispiel sollten bei einfachen Substraktionsaufgaben sichergestellt sein, dass das Ergebnis nicht negativ wird, d.h. der erste Operand sollte größer oder gleich dem zweiten sein. Dann müssen die Aufgabe wie folgt anpassen (die Änderungen sind fett markiert):


...
<TITLE>Subtrahieren einstelliger Zahlen</TITLE> <!-- !!! -->
...

// !!! Fuer neue Aufgaben hier anpassen !!!
nOp1 = GetInt( 9 );
nOp2 = GetInt( 9 );
if( nOp1 < nOp2 )
{
var nOp = nOp2;
nOp2 = nOp1;
nOp1 = nOp;
}

sTask = nOp1 + "-" + nOp2;
// !!! Ende !!! ///



Last Update:
[Impressum] [Feedback] [Home]