Gegevens opslaan in variabelen en met deze variabelen werken

gegevens categoriën declareren operatoren overzicht operatoren

Gegevens

In een interactieve website moet men vaak gegevens invoeren. Dit kunnen allerlei soorten gegevens zijn. Denk maar aan je naam of adres, het salaris dat je verdient, een aantal artikelen dat je wilt kopen, het aantal exemplaren van één artikel enz.. Welke gegevens je allemaal verder kunt invoeren, is in dit hoofdstuk niet van belang. Wel gaan we kijken hoe javascript met dit soort gegevens omgaat.
Voorbeeld: Geef getal
In dit voorbeeld kun je dus getallen invoeren. Deze getallen vormen de invoer voor een proces die constant het totaal bijhoudt van alle getallen die zijn ingevoerd totdat de resetknop wordt ingedrukt. Het gegeven is hier een getal. Ergens moet bewaard worden wat tot nu toe het totaal is. Dit totaal zelf is ook weer een getal. De opslagplaats voor het totaal noemen we een variabele en deze variabele geven we een naam om een onderscheid te maken tussen mogelijk andere gegevens die we moeten opslaan.
Geef in het voorbeeld eens een woord als invoer.

Bij het programmeren wordt veel gebruik gemaakt van variabelen. Een variabele is dus een naam-waarde combinatie die de computer kan gebruiken. De computer slaat een waarde tijdelijk op in een variabele (eigenlijk reserveert de computer een stukje van je geheugen, hangt aan dit stukje de naam die je het gegeven hebt en slaat de waarde daar op). Denk aan $y=2 \cdot x$, hierin zijn de x en y variabel. Zodra je een waarde aan x geeft kan je er iets mee, bv $ x=2 \rightarrow y=2\cdot(2) \rightarrow y=4 $ . De x is de naam van de variabele en de waarde is (in dit geval) 2. Bij programmeren doe je iets soortgelijks: eerst definieer (declareer) je de variabele en daarna gebruik je hem.

In javascript declareer je een variabele als volgt:

let a = 9;
Deze regel code betekent: maak een variabele, geef hem de naam 'a' en zet daar de waarde 9 in.

Het geheugen van een computer kan je zien als een kast met allemaal bakjes. Als je een variabele declareert opent de computer een bakje en schrijft op de voorkant de naam die je de variabele gegeven hebt. Dan schrijft de computer op een blaadje de waarde die je aan de variabele geeft en stopt dat blaadje in het bakje. Als je dan later in de code de naam van dat bakje gebruik (in dit geval a) weet de computer dat het de inhoud van dat bakje moet pakken en gebruiken (in dit geval 9). Na de declaratie kan je ook de inhoud van het bakje veranderen. Dat doe je door (bv): '$a=5;$' te gebruiken, de computer 'gooit het oude blaadje weg', schrijft op een nieuw blaadje het getal 5 en stopt dat in het bakje.

Aan het einde van deze les weet je :

  • in welke categorieën we gegevens plaatsen;
  • een logische naam te geven aan de variabelen waarin we gegevens opslaan;
  • hoe je de gegevens door javascript kunt laten herkennen;

Bekijk de video. Deze video biedt een basis voor de rest van dit hoofdstuk.


Gegevens in categoriën

Gegevens kunnen we in Javascript en overigens in alle programmeertalen in categorieën verdelen. Alleen noemen we ze geen categorieën meer, maar het type van een gegeven. Er zijn verschillende typen te onderscheiden. De meest bekende zijn: string, double en integer, array. Wat betekenen deze typen en wat voor gegevens vallen hieronder?
string In de categorie string vinden we tekst of wel tekenreeks. Alles wat met tekst te maken heeft en in javascript code tussen "" of '' staat is tekst.
Voorbeelden: In de basiselementen heb je onderstaand eerste voorbeeld al gezien.
<script type="text/javascript">
	// Druk in de browser de functietoets F12 in om de uitvoer van console.log te zien.
	console.log("This is my first JavaScript!");
</script>
<script type="text/javascript">
	console.log("123.6");
</script>
<script type="text/javascript">
	console.log("@$^@@!!!!");
</script>

Zowel "This is my first JavaScript!" , "123.6" en "@$^@@!!!!" staan tussen aanhalingstekens en worden in javascript code gezien als tekst. Met tekst kun je niet direct rekenen. Het tweede voorbeeld moet eerst naar een getal worden omgezet! Het getal wat je in het invoerveld hebt ingevuld is in eerste instantie tekst. De onderliggende code doet een vertaling van die tekst naar een getal. Als je daar een woord in typte kreeg je NaN wat staat voor Not A Number.
integer Het type integer staat voor gehele getallen, B.v, 10 of 43 etc.
Voorbeelden:

<script type="text/javascript">
	console.log("10 + 30 = " + (10 + 30)+"<br/>");
	let a=10;
	let b=30;
	console.log(a+ " + " + b + " = " + (a + b));
</script>

In dit voorbeeld zul je als uitvoer twee keer de regel 10 + 30 = 40. Tussen haakjes worden eerst de getallen bij elkaar opgeteld. Strings kun je ook "optellen" met de + operator.
Strings worden dan aan elkaar geplakt. "10 + 30 = 40" is nu een nieuwe string.

<script type="text/javascript">
	let a="10";
	let b="30";
	console.log(a+ " + " + b + " = " + (a + b));
</script>

In dit voorbeeld zul je te zien krijgen 10 + 30 = 1030. De tekenreeks "10" wordt dan aan de tekenreeks "30" vast geplakt. Er is dus een verschil tussen a="10"; en a=10;
double Onder het type double vallen alle decimale getallen. Dus 10.49 of 45.6 etc. Programmeertalen zijn Engels georiënteerd. Er wordt dus gebruik gemaakt van de decimale punt.
Voorbeelden: Ook hier is er weer verschil tussen
<script type="text/javascript">
	console.log("10.6 + 30.44 = " + (10.6 + 30.44));
</script>
(dit geeft 10.6 + 30.44 = 41.04) en
<script type="text/javascript">
	console.log("10.6 + 30.44 = " + "10.6" + "30.44");
</script>
(dit geeft 10.6 + 30.44 = 10.630.44).

array Het laatste type is een array. Een array staat voor rij. Deze rij bevat meerdere gegevens van dezelfde hierboven genoemde types. Bijvoorbeeld:
Een array van string bevat meerdere tekststrings.
Een array van integer bevat meerdere getallen.
Een array van double bevat meerdere decimale getallen.
Een array in javascript kan ook tegelijkertijd strings, doubles en integers bevatten.
Hoewel we nog niet diep ingaan op het belang van arrays, geven we hier een voorbeeld. Later zullen we er nog vaak op terugkomen. Arrays zijn namelijk erg belangrijk bij de opslag van gelijksoortige gegevens. Zoals bijvoorbeeld een lijst van proefwerkcijfers.

<script type="text/javascript">
	let rijtje=new Array("Ik","ben",178,"cm",73.5,"kg");
	console.log(rijtje[0]+" ");
	console.log(rijtje[1]+" ");
	console.log(rijtje[2]+" ");
	console.log(rijtje[3]+"<br/>");
	console.log(rijtje[0]+" ");
	console.log(rijtje[1]+" ");
	console.log(rijtje[4]+" ");
	console.log(rijtje[5]+"<br/>");
</script>

Geeft:
Ik ben 178 cm
Ik ben 73.5 kg
Opdrachten
  1. In de volgende opdrachten is er een aantal variabelen gedeclareerd. Neem de onderstaande code over en geef in commentaarregels aan of het gaat om een double, int, string of array. Commentaar kan één regel zijn of meerder regels bevatten.
    Één regelig begint met //
    Meer regelig is ingesloten als volgt: /* commentaar */

    <script type="text/javascript">
    	/*
    	  Je kunt hier lekker
    	  je commentaar weg babbelen voor
    	  dit voorbeeld
    	 */
    	let a = 9; // Dit is ook commentaar
    	let b = 35.20;
    	let c = 88.1;
    	let melding = "Dit heb jij goed gedaan!";
    	let uitkomst = a+b+c;
    	alert(uitkomst);
    	alert(melding);
    </script>
    


Gegevens declareren

In bovenstaande opdracht staan regels die beginnen met var. Deze code regels noemen we variabele declaraties. De regel

let a = 9;

betekent. Declareer de variabele (var) a en geef die variabele de integer waarde 9.
Een variabele kun je zien als een bakje. Je schrijft op de buitenkant de naam a van het bakje en stopt in het bakje een briefje met het getal 9. Later in de code begrijpt de programmeertaal dat je met de aanroep van a bedoelt dat je iets wil doen met de inhoud van het bakje. De naam a representeert dan de waarde 9.
De regel
let uitkomst = a+b+c;
is een voorbeeld van het gebruik van die bakjes. De code maakt een nieuw bakje aan genaamd uitkomst. In dit bakje worden niet de bakjes a , b en c gestopt, maar worden de waarden in de bakjes bij elkaar opgeteld. De uitkomst van deze optelling wordt op een nieuw papiertje geschreven en in het bakje genaamd uitkomst gestopt.

Je kunt ook een variabele hergebruiken. Bijvoorbeeld:

a = a + b;
let uitkomst = a+c;
Hier wordt in de eerste regel het getal in a bij het getal in b opgeteld. Het resultaat wordt weer onder de naam a opgeslagen.

De uitkomst is nu gelijk aan aande uitkomst uit het vorige voorbeeld.
logische
naamgeving
De naam uitkomst is wat men noemt een een logische naamgeving.

Variabelen zijn 'dingen' die je heel vaak gebruikt in programmeertalen. Omdat je ze steeds moet hergebruiken is het heel handig om de variabele een logische naam te geven. Met logische naamgeving wordt bedoelt dat je de variabele een naam geeft die duidelijk maakt wat erin staat. De voorbeelden hierboven zijn namen die niet logisch zijn. Waar staat variabele 'a' voor? Aan de naam 'a' kan je niet zien waarvoor de waarde gebruikt wordt/gaat worden. Stel je voor dat je de variabele nodig hebt om het aantal behaalde punten in een spel bij te houden is het niet logisch om 'let a = 0' te gebruiken maar is het duidelijker en logischer om 'let score = 0' te gebruiken. Heb je maar 1 variabele in je code kan het nog duidelijk zijn dat je 'a' voor de score gebruikt, maar in de meeste code gebruik je heel veel variabele en zou je dus elke keer moeten kijken waar 'a' precies ook alweer voor staat. Gebruik je de variabele later in de code als je de score dan gaat aanpassen dan weet je dat je de variabele 'score' hiervoor moet gebruiken.

Logische naamgeving is nodig voor het onderhouden en begrijpelijk maken van je code. Stel je voor je schrijft een programma en een paar weken later moet je (of een ander, je docent misschien?) iets verbeteren. Gebruik je logische namen voor je variabele weet je (of een ander) meteen waar je die variabele voor gebruikt had ipv dat je eerst moet zoeken naar waar die variabele voor staat. Naast dat het handig is voor jezelf en anderen, zal je er ook op beoordeeld worden bij de ingeleverde opdrachten!!

De naam van een variabele mag geen spaties,punten,komma,uitroepteken en min of plus teken bevatten en niet met een cijfer beginnen. Er zijn nog een paar uitzonderingen. Beperk je dus zoveel mogelijk tot woorden. Als je een naam wilt weergeven dat uit meerdere woorden bestaat, doe dit dan zo: bedrag_per_uur of bedragPerUur.

Je hebt nu gezien hoe je een gegeven moet declareren. Stel je de volgende situatie eens voor: je wilt al je cijfers voor het vak informatica opslaan. Je weet al dat dit type een double is. Laten we uitgaan dat dit zeven cijfers zijn. Dan moet je wel heel veel declareren. Dit kan handiger. Door gebruik te maken van een array. Een voorbeeld is hieronder weergegeven.

let cfr_inf = new Array(9.8, 6.4, 7.7, 8.7, 5.3, 7.5, 6.9);
Een array kan je zien als een ladenkast. Een ladenkast (grote bak) bevat meerdere laatjes (bakjes). De kast heeft in het voorbeeld de naam cfr_inf en de laatjes krijgen als naam het nummer van de la. In de meeste programmeertalen begint de nummering ( ook wel indexering genoemd) met 0. Zo kun je je het volgende voorstellen.
naam: cfr_inf
index: 0 1 2 3 4 5 6
waarde: 9.8 6.4 7.7 8.7 5.3 7.5 6.9
Het vierde cijfer krijg je door de index van het vierde vakje aan te roepen ofwel cfr_inf[3]. De naam van het laatje moet tussen vierkante haken staan.
Voorbeeld:
<script type="text/javascript">
	let cfr_inf = new Array(9.8, 6.4, 7.7, 8.7, 5.3, 7.5, 6.9);
	console.log("Het vierde getal in cfr_inf {" + cfr_inf + "} is " + cfr_inf[3] );
</script>
Opdrachten
  1. Neem de onderstaande opdracht over. Je ziet dat er iets niet helemaal goed gaat in deze code. Je krijgt een foutmelding. Herstel dit! Zet achter een fout in commentaar wat er fout was en waarom. Zet er ook bij wat voor soort variabele het is.
    <!DOCTYPE html>
    <html>
      <head>
      	<title>Opdracht met variabelen</title>
        <script type="text/javascript">
        // PTA cijfers informatica
        let ed01= 5;
        let ed02= "Dit heb jij goed gedaan!"; 
        let ed melding= 8.1;
        let gemiddelde= (ed01+ed02)/2 ;
        alert(gemiddelde);
        alert(edmelding);
        </script>
      <head>
      <body">
      </body>
    </html>
    
  2. In de volgende opdracht ga je ontdekken wat er gebeurt als je getallen optelt. Bekijk de volgende code en zie hoe ze aan de uitkomsten komen.
    1. Neem de onderstaande code over.
    2. Geef aan wat de code bij elke stap doet (in commentaarregels!)
    3. In de melding 'dit heb jijgoed tegen gedaan' zitten twee woorden tegen elkaar geplakt. Bekijk eens hoe je dit kunt oplossen.
    4. In de onderstaande code zie je de volgende bewerkingen op de variabelen: ++, *=, /= en +. Dit soort bewerkingen noemt men operatoren.
      Ga naar W3schools operatoren en probeer al die operatoren eens uit.
    <script type="text/javascript">
    // PTA cijfers informatica
    let ed01 = 9;
    ed01++;
    ed01 *= 3;
    let ed02 = ed01 += 3;
    let ed03 = ed02 + ed01;
    ed03/=6.6;
    let ed04 = 6.6 + 3.4; 
    let m1 ="dit heb jij";
    let m2 ="goed gedaan";
    let m3 = m1 + m2;
    alert(ed04);
    alert(m3);
    </script>
    
  3. Inleveropdracht
    In de volgende code ga je zelfstandig een opdracht uitvoeren met behulp wat je hebt geleerd in de voorgaande opdrachten. Schrijf een opdracht waarin je twee getallen met elkaar vermenigvuldigt en er een melding verschijnt met tekst erin. Dus het antwoord moet in een alertvenster zichtbaar zijn. Geef duidelijke en logische namen aan variabelen en geef commentaar.
  4. Uitdaging: Jij bent die snelle leerling. Je hebt nauwelijks problemen met de stof tot nu toe, dan is Pong ofwel het grafische deel van deze cursus voor jouw een welkome extra.. Om daar een begin aan te geven ga je nu naar dit document.

Operatoren

Om iets met de inhoud van variabelen te doen zijn er in alle programmertalen operatoren beschikbaar. Een andere mogelijkheid, die we later zullen behandelen, is het gebruik van functies. Het grootste verschil tussen operatoren en functies is dat een functie een verzameling van deze operatoren is. De operatoren zijn dus de basis bwerekingen op gegevens.

Omdat in computers dataopslag plaats vind als rijtjes van enen en nullen zijn de meeste operatoren wiskundige van aard. In de voorafgaande voorbeelden ben je al optellen '+', vermenigvuldigen '*' en delen '/' tegengekomen, echte basale wiskundige bewerkingen, waartoe aftrekken '-' natuurlijk ook behoort.

De andere al veel gebruikte operator '=' zorgt ervoor dat je een waarde aan een variabele toekent. De variabele die links voor het 'is-teken' staat krijgt de waarde toegekend die links van het 'is-teken' staat (en niet andersom!!). Dus zoals in het voorbeeld van hierboven betekent let a = 9;: ken de waarde 9 toe aan de variabele a. Het betekent dus niet, zoals in de wiskunde,: a is gelijk aan 9!. Want in de wiskunde geldt ook dat '9 = a'. De computer '=' zou dan de waarde a aan 9 willen toekennen en dat kan niet. Een tweede voorbeeld is let q = 3 + 4;. Dit betekent: 3+4 (oftewel 7) wordt toegekend aan de variabele q.

In de vorige paragraaf hebben we een tweede operator gezien: de '+'. Hiermee tel je getallen bij elkaar op (net zoals in de wiskunde). Dus let q = 3+4 betekent 3+4 wordt uitgevoerd waar het getal 7 uit komt en dat getal wordt toegekend aan de variabele q. De '=' operator heeft dus een lagere prioriteit dan optellen.

Een andere wiskundige operator die vaak gebruikt wordt is de modulo-operator '%'. Voor we uitleggen wat dat betekent eerst een paar voorbeelden.

  • 12%5 heeft als resultaat 2
  • 13%4 heeft als resultaat 1
  • 38%13 heeft als resultaat 12
De modulo operator berekent wat er overblijft van het linker getal na het zoveel mogelijk gehele aantal malen afhalen van het rechter getal.
12%5 heeft als resultaat 2 omdat je van 12 twee keer het getal 5 afhalen, waarna je nog 2 overhoud.
13%4 heeft als resultaat 1 omdat je drie keer het getal 4 er van af kan halen waarna er nog ... overblijft.
38%13 heeft als resultaat 12 omdat je ... keer het getal 13 er van af kan halen waarna er nog ... overblijft.
Opdrachten
  1. Oefenen met modulo-rekenen:

Er zijn nog twee operatoren die vaak gebruikt worden. Dat zijn de '++' en '--' operatoren. Deze staan voor het respectievelijk ophogen en verlagen van de variabele met 1. Het is dus als het ware een afkorting. Voorbeeld: i++ betekend i = i + 1 en i-- betekent i = i - 1.

Naast de '=' operator, die waardes aan variabele toekent, zijn er meer toekennende operatoren. Deze operatoren combineren eigenlijk twee operatoren in een. De operatoren zijn '+=', '-=', '*=', '/=' en '%='. Net als de '++' en '--' zijn het afkortingen. De += operator is een afkorting voor 'nieuwe waarde van variabele is oude variabele plus getal'. Voorbeeld: a += 2 betekent a = a + 2. Op die manier werken de andere operatoren ook. Voorbeeld: a -= 2 betekent a = a - 2 en a *= 2 betekent a = a * 2 etc.

Opdrachten
  1. Oefenen met toekennen:

Overzicht van de meest gebruikte operatoren

Operatoren gebruik je veel in programmeren. Het is dus belangrijk dat je deze tabel goed onthoudt!!!

Rekenkundige Operatoren

Operator Omschrijving Voorbeeld Resultaat
+ Optellen x=1
x+1
2
- Aftrekken x=1
5-x
4
* Vermenigvuldigen x=2
x*5
10
/ Delen 15/5
5/2
3
2.5
% Modulus (Rest van delen) 5%2
10%8
10%2
1
2
0
++ Met 1 verhogen x=5
x++
x=6
-- Met 1 verminderen x=5
x--
x=4

String Operatoren

Operator Voorbeeld Hetzelfde als
+ tekst="abc"+"cdf"; tekst="abccdf";

Toekennende Operatoren

Operator Voorbeeld Hetzelfde als
= x=y x krijgt de waarde van y
+= x+=y x=x+y
-= x-=y x=x-y
*= x*=y x=x*y
/= x/=y x=x/y
%= x%=y x=x%y

Logische operatoren

Deze operatoren worden bij condities verder behandeld.

Operator Omschrijving Voorbeeld
== is gelijk aan 5==8 geeft false
=== Gelijk en bovendien van het zelfde type x=6;
y=6;
z="6";
x==y geeft true
x===y geeft true
x==z geeft true
x===z geeft false
!= is niet gelijk 5!=8 geeft true
is groter dan 5>8 geeft false
is kleiner dan 5<8 geeft true
>= is groter dat of gelijk aan 5>=8 geeft false
<= is kleiner dan of gelijk aan 5<=8 geeft true
! Not(niet) x=6
y=3
!(x==y) geeft true