@Kebap: Wenn man in strukturiertem BASIC ”denkt”, also so etwas wie
Code: Alles auswählen
IF C THEN
REM THEN PART
ELSE
REM ELSE PART
END IF
REM AFTER END IF
Dann ist das generisch in klassichem BASIC so etwas:
Code: Alles auswählen
10 IF C THEN 40
20 REM ELSE PART
30 GOTO 50
40 REM THEN PART
50 REM AFTER END IF
Die beiden Zweige können hier auch beliebig lang sein. Im Grunde ist das so wie man das auch in Assembler strukturieren würde.
Falls der THEN-Zweig nur sehr kurz ist, und hinter das THEN in die Zeile passt, kann man das kürzen auf:
Code: Alles auswählen
10 IF C THEN {THEN PART}:GOTO 30
20 REM ELSE PART
30 REM AFTER END IF
Der ELSE-Zweig kann hier beliebig lang sein. Eventuell kann es also auch sinnvoll sein, die Bedingung zu negieren wenn man einen kurzen ELSE- aber langen THEN-Zweig hat.
Und wenn dabei am Ende verkettete Sprünge auftreten, kann man die natürlich ”rückwärts ersetzen”, also wenn man ein ``GOTO {end if}`` hat, was direkt zu einem ``GOTO {endlosschleife}`` führt, kann man das erste auch gleich durch ``GOTO {endlosschleife}`` ersetzen.
Aber einfacher ist es die beiden Zeichen einfach in ein Array zu stecken oder in eine Zeichenkette und dann über den zufällig ausgewürfelten Index zu wählen. Mit dem Array hatte ich das ja schon gezeigt. Wenn die Zeichencodes nicht zusammenhängend sind, wie beispielsweise bei der Erweiterung von Pedroski55, dann ist das die naheliegende Lösung. Hier mit Zeichenkette und MID$():
Code: Alles auswählen
10 A$="│▁╱╲▔":N=LEN(A$)
20 PRINT MID$(A$,RND(1)*N+1,1);
30 GOTO 20
@nezzcarth: Diese Umsetzung von strukturierter Programmierung in klassisches BASIC muss man einfach nur rückwärts denken um mit den ganzen GOTOs klar zu kommen. Früher notfalls auf Papier. Heute schreibe ich das dann eher in QBasic, also in strukturiertes BASIC um. Erster Schritt alle Zeilennummern entfernen, die nicht Ziel von Sprüngen sind, denn die braucht man ja letztendlich gar nicht. Und dann nach und nach IF/ELSE-GOTOs durch IF/ELSE/END IF ersetzen und Schleifen-GOTOs durch DO…LOOP, und alles hübsch einrücken. Bei Übriggebliebenen GOTOs und bei GOSUBs die Zeilennummern durch sprechende Labels ersetzen, und Variablennamen sprechender machen, und schon ist das meiste viel besser verständlich.
Wirklich hässlich sind Programme bei denen das nicht so einfach geht, weil FOR…NEXT nicht paarweise auftreten oder Schleifen nicht sauber ineinander verschachtelt sind.