Programmeren in C++ voor beginners


Rekenen met int en double



Dovnload 0.56 Mb.
Pagina8/22
Datum26.08.2016
Grootte0.56 Mb.
1   ...   4   5   6   7   8   9   10   11   ...   22

2.3.Rekenen met int en double

Een int en een double rekenen anders:


int a = 1 / 3 ; //a wordt 0

int b = 1.0 / 3.0; //b wordt 0

double c = 1.0 / 3.0; //c wordt 0.333

double d = 1 / 3 ; //d wordt 0.0


Merk op dat een 1 de integer 1 is en 1.0 de double 1.0 is.
Als de integer 1 wordt gedeeld door de integer 3, past dit 0 keer. 1.0 gedeeld door 3.0 wordt de 0.333, maar dit getal wordt impliciet gecast tot de integer 0. Ook 0.999 converteerd naar de integer 0.
Wil je dat getallen als double delen, cast deze dan eerst:
double d

= static_cast(1)

/ static_cast(3); //d wordt 0.333




Je kunt ook een C-style cast doen:
double d = (double)(1) / (double)(3);






Gebruik geen C-style casts.






Alleen als je de regels weet, weet je dat

double d = static_cast<double>(1) / 3;

Bij twijfel: cast altijd alles naar double.

2.4.De for-loop

De for-loop maakt het mogelijk een stuk code te laten herhalen, zolang een bepaalde conditie waar is, met elke mogelijk 'stap'.


for (

/* initialisatie */ ;

/* conditie */ ;

/* stap */

)

{

//Doe iets



}

for (

int i = 0; //Defineer de integer i op nul

i != 10; //Ga door zolang i ongelijk is aan tien

i = i + 1 //Tel steeds 1 op bij i

)

{



Memo1->Lines->Add(i);

}
Merk de volgende dingen op:

* Er kan in het initialisatie-gedeelte een variabele worden gedeclareerd. De scope van deze variabele is binnen de for-loop.

* For-loops zijn meestal van het type int.

* For-loops beginnen vaak bij 0 te tellen (hoewel dit bij bovenstaand voorbeeld zinloos zou zijn). Dit wordt later duidelijker waarom.

* For-loops lopen vaak tot een waarde (in plaats van tot-en-met een waarde).

* De drie delen van de for-loop zijn alle drie optioneel.

2.5.Verkorte rekenschrijfwijze

Volgende schrijfwijzen zijn equivalent:


//Tel twee op bij de integer i

i = i + 2; //Lees: de nieuwe waarde van i

// is de oude waarde van i plus 2

i += 2; //Lees: verhoog i met 2


//Tel een op bij de integer i

i = i + 1; //Lees: de nieuwe waarde van i

// is de oude waarde van i plus 2

i += 1; //Lees: verhoog i met 1

i++; //Lees: verhoog i

++i; //Lees: verhoog i


De '++i' notatie wordt veel gebruikt in for-loops. '--i' kan gebruikt worden om de integer i met een te verlagen.




Prefereer de kortst mogelijke schrijfwijze. Prefereer '++i' boven 'i++'.






Gebruik 'i++' alleen als je weet waarom deze schrijfwijze nodig is. In praktijk is dit bijna nooit.

2.6.Meer over for-loops

Er zijn nog drie sleutelwoorden die nuttig kunnen zijn in een for-loop.


for ( /* iets */ ; /* iets */ ; /* iets */)

{

if ( /* iets */ )

{

continue; //Ga nu al verder met de loop.

}

if ( /* iets */ )

{

break; //Ga nu uit de for-loop

}

if ( /* iets */ )

{

return; //Ga nu uit de Event/methode/functie

}

}


2.7.Speciale for-loops

Een for loop kan ook oneindig loopen.


for ( ; ; ) //Een oneindige for-loop

{

if ( /* iets */ ) //Ha, toch niet oneindig!

{

break;

}

}


Als de for-loop altijd blijft doorgaan, hangt je programma.

2.8.Een truc

void __fastcall TForm1::ButtonStartClick(TObject *Sender)

{

ButtonStart->Tag = 1;



for (int i = 0 ; ButtonStart->Tag == 1; ++i)

{

ButtonStart->Caption = IntToStr(i);


//Zorgt dat applicatie nog zijn dingen kan doen

Application->ProcessMessages();

}

}
void __fastcall TForm1::ButtonStopClick(TObject *Sender)



{

ButtonStart->Tag = 0;

}

2.9.Het switch statement

Het switch statement is een soort if-statement. Het is geschikt om een hele rits if-statement op dezelfde waarde verkort te kunnen schrijven.


Onderstaande stukken code zijn equivalent:
int aantal = /* iets */ ;

if (aantal == 1)

{

Button1->Caption = "Een";



}

else if (aantal == 2)

{

Button1->Caption = "Twee";



}

else if (aantal == 3)

{

Button1->Caption = "Drie";



}

else

{

//Default waarde



Button1->Caption = "Iets anders";

}
int aantal = /* iets */;



switch (aantal)

{

case 1: Button1->Caption = "Een"; break;



case 2: Button1->Caption = "Twee"; break;

case 3: Button1->Caption = "Drie"; break;

default: Button1->Caption = "Iets anders"; break;

}
Merk het volgende op:

* Een switch statement is leesbaarder dan een hele rits if-statements.

* Een case is altijd een enkel getal.

* De default waarde is optioneel.

* Elke case eindigd met een break. Door deze break wordt het switch statement beeindigd. Zonder deze break wordt de volgende case behandeld, dit wordt 'fall through' genoemd.

* In een switch statement kunnen geen variabelen worden gedeclareerd.
Een switch statement is veel minder flexibel dan een if statement. Hierdoor is het gemakkelijker een switch te overzien.



1   ...   4   5   6   7   8   9   10   11   ...   22


De database wordt beschermd door het auteursrecht ©opleid.info 2019
stuur bericht

    Hoofdpagina