zinnengenerator - leiden university...de leerlingen kunnen zelfstandig met deze les aan de slag, een...

11
Zinnengenerator Doel: De leerlingen schrijven een programma in Python dat random zinnen genereert door woorden uit verschillende lijsten te combineren. Beginsituatie: De leerlingen kennen de regels voor het vormen van zinnen. De leerlingen kennen de basisbeginselen van programmeren in Python (introductieles). De leerlingen hebben ervaring met de programmeerconcepten lijsten en randomness (in Scratch). Materiaal: een laptop/pc per leerling of duo, de lesbrief ‘Zinnengenerator’, potlood/pen Werkvorm: zelfstandig, bij voorkeur in tweetallen Start – kern – slot De leerlingen kunnen zelfstandig met deze les aan de slag, een klassikale introductie of afsluiting is facultatief. De leerlingen werken met de lesbrief. De leerkracht loopt rond om vragen te beantwoorden en hulp te bieden waar nodig. Een aantal opdrachten in deze les wordt in tweetallen gemaakt. Naar eigen inzicht kunnen delen van de les klassikaal gedaan worden.

Upload: others

Post on 11-May-2021

5 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Zinnengenerator - Leiden University...De leerlingen kunnen zelfstandig met deze les aan de slag, een klassikale introductie of afsluiting is facultatief. De leerlingen werken met de

Zinnengenerator

Doel: De leerlingen schrijven een programma in Python dat random zinnen genereert door woorden uit

verschillende lijsten te combineren.

Beginsituatie: De leerlingen kennen de regels voor het vormen van zinnen. De leerlingen kennen de

basisbeginselen van programmeren in Python (introductieles). De leerlingen hebben ervaring met de

programmeerconcepten lijsten en randomness (in Scratch).

Materiaal: een laptop/pc per leerling of duo, de lesbrief ‘Zinnengenerator’, potlood/pen

Werkvorm: zelfstandig, bij voorkeur in tweetallen

Start – kern – slot De leerlingen kunnen zelfstandig met deze les aan de slag, een klassikale introductie of afsluiting is

facultatief. De leerlingen werken met de lesbrief. De leerkracht loopt rond om vragen te beantwoorden

en hulp te bieden waar nodig. Een aantal opdrachten in deze les wordt in tweetallen gemaakt.

Naar eigen inzicht kunnen delen van de les klassikaal gedaan worden.

Page 2: Zinnengenerator - Leiden University...De leerlingen kunnen zelfstandig met deze les aan de slag, een klassikale introductie of afsluiting is facultatief. De leerlingen werken met de

Zinnengenerator

Vind je het ook altijd zo moeilijk hoe je moet beginnen als je een verhaal wil schrijven? De eerste zin, die is

vaak het allerlastigst. Daarom ga je een programma maken in Python dat elke keer weer een nieuwe

beginzin voor je bedenkt. Dat scheelt een boel tijd en gepieker!

We gebruiken hiervoor dingen die je al weet over programmeren in Scratch, maar het uiteindelijke

programma schrijven we in Python. We gebruiken ook dingen die je in de vorige les al geleerd hebt over

programmeren in Python.

Simpele zinnen Voor het maken van de meest simpele zinnen heb je maar twee woorden nodig. Bedenk eens vijf zinnen

die uit twee woorden bestaan en schrijf ze hier op.

1. ____________________________________________________

2. ____________________________________________________

3. ____________________________________________________

4. ____________________________________________________

5. ____________________________________________________

Kijk eens goed naar je zinnen en ontleed ze. Dat moet niet zo moeilijk zijn met deze korte zinnen! Als je

geen vraagzinnen hebt gebruikt, is als het goed is in alle vijf je zinnen de volgorde van de zinsdelen

hetzelfde. Schrijf die volgorde hieronder op.

Zinsdeel 1 = ____________________________________________________________________________

Zinsdeel 2 = ____________________________________________________________________________

Nu ga je Python gebruiken om verschillende van dit soort simpele zinnen te maken.

Ga naar repl.it en maak een nieuw bestand aan, noem dit bestand ‘zinnengenerator’.

Om verschillende zinnen te maken, heb je meer dan één onderwerp nodig en meer dan één

persoonsvorm. Het is handig voor Python als alle onderwerpen bij elkaar staan en alle persoonsvormen,

zodat steeds uit beide categorieën een voorbeeld gehaald kan worden om een nieuwe zin te maken.

Herinner je je nog hoe je dat in Scratch doet? Inderdaad, je maakt een lijst. In Scratch doe je dat op de

volgende manier:

Generator is een

moeilijk woord

voor maker.

Het is niet erg als de leerlingen hier onderwerpen en

persoonsvormen in de verschillende personen (1, 2 en 3) en

enkelvoud of meervoud gebruiken. Hier gaan we later verder op in.

Page 3: Zinnengenerator - Leiden University...De leerlingen kunnen zelfstandig met deze les aan de slag, een klassikale introductie of afsluiting is facultatief. De leerlingen werken met de

Vervolgens kun je met het blok steeds nieuwe dingen toevoegen aan je

lijst, totdat die er bijvoorbeeld zo uitziet:

Page 4: Zinnengenerator - Leiden University...De leerlingen kunnen zelfstandig met deze les aan de slag, een klassikale introductie of afsluiting is facultatief. De leerlingen werken met de

Nu jij Maak in Scratch twee lijsten, eentje met de vijf onderwerpen uit jouw zinnen en eentje met de vijf

persoonsvormen.

Laten we deze lijst nu ook in Python maken. Eigenlijk doen we hetzelfde:

- We zeggen dat we een lijst willen maken.

- We geven de lijst een naam.

- We stoppen dingen in de lijst.

De volgorde is alleen een klein beetje anders. In Python begin je met de naam van de lijst, daarna zeg je

dat je een lijst wil maken en vervolgens stop je er van alles in. Hieronder staat een voorbeeld.

onderwerpen = [‘ik’, ‘jij’, ‘de kat’, ‘de meester’, ‘het groene huis’]

Voor de = staat de naam van de lijst.

? Wat is de naam van de lijst? ____________________________________________________________

? Waarom staan de woorden in de lijst tussen aanhalingstekens?

De rechte haken ( [ en ] ) geven aan dat je een lijst maakt en alles wat daartussen staat, zijn de dingen die

je in de lijst stopt. Let op dat je steeds een komma zet tussen de verschillende onderdelen in de lijst.

Nu jij Maak in Python twee lijsten, eentje met de vijf onderwerpen uit jouw zinnen en eentje met de vijf

persoonsvormen.

? Hoe kun je je lijsten op het scherm printen? Probeer het maar eens.

! Vergeet niet om steeds op te klikken om je computer het programma te laten

uitvoeren. Net als de in Scratch.

Om een zin te maken, moet je programma een onderwerp uit de lijst met onderwerpen halen en een

persoonsvorm uit de lijst met persoonsvormen en die vervolgens aan elkaar plakken.

In het

woorden-

boek zie je

meer

manieren

om dingen

in je lijst te

stoppen.

Hier gebruiken de leerlingen hun

vaardigheid in het maken van lijsten in

Scratch. Voor leerlingen die dat moeilijk

vinden, kunt u hier hulp bij geven. Laat

het eerst met het maatje proberen.

Hier kunt u terugverwijzen naar de

introductieles.

Hier kunt u terugverwijzen naar de

introductieles.

Page 5: Zinnengenerator - Leiden University...De leerlingen kunnen zelfstandig met deze les aan de slag, een klassikale introductie of afsluiting is facultatief. De leerlingen werken met de

Nu jij Maak in Scratch de code die:

- Onderwerp 1 en persoonsvorm 1 aan elkaar plakt

- De sprite deze simpele zin laat zeggen

Laat de leerlingen eerst proberen zelf de

code te maken, voordat ze verder gaan op

de volgende pagina.

Page 6: Zinnengenerator - Leiden University...De leerlingen kunnen zelfstandig met deze les aan de slag, een klassikale introductie of afsluiting is facultatief. De leerlingen werken met de

Je programma in Scratch ziet er waarschijnlijk ongeveer zo uit:

De verschillende blokken doen verschillende dingen:

- De -blokken nemen het eerste item uit beide lijsten.

- Het -blok plakt die twee dingen aan elkaar, zodat het samen een zin is.

- Het -blok zorgt ervoor dat de Sprite de zin zegt en je de zin op het scherm ziet.

Laten we deze dingen een voor een in Python doen.

Neem een item uit een lijst Alle onderdelen van een lijst hebben een eigen plaats en je kunt naar een onderdeel verwijzen door te

zeggen op welke plaats dit staat. In Scratch gebruik je daarvoor dit blok:

Dit blok zegt dat je het eerste element uit de lijst ‘persoonsvorm’ wil gebruiken. In Python doe je dat met

het stukje code persoonsvorm[0]. Dit stukje code geeft aan dat je het eerste element uit de lijst

‘persoonsvorm’ wil gebruiken. Je noemt dus de naam van de lijst en dan zet je tussen rechte haken het

hoeveelste element je wil gebruiken.

? Wat voor verschil valt je op tussen het blokje in Scratch en het stukje code in Pyhton?

! Computers tellen anders dan mensen, ze beginnen niet bij 1, maar bij 0!

Het was je vast al opgevallen dat hierboven niet persoonsvorm[1] staat, maar persoonsvorm[0].

persoonsvorm[0] geeft je dus het eerste element uit de lijst ‘persoonsvorm’, persoonsvorm[1] geeft

je het tweede element, persoonsvorm[2] het derde, enzovoort.

Nu jij Oefen met tellen als een computer door verschillende elementen uit je lijsten op het scherm te printen.

Als de leerlingen nog geen ervaring hebben met dit blok,

hebben ze hier wellicht wat extra hulp of uitleg bij nodig.

Page 7: Zinnengenerator - Leiden University...De leerlingen kunnen zelfstandig met deze les aan de slag, een klassikale introductie of afsluiting is facultatief. De leerlingen werken met de

Voeg onderwerp en persoonsvorm samen tot een zin en print die zin

Om verschillende stukjes achter elkaar te printen, gebruik je in Scratch dit blok: .

In Python zijn er twee manieren om verschillende stukjes achter elkaar te printen. Je kunt hiervoor een

komma gebruiken, of het plus-teken.

Nu jij Onderzoek wat het verschil is tussen de komma en het plus-teken als je twee verschillende stukjes achter

elkaar wil printen. Je kunt de volgende stukjes code als voorbeeld gebruiken, of zelf wat proberen.

print(‘aap’, ‘noot’, ‘mies’)

print(‘aap’ + ‘noot’ + ‘mies’)

? Wat is het verschil tussen de komma en het plus-teken?

Welke van de twee kun je het best gebruiken om verschillende woorden achter elkaar te printen?

Kun je nu ook een zin printen met het eerste onderwerp uit je lijst en de eerste persoonsvorm?

En met het derde onderwerp en de vijfde persoonsvorm?

En…?

Zie je iets geks aan je zinnen?

Zinnige zinnen Als je net als in het voorbeeld verschillende soorten onderwerpen en verschillende soorten

persoonsvormen hebt gebruikt, kun je onzinnige zinnen krijgen zoals ‘ik snoept’ en ‘de meester stofzuig’.

Een computer snapt niet uit zichzelf dat dit fout is, dat moet jij hem vertellen.

Nu jij Overleg samen met je maatje hoe je dit probleem kunt oplossen. Je kunt het eerst in Scratch uitproberen

als je dat handig vindt, maar je mag het ook meteen in Python doen.

Als de leerlingen nog geen ervaring hebben met dit blok,

hebben ze hier wellicht wat extra hulp of uitleg bij nodig.

Page 8: Zinnengenerator - Leiden University...De leerlingen kunnen zelfstandig met deze les aan de slag, een klassikale introductie of afsluiting is facultatief. De leerlingen werken met de

Willekeurige zinnen Tot nu toe heb je nog steeds zelf bepaald welke zin je wilt printen, je hebt tegen de computer gezegd

welke elementen uit de lijsten gepakt moet worden. Dat is nog niet helemaal wat we willen, we willen

namelijk dat de computer een willekeurig onderwerp aan een willekeurige persoonsvorm koppelt. Dat

gaan we nu programmeren.

Misschien weet je nog dat je in Scratch het blok kunt gebruiken. Dit blok kun

je op de plaats van een getal zetten, dus bijvoorbeeld daar waar in je code staat welk item uit de lijst je wil

hebben. Omdat we twee lijsten van vijf items hebben, zou je in Scratch met de volgende code zinnen

kunnen maken die bestaan uit een willekeurig onderwerp en een willekeurige persoonsvorm uit je lijsten.

Nu jij Maak op deze manier vijf zinnige zinnen.

In Python gebruik je de functie randint() om een willekeurig getal te kiezen.

randint komt van ‘random integer’, random is Engels voor willekeurig en integer is computertaal voor

een (geheel) getal. In randint() stop je twee getallen (integers) en de computer kiest dan een

willekeurig getal tussen het eerste en het tweede (waarbij beide getallen meedoen). randint(0,3)

geeft je een willekeurig getal tussen 0 en 3 waarbij 0 en 3 meedoen, dus 0, 1, 2 of 3.

In Python kunnen we randint() gebruiken zoals we in Scratch het blok

gebruiken, namelijk op de plaats waar je aangeeft welk element je uit een lijst wilt hebben. Bijvoorbeeld:

persoonsvorm[randint(0,4)].

? Waarom moeten we hier 0 en 4 gebruiken?

! Om randint() te kunnen gebruiken moet je in je programma helemaal aan het begin deze regel

typen:

from random import randint

randint() zit niet standaard in alle Python porgramma’s, maar met deze regel installeer je deze functie,

zodat je die in de programma kunt gebruiken.

Nu jij Maak vijf willekeurige zinnige zinnen in Python. Gebruik je Scratch-programma als voorbeeld.

We gebruiken hier de indices van de items in de lijst. 0 is

het eerste item in de lijst, 4 het vijfde. Dit is een lastig

onderdeel. Sta hier eventueel langer (klassikaal) bij stil of

laat de leerlingen oefenen.

Page 9: Zinnengenerator - Leiden University...De leerlingen kunnen zelfstandig met deze les aan de slag, een klassikale introductie of afsluiting is facultatief. De leerlingen werken met de

Moeilijkere zinnen Een zin die alleen uit een onderwerp en een persoonsvorm bestaat is natuurlijk wel wat kort en vooral

wat saai. Lastig om een verhaal te bedenken dat met zo’n simpele zin begint, niet? Maar wat houdt je

tegen om moeilijkere zinnen te maken? Dat kun je nu namelijk ook! Je kunt een lijst maken van lijdend

voorwerpen, meewerkend voorwerpen, bepalingen, wat je maar wil!

! Sommige persoonsvormen kunnen alleen een onderwerp hebben, sommige hebben een onderwerp en

een lijdend voorwerp nodig, en sommige zelfs ook nog een meewerkend voorwerp. Je zult dus

verschillende lijsten van werkwoorden moeten maken.

EXTRA-EXTRA-EXTRA-EXTRA- EXTRA- EXTRA- EXTRA- EXTRA- EXTRA- EXTRA- EXTRA- EXTRA- EXTRA- EXTRA- EXT

Kun je zinnen maken waarin je een persoonsvorm, een onderwerp en een lijdend voorwerp hebt waarbij

je maar twee lijsten gebruikt?

En zinnen met een persoonsvorm, onderwerp, lijdend voorwerp en meewerkend voorwerp?

EXTRA-EXTRA-EXTRA-EXTRA- EXTRA- EXTRA- EXTRA- EXTRA- EXTRA- EXTRA- EXTRA- EXTRA- EXTRA- EXTRA- EXT

Kun je je programma zo maken dat je ook afwisseling hebt binnen de verschillende zinsdelen?

Bijvoorbeeld door willekeurige bijvoeglijk naamwoorden toe te voegen aan je onderwerp, lijdend

voorwerp of meewerkend voorwerp? Of door het voorzetsel van een bepaling willekeurig te bepalen.

Zodat je bijvoorbeeld de volgende verschillende zinnen kunt krijgen:

- De boze kat liep naar het groene huis

- De blije kat liep naar het verwoeste huis

zonder dat je ‘de boze kat’ en ‘de blije kat’ allebei in je lijst hebt staan. Hetzelfde voor ‘het groene huis’ en

‘het verwoeste huis’

En:

- De kat wandelde langs de grote hond

- De kat wandelde naar de grote hond

- De kat wandelde onder de grote hond

zonder dat je ‘langs de grote hond’, ‘naar de grote hond’ en ‘onder de grote hond’ apart in je lijstje met

bepalingen hebt staan.

Tot slot Laat Python een willekeurige zin voor je maken en gebruik deze als startzin voor een verhaal.

Page 10: Zinnengenerator - Leiden University...De leerlingen kunnen zelfstandig met deze les aan de slag, een klassikale introductie of afsluiting is facultatief. De leerlingen werken met de

Woordenboek

Scratch Nederlands Scratch Engels Python Wat doet deze code?

onderwerp = [ ] Maakt een (lege) lijst die ‘onderwerp’ heet.

onderwerp.append(‘de meester’)

Voegt het element ‘de meester’ toe aan de lijst ‘onderwerp’. Dit element komt altijd aan het eind van de lijst.

onderwerp.insert(3, ‘de meester’)

Stopt het element ‘de meester’ op de vierde positie van de lijst ‘onderwerp’. Let op! Dit kan alleen als de eerste drie posities al gevuld zijn. Let op! Als er meer dan vier posities gevuld zijn, schuiven de elementen na

Page 11: Zinnengenerator - Leiden University...De leerlingen kunnen zelfstandig met deze les aan de slag, een klassikale introductie of afsluiting is facultatief. De leerlingen werken met de

positie vier een plaats op. (het vierde element schuift naar plaats vij, het vijfde naar plaats zes, etc.)

onderwerp[3] = ‘de meester’

Vervangt het element op de vierde plaats in de lijst ‘onderwerp’door ‘de meester’.

persoonsvorm[0] Het eerste element uit de

lijst ‘persoonsvorm’.

(‘hello’, ‘world’) Plakt de stukjes tekst ‘hello’ en ‘world’ aan elkaar en zet er een spatie tussen.

randint(1, 10) Kiest een willekeurig getal

tussen 1 en 10, waarbij 1 en 10 meedoen.