Herunterladen Diese Seite drucken

Sinclair QL Benutzerhandbuch Seite 101

Werbung

PROGRAMMSTRUKTUR
Programm 2
Programm 3
BEISPIEL
80
100 REMark Western:
110 LET pa t ronen
120 REPeat
bandi t
130
PRINT "Zielen"
140
PRINT"
Schuß"
150
LET patronen
160
IF patronen
170 END REPeat
Dieses Programm erfüllt sein Ziel in zweierlei Hinsicht nicht:
1. ZieLen
Schuß
wird ausgedruckt, obwohl keine Patronen in dem Gewehr waren.
2. Zu dem Zeitpunkt, zu dem die Variable Patronen, in Zeile 160 getestet wird, hat sie
den Wert -1 und wird danach niemals zu Null. Das Programm führt eine endlose
Schleife aus. Dieses Problem der endlosen Schleifen kann behoben werden,
indem Zeile 160 neu geschrieben wird:
160 IF patronen<
Hier liegt ein Programmierungsfehler vor, da der "Null-Fall" nicht berücksichtigt wird.
Dieser Fehler kann behoben werden, indem ein bedingter EXIT-Befehl vor die
PRINT-Anweisung gestellt wird.
100 REMark Western:
110 LET patronen
120 REPeat
bandi t
130
IF patronen
140
PRINT"
150
PRINT"
160
LET patronen
170 ENO REPeat
Dieses Programm arbeitet nun einwandfrei, unabhängig von dem Ausgangswert der
Patronen, solange es sich hier um eine positive ganze Zahl oder um Null handelt.
Methode 2 entspricht der REPEAT ... UNTIL-Schleife einiger Sprachen. Methode 3
entspricht der WHILE ... ENDWHILE-Schleife einiger Sprachen. REPeat ... END
REPeat mit EXIT ist jedoch flexibler als eine dieser beiden Methoden oder eine Kom-
bination der beiden Methoden.
Haben Sie andere BASIC-Versionen benutzt, so werden Sie sich unter Umständen
fragen, was mit der NEXT-Anweisung geschehen ist. Wir werden in Kürze auf sie ein-
gehen. Sie werden jedoch feststellen, daß beide Schleifen über eine ähnliche Struk-
tur verfügen und beide benannt sind.
FOR Name
=
(Anweisungen)
END FOR Name
Die REPeat-Schleife muß normalerweise zusätzlich über eine EXIT-Anweisung ver-
fügen, ansonsten wird sie niemals beendet.
Beachten Sie bitte, daß nach Ausführung einer EXIT-Anweisung das Programm
nach der Anweisung fortgesetzt wird, die unmittelbar hinter der END-Anweisung der
Schleife steht.
Eine NEXT-Anweisung kann in eine Schleife gestellt werden. Nach ihrer Ausführung
wird das Programm bei der Anweisung fortgesetzt, die direkt hinter dem öffnenden
Befehl FOR oder REPeat steht. Im Falle einer FOR-Schleife wird die Steuervariable
vorher fortgeschaltet. Sie kann als Gegenstück zu der EXIT-Anweisung betrachtet
werden.
3
Die Situation ist dieselbe wie in Beispiel 1. Der Sheriff verfügt über ein Gewehr mit
sechs Patronen und er muß auf den Banditen schießen. Allerdings gibt es hier noch
zwei weitere Bedingungen:
1. Trifft er den Banditen, so schießt er nicht weiter und kehrt nach Dodge City zurück.
2. Hat er keine Patronen mehr, bevor er den Banditen getroffen hat, so bittet er sei-
nen Partner, auf den Banditen aufzupassen, während er (der Sheriff) nach Dodge
City zurückkehrt.
REPeat
funktioniert
0
=
patronen
- 1
=
=
0 THEN EXIT bandi t
bandit
1 then
EXIT bandit
REPeat
O-Fa l L
0
=
=
0 THEN EXIT bandit
ZieLen"
Schuß"
patronen
- 1
=
bandit
(Öffnender Befehl)
(Inhalt)
(Schließender Befehl)
nicht
richtig
REPeat Name
(Anweisungen)
END REPeat Namen
3/85
(

Werbung

loading

Verwandte Produkte für Sinclair QL