www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik for-schleife


Autor: schlunz (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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ß

Autor: Carsten St. (carsten)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
break?

Autor: schlunz (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hmm, also meinst du so etwas in der Art:

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

Autor: Werner B. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
volatile char bedingung = 1;

SINAL(INTERRUPT)
{
   bedingung = 0;
}
  

for( ; bedingung; )
{
   tuwas();
}
einfacher zu verstehen ist allerding ein "while(bedingung){...}"

Autor: schlunz (Gast)
Datum:

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

Autor: Rolf Magnus (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: MSE (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: schlunz (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Michael,

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

Vielen Dank nochmals an Alle

Gruß

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.