If-Then-(Else) Bedingung

Ganz einfach übersetzt ist die If-Then Bedingung eine Wenn-Dann Aussage. Wenn ein bestimmtes Ereignis eintritt, dann mach etwas, sonst mach was anderes. Machen wir gleich das erste Beispiel in GDL. Dafür lernen wir zuerst einen neuen Befehl:

PRINT ausdruck

Der Print-Befehl erzeugt ein Hinweis-Fenster mit dem Inhalt, den wir im Befehl angeben. So erzeugt zB:

PRINT "Hallo"

folgendes Fenster:

Wir können jetzt bestimmen, ob wir das Script an dieser Stelle anhalten wollen oder von dieser Stelle aus fortfahren.

Wir werden den Print-Befehl oft in Zusammenhang mit dem If-Then Befehl verwenden. Wir können den Print-Befehl nämlich dazu nutzen den Benutzer auf Dinge Aufmerksam zu machen. Nehmen Wir unseren Tisch aus Kapitel 2:

BLOCK FS, FS, ZZYZX
ADDX A-FS
BLOCK FS, FS, ZZYZX
ADDY B-FS
BLOCK FS, FS, ZZYZX
ADDX -(A-FS)
BLOCK FS, FS, ZZYZX
ADDY -(B-FS)
ADDZ ZZYZX
BLOCK A, B, PS

Wir wollen jetzt sicherstellen, dass der Benutzer kein völlig idiotischen Werte eingibt. Also stellen wir zuerst sicher, dass die Länge der Tischplatte maximal 2m ist. Dazu schauen wir mit dem IF-Befehl ob A größer als 2 ist und geben (bei erfüllter Bedingung) einen Hinweis aus:

IF A>2 then PRINT "Die Länge der Tischplatte sollte max. 2m betragen" 
BLOCK FS, FS, ZZYZX
ADDX A-FS
BLOCK FS, FS, ZZYZX
ADDY B-FS
BLOCK FS, FS, ZZYZX
ADDX -(A-FS)
BLOCK FS, FS, ZZYZX
ADDY -(B-FS)
ADDZ ZZYZX
BLOCK A, B, PS

Solange der Parameter A unter 2m bleibt, wird der PRINT-Befehl nicht ausgeführt, wenn A größer als 2m ist, wird der Hinweistext ausgegeben:

Wenn man auf Fortfahren klickt, wird der Tisch im Moment trotzdem erzeugt. Bei Klick auf Stop, endet das Script sofort.

Wir können die Tischplatte natürlich auch auf 2m begrenzen, ohne eine Meldung für den Benutzer auszugeben:

IF A>2 then A=2 
BLOCK FS, FS, ZZYZX
ADDX A-FS
BLOCK FS, FS, ZZYZX
ADDY B-FS
BLOCK FS, FS, ZZYZX
ADDX -(A-FS)
BLOCK FS, FS, ZZYZX
ADDY -(B-FS)
ADDZ ZZYZX
BLOCK A, B, PS

mit diesem Script wird der Wert für A automatisch auf 2 gesetzt, sowie der Benutzer mehr als 2 eingibt.

Wenn wir wollen, dass zuerst der Hinweis kommt, und dann der Wert für A auf 2 gesetzt wird, denn können wir den IF-Befehl auch auf mehrere Zeilen verteilen und mit ENDIF beenden:

IF A>2 then
   PRINT "Die Länge der Tischplatte sollte max. 2m betragen" 
   A=2
ENDIF
BLOCK FS, FS, ZZYZX
ADDX A-FS
BLOCK FS, FS, ZZYZX
ADDY B-FS
BLOCK FS, FS, ZZYZX
ADDX -(A-FS)
BLOCK FS, FS, ZZYZX
ADDY -(B-FS)
ADDZ ZZYZX
BLOCK A, B, PS

Natürlich können wir so bei unserem Tisch auch sonstige Unsinnigkeiten abfangen. So können wir auch eine Minimalgrösse definieren:

IF A>2 then
   PRINT "Die Länge der Tischplatte sollte max. 2m betragen" 
   A=2
ENDIF
IF A<0.4 then
   PRINT "Die Länge der Tischplatte sollte min. 40cm betragen" 
   A=0.4
ENDIF
BLOCK FS, FS, ZZYZX
ADDX A-FS
BLOCK FS, FS, ZZYZX
ADDY B-FS
BLOCK FS, FS, ZZYZX
ADDX -(A-FS)
BLOCK FS, FS, ZZYZX
ADDY -(B-FS)
ADDZ ZZYZX
BLOCK A, B, PS

Analog dazu kann man natürlich auch die Parameter B, ZZYZX und PS "abfangen"

Wir wollen auch sicherstellen, dass die Fußstärke (FS) kleiner als die halbe Tischbreite ist. Dazu fügen wir folgende Zeile ein:

IF FS>A/2 THEN
  PRINT "Die Fußstärke muss kleiner als",A/2,"sein"
  FS=A/2
ENDIF

Man kann mit dem PRINT-Befehl also auch Variablen verwenden. Dasselbe gilt natürlich auch für die B-Länge:

IF FS>B/2 THEN
  PRINT "Die Fußstärke muss kleiner als",B/2,"sein"
  FS=B/2
ENDIF

Wir wollen, dass es unmöglich ist, die Fußstärke breiter als die halbe Tischlänge bzw. Tischbreite zu machen. Dazu müssen wir zuerst herausfinden welche Seite (A oder B) kürzer ist. Dazu gibt es verschiedene Methoden, da wir aber gerade die IF-THEN-ELSE Bedingung ansehen, machen wir es damit.

Das Script soll also, wenn A die kürzere Seite (oder gleich lang wie B) ist, überprüfen ob FS kleiner als die Hälfte von A ist, oder falls doch B die kürzere Seite ist, überprüfen ob FS kleiner als die Hälfte von B ist.

Dazu schreiben wir:

IF A<=B THEN
  IF FS>A/2 THEN
    PRINT "Die Fußstärke muß kleiner als",a/2,"sein"
    FS=A/2
  ENDIF
ELSE
  IF FS>B/2 THEN
    PRINT "Die Fußstärke muß kleiner als",b/2,"sein"
    FS=B/2
  ENDIF
ENDIF

Also hier noch einmal die Erklärung der einzelnen Zeilen. Dazu soll folgendes Flußdiagramm helfen:

 

Wenn es bis hier keine Fragen gibt (sollte es welche geben, dann wie immer ab damit ins Forum), dann macht mal das Tisch-Script so weit fertig, dass der Benutzer keine Unsinnigen Eingaben mehr machen kann.

Die Ergebnisse wie immer im GDL-Onlinekurs Forum!