Operácie

Matematika a micro:bit: Rozdiel medzi revíziami

Z SensorWiki

Riadok 37: Riadok 37:
 
</source></tab>
 
</source></tab>
 
<tab name="mBED C++"><syntaxhighlight lang=c style="background: Cornsilk">
 
<tab name="mBED C++"><syntaxhighlight lang=c style="background: Cornsilk">
}</syntaxhighlight></tab>
+
/* !!! not fully tested !!! */
 +
 
 +
void main()
 +
{
 +
    float c = 0.1;
 +
   
 +
    c = c + c + c + c + c + c + c + c + c + c;
 +
 
 +
    printf("\n c = %f \n",c);
 +
   
 +
    if (c == 1.0f)
 +
      printf("\n * Je to 1,0\n");
 +
    else
 +
      printf("\n * Nie je to 1,0\n");
 +
 
 +
    while (1) {  /* relax */  }
 +
}
 +
 
 +
</syntaxhighlight></tab>
 
</tabs>
 
</tabs>
  
Riadok 43: Riadok 61:
  
 
<gallery heights=200px mode="packed">  <!-- slideshow? -->
 
<gallery heights=200px mode="packed">  <!-- slideshow? -->
Image:microbit-Math1.png|''Program v blokovom jazyku''
+
Image:microbit-Math2.png|''Program v blokovom jazyku''
Image:microbit-Math1Run.png|''a jeho funkcia''
+
Image:microbit-Math2Run.png|''a jeho funkcia''
 
</gallery>
 
</gallery>
  
Program používa dva rozličné spôsoby pre zobrazenie hodnoty premennej c. Pomocou príkazu shownNumber zobrazíme číslo na maticovom displeji micro:bitu (s obmedzenou presnosťou). Pomocou druhého príkazu writeValue pošleme hodnotu
 
po sériovej linke (prenos cez USB) do počítača, kde ju môžeme vidieť v terminálovom okne.
 
  
 
<tabs>
 
<tabs>

Verzia zo dňa a času 16:33, 27. september 2023

Vyskúšajme, ako je na tom mikroprocesor v micro:bite s matematikou.

Prvý pokus spravíme s číslom 0,1. Spočítame ho trikrát za sebou a pozrieme sa, či je výsledok naozaj presne 0,3.

Icon Question.png Viete vysvetliť, prečo je výsledok takýto?


Skúste sa s programom pohrať a zamenťe číslo 0,1 napr. za 0,2 alebo 0,25 či 0,5. A čo tak 1/3 alebo trebárs 1 × 1024?

Icon Question.png Dostanete rovnaké, alebo rôzne výsledky? Prečo?

Program používa dva rozličné spôsoby pre zobrazenie hodnoty premennej c. Pomocou príkazu shownNumber zobrazíme číslo na maticovom displeji micro:bitu (s obmedzenou presnosťou). Pomocou druhého príkazu writeValue pošleme hodnotu po sériovej linke (prenos cez USB) do počítača, kde ju môžeme vidieť v terminálovom okne.

 let c = 0.1
 c = c + c + c
 basic.showNumber(3)
 serial.writeValue("c", c)
 c = 0.1
 c = c + c + c
 basic.show_number(3)
 serial.write_value("c", c)
/* !!! not fully tested !!! */

void main()
{
    float c = 0.1;
    
    c = c + c + c + c + c + c + c + c + c + c;

    printf("\n c = %f \n",c);
    
    if (c == 1.0f) 
      printf("\n * Je to 1,0\n");
    else 
      printf("\n * Nie je to 1,0\n");

    while (1) {  /* relax */  }
}



 let c = 0.1
 c = c + c + c
 basic.showNumber(3)
 serial.writeValue("c", c)
 c = 0.1
 c = c + c + c
 basic.show_number(3)
 serial.write_value("c", c)
}


Späť na zoznam príkladov....