Thuis
Contacten

    Hoofdpagina


Programmeren in C++ voor beginners

Dovnload 5.04 Mb.

Programmeren in C++ voor beginners



Pagina18/49
Datum25.10.2017
Grootte5.04 Mb.

Dovnload 5.04 Mb.
1   ...   14   15   16   17   18   19   20   21   ...   49

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

}

}


    1. 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.

    1. 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;

}

    1. 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. Debuggen

Nu onze programma's complexer worden, is het nuttig en leerzaam om de debugger te leren gebruiken. Een fout wordt ook wel een bug genoemd. Debuggen is dus het verwijderen van fouten.


Voor het debuggen is het nuttig de volgende icoontjes in je menubalk te hebben. Dit kan door met de rechtermuisknop op de menubalk te klikken en dan 'Customize | Commands' en dan de icoontjes te slepen naar de gewenst plek op de menubalk.


Icoon

Naam

Sneltoets

Omschrijving



Run

F9

Start het programma



Reset

Ctrl-F2

Stop het programma



Trace Into

F7

Ga met de debugger in een functie



Step Over

F8

Ga met de debugger naar de volgende regel code



View Breakpoints

Ctrl-Alt- B

Bekijk alle breakpoints

Alle programmeurs maken fouten. Onderstaande code zorgt dat het programma hangt, wegens het vergeten van een is-teken.


void __fastcall TForm1::Button1Click(TObject *Sender)

{

for (int i=-10; i!=10; ++i)

{

if (i=0) //Expres fout! Moet 'if (i==0)' zijn

{

break;



}

}

}


De compiler denkt de fout al te zien en geeft dit aan met de volgende melding:
[C++ Warning] Unit1.cpp(21): W8060 Possibly incorrect assignment
Met de debugger is deze fout gemakkelijk te ontdekken. Dit doen we met een breakpoint. Een breakpoint is een punt in het programma, waarop het programma pauzeert. Een breakpoint kan geplaats worden door links in de 'gutter' te klikken.


Een breakpoint
Als we het programma starten en op Button1 klikken, dan stopt het programma op deze breakpoint.



Kylix wacht
Met 'Step Over' (F8) kunnen we naar de volgende regel code gaan. Door met de muiscursor over een variabele te zweven, krijgen we de waarde van deze variabele te zien.

De debugger laat ons de waarde van i zien


Omdat i nog geen waarde heeft gekregen, maar wel een plekje in het computergeheugen heeft, laat de debugger zien wat er op dit moment op het plekje van i staat. Dit kan elke willekeurige waarde zijn. Een 82 in dit geval. Na nog een 'Step Over' wordt i pas op de waarde -10 gezet.
Na een paar keer 'Step Over' wordt duidelijk dat de waarde van i steeds op nul wordt gezet, inplaats van dat er getest wordt of i gelijk is aan nul. De fout is gevonden.

    1. Volgende week


Volgende week leren we hoe we functies kunnen maken. Ook leren we hoe we de voorgeprogrammeerde functie assert aan kunnen roepen. assert is een belangrijke debug functie. De TStringGrid wordt behandeld: een Component voor een twee dimensionale tabel.
  1. Dag 3






Een mogelijk eindprogramma van vandaag.


Onze code gaat er steeds groter en onoverzichtelijker uitzien. Ook zal er regelmatig een stuk code gekopieerd worden. Om dit te voorkomen leren we vandaag onze eigen functies te maken. We leren ook de standaard functie assert gebruiken, die helpt met het debuggen van onze grote programma's. De TStringGrid is het Component van vandaag, een 2-dimensionale tabel van Strings.


1   ...   14   15   16   17   18   19   20   21   ...   49

  • Speciale for-loops
  • Een truc
  • Het switch statement
  • Debuggen
  • Volgende week
  • Dag 3
  • Een mogelijk eindprogramma van vandaag.

  • Dovnload 5.04 Mb.