Even een BREAK vraagje..

algemene C code
Berichten: 30
Geregistreerd: 14 Dec 2018, 14:39

Even een BREAK vraagje..

Berichtdoor FTMZ » 15 Jul 2020, 22:46

Mensen,

Even een vraagje over het BREAK commando.

Stel ik heb iets als onderstaande code:
Code: Alles selecteren
While 1 = 1
 {
  IF appels > 5
  {
   IF button == 1
   { doe iets
     IF time > 10 then BREAK
   }
  Peren++
 }
Fruit++
delayMS (1000)
}


Ik heb nog nooit zo'n slecht voorbeeld uit mijn mouw kunnen schudden, en let alsjeblieft niet op de randdingen. Ik moet nog veel leren. :D

Het gaat er om dat er een loop is en dat ergens Appels 5 of meer worden. (hoe doet er niet toe. Staat ook niet in de code)
Als dan ook de Button is ingedrukt, gebeurt er iets irrelevants. Tenzij de time voorbij de 10 komt (ook hier... hoe en wat is niet belangrijk).
Dan springt het programma met een BREAK uit de loop.
Mijn vraag is nu... HOEVER springt hij uit die loop?
Gaat hij die peren nog increasen? Of spingt hij uit de loop zodat hij elke seconde het Fruit gaat increasen??

Want als je tbv een break een IF statement gebruikt, spingt hij toch alleen uit dat loopje, zou je zeggen?

Het was erg lastig te omschrijven. Mijn excuses voor de codetechnische taalfouten. :?

Als ik mijn zuurgetypte code nog eens doorneem denk ik dat een Break je uit de eerste loop haalt, omdat een IF statement an sich natuurlijk geen loop is.
Ik hoop dat jullie mij er iets in kunnen verduidelijken.

Advertisement

Gebruikers-avatar
Berichten: 241
Geregistreerd: 22 Jan 2013, 16:40

Re: Even een BREAK vraagje..

Berichtdoor zuid » 16 Jul 2020, 07:49


Berichten: 30
Geregistreerd: 14 Dec 2018, 14:39

Re: Even een BREAK vraagje..

Berichtdoor FTMZ » 16 Jul 2020, 11:04

Nee, Nico, dat beantwoordt niet mijn vragen. :-)
Dit is ook wat ik over het algemeen al wist over de BREAK functie.

Het gaat mij erom -en dat had ik volgens mij wel goed omschreven in mijn vraag-, hoever de BREAK gaat.
Als er een loop ín een loop zit, waarbij in die laatste loop de BREAK, gaat het programma dan slechts uit die ene loop waar die BREAK in zit?
Of gaat hij dan ook uit de voorgaande loop? (Laat ik voorop stellen dat ik dat onwaarschijnlijk vind, maar ik wilde het zeker weten)

Gebruikers-avatar
Berichten: 2655
Geregistreerd: 06 Aug 2016, 01:03

Re: Even een BREAK vraagje..

Berichtdoor Koepel » 16 Jul 2020, 11:20

Toch klopt het wel wat bij de Arduino referentie staat.

Een "break" springt uit een for, while en do...while loop. De switch-case is een buitenbeentje waarbij ook een "break" wordt gebruikt.
Naar een "if" wordt helemaal niet gekeken bij een "break".

Als in jouw stukje code een "break" wordt uitgevoerd, dan wordt er niets meer van die code gedaan. Hij springt uit de while-loop en gaat verder met de code die daar onder zou kunnen staan.


Dus dit kan niet, er is helemaal geen statement dat een loop is:
Code: Alles selecteren
if( i==3)
{
  if( j==4)
  {
    if( k==5)
    {
      break;
    }
  }
}


Dit kan wel. Als de "break" wordt uitgevoerd, dan springt hij uit de loop met "k", en gaat verder waar "j" was gebleven (net alsof "k" was afgerond, maar "k" is halverwege afgebroken).
Code: Alles selecteren
for( i=0; i<3; i++)
{
  for( j=0; j<4; j++)
  {
    for( k=0; k<5; k++)
    {
      if( l==6)
      {
        break;
      }
    }
  }
}


Het is meestal netter om geen "break" te gebruiken. Als je met een logische structuur van je code een "break" kunt voorkomen, dan heeft dat de voorkeur.
Toch gebruik ik regelmatig een "break", bijvoorbeeld als er ergens een fout onstaat.

Berichten: 30
Geregistreerd: 14 Dec 2018, 14:39

Re: Even een BREAK vraagje..

Berichtdoor FTMZ » 17 Jul 2020, 11:24

Ik had al zo'n vermoeden...
Waar ik op klem zat, was dat ik een If/then vroeger nog wel eens verving voor een While/Wend in Basic. En dan was het een loop.
Maar een Ordinaire If {} is natuurlijk geen loop maar kan wel een break triggeren om uit de loop (waar de IF {} deel van uitmaakt) te komen.

Tx voor de verheldering.

Terug naar C code

Wie is er online?

Gebruikers in dit forum: Geen geregistreerde gebruikers en 8 gasten