Sie sind vermutlich noch nicht im Forum angemeldet - Klicken Sie hier um sich kostenlos anzumelden Impressum 
Sie können sich hier anmelden
Dieses Thema hat 5 Antworten
und wurde 1.299 mal aufgerufen
 Bascom - Unser Einsteigerkurs
diezel Offline



Beiträge: 709

30.01.2013 21:46
[BEK06] For ... Next Zitat · Antworten

Hallo,

heute das Thema For-Next-Schleife. Kennen bestimmt einige von Euch z.B. aus VBA.
Die vorgeschriebene Schreibweise in Bascom lautet:

1
2
3
 
FOR var = start TO end [STEP value]
...
Next var
 


Dieses Konstrukt läßt einen Befehlsblock beliebig oft nacheinender ausführen. Dazu wird eine Variable von einem Startwert bis zu einem Endwert gezählt, die Schrittweite kann vorgegeben werden. Wird diese nicht angegeben, wird mit +1 gearbeitet.
Die Variable kann natürlich innerhalb der Schleife verwendet werden.
Hier mal ein Beispiel-Programm:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
 
$regfile = "m8def.dat"                                     'Mikrocontroller ist Atmega 8
$crystal = 8000000 'Arbeitsfrequenz 8 MHz
$hwstack = 40 'Hardware-Stack
$swstack = 32 'Software-Stack
$framesize = 60 'Frame
$baud = 19200 'serielle Übertragungsgeschwindigkeit
 
'*** Ein/Ausgänge deklarieren **************************************************
Config Portb.3 = Output 'PortB.3 als Ausgang
 
'*** Variablen definieren ******************************************************
Dim Raufrunter As Integer 'Integer kann Ganzzahlen von -32768 bis +32767 enthalten
Dim Zaehler As Byte
 
'*** Hauptschleife *************************************************************
Portb.3 = 1 'LED an PB3 aus
 
Do 'Beginn Hauptschleife
For Raufrunter = 1 To 10 'Schleife zählt von 1 bis 10 mit Schritt 1
Print Raufrunter
Wait 1
Next Raufrunter
 
For Raufrunter = 10 To -10 Step -2 'Schleife zählt von +10 nach -10 mit Schritt -2
Print Raufrunter
Wait 1
Next Raufrunter
 
For Zaehler = 2 To 7 Step 2 'Schleife zählt von 2 bis 7 in 2er-Schritten
Portb.3 = 0 'LED kurz Ein
Waitms 300
Portb.3 = 1 'LED wieder aus
Waitms 500
Next Zaehler
 
Loop 'Ende Hauptschleife
 
End
 



Der Programmkopf dürfte klar sein. Die Variable Raufrunter hab ich als Integer dimensioniert, sie kann somit Ganzzahlen von -32768 bis +32767 enthalten.

Zeile 19 - 22 beschreibt eine Schleife, die die Variable von 1 bis 10 raufzählt, Schrittweite ist +1, weil nicht extra angegeben. Mit jedem Mal raufzählen werden die Befehle, die zwischen For und Next aufgeführt sind, jeweils mit der aktuellen Variable ausgeführt. Den Verlauf könnt ihr ja im Terminal beobachten, wenn die Prints ausgeführt werden.

Zeile 24 - 27 ist recht ähnlich, nur wird hier die Variable von +10 nach -10 runtergezählt. Will man, daß die Variable kleiner wird, sie muß dabei gar nicht ins Minus kommen, muß der angegebene Step-Wert negativ sein, bei uns im Beispiel Step -2. Die Variable wird also folgende Werte haben: 10, 8, 6, 4, 2, 0, -2, -4, -6, -8, -10.

Zeile 29 - 34 nutzt die For-Next-Schleife, um bestimmte Befehle mehrmals auszuführen, ohne dabei den Inhalt der Variablen zu benutzen. Wir lassen hier die LED an PB3 mehrmals aufblinken.
Als gaaanz kleine Aufgabe für euch, zählt die Schleife von 2 bis 7 in Schrittweite 2. Wie oft wird die LED blinken?


Gruß
Gerhard

-------------------------------------------------------------------------------------------
hier mein aktueller TinyKatalog

Dateianlage:
Aufgrund eingeschränkter Benutzerrechte werden nur die Namen der Dateianhänge angezeigt Jetzt anmelden!
BEK06.txt

Scotch Offline




Beiträge: 415

28.02.2013 19:56
#2 RE: [BEK06] For ... Next Zitat · Antworten

Hallo Gerhard,

hast Du wieder wenig Zeit oder ist Dir hier zu wenig Resonanz auf Deine Arbeit?
Würde mich Freuen wenn Du hier noch den einen oder anderen Beitrag weiter schreibst.

Gruß Ingo

PS der Link in Deiner Signatur ging eben nicht.

------------------------------------------

Meine Webseite


diezel Offline



Beiträge: 709

01.03.2013 23:19
#3 RE: [BEK06] For ... Next Zitat · Antworten

Hallo Ingo,

ja verdammt, schon wieder ein Monat rum. Derzeit bleibt kaum Zeit übrig, ich muß, wie man so schön sagt, "Prioritäten" setzen. Hoffe daß es bald wieder leichter wird, der Frühling naht.

Aber ist schon komisch, daß kaum Fragen aufkommen.
Wer ist eigentlich am Ball?
Oder mach ich es zu ausführlich?
Gebt mal bitte Feedback!


Gruß
Gerhard

P.S. daß der Link zum Tiny-Katalog nicht mehr geht, ist mir bekannt. Leider werden alte Signaturen nicht aktualisiert, der neue sollte funktionieren.

-------------------------------------------------------------------------------------------
hier mein aktueller TinyKatalog


Scotch Offline




Beiträge: 415

02.03.2013 16:52
#4 RE: [BEK06] For ... Next Zitat · Antworten

Hallo Gerhard,

das mit der Signatur kenne ich.

Für mich ist es bis jetzt noch sehr Übersichtlich da ich ja schone meine Erfahrungen
mit Bascom und anderen Sprachen habe.
Für mich wird es dann wirklich interessant wenn es darum geht, einen Blinklicht Tiny oder
Fahrtregler zu programmieren.
Sprich programmieren von PPM, Timer... etc.

Gruß Ingo

------------------------------------------

Meine Webseite


Tüftler_Senior Offline




Beiträge: 79

03.03.2013 08:23
#5 RE: [BEK06] For ... Next Zitat · Antworten

Hallo Gerhard

Also mir geht es so wie dir!
Mir fehlt auch die Zeit hinten und vorne!
Dort dies dort das noch "schnell" und die ganze Zeit
ist weg!

Aber ich finde es ist gut erklärt und weder zu viel noch zu wenig!
Du hast das richtige Mass meiner Meinung nach!

Hoffe das ich mir bald mehr Zeit habe!

Gruß Michael


DerPutze Offline




Beiträge: 187

05.03.2013 08:00
#6 RE: [BEK06] For ... Next Zitat · Antworten

Hi Gerhard,

ich für meinen Teil bin auch dabei, wir hatten ja letztens mal Kontakt über PN.
Allerdings muss ich ehrlich sagen, auch bei mir waren die letzten Tage etwas stressiger und gefüllter mit anderen Themen, das wird nun aber wieder besser!

Gruß
Martin


 Sprung  

disconnected Mikromodell-Chat Mitglieder Online 1
Xobor Xobor Community Software
Datenschutz