Gambas: Rechentrainer

Aus Wikibooks

Zurück zu Gambas


Lernprogramm zum Addieren ( Zusammenzählen)[Bearbeiten]

Mit diesem kleinen Lernprogramm können Sie Addieren ( Zusammenzählen) lernen

Sie brauchen für das Programm eine grafische Form und

  • 6 Textboxen
  • 3 Commandbuttons

Das Programm erzeugt 2 Zufallszahlen a und b. Diese werden addiert mit dem Ergebnis c = a + b. In einer Textbox (hier: textbox5) gibt der Nutzer sein Ergebnis d ein. Diese wird durch den Befehl TESTEN mit dem wahren Ergebnis c überprüft.

Sie sollten die Commandbuttons folgendermassen bezeichnen:

  • Button1 = Ende
  • Button2 = Neue Aufgabe
  • Button3 = Testen

Ändern Sie den Text der Commandbuttons im Eigenschaftsfenster entsprechend um.

Das Programm vergleicht d mit dem korrekten Ergebnis c in einem Unterprogramm bewertung und gibt das Ergebnis in einer der Textboxen aus. Die Gesamtzahl der Aufgaben , die Zahl der richtigen Aufgaben und die Zahl der falschen Aufgaben wird in 3 weiteren Textboxen ausgegeben.

Der Code dazu:

' Gambas class file
PUBLIC a AS Integer
PUBLIC b AS Integer
PUBLIC c AS Integer 
PUBLIC SUB Form_Open()
z AS Integer 
'zahl der Aufgaben
r AS Integer
'zahl der richtigen Aufgaben
f AS Integer
'Zahl der falschen Aufgaben
z = 0
r = 0
f = 0
Textbox1.Text = ""
TextBox2.Text = Str(z)
TextBox3.Text = Str(r)
TextBox4.Text = Str(f)
Textbox5.Text = ""
Textbox6.Text = ""
END
PUBLIC SUB Button1_Click()
ME.Close
END
PUBLIC SUB Button2_Click()
z AS Integer 
r AS Integer
f AS Integer
d AS Integer
z = Val(textbox2.text)
z = z + 1
Randomize()
   ' Rem Zähler für die Zahl der Aufgaben
   a = Int(Rnd(1) * 10)
   'Rem Zufalls Zahl holen
   b = Int(Rnd(1) * 10)
   'Rem zweite Zufallszahl holen
   c = a + b 
   PRINT c
   textbox1.Text = " Addiere " & Str$(a) & " und " & Str$(b) & " überprüfe das Ergebnis"
textbox2.Text = Str(z)
END
PUBLIC SUB Button3_Click()
d AS Integer 
d = Val(Textbox5.text)
bewertung
CATCH 
IF ERROR THEN message.Info("Bitte geben Sie ihr Ergebnis in der Textbox neben dem Button TESTEN ein!")
END
SUB bewertung ()
r AS Integer
d AS Integer
f AS Integer
r = Val(textbox3.text)
d = Val(textbox5.text)
f = Val(textbox4.text)
IF d = c THEN textbox6.Text = "Richtig: "  & Str$(a) & " + "  & Str$(b) & " = " & Str(c)
IF d = c THEN r = r + 1
textbox3.Text = Str(r)
IF d <> c THEN textbox6.Text = "Falsch !! Richtig wäre gewesen "
IF d <> c THEN textbox6.Text = textbox6.Text & Str$(a)& " + " & Str$(b) & " = " & Str$(c)
IF d <> c THEN f = f + 1
textbox4.Text = Str(f)
END

Haben Sie das Programm in gang gebracht ? Was hier fehlt ist ein Übersichtsbild der Form. Das wird noch nachgeliefert. Wenn Sie die Variablen d,r,f,z noch als public vor den Unterprogrammen deklarieren, können Sie den Code noch deutlich vereinfachen.

Jetzt versuchen Sie einmal das Programm zu variieren:

  • Erstellen Sie ein neues Programm mit Zufallszahlen bis 100.
  • Erstellen Sie ein neues Programm mit der Multiplikation als Ergebnis.

Lernprogramm zum Subtrahieren ( Abziehen)[Bearbeiten]

Mit diesem kleinen Lernprogramm können Sie subtrahieren ( Abziehen) lernen

Sie brauchen für das Programm eine grafische Form und

  • 3 Textboxen
  • 3 Commandbuttons

Das Programm erzeugt 2 Zufallszahlen a und c. Diese werden von einander abgezogen mit dem Ergebnis c = a - b. In einer Textbox (hier: textbox5) gibt der Nutzer sein Ergebnis d ein. Diese wird durch den Befehl TESTEN mit dem wahren Ergebnis c überprüft.

Sie sollten die Commandbuttons folgendermassen bezeichnen:

  • Button1 = Ende
  • Button2 = Neue Aufgabe
  • Button3 = Testen

Ändern Sie den Text der Commandbuttons im Eigenschaftsfenster entsprechend um.

Das Programm vergleicht d mit dem korrekten Ergebnis c in einem Unterprogramm bewertung und gibt das Ergebnis in einer der Textboxen aus.

Im Unterschied zum Addier-Lernprogramm erfolgt keine Zählung der Aufgaben.

Der Code dazu:


' Gambas class file
PUBLIC a AS Integer
PUBLIC b AS Integer
PUBLIC c AS Integer 
PUBLIC d AS Integer
PUBLIC SUB Form_Open()
Textbox1.Text = ""
Textbox5.Text = ""
Textbox6.Text = ""
END
PUBLIC SUB Button1_Click()
 ME.Close
END
PUBLIC SUB Button2_Click()
 Randomize()
   a = Int(Rnd(1) * 10)
   'Rem Zufalls Zahl holen
   c = Int(Rnd(1) * 10)
   'Rem zweite Zufallszahl holen
   b = a - c 
   textbox1.Text = " Subtrahiere " & Str$(a) & " minus " & Str$(b) & " und überprüfe das Ergebnis"
END
PUBLIC SUB Button3_Click()
 d = Val(Textbox5.text)
 bewertung
 CATCH 
 IF ERROR THEN message.Info("Bitte geben Sie ihr Ergebnis in der Textbox neben dem Button TESTEN ein!")
END
SUB bewertung ()
 IF d = c THEN textbox6.Text = "Richtig: "  & Str$(a) & " - "  & Str$(b) & " = " & Str(c)
 IF d <> c THEN textbox6.Text = "Falsch !! Richtig wäre gewesen "
 IF d <> c THEN textbox6.Text = textbox6.Text & Str$(a)& " - " & Str$(b) & " = " & Str$(c)
END

Wieso wurde die Zahl c als Zufallszahl definiert und nicht b ? Wie kann man das Programm ändern , so daß keine negativen Zahlen für b herauskommen können ? Hier fehlt eine Schleife , so daß gilt c < a. Dann wird auch b immer eine positive Zahl sein.

Lernprogramm zum Multiplizieren[Bearbeiten]

Mit diesem kleinen Lernprogramm können Sie Multiplizieren ( Malnehmen) lernen

Sie brauchen für das Programm eine grafische Form und

  • 6 Textboxen
  • 3 Commandbuttons

Das Programm erzeugt 2 Zufallszahlen a und b. Diese werden malgenommen mit dem Ergebnis c = a * b. Das Sternchen ist in der Computersprache das Zeichen der Multiplikation. In einer Textbox (hier: textbox5) gibt der Nutzer sein Ergebnis d ein. Dieses wird durch den Befehl TESTEN mit dem wahren Ergebnis c verglichen.

Sie sollten die Commandbuttons folgendermassen bezeichnen:

  • Button1 = Ende
  • Button2 = Neue Aufgabe
  • Button3 = Testen

Ändern Sie den Text der Commandbuttons im Eigenschaftsfenster entsprechend um.

Das Programm vergleicht d mit dem korrekten Ergebnis c in einem Unterprogramm bewertung und gibt das Ergebnis in einer der Textboxen aus. Die Gesamtzahl der Aufgaben , die Zahl der richtigen Aufgaben und die Zahl der falschen Aufgaben wird in 3 weiteren Textboxen ausgegeben.

Das Programm läßt sich auch ohne Maus bedienen. Deswegen wurden die Keypress Unterprogramme hinzugefügt. Etwas wirr funktioniert die Backspacetaste in der Textbox für die Ergebniseingabe. Deswegen wurde hier eine Umleitung programmiert.

Der Code dazu:

' Gambas class file
PUBLIC a AS Integer
PUBLIC b AS Integer
PUBLIC c AS Integer 
PUBLIC r AS Integer
PUBLIC d AS Integer
PUBLIC f AS Integer
PUBLIC z AS Integer 
PUBLIC SUB Form_Open()
 z = 0
 r = 0
 f = 0
 Textbox1.Text = ""
 TextBox2.Text = Str(z)
 TextBox3.Text = Str(r)
 TextBox4.Text = Str(f)
 Textbox5.Text = ""
 Textbox6.Text = ""
 Button2.Default = TRUE
END
PUBLIC SUB Button1_Click()
 ME.Close
END
PUBLIC SUB Button2_Click()
 textbox5.Text =""
 textbox5.SetFocus
 z = Val(textbox2.text)
 z = z + 1
 Randomize()
   a = Int(Rnd(1) * 10)
   'Rem Zufalls Zahl holen
   b = Int(Rnd(1) * 10)
   'Rem zweite Zufallszahl holen
   c = a * b 
   'PRINT c
   textbox1.Text = " Multipliziere " & Str$(a) & " und " & Str$(b) & " und überprüfe das Ergebnis"
  textbox2.Text = Str(z)
END
PUBLIC SUB Button3_Click() 
 d AS Integer 
 d = Val(Textbox5.text)
 Button2.Default = TRUE
 bewertung
 CATCH 
 IF ERROR THEN message.Info("Bitte geben Sie ihr Ergebnis in der Textbox neben dem Button TESTEN ein!")
END
SUB bewertung ()
r = Val(textbox3.text)
d = Val(textbox5.text)
f = Val(textbox4.text)
IF d = c THEN textbox6.Text = "Richtig: "  & Str$(a) & " mal "  & Str$(b) & " = " & Str(c)
IF d = c THEN r = r + 1
textbox3.Text = Str(r)
IF d <> c THEN textbox6.Text = "Falsch !! Richtig wäre gewesen "
IF d <> c THEN textbox6.Text = textbox6.Text & Str$(a)& " mal " & Str$(b) & " = " & Str$(c)
IF d <> c THEN f = f + 1
textbox4.Text = Str(f)
END
PUBLIC SUB TextBox5_KeyPress()
 t AS String 
 l AS Integer 
 IF key.Code >= 48 AND key.Code <= 57 THEN 
  Textbox1.text = Textbox1.text
 ELSE IF key.Code = key.Return THEN 
  Button3.setfocus
  Button3.Default = TRUE
 ELSE IF key.Code = key.Backspace THEN 
  t = textbox1.Text
  l = Len(t)
  t = Left$(t, l)
  textbox1.Text = t
  'etwas widersinnige Funktion von Backspace
 ELSE IF key.Code = key.Delete THEN 
  Textbox1.Text = ""
 ELSE 
  STOP EVENT 
 ENDIF 
END
PUBLIC SUB Button3_KeyPress()
 IF key.Code = key.Return THEN Button2.setfocus
END

Lernprogramm für die Vergleichszeichen >< und ist gleich[Bearbeiten]

Mit diesem kleinen Lernprogramm können Sie die Bedeutung der Vergleichszeichen trainieren

  • < kleiner als
  • > größer als
  • = ist gleich

Sie brauchen für das Programm eine grafische Form und

  • 5 Textboxen
  • 5 Commandbuttons

Die Form wurde F genannt. Sie können aber auch einfach den Namen Form1 beibehalten.

Das Programm erzeugt 2 Zufallszahlen. Diese werden verglichen und man muß das richtige Zeichen > oder < oder = wählen. Sie sollten die Commandbuttons folgendermassen bezeichnen:

  • Button1 = Ende
  • Button2 = Neue Aufgabe
  • Button3 = >
  • Button4 = "="
  • Button5 = <

Ändern Sie den Text der Commandbuttons im Eigenschaftswindow entsprechend um.

Das Programm vergleicht die Eingabe über die Tasten >,< und = mit dem korrekten Ergebnis in einem Unterprogramm bewertung und gibt das Ergebnis in einer der Textboxen aus. Diese Ergebnistextbox wurde bewert genannt. Sie müssen den Namen der Textbox mit F4 in den Eigenschaften entsprechend verändern.

Der Code dazu:

' Gambas class file
PUBLIC a AS Integer
PUBLIC b AS Integer
PUBLIC c AS Integer 
PUBLIC d AS Integer 
PUBLIC z AS Integer 
PUBLIC r AS Integer
PUBLIC f AS Integer
PUBLIC SUB Form_Open()
 z = 0
 r = 0
 f = 0
 TextBox2.Text = Str(z)
 TextBox4.Text = Str(f)
 TextBox3.Text = Str(r)
END
PUBLIC SUB Button1_Click()
 ME.Close
END
PUBLIC SUB Button2_Click()
 z = z + 1
 ' Zähler für die Zahl der Aufgaben
 Randomize()
   a = Int(Rnd(1) * 10)
   'Rem Zufalls Zahl holen
   b = Int(Rnd(1) * 10)
   'Rem zweite Zufallszahl holen
   IF a > b THEN c = 62
   ' Rem Ascii Code für Größer als
   IF a = b THEN c = 61
   IF a < b THEN c = 60
   textbox1.Text = " Vergleiche " & Str$(a) & " und " & Str$(b) & " und setzte das richtige Zeichen >,< oder = "
   textbox2.Text = Str(z)
END
PUBLIC SUB Button3_Click()
 d = 62
 'Ascii Code für > 
 bewertung
END
PUBLIC SUB Button5_Click()
d = 60
bewertung
END
PUBLIC SUB Button4_Click()
d = 61
bewertung
END
SUB bewertung ()
 IF d = c THEN bewert.Text = "Richtig: "  & Str$(a) & " " & Chr$(c) & " " & Str$(b)
 IF d = c THEN r = r + 1
 textbox3.Text = Str(r)
 IF d <> c THEN bewert.Text = "Falsch !! Richtig wäre gewesen "
 IF d <> c THEN bewert.Text = bewert.Text & Str$(a)& " " & Chr$(c) & " " & Str$(b)
 IF d <> c THEN f = f + 1
 textbox4.Text = Str(f)
END

Harry's Rechentrainer[Bearbeiten]

ACHTUNG : Programm noch in Arbeit !!

Mit diesem Programm soll man die Grundrechnungsarten trainieren können.

Form und Steuerelemente[Bearbeiten]

Sie brauchen dazu eine neue Form und

  • 2 Textboxen
  • 2 Textlabelfelder
  • 2 Commandbuttons

Code[Bearbeiten]

' Gambas class file
Zahl1 AS Integer
Zahl2 AS Integer 
Ergebnis AS Integer
Antwort AS Integer
PUBLIC SUB StartAdditionen_Click()
  Randomize() 
  Zahl1 = Int(10*Rnd())+1
  Zahl2 = Int(10*Rnd())+1
  Ergebnis = Zahl1+Zahl2
  Antwort = AntwortTextBox.Text
  AusgabeRechnungLabel.Text=Zahl1 &" + " &Zahl2 & " = "  'Anzeige der Rechnung
  TextLabelFedback.Text = Ergebnis 'Ausgabe nur zur Kontrolle
  AntwortTextBox.SetFocus
END
PUBLIC SUB OkButton_Click()
 IF Antwort = Ergebnis THEN
 TextLabelFedback.Text= "Richtig"
 ELSE
 TextLabelFedback.Text = "Falsch"
 ENDIF
END
PUBLIC SUB AntwortTextBox_keypress()
 IF key.Code=key.Enter THEN 
 TextLabelFedback.Text = Ergebnis 'Ausgabe nur zur Kontrolle
 ENDIF
END