Aufbau der For- Next - Schleife
Die Bezeichnung dieser Schleife (For- Next) beinhaltet gleich zwei (zusammengehörende) BASCOM- Befehle, welche im Programm jedoch nicht in einer Zeile verwendet werden, sondern zu Anfang und am Ende der Schleife stehen. Zunächst kommt sozusagen ein Ausgangsbefehl, in welchem festgelegt wird, ab welchem Startwert unsere Zählvariable (im Beispiel I) gezählt werden soll und als zweites der Wert, bis zu welchem gezählt werden soll, bevor das Programm die Schleife verlassen soll:
For I = 1 to 10
Sobald das Programm zum Befehl For kommt setzt es die Zählvariable (I) auf den Startwert und durchläuft so oft die Schleife, bis der Endwert wahr ist. In unserem Fall also:
1,2,3,4,5,6,7,8,9,10
Zwischen dem For-Befehl und dem Next- Befehl kann beliebiger Programmcode stehen. Beispielsweise eine Warteanweisung von 1 Sekunde (Wait 1)
For I=1 to 10
Wait 1
Toggle Led_1 'Eine Kontroll-LED blinkt mit 1 Sekunde Pause jeweils 1 Sekunde lang
Next I
Die Zählvariable kann im Programm auch als ganz normale Variable verwendet werden:
For I=1 to 10
Wait I
Toggle Led_1 'Eine Kontroll-LED blinkt mit immer längeren Impuls- Pausenzeiten
Next I
Was passiert im Programm?
Die For- Next- Schleife kann noch mehr
Wir wollen noch einen erweiterten Blick auf die For- Next- Schleife werfen:
Im Programmbeispiel haben wir bei 1 mit dem Zählen begonnen. Das ist aber nicht notwendig, es geht auch von jedem anderen Wert, der in die Zählvariable "passt" (z.B. eine Bytevariable, also 0- 255):
For I=10 to 20
For I = 150 to 180
Auch das Zählen muss nicht in Einerschritten erfolgen. Hier gibt es einen Zusatzbefehl:
For I = 2 to 10 Step 2 'Wir zählen in Zweierschritten: 2,4,6,8,10
For I = 5 to 50 Step 5 'Wir zählen von 5 bis 50: 5,10,15,20,25,...45,50
Und wir setzen noch einen drauf: es geht auch rückwärts
For I = 100 to 0 Step -1 'Count down von 100 nach 0
Soll eine Schleife nicht bis zum Ende ausgeführt werden, weil sich beispielsweise die Ausgangsbedingungen geändert haben, so ist das jederzeit mit Exit For (natürlich innerhalb der Schleife als If- Bedingung stehend) möglich.
.
Im Rahmen des Mikrokontrollerkurses (MCK) für Anfänger findet Ihr ein konkretes Anwendungsbeispiel für den Befehl, der das dortige Ausgangsprogramm stark verkürzt:
MCK 1.1.3 Realistische Verkehrsampelsteuerung
Die Bezeichnung dieser Schleife (For- Next) beinhaltet gleich zwei (zusammengehörende) BASCOM- Befehle, welche im Programm jedoch nicht in einer Zeile verwendet werden, sondern zu Anfang und am Ende der Schleife stehen. Zunächst kommt sozusagen ein Ausgangsbefehl, in welchem festgelegt wird, ab welchem Startwert unsere Zählvariable (im Beispiel I) gezählt werden soll und als zweites der Wert, bis zu welchem gezählt werden soll, bevor das Programm die Schleife verlassen soll:
For I = 1 to 10
Sobald das Programm zum Befehl For kommt setzt es die Zählvariable (I) auf den Startwert und durchläuft so oft die Schleife, bis der Endwert wahr ist. In unserem Fall also:
1,2,3,4,5,6,7,8,9,10
Zwischen dem For-Befehl und dem Next- Befehl kann beliebiger Programmcode stehen. Beispielsweise eine Warteanweisung von 1 Sekunde (Wait 1)
For I=1 to 10
Wait 1
Toggle Led_1 'Eine Kontroll-LED blinkt mit 1 Sekunde Pause jeweils 1 Sekunde lang
Next I
Die Zählvariable kann im Programm auch als ganz normale Variable verwendet werden:
For I=1 to 10
Wait I
Toggle Led_1 'Eine Kontroll-LED blinkt mit immer längeren Impuls- Pausenzeiten
Next I
Was passiert im Programm?
- Im ersten Durchlauf ist I=1, es wird also 1 Sekunde gewartet
- beim zweiten Durchlauf ist I=2, die LED bleibt 2 Sekunden dunkel
- im nächsten Durchlauf wird sie 3 Sekunden eingeschaltet
- bis das Programm nach 10 Sekunden Schaltzeit die Schleife verläßt.
Die For- Next- Schleife kann noch mehr
Wir wollen noch einen erweiterten Blick auf die For- Next- Schleife werfen:
Im Programmbeispiel haben wir bei 1 mit dem Zählen begonnen. Das ist aber nicht notwendig, es geht auch von jedem anderen Wert, der in die Zählvariable "passt" (z.B. eine Bytevariable, also 0- 255):
For I=10 to 20
For I = 150 to 180
Auch das Zählen muss nicht in Einerschritten erfolgen. Hier gibt es einen Zusatzbefehl:
For I = 2 to 10 Step 2 'Wir zählen in Zweierschritten: 2,4,6,8,10
For I = 5 to 50 Step 5 'Wir zählen von 5 bis 50: 5,10,15,20,25,...45,50
Und wir setzen noch einen drauf: es geht auch rückwärts
For I = 100 to 0 Step -1 'Count down von 100 nach 0
Soll eine Schleife nicht bis zum Ende ausgeführt werden, weil sich beispielsweise die Ausgangsbedingungen geändert haben, so ist das jederzeit mit Exit For (natürlich innerhalb der Schleife als If- Bedingung stehend) möglich.
.
Im Rahmen des Mikrokontrollerkurses (MCK) für Anfänger findet Ihr ein konkretes Anwendungsbeispiel für den Befehl, der das dortige Ausgangsprogramm stark verkürzt:
MCK 1.1.3 Realistische Verkehrsampelsteuerung
13.856 mal gelesen