zaterdag 18 juni 2011

Les3 C++ REKENEN

Rekenen

 Binary arithmetic operators

Nu we materiaal hebben kunnen we er het eerste gereedschap bij halen om het materiaal te bewerken. Het eerste gereedschap is het gereedschap waarmee we kunnen rekenen. En dit gereedschap heeft de volgende basis instellingen waaruit we kunnen kiezen.

Optellen                         +
Aftrekken                        -
Vermenigvuldigen          *
Delen                              /
Modulus                         %

 Dit zijn de arithmetic operators

Met behulp van de assignment operator = kunnen we de uitkomst bewaren in een variabele.
Datgene wat rechts staat van het = teken zal worden uitgerekend  en
dan overgebracht worden naar de variabele links van het = teken.


som = getal 1 + getal 2
Het programma zal de waardes ophalen uit het geheugen. Vervolgens naar de CPU sturen. de CPU berekent het en stuurt het antwoord weer terug.




Bewerkings volgorde.

Zie hier enkele sommen:

3 + 4 – 8 =
3 + 4 – 8 /5 * 6 =
3 + 4 - -8 * 6 / 10 + 9 * 2 =

In welke volgorde moeten we dit nu oplossen ?
Hierover is een afspraak gemaakt. Vroeger ging het volgens “Meneer Van Dale Wacht Op Antwoord” wat staat voor eerst machtsverheffen dan vermenigvuldigen , delen, worteltrekken optellen, aftrekken. Dit is echter achterhaald nu is de afspraak.
1.Haakjes.
2.Machtsverheffen en worteltrekken.
3.Vermenigvuldigen en Delen.
4.Optellen en Aftrekken.

Voor ons is het nu belangerijk te weten welke volgorde de computer hanteert.
Dit kunnen we controleren met een voorbeeld dan zien we het zelf.

#include <iostream>
#include <climits>

using namespace std;

int main(void)
{

        float nGetal1;
        float nGetal2;
        float nGetal3;

        float nAntwoord1;
        float nAntwoord2;
        float nAntwoord3;

        nGetal1 = 8;
        nGetal2 = 7;
        nGetal3 = 3;

        nAntwoord1 = 0;
        nAntwoord2 = 0;
        nAntwoord3 = 0;

        nAntwoord1 = (nGetal1 / nGetal2) * nGetal3;
        nAntwoord2 = nGetal1 / (nGetal2 * nGetal3);
        nAntwoord3 = nGetal1 / nGetal2 * nGetal3 ;

        cout << "Antwoord =  " << nAntwoord1<< '\n';
        cout << "Antwoord =  " << nAntwoord2<< '\n';
        cout << "Antwoord =  " << nAntwoord3<< '\n';
    return 0;
}

Wat tussen haakjes staat wordt eerst uitgerekend. Haal de haakjes weg en kijk of je het zelfde antwoord krijgt. Probeer nu zelf wat sommen te maken en kijk in welke volgorde ze worden opgelost. Noteer nu voor je zelf welke volgorde de computer hanteert.
Dit blijft altijd lastig vandaar dat haakjes al veel verduidelijken
En niet iedereen kent of houdt zich aan afspraken.
Kijk maar naar gewicht joule bar.



#include <iostream>
using namespace std;

int main()
{// begin blok

        //declareer
        int nGetal1;  //local variabelen
        int nGetal2;

        int nSom;
        int nProdukt;
        float nBreuk;
        int nVerschil;


        //initialiseer

        nGetal1 = 4;
        nGetal2 = 7;

        // instructies
        nSom = nGetal1 + nGetal2;
        nProdukt = nGetal1 * nGetal2;
        nBreuk =   (float)nGetal1 /nGetal2;
        nVerschil = nGetal1 - nGetal2;

                nGetal1 = nGetal1 + nGetal2;
        cout <<”de waarde van nGetal is nu “ << nGetal << endl;
                nGetal1 = nGetal1 + nGetal2
        cout <<”de waarde van nGetal is nu “ << nGetal << endl;

                nGetal1 = nGetal1 + nGetal2;
                nGetal1 = nGetal1 + nGetal2;

        cout <<”de waarde van nGetal is nu “ << nGetal << endl;
cout <<”de waarde van nGetal is nu “ << nGetal << endl;


        cout << "Toon getallen " << nGetal1<< "\t" << nGetal2 << endl;
        cout << "Toon adres " << &nGetal1<< "\t" << &nGetal2 << endl;
        cout << "Toon getallen " <<  nSom << endl;
        cout << "Toon adres " << nProdukt << endl;
        cout << "Toon getallen " <<  nBreuk << endl;
        cout << "Toon adres " << nVerschil << endl;


        return 0;
}// einde blok

Converteren

Als we twee integers 8 / 5 willen delen krijgen we een probleem, de uitkomst is namelijk geen geheel getal , we zullen er dus voor moeten zorgen dat de variabelen van het type float worden. Of we converteren deze integers naar float. Dit kan door (float) voor de berekenning te zetten.

Modules %
De remainder operator
Modulus % deze werkt alleen met  integers.

7 % 3 = 1  dit is 7 / 3 gaat 2 x 3 = 6  blijft over 7 – 6 = 1.
48 % 9 =  3  gaat 5 x 9 = 45 ,blijft over 48 – 45 = 3.

Mooi maar wat kun je er mee ? We zullen later zien dat je het kunt gebruiken om een periodieke
Instelling te maken.



Tot zover de binary aritmetic operators.

Belangrijk is nu om te weten:
De bewerkings volgorde
Gebruik haakjes om het eventueel duidelijker te maken.
De juiste types gebruikt worden.
Delen door nul moet je nooit doen.
En opletten met negatieve getallen.

Toets

  1. Wat is hier fout ?.
      ngetal1 + ngetal2 = nsom;
  2. Wat wil sequentieel zeggen ?.
  3. hoe vind je het adres van een variabele ?.
  4. hoe noemen we het is = teken ?.
  5. welke data types zijn er ?.
  6. wat vertelt het { teken je ?.
Bekijk het volgende stukje code
1. maak het in orde.
2. zorg dat nAntwoord1 klopt, bedenk  twee manieren om het op te lossen.

include <iostream>
using namespace sdt

int main(void)
{

        int nGetal1;
        int nGetal2;
        int nAntwoord1;
       
        nGetal1 = 8;
        nGetal2 = 7;
        nAntwoord1 = 0;

        nAntwoord1 = nGetal1 / nGetal2;
  cout >> "Antwoord =  " >> nAntwoord1>> '\n';

    return 0;
{


Sequentieel

Je kunt niet eerst een waarde op vragen en daarna deze waarde declareren.
het programma werkt seqentieel, dit wil zeggen dat regel na regel gelezen en uitgevoerd wordt.
Het programma kan dus niet weten wat op regel tien staat als deze pas bij regel 9 is.

Opdracht: verander de plaats van regels in je programma bedenk wat er gebeuren zal
en controleer of je gelijk hebt.

Dat is weer het fijne aan programmeren je kunt na gaan of het werkt en of de compiler het signaleert.
Echter dit houdt niet in dat je maar luk raak moet gaan uitproberen tot het uiteindelijk werkt.
Als je niet weet waarom het werkt ben je verkeerd bezig . Probeer dus altijd te achter halen waarom werkte het.

1.       De compiler ontdekt je fout en geeft dit aan.
2.       De compiler ontdekt een fout maar geeft niet de daadwerkelijke fout aan.
3.       De compiler ontdekt geen fout maar er is wel een fout dit zijn de bekende bugs.
4.       De compiler ontdekt geen fout en er is ook niks fout.

TIP: in het begin is de fout meestal het vergeten van de ; of } {


Geen opmerkingen:

Een reactie posten