01: Variabelen

Variabelen zijn “opberglocaties” voor gegevens in een programma. Ze zijn een manier om een naam te geven aan gegevens voor later gebruik.

Iedere variabele heeft een naam. Een voorbeeld van een naam voor een variabele is mijnGeluksgetal. Om een waarde op te slaan in een variabele, schrijven we een opdracht waarbij we een gelijkteken gebruiken. En wel als volgt:

«de naam van de variabele» = «de waarde die je wilt opslaan»
(We gebruiken «dubbele hoekhaakjes» in onze lessen, zoals hierboven, om specifieke delen van een expressie aan te duiden.)

Bijvoorbeeld, de regel in Python

mijnGeluksgetal = 13
slaat de waarde 13 op in de variabele mijnGeluksgetal. Vervolgens zal Python, overal waar je de naam mijnGeluksgetal gebruikt, de opgeslagen waarde ophalen.

Hieronder een kort voorbeeld waarbij variabelen worden gebruikt. Het bestaat uit meerdere regels met instructies: Python voert de eerste regel uit, dan de tweede regel, en zo voort totdat de laatste regel is uitgevoerd. Druk op de knop Uitvoeren om te zien wat er gebeurt.

Voorbeeld
Voorbeeld van hoe je een variabele gebruikt.

Kijk naar de 5 regels van het programma van boven naar beneden, en hoe ze overeenkomen met de uitvoer. Zoals je kunt zien behoudt mijnGeluksgetal zijn waarde 13 in de eerste twee print-opdrachten; dan verandert zijn waarde in 7.

We gebruikten hierboven voor het eerst de operator plus (+), waardoor twee getallen worden opgeteld. Evenzo zijn er operatoren voor aftrekken (-), vermenigvuldigen (*), en delen (/). We komen er in een latere les op terug.

Je kunt het geheugen van een computer nabootsen met potlood en papier, door de opgeslagen waarden bij te houden in een tabel. Hier volgt een voorbeeld; denk eraan dat * in Python vermenigvuldigen betekent.

Doel: bepaal de eindwaarden van alle variabelen op het eind van het programma.

eerste = 2
tweede = 3
derde = eerste * tweede
tweede = derde - eerste
eerste = eerste + tweede + derde
derde = tweede * eerste
Idee: We gebruiken een tabel om de waardeveranderingen bij te houden. Scroll naar beneden om het uiteindelijke antwoord te bekijken.

Opdracht Waarde nadat de opdracht is uitgevoerd
eerste tweede derde
eerste = 2 2
tweede = 3 2 3
derde = eerste * tweede 2 3 6
tweede = derde - eerste 2 3 4 6
eerste = eerste + tweede + derde 2 12 4 6
derde = tweede * eerste 12 4 6 48

Dus aan het einde van het programma is de waarde van eerste gelijk aan 12, de waarde van tweede gelijk aan 4, en de waarde van derde gelijk aan 48.

Probeer de Python-visualisatietool om dit soort programma's stap voor stap te laten uitvoeren. We bevelen het ten zeerste aan wanneer je niet helemaal begrijpt hoe Python werkt, of wanneer je vast zit bij het foutvrij maken van je programma! Je kunt deze link later terugvinden op de pagina Bronnen.

Hier volgt een oefening met kort antwoord over variabelen.

Kort antwoord opgave: Het gaat om x
Wat is de waarde van x nadat de volgende opdrachten zijn uitgevoerd?

x = 10
x = x + x
x = x - 5
Correct!

Twee Vaak Voorkomende Fouten

Wanneer je in Python vraagt naar een variabele die niet vooraf is gedefinieerd, krijg je een foutmelding.

Voorbeeld: Een niet gedefinieerde variabele

Zoals je kunt zien krijgen we een foutmelding: NameError: name 'trouble' is not defined.

Soms krijg je deze foutmelding ten gevolge van een tikfout: indien je een variabele definieert
adres=32, en dan probeert print(aadres), zie je een vergelijkbare foutmelding.

Een andere vaak voorkomende fout heeft te maken met het per ongeluk verwisselen van de twee zijden van een =-opdracht (een toekenningsopdracht).

Voorbeeld: SyntaxError: can't assign to literal

De eerste regel is in orde maar de tweede regel veroorzaakt een foutmelding: Python interpreteert de tweede regel 4 = x als een poging om de waarde van 4 te veranderen, maar je kunt alleen maar de waarde van variabelen veranderen, en 4 is geen variabele.

In de wiskunde zijn A = B en B = A weliswaar equivalente vergelijkingen, maar in programmeertalen zijn het verschillende toekenningsopdrachten: de eerste verandert de waarde van variable A (en enkel die van A), en de tweede verandert de waarde van variable B (en enkel die van B).

Oefening

Dit is een opwarming, je eerste oefening waarin je variabelen gebruikt.

Programmeeroefening: Hoofden, Schouders, Knieën en Tenen
Schrijf een codefragment (een kort stukje van een Python-programma) dat de hoofden, schouders, knieën, en tenen op een feestje telt. Het nakijkprogramma maakt automatisch een variabele mensen voor je aan, die het aantal mensen op het feestje bijhoudt. Jouw code moet vier variabelen definiëren, één genaamd hoofden, één genaamd schouders, één genaamd knieen, en één genaamd tenen, gelijk aan het totaal aantal hoofden, schouders, knieën, en tenen op het feestje. Hiervoor moet je dus gebruik maken van de bestaande variabele mensen. Je programma hoeft geen uitvoer af te drukken. Klik hier als je een tip wilt

Zet de regels in de juiste volgorde

Het volgende onderdeel van deze les is een nieuw type programmeeroefening, waarbij je geen programma hoeft in te typen. We geven je de regels van een correct programma, maar die staan nog in een onjuiste volgorde. Jij moet de regels in een correcte volgorde zetten.

Scramble Opgave: Bereken de Snelheid
Je hebt deelgenomen aan een wielrenwedstrijd die zowel bergop als bergaf ging. Het nakijkprogramma zal vier variabelen voor je definiëren: bergopAfstand en bergafAfstand geven de afstand (in km) van beide delen van de wedstrijd, en bergopTijd en bergafTijd geven de tijd (in minuten) die je nodig had om elk deel van de race te voltooien. Schrijf een programma dat je gemiddelde snelheid afdrukt (in km/min) voor de totale wedstrijd.
Versleep met je muis de regels naar de juiste plek.
Klik hier voor een tip.
  • totaleAfstand = bergopAfstand + bergafAfstand
  • print(gemiddeldeSnelheid)
  • gemiddeldeSnelheid = totaleAfstand / totaleTijd
  • totaleTijd = bergopTijd + bergafTijd

Variabelen verwisselen

Hier volgt de laatste opgave van deze les.

Programmeeroefening: Variabelen omwisselen
Schrijf een programma dat de waarden van twee variabelen omwisselt. Twee variabelen x en y zijn vooraf gedefinieerd, en bevatten elk een getal. Na uitvoering van het programma moet de oude waarde van x in de variabele y te vinden zijn en de oude waarde van y in de variabele x. Het programma hoeft geen uitvoer te geven.
De meeste eenvoudige oplossing is kort, maar moeilijk te vinden. Klik zo nodig op de aanwijzingen.
Aanwijzing 1

Je hebt geen rekenkundige operatoren nodig (+-*/) om de opgave op te lossen. Je hebt slechts variabelen en de =-operator nodig. Je kunt nog meer variabelen definiëren wanneer je dat wilt
Aanwijzing 2

We hebben twee doelen: de originele waarde van y moet in x staan en de originele waarde van x moet in y staan. Wanneer we het eerste doel bereikt zouden hebben dus x naar y kopiëren), dan konden we eenvoudig

x = y
gebruiken. Maar hoe kunnen we beiden doelen bereiken?
Aanwijzing 3
Het volgende programma ziet er veelbelovend uit:

x = y
y = x
Maar er is een klein probleem. Nemen we als voorbeeld aan dat, x 10 zou zijn en dat y 99 zou zijn. Wanneer we bovenstaand tweeregelig programma zouden gebruiken, zou na de eerste regel de waarde van beide variabelen x en y 99 zijn. De tweede regel heeft dan geen effect. Je kunt beide regels hieronder intypen en zelf nagaan wat er gebeurt. Hoe kunnen we de originele waarde van x ergens opslaan , om daarna y over te zetten?
Aanwijzing 4
Je eerste regel moet er uit zien als xOrigineel = x, zodat de originele waarde van x behouden blijft. Dan kun je x = y gebruiken. Tenslotte moet je nog y voorzien van de originele waarde van x.
Aanwijzing 5
Hier vind je een artikel uit Wikipedia over dit thema in het engels. Daarbij worden ook oplossingen met getallen getoond, die niet toepasbaar zijn op teksten (of andere complexe constructoren).

Wanneer je deze oefening correct hebt opgelost, kun je beginnen aan de volgende les. Klik hieronder op Volgende.