FOR-NEXT/de

From MCS Wiki AVR
Jump to: navigation, search

Funktion =

Schleife mit einer festgelegten Anzahl an Wiederholungen.

 

 

Contents

Syntax

FOR var = start TO end [STEP value]

 

 

Anmerkungen

var

Zählervariable

start

Startwert der Zählervariablen var

end

Endwert der Zählervariablen var

value

Wert, um den die Zählervariable var jedesmal erhöht/vermindert wird wenn NEXT erreicht wird.

 

Für hochzählende Schleifen muss TO verwendet werden.
Für herunterzählende Schleifen muss eine negative Schrittweite value angegeben werden.
Ein FOR-Konstrukt muss mit NEXT abgeschlossen.
Die Benutzung von STEP ist optional. Standardmäßig wird für STEP 1 verwendet.

 

Wenn im Voraus bekannt ist wie oft eine Schleife ausgeführt werden soll dann ist eine FOR..NEXT Schleife geeignet.

Man kann eine FOR..NEXT Schleife mit EXIT FOR (vorzeitig) verlassen.

 

Wenn für Startwert und Endwert Variable verwendet werden dann müssen diese vom selben Datentyp sein.

Beispiel:

Dim x, as byte, st as byte, ed as byte

FOR x = st TO ED ' dies ist o.k. weil alle Variablen vom selben Datentyp sind.

 

Dim x as Byte, st as Word, Ed as Long

FOR x = st TO ED ' dies ist NICHT o.k. weil die Variablen unterschiedliche Datentypen haben.

 

Der Grund ist, dass bei Auswertung der Bedingung ein 2 Byte Vergleich stattfindet während man eigentlich Long haben möchte weil die End-Variable Long ist. (Originaltext: The reason is that when the condition is evaluated, it will create a compare on 2 bytes, while you actually want to have a word since the end variable is a word.)

 

Eine FOR-NEXT Schleife mit Integer hat einen oberen Wert von 32766 und nicht 32767 - die größte Zahl, die in eine Integer-Variable passt.

Der Grund ist Codeoptimierung. Eine Prüfung auf 32767 bis -32768 würde mehr internen Code benötigen.

 

 

 

 

Es gibt auch andere Möglichkeiten. Zum Beispiel kann man eine DO..LOOP Schleife benutzen :

 

Dim Var As Byte

Do

'code

 Incr Var

Loop Until Var = 10

 

Es gibt viele Möglichkeiten, zum gewünschten Resultat zu kommen.  

 

Siehe auch

EXIT FOR

 

 

 

Beispiel


'-----------------------------------------------------------------------------------------
'name : for_next.bas
'copyright : (c) 1995-2005, MCS Electronics
'purpose : demo: FOR, NEXT
'micro : Mega48
'suited for demo : yes
'commercial addon needed : no
'-----------------------------------------------------------------------------------------
 
$regfile = "m48def.dat" ' Benutzter Mikrocontroller
$crystal = 4000000 ' Benutzte Taktfrequenz
$baud = 19200 ' Baudrate
$hwstack = 32 ' default use 32 for the hardware stack
$swstack = 10 ' default use 10 for the SW stack
$framesize = 40 ' default use 40 for the frame space
 
Dim A As Byte , B1 As Byte , C As Integer
 
 
For A = 1 To 10 Step 2
Print "Dieses ist A " ; A
Next A
 
Print "Herunterzaehlen"
For C = 10 To -5 Step -1
Print "Dieses ist C " ; C
Next
 
 
 
Print "Auch Verschachtelungen von FOR..NEXT Konstrukten sind möglich."
For A = 1 To 10
Print "Dieses ist A " ; A
For B1 = 1 To 10
 Print "Dieses ist B1" ; B1
Next ' Beachte: Der Parameter nach NEXT muss nicht spezifiziert werden
Next A
End

Languages   English Deutsch  
Personal tools
Namespaces
Variants
Actions
Navigation
In other languages
Language