H5 Variabelen

Leerdoelen

Na het bestuderen van dit hoofdstuk wordt van je verwacht dat je:

  • begrijpt hoe een programma gegevens (tijdelijk) in het interne geheugen van de computer opslaat
  • weet dat variabelen verschillende typen gegevens - zoals string (tekst) of int (integer: geheel getal) - kunnen bevatten
  • weet dat in sommige gevallen gegevenstypes geconverteerd (of gecast) moeten worden

Theorie

Als een programma wordt uitgevoerd, slaat de computer gegevens op in het intern geheugen. Dat gebeurt in cellen. Die cellen zijn één byte ( = 8 bits) groot. Dat betekent dat de maximale waarde van een cel 255 is. Als een hogere waarde moet worden bewaard, dan doet de computer (of eigenlijk het besturingssysteem) dit door een aantal cellen aan elkaar te koppelen. In de tabel in bijlage II staan de minimale en maximale waarde van de primitieve variabelen en het aantal cellen dat een primitief gebruikt.

Een string kan zo op het scherm gezet worden. In het geheugen wordt de string op een andere manier onthouden. Bijvoorbeeld de string "Java" heeft vier letters. Dat betekent in het geheugen dat er vijf cellen nodig zijn. In de eerste vier staan de waarden uit de ascii-tabel (zie bijlage III) en in de vijfde cel staat een 0. Een string eindigt altijd op een 0 zodat de computer weet dat de cel erna niet meer bij de string hoort. Dus de string "Java" wordt in het intern geheugen als volgt opgeslagen: 74, 97, 118, 97, 0.

In een variabele van het type int komt het getal 74 te staan. Dat betekent dat deze variabele als volgt wordt opgeslagen: 74, 0, 0, 0. Als deze vier cellen als string worden behandeld, dan zou op het scherm "J" komen te staan. Wat we echter willen zien zijn de tekens "7" en "4". Dat betekent dat deze variabele eerst omgezet moet worden naar een string voordat hij op het scherm gezet kan worden. Dat omzetten noemen we converteren of casten.

In Java gaat het converteren van een getal naar een string bijna automatisch. Het komt echter ook voor, dat in een tekstvak een getal (eigenlijk een aantal tekens) is ingetikt. Een tekstvak geeft de inhoud door als string en als er gerekend moet worden, dan moet de string eerst geconverteerd worden naar één van de primitieve typen.

Belangrijk is een goede en logische naamgeving voor variabelen. Zorg ervoor dat ze een naam hebben waaraan je meteen kunt zien wat de inhoud van een variabele is. In de tabel in bijlage III is daarom ook een kolom prefixen opgenomen. Bij kleine programma's kun je dat wel onthouden, maar bij grote programma's niet.

Opdracht 5.1

Maak praktijkopdracht van Hoofdstuk 4 opnieuw, maar maak nu gebruik van de volgende variabelen:

  • kleur(en) van type "Color"
  • breedte &
  • hoogte, beide van type "int"

Kun je nog meer variabelen bedenken?
Wat is het voordeel van deze aanpak?

In een java klasse kun je variabelen gebruiken. Een variabele moet altijd eerst worden gedeclareerd. Daarna geef je hem een waarde. Deze waarde moet overeenstemmen met het type dat is gedeclareerd. Java is hier heel streng in.

public class Show extends Applet{
    //declaratie.
    Color opvulkleur;
    Color lijnkleur;
    int breedte;
    int hoogte;

    public void init() {
        //initialisatie. 
        opvulkleur = Color.MAGENTA;
        lijnkleur = Color.BLACK;
        breedte = 200;
        hoogte = 100;
    }

    public void paint(Graphics g) {
        //teken rechthoek
        g.drawRect(100, 100, breedte, hoogte);
        //teken afgeronde rechthoek
        g.drawRoundRect(100, 225, breedte, hoogte, 30, 30);
        //teken gevulde rechthoek
        g.setColor(opvulkleur);
        g.fillRect(315, 100, breedte, hoogte);
        //teken ovaal
        g.setColor(lijnkleur);
        g.drawOval(315, 100, breedte, hoogte);
        //teken gevulde ovaal
        g.setColor(opvulkleur);
        g.fillOval(315, 225, breedte, hoogte);
        // en zo voort...
    }
}

Je kunt van iedere waarde in principe een variabele maken. Voordeel is dat je code overzichtelijker en leesbaarder wordt en je alleen de waardes van de variabelen hoeft te wijzigen als je iets wilt veranderen.

Opdracht 5.2

Maak opgave 4.4 (staafdiagram) nu opnieuw, maar nu zodanig dat als je het gewicht van de kinderen in de methode init() verandert het staafdiagram automatisch de staven tekent. Zie demo video hieronder.