Forum: Mikrocontroller und Digitale Elektronik for-schleife


von schlunz (Gast)


Lesenswert?

Moin Moin

sagt mal, liebe Experten, gibt es eine Möglichkeit eine For-Schleife
for(;;) zu verlassen (abzubrechen), sobald eine Bedingung über
Interrupts erfüllt ist?

Gruß

von Carsten S. (carsten)


Lesenswert?

break?

von schlunz (Gast)


Lesenswert?

Hmm, also meinst du so etwas in der Art:

for(;;)
{
befehl1;
befehl2;
...
if(bedingung True){break;}
}

von Werner B. (Gast)


Lesenswert?

1
volatile char bedingung = 1;
2
3
SINAL(INTERRUPT)
4
{
5
   bedingung = 0;
6
}
7
  
8
9
for( ; bedingung; )
10
{
11
   tuwas();
12
}
einfacher zu verstehen ist allerding ein "while(bedingung){...}"

von schlunz (Gast)


Lesenswert?

Hui Werner, sieht gut aus!
Aber sage mal, würde es auch mit meinem Bsp klappen?

von Rolf Magnus (Gast)


Lesenswert?

Ja, das würde auch funktionieren, ist aber nicht unbedingt lesbarer. Es
ist halt dann praktisch, wenn du nicht genau am Anfang oder Ende die
Bedinung prüfen willst, sondern irgendwo mittendrin.
Sonst -> while oder do...while

von MSE (Gast)


Lesenswert?

Lieber Schlunz,

Uterschiede zwischen Deinem und Werners Beispiel:

Deins:
Der Schleifenkörper wird in jedem Falle einmal durchlaufen (auch wenn
die Bedingung schon bei Schleifenanfang erfüllt ist),

Werner:
Der Schleifenkörper nie betreten wird, falls die Bedingung schon zu
Beginn erfüllt ist.


Außerdem ist es bei der if-break-Variante im Schleifenkörper möglich,
Anweisungen vor und nach dem if-Statment zu gruppieren, so dass manche
in jedem Falle ausgeführt werden, während andere bei gültiger Bedingung
nicht mehr ausgeführt werden:

for(;;)
{
befehl1;
befehl2;
...
if(bedingung True){break;}
befehl3;
befehl4;
}


Gruß, Michael

von schlunz (Gast)


Lesenswert?

Hallo Michael,

besten Dank! Das ist eine herrliche Erklärung.
Damit kann ich arbeiten :-)

Vielen Dank nochmals an Alle

Gruß

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.