Gambas: Kontrollstrukturen
Zurück zu Gambas
Verzweigungen
[Bearbeiten]if - then
[Bearbeiten]Die einfachste Verzweigung eines Programmes erfolgt mit dem if - then Befehl
- If heißt auf Deutsch FALLS
- then heißt auf Deutsch DANN
Der If-Then-Befehl macht es möglich Programmverzweigungen zu programmieren, wenn eine bestimmte Bedingung erfüllt ist. Auf deutsch heißt der Befehl Falls die Bedingung wahr ist, dann mache folgendes.
Am besten versteht man dies an Hand eines Beispiels: Es gibt den Wochentag des heutigen Tages aus. Das Programm funktioniert im Terminalmdous:
STATIC PUBLIC SUB Main() PRINT WeekDay(Now) PRINT "Heute ist "; IF WeekDay(Now) = 1 THEN PRINT "Montag" IF WeekDay(Now) = 2 THEN PRINT "Dienstag" IF WeekDay(Now) = 3 THEN PRINT "Mittwoch" IF WeekDay(Now) = 4 THEN PRINT "Donnerstag" IF WeekDay(Now) = 5 THEN PRINT "Freitag" IF WeekDay(Now) = 6 THEN PRINT "Samstag" IF WeekDay(Now) = 7 THEN PRINT "Sonntag" END
Das Programm nutzt den Befehl Weekday und den Befehl Now von Gambas
Zwischen If und Then kann man auch mehrere Bedingungen auflisten und auch bei den Anweisungen nach dem Then Befehl kann mehrere Anweisungen aufreihen, die man dann mit Endif abschließt.
If Bedingung1 Bedingung2 Then Anweisung1 Anweisung2 Endif
if then else
[Bearbeiten]Der If then Else erlaubt die Programmierung einer Alternative zur If Bedingung. Das wird am besten an einem Beispiel klar
dim name as string if name = männlich then Print "An Herrn " & name else Print "An Frau " & name endif
Hier muß allerdings noch die Funktion männlich definiert werden.
Ein weiteres Beispiel: Sie brauchen eine leere Form , um das Programm in Gang zu bringen. Es erzeugt 100 Zufallszahlen zwischen 1 und 99 und überprüft ihre Teilbarkeit durch 2.
PUBLIC SUB Form_Open() a AS Integer x AS Integer Randomize() FOR x = 1 TO 100 a = Int(Rnd(1,100)) 'Zufallszahl zwischen 1 und 99 erzeugen IF a MOD 2 = 0 THEN 'teilbar durch 2 ?? PRINT a & " ist teilbar durch 2" ELSE PRINT a & " ist nicht teilbar durch 2" ENDIF NEXT END
GOTO Sprungadresse
[Bearbeiten]Auch das alte GOTO gibt es noch in Gambas. Man kann es allerdings nur in einem Unterprogramm verwenden. Wie das geht zeigt folgendes Beispiel:
Man braucht eine Textarea und einen Befehlsbutton um das Programm in Gang zu bringen.
PUBLIC SUB Form_Open() ME.Width = 400 ME.Height = 300 ME.Text = "GOTO Befehl mit Labels als Sprungadresse" Button1.Text = "Zufallszahl einordnen" Button1.Width = 200 Textarea1.Text = "" Textarea1.Width = 300 Textarea1.Height = 160 END PUBLIC SUB Button1_Click() z AS Integer Randomize() z = Int(Rnd(1,100)) IF z < 10 THEN GOTO zehn IF z < 20 THEN GOTO z2 IF z < 50 THEN GOTO z5 'PRINT " z > 49 , da z = ";z textarea1.Text = textarea1.Text & " z > 49 , da z = " & z & Chr(10) RETURN zehn: textarea1.Text = textarea1.Text & " z < 10 , da z = " & z & Chr(10) RETURN z2: textarea1.Text = textarea1.Text & " z < 20 , da z = " & z & Chr(10) RETURN z5: textarea1.Text = textarea1.Text & " z < 50 , da z = " & z & Chr(10) RETURN END
Select Case
[Bearbeiten]Der Select Case Befehl erlaubt die Auswahl aus mehreren Alternativen.
Wie er funktioniert zeigt folgendes Beispiel. Es überprüft die Randomfunktion eines Würfels 1000 mal und gibt die Häufigkeit, wie oft eine Zahl des Würfels erhalten wurde im Direktfenster aus. Sie brauchen nur eine leere Form um das Programm in gang zu bringen.
PUBLIC SUB Form_Open() x AS Integer w AS Integer a AS Integer b AS Integer c AS Integer d AS Integer e AS Integer f AS Integer Randomize() FOR x = 1 TO 1000 w = Int(Rnd(6) + 1) SELECT CASE TRUE CASE w = 1 a = a + 1 CASE w = 2 b = b + 1 CASE w = 3 c = c + 1 CASE w = 4 d = d + 1 CASE w = 5 e = e + 1 CASE w = 6 f = f + 1 END SELECT NEXT PRINT a,b,c,d,e,f END
Das Programm kann man etwas abkürzen:
PUBLIC SUB Form_Open() x AS Integer w AS Integer a AS Integer b AS Integer c AS Integer d AS Integer e AS Integer f AS Integer FOR x = 1 TO 1000 w = Int(Rnd(6) + 1) SELECT CASE w CASE 1 a = a + 1 CASE 2 b = b + 1 CASE 3 c = c + 1 CASE 4 d = d + 1 CASE 5 e = e + 1 CASE 6 f = f + 1 END SELECT NEXT PRINT a, b, c, d, e, f END