Programmeren voor Kinderen

Leren programmeren op de basisschool

Les 5

Heb je Les 4 al af? Want als je niet weet wat een variabele is snap je hier niks van.

Lussen

Als je goed kijkt naar het programma dat we tot nog toe hebben geschreven is het wel een beetje saai. De regels lijken heel veel op elkaar.

(Weet je nog hoe je het programma opent in Notepad?

  • Start-knop linksonder
  • Type cmd
  • Type notepad print.py

Doe maar.)

Variabelen kunnen ons ook helpen om dat te verbeteren. Daarvoor maken wij een lus.

We beginnen met een nieuw programmaatje. Ga naar het zwarte cmd-scherm en type:

notepad for.py

Als Notepad vraagt of je een nieuw bestand wilt klik je Ja of Yes.

Type nu maar eens dit:

for i in range(1, 11):
    print i

Eén ding is héél belangrijk: de tweede regel begint met 4 spaties. Die staat dus een stukje naar binnen. Daardoor weet de computer wat bij de lus hoort en wat niet.

Bewaar, en type in het zwarte scherm:

python for.py

Zie je wat er gebeurt? De computer telt tot 10. Met twee regels programmeren!

Dit is wat programmeurs een lus noemen. Net als in je veter, kijk maar:

Een for-lus

Een for-lus

for betekent ‘voor’, en range betekent zoiets als: alle getallen tussen dit en dat. Dus eigenlijk staat hier zoiets als:

Voor alle i’tjes tussen één en elf,
print dat i’tje.

Dit is wat de computer denkt.

Hmm. Wat zullen we vandaag eens gaan doen? O, of we for.py willen uitvoeren. Nou, vooruit dan maar.

Even kijken wat er staat. for in in range(1, 11) Okee, dan beginnen we met 1:
i = 1.
En wat moeten we doen met i? Es kijken: print i
Hier komt ie:
1
Maar we zitten in een lus, dus we gaan weer terug naar de vorige regel.

Goed, waar waren we gebleven? O ja, bij 2
i = 2
En wat moeten we doen met i? Es kijken: print i
Hier komt ie:
2
Maar we zitten in een lus, dus we gaan weer terug naar de vorige regel.

Goed, waar waren we gebleven? O ja, bij 3
i = 3
En wat moeten we doen met i? Es kijken: print i
Hier komt ie:
3
Maar we zitten in een lus, dus we gaan weer terug naar de vorige regel.

Goed, waar waren we gebleven? O ja, bij 4
i = 4
En wat moeten we doen met i? Es kijken: print i
Hier komt ie:
4
Maar we zitten in een lus, dus we gaan weer terug naar de vorige regel.

Goed, waar waren we gebleven? O ja, bij 5
i = 5
En wat moeten we doen met i? Es kijken: print i
Hier komt ie:
5
Maar we zitten in een lus, dus we gaan weer terug naar de vorige regel.

Goed, waar waren we gebleven? O ja, bij 6
i = 6
En wat moeten we doen met i? Es kijken: print i
Hier komt ie:
6
Maar we zitten in een lus, dus we gaan weer terug naar de vorige regel.

Goed, waar waren we gebleven? O ja, bij 7
i = 7
En wat moeten we doen met i? Es kijken: print i
Hier komt ie:
7
Maar we zitten in een lus, dus we gaan weer terug naar de vorige regel.

Goed, waar waren we gebleven? O ja, bij 8
i = 8
En wat moeten we doen met i? Es kijken: print i
Hier komt ie:
8
Maar we zitten in een lus, dus we gaan weer terug naar de vorige regel.

Goed, waar waren we gebleven? O ja, bij 9
i = 9
En wat moeten we doen met i? Es kijken: print i
Hier komt ie:
9
Maar we zitten in een lus, dus we gaan weer terug naar de vorige regel.

Goed, waar waren we gebleven? O ja, bij 10
i = 10
En wat moeten we doen met i? Es kijken: print i
Hier komt ie:
10
Maar we zitten in een lus, dus we gaan weer terug naar de vorige regel.

Goed, waar waren we gebleven? O ja, bij 11
Maar we moeten maar tot 11. Ik stop er maar eens mee.

Als jij zo zou denken was je halverwege al in slaap gevallen, denk ik. Gaaaaaaaap. Maar computers zijn erg goed in saaie dingen. Hij gaat gewoon door met wat hem gevraagd wordt.

Eigenlijk is het geen lus, maar meer also je een touwtje om een stokje aan het winden bent. Je komt van boven, naar beneden, dan terug naar boven, weer naar beneden, enzovoorts enzovoorts totdat je klaar bent.

for-lus touwtje

Een for-lus is eigenlijk een soort touwtje

 

Wat de computer hier denkt lijkt eigenlijk wel een beetje op ons tafel-programmaatje, nietwaar? Hij denkt steeds hetzelfde, maar steeds met een andere waarde voor de variabele i.

Dat is eigenlijk hetzelfde als de tien regels in print.py. Er staat steeds

print '1 x', getal, '=', 1 * getal

maar met een andere waarde voor 1. Wat als we daar nou eens i van maken?

for i in range(1, 11):
    print i, 'x', getal, '=', i * getal

Probeer maar eens of je for.py zo kan schrijven dat hij precies hetzelfde doet als print.py.

In hoeveel regels kan dat?

Kun je hem nu ook verder laten rekenen? tot 20 x 285672187? Of zelfs tot 1000 x 285672187?

Een goede programmeur is een luie programmeur

Als het goed is waren het vier regels. Maar om hem tot 20 x 285672187 te laten rekenen was nog steeds vier regels. En om hem tot 1000 keer 285672187 te laten rekenen was nog steeds vier regels. Want jij, de programmeur, was lui, en liet de computer al het werk doen. En dat allemaal omdat we de getallen in doosjes hadden gestopt: een i-doosje waar de for-lus steeds een nieuw getal instopte, en een getal-doosje waar 285672187 inzat.

Ze zeggen wel eens dat een goede programmeur een luie programmeur is. Want programmeurs willen nooit veel typen. Maar om ervoor te zorgen dat je niet veel hoeft te typen moet je wel heel hard nadenken: wat kan ik allemaal in een doosje stoppen?

Dat is een beetje de truc van programmeren: eerst ga je heel lang nadenken, en dan ga je heel weinig typen. Onthoud dat maar.

Wat heb je geleerd?

Wat hebben we in deze les geleerd?

  •  Met een for-lus kan je tellen.
  • Als je de computer vraagt of hij tot 11 wil tellen, telt hij tot tien.
  • Computers hebben hele saaie gedachten.
  • Computers vinden het niet erg om dingen heel vaak te herhalen.
  • Kinderen vinden het wel erg om dingen te herhalen, want dat is saaaaaaaaaaaaaaaaaaaaaaaai.
  • Een goede programmeur is een luie programmeur.

Vind je het nog leuk? Volgende keer meer!


18 Reacties aan “Les 5”

  1. henk schreef:

    lol het kan in 3 regels

  2. Edo schreef:

    Dag Dion,

    ik ben nu bij les 5. Wat ik alleen niet snap, als ik via cmd het commando
    ‘notepad print.py’ uitvoer krijg ik een error. Als ik het commano echter rechtstreeks in de zoekbalk uitvoer (dus zonder eerst cmd) dan lukt het wel. Enig idee waar dat aan kan liggen?
    mvg,
    Edo

    • Dion Nicolaas schreef:

      Hoi Edo,
      Super dat je al zo ver bent! Wat voor foutmelding krijg je precies?
      Aan de andere kant: als het op jouw manier werkt is het ook goed. Succes met de verdere lessen!

      Dion

  3. Edo schreef:

    dag Dion, ik krijg de volgende foutmelding;
    ‘notepad is not recognized as an internal or external command, operable program or batch file

  4. Nouri schreef:

    Het kan in drie regels. Henk heeft gelijk

    getal = 285672187
    for i in range(1, 21):
        print i, 'x', getal, '=', i * getal
    • Dion Nicolaas schreef:

      Die drie regels kloppen helemaal!

      In print.py staat ook nog deze regel:
      print 'De tafel van', getal
      Met die erbij is het vier regels…

      • Pierijn schreef:

        Het kan echt in 3 regels:

        getal = 123
        print ‘De tafel van’, getal
        for i in range (1, 11): print i, ‘x’, getal, ‘=’, i * getal

        Als je na de dubbele punt niet naar een volgende regel gaat maar gewoon door typt, doet ie het ook.

        • Dion Nicolaas schreef:

          Mooi gevonden! Zo kan het inderdaad in drie regels.
          Ikzelf vind het wel duidelijker als je het print-statement op de volgende regel zet.

          Het kan ook in twee regels… Maar dan wordt het nog onduidelijker.

          • Willem schreef:

            getal = 25
            for i in range(1,51):print ‘de tafel van i’, ‘X’, getal, ‘=’, i * getal,
            telt deze het is twee regels

          • Dion Nicolaas schreef:

            Deze methode print ‘de tafel van’ voor iedere regel… Dus dat is niet helemaal hetzelfde.

  5. fifi schreef:

    ik was eerst goed bezig maar nu krijg ik als ik ‘print …’ intyp de melding ‘kan apparaat PRN niet initialiseren’ wat moet ik doen?

    • Dion Nicolaas schreef:

      Ik denk dat je ‘print …’ intypt in het cmd-window. Maar print werkt alleen in python… Dus dat commando moet je of in python typen, of in een bestandje typen dat je met Notepad maakt.

      Succes,
      Dion

  6. Pascal schreef:

    Het kan uitgebreid in 3 regels.

    getal = 9
    x = 11
    print ‘de tafel van’, getal: for i in range(1, x): print getal, ‘x’, i, ‘=’, getal *i

    • Dion Nicolaas schreef:

      Dat werkt bij mij niet!

        File "drie.py", line 3
          print 'de tafel van', getal: for i in range(1, x): print getal, 'x', i, '=', getal *i
                                     ^
      SyntaxError: invalid syntax
      

      Dion

  7. oualid schreef:

    helemaal makkelijk

  8. Silke :) schreef:

    Hallo, ik heb het in drie regels, ik snap niet zo goed hoe jij er vier doet… Nu ja, het werkt 🙂 grtjes silke 🙂

Geef een reactie