if ....else if

Arduino specifieke Software
Berichten: 76
Geregistreerd: 05 Nov 2016, 09:42

if ....else if

Berichtdoor spaansebrabander » 24 Nov 2016, 12:08

Ik ben een beginner. Ik begrijp als er staat if...... else........
Maar als er nu staat if..... else if...... en geen van beide beweringen is juist?

Advertisement

Gebruikers-avatar
Berichten: 5043
Geregistreerd: 13 Mei 2013, 20:57
Woonplaats: Heemskerk

Re: if ....else if

Berichtdoor nicoverduin » 24 Nov 2016, 12:19

Als de if waar is wordt alleen het stuk tussen de accolades uitgevoerd. Ga je dan 'nesten' binnen de else enz dan gelden dezelfde regels. Dus als je na die 2e if geen else meer hebt en beide zijn niet waar dan wordt er niets uitgevoerd.
Docent HBO Technische Informatica, Embedded ontwikkelaar & elektronicus
http://www.verelec.nl

Berichten: 76
Geregistreerd: 05 Nov 2016, 09:42

Re: if ....else if

Berichtdoor spaansebrabander » 24 Nov 2016, 12:28

Als dus if niet waar is en ook else if niet waar is, begint de loop dan weer bovenaan

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

Re: if ....else if

Berichtdoor Koepel » 24 Nov 2016, 12:42

Dat de loop() steeds opnieuw wordt gedaan, dat staat los van een if-else-statement.

In eerste instantie zou het zo kunnen:
Code: Alles selecteren
if( i == 2)
{
}
else
{
  if( i == 4)
  {
  }
  else
  {
    if( i == 6)
    {
    }
    else
    {
      Serial.println( "None of the above");
    }
  }
}


Maar het mooie van de if-else-if is dat ze ook onder elkaar kunnen:
Code: Alles selecteren
if( i == 2)
{
}
else if( i == 4)
{
}
else if( i == 6)
{
}
else
{
  Serial.println( "None of the above");
}


De if-statements worden allemaal stuk voor stuk afgelopen, en de eerste die waar is wordt uitgevoerd. Als er meer zijn die waar zijn, dan worden die niet uitgevoerd, want die vielen in de 'else' en als de 'if' wordt gedaan dan wordt de 'else' niet meer gedaan.

Zie je de allerlaatste 'else', daar komt dus alles wat er doorheen valt en nergens aan voldoet.
Als die allerlaatste 'else' er niet is, en geen enkele 'if' is waar, dan wordt er dus niets uitgevoerd.

Test sketch:
Code: Alles selecteren
// if-else-if
// for http://arduinoforum.nl/viewtopic.php?f=8&t=2148
// Using Arduino.cc 1.6.13, Arduino Uno.

void setup()
{
  Serial.begin( 9600);
  while(!Serial);     // For Leonardo/Micro
  Serial.println( "\nStarted");
}

void loop()
{
  int x;
 
  Serial.println( "Type a number (1 to 10)");

  do
  {
    x = Serial.parseInt();  // returns zero if timeout
  } while( x == 0);

  Serial.print( "The number is ");
  Serial.print( x);
  Serial.print( ", that is ");

  if( x > 10)
  {
    Serial.println( "> 10");
  }
  else if( x <= 4)
  {
    Serial.println( "<= 4");
  }
  else if( x >= 8)
  {
    Serial.println( ">= 8");
  }
  else if( x < 0)
  {
    Serial.println( "< 0");
  }
  else if( x > 5)
  {
    Serial.println( "> 5");
  }
  else
  {
    Serial.println( "None of the above");
  }
}


Type eens 5 in, gevolgd door enter, die valt overal tussendoor, en wordt opgevangen door de laatste else.
Type eens 8 in, die wordt opgevangen door "x >= 8", en de "x > 5" is ook waar maar die wordt niet uitgevoerd.

Berichten: 76
Geregistreerd: 05 Nov 2016, 09:42

Re: if ....else if

Berichtdoor spaansebrabander » 24 Nov 2016, 12:58

Ik ben maar een beginner, beetje moeilijk wat U schrijft. Bij mij heel simpel

if (waarde1 == 0 && waarde2 == 0)
{}
else if (waarde1 ==1 && waarde2 ==1)
{}

Stel dat waarde1 = 0 en waarde2 is (nog)1
Gebeurt er hier dan niks? en gaat het programma weer naar begin?

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

Re: if ....else if

Berichtdoor Koepel » 24 Nov 2016, 13:03

Of een programma naar het begin gaat, dan heeft niet met de if-else-statement te maken.

Stel waarde1 = 0 en waarde2 = 1.
De Arduino kijkt of de eerste 'if' waar is. Die is niet waar. Dan gaat de Arduino dus de 'else' uitvoeren, en ziet daar weer een 'if'. De Arduino controleert dat en dat is ook niet waar. Verder is er niets te doen, dus gebeurt er helemaal niets.

Het wordt gewoon stuk voor stuk afgelopen.

Ennuh, ik ben geen 'u' hoor en al helemaal geen 'U', je kunt gewoon 'je' en 'jij' gebruiken, dat doe ik ook :lol:

Berichten: 76
Geregistreerd: 05 Nov 2016, 09:42

Re: if ....else if

Berichtdoor spaansebrabander » 24 Nov 2016, 13:21

Ben nog wat van de oude stempel (70 jr) Maar ik bedoel te zeggen dat als beide beweringen niet juist zijn, het programma verder loopt en zich niks aantrekt van wat er hier staat. Ik ben nog met kleine sketches bezig , dus hierna gaat het in mijn progje terug naar het begin .
Is er trouwens een nederlands boek(je) met beschrijving van deze taal? Heb 50 jaar geleden wat geprogrammeerd op TUE, moest dan programma veranderen met stukjes ponsband in de ponsband in te plakken en met een handponsje bij te werken.

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

Re: if ....else if

Berichtdoor Koepel » 24 Nov 2016, 13:42

Natuurlijk loopt het programma verder zonder iets te doen, de if-condities waren tenslotte beide niet waar.

De '&&' wordt uitgesproken als 'en', en echt alles moet dan waar zijn.
Code: Alles selecteren
if( zon > 10 && regen < 1 && wind < 2 && lucht == blauw)
{
  Serial.println( "mooi weer");
}


De '||' wordt uitgesproken als 'of', en dan hoeft er maar één waar te zijn.
Code: Alles selecteren
if( honger > 20 || worst == unox || trek_in_worst == altijd)
{
  Serial.println( "worst is lekker");
}

Berichten: 163
Geregistreerd: 15 Dec 2012, 21:02
Woonplaats: Delfzijl

Re: if ....else if

Berichtdoor FPCUser » 24 Nov 2016, 15:03


Berichten: 340
Geregistreerd: 23 Okt 2016, 20:29

Re: if ....else if

Berichtdoor benvo » 03 Dec 2016, 21:16

Deze is ook leuk om door te zien.


http://www.nano2.nl/arduino/downloads/M ... n%2011.pdf


Groet,
Ben.

Terug naar Arduino software

Wie is er online?

Gebruikers in dit forum: Geen geregistreerde gebruikers en 7 gasten