Wil jij ook programmeren in de klas? Waar kun je mee beginnen? Dit is de eerste les van een serie blogs over Python in de klas. Deze lessen zijn gegeven aan derde klassen VWO in de context van Natuurkunde, onderwerp Kracht en Beweging. Voor een ander vak kun je de concepten wel overnemen, maar zul je de voorbeelden moeten wijzigen. In deze blog gaan we in op een aantal belangrijke keuzes. Welke programmeertaal kies je? Hoe ga je dat dan doen met een klas? En waar? Daarna komen de eerste programmeer opdrachten aan de beurt. We behandelen numbers (nummers), strings (tekst) en variables (variabelen) in deze les.

Waarom Python?

Om te programmeren in de klas raden wij Python aan.

Python is relatief gemakkelijk te leren, want het is een van de meest intuïtieve programmeertalen. Je schrijft de code op bijna zoals je het op papier zou schrijven. Daarnaast is Python de standaard programmeertaal op veel universiteiten (voor modelleren en data science). Er zijn heel veel “libraries” oftewel hulpmiddelen beschikbaar om je te helpen bij het maken van berekeningen, grafieken of 3-D visualisaties. Later kunnen leerlingen nog zeer veel kanten op met Python. Indien nodig kunnen ze overstappen op een andere programmeertaal, maar ze hebben dan al wel de belangrijkste concepten geleerd van programmeren in het algemeen.

Welke andere keuzes zijn er dan? Legio. Er zijn duizenden programmeertalen. De vraag is welke kant je op wilt. De meest gebruikte programmeertalen zijn Javascript, gevolgd door Python. Javascript wordt vooral vaak gebruikt omdat het de taal is die kan worden geïnterpreteerd door browsers, zodat het vaak gekozen wordt om bijvoorbeeld web applicaties of websites mee te programmeren. Echter, de syntax is iets lastiger en voor Python is er ook een hele fijne leeromgeving beschikbaar genaamd Google Colaboratory. Hierover later meer.

Bij introductielessen gaat het om het leren van belangrijke concepten. Deze concepten zijn onafhankelijk van de programmeertaal. Lekker beginnen dus!

Waar kun je Python code schrijven?

Leerlingen kunnen Python code online schrijven in Google Colab. Dit is een omgeving waar je blokjes Python code kunt schrijven en deze kunt uitvoeren door op Play te klikken. Zo kun je de leerlingen eerst de code laten schrijven, en dan zien of de code werkt (of dat de code helaas een foutmelding produceert). Kleine blokjes code kunnen worden afgewisseld met blokjes tekst. Zo kun je als docent ook een “Notebook” voorbereiden, en deze delen met de leerlingen. Je kunt op die manier de les structureren en de oefeningen klaarzetten.

We raden aan dat je de introductievideo bekijkt. Hier is ook de link naar het Colab Notebook voor deze les. Als je dit notebook wilt bewerken, bewaar deze dan eerst al eigen versie.

Numbers

En dan gaan we nu eindelijk de eerste Python code schrijven! We gaan eerst werken met nummers. Dit is een belangrijke vaardigheid, want in computerprogramma’s moeten er vaak berekeningen worden gemaakt.

Klik op de link naar het Python notebook voor deze les als je dit ook wilt doen in de Google Colab omgeving.

Je kunt in Python vrij intuïtief werken met nummers. Zo kun je eenvoudigweg schrijven:

5 + 3

Als je klikt op de Play knop, zul je zien dat Python het resultaat 8 laat zien.

Aftrekken, vermenigvuldigen en delen werkt ook zoals je zou verwachten:

5 - 3
5 * 3
5 / 3

Er hoeft geen spatie worden toegevoegd tussen de nummers. Dit is alleen voor de leesbaarheid.

Je kunt nummers afronden met behulp van de “round” functie. In het onderstaande voorbeeld wordt het getal afgerond op twee decimalen.

round(5 / 3, 2)

De uitkomst is 1.67.

Je kunt ook een getal tot een macht verheffen, en de wortel nemen. Drie tot de tweede macht schrijf je als:

3**2

Het antwoord is 9.

De wortel van 9 schrijf je als volgt:

9**0.5

Het antwoord is 3.

Tenslotte kun je de wetenschappelijke notatie gebruiken:

2.4 * 10**10

Het antwoord is nu 24000000000.

Hoe ver wil jij gaan met het uitleggen van nummers? Dat bepaal jij. Als je deze voorbeelden te ver vind gaan, stop dan gerust al bij optellen / aftrekken of delen / vermenigvuldigen. Je hebt machten en wortels wellicht helemaal niet nodig, of de leerlingen hebben de theorie hierover nog niet gehad. Dus maak vooral je eigen les (en notebook) met behulp van deze informatie. Jij kent jouw leerlingen het beste!

Strings

Het volgende onderwerp is tekst, in Python heet dit “strings”. Strings zijn dus letters. Een string kan een enkel woord zijn, maar ook een complete zin. Met strings kun je allerlei dingen doen in Python. Je kunt met Python code bijvoorbeeld tekst aanpassen, of zoeken in tekst. Dit is een belangrijke vaardigheid, want in veel computerprogramma’s is dit van belang. Denk aan het samenvoegen van voor- en achternaam, of een adres. Denk aan de Google zoekmachine!

Een belangrijke eerste stap is om tekst te laten “printen”. Dit is niet het printen van de tekst op papier. Maar als je wilt weten welke tekst de computer na een regel code heeft opgeslagen, dan kun je dit achterhalen door een print statement. Dit werkt als volgt:

print('Mijn naam is Verbakel')

Je ziet dan dat Python de tekst weergeeft. Je kunt tekst samenvoegen met het plus teken. In het volgende voorbeeld voegen we een voornaam toe aan een achternaam. Er wordt echter ook nog een spatie toegevoegd tussen de voor- en achternaam! Dit is belangrijk, want anders zitten voor- en achternaam aan elkaar geplakt.

print('Mark' + ' ' + 'Rutte')

Je krijgt nu de volledige naam Mark Rutte.

Kun je dan ook tekst eraf halen? Zeker, maar niet op de meest intuïtieve manier (een minteken). Dit werkt dus helaas niet! In deze code heb ik overigens de eerste regel als commentaar gezet. Door het hekje wordt de code op deze regel niet uitgevoerd. Je kunt dus ook commentaar in de code schrijven, naast de mogelijkheid in het notebook om tekstblokjes te maken (boven en onder de code blokjes).

#Dit werkt niet!
print('Mark Rutte' - ' Rutte') 

Als je dit uitvoert (Play knop) dan krijg je een lange foutmelding. In de foutmelding staat (onder andere):

TypeError: unsupported operand type(s) for -: 'str' and 'str'

Probeer deze foutmelding te begrijpen: “unsupported operand … -“, er staat dus dat je bij tekst (string) niet het minteken kunt gebruiken. Het kunnen lezen en begrijpen van foutmeldingen is een belangrijke vaardigheid. Dit is in het begin heel moeilijk, maar later word je er steeds handiger in. Blijkbaar werkt het dus anders dan met een minteken…

Het krijgen van een deel van een tekst (string) heet “slicing”. In Python kun je een deel van de tekst krijgen door het begin en het einde aan te geven. De eerste letter van een string heeft de index 0. De letters daarna steeds een opeenvolgend nummer. Je kunt een enkele letter krijgen van een string op de volgende manier:

print('Mark Rutte'[0])
print('Mark Rutte'[2])

Je krijgt als resultaat van de eerste regel code de letter “M” en van de tweede regel code de kleine letter “r”. Met andere woorden, de eerste letter heeft de index 0 en de derde letter de index 2. Het tellen van letters begint dus bij 0.

Je kunt ook een langer stukje uit de tekst krijgen door tussen de vierkante haken het begin en het einde aan te geven. Let op, het laatste getal (einde) wordt geen onderdeel van het resultaat. Dus als je het stukje “Mark” uit de naam “Mark Rutte” wilt halen, dan schrijf je:

print('Mark Rutte'[0:4])

Lees dit als volgt: de eerste letter van de tekst heeft de index 0 en dit is het begin (wordt wel meegenomen). Het einde van de tekst die je wilt hebben is de vierde index. Dit is dus de vijfde letter, in dit geval de spatie. Echter, het einde wordt niet meegenomen. Dus wat je overhoudt is de tekst ‘Mark’.

Met de functie len() kun je de lengte van een string bepalen. Dit is soms ook heel handig (bijvoorbeeld als je het einde voor de slicing eerst wilt berekenen).

len('Mark Rutte')

Je krijgt nu het getal 10.

Variables

Variables (variabelen) kun je gebruiken om een string (tekst) of een number (getal) “op te slaan”. Het is heel handig om een tekst of getal op te slaan in een variabele. Daarna kun je namelijk telkens heel gemakkelijk de tekst of het getal weer opnieuw gebruiken, zonder het weer helemaal te moeten typen. Ook maakt het de code “leesbaar”. Zie het onderstaande voorbeeld. Eerst slaan we de tekst ‘Mark’ op in de variabele ‘voornaam’. Dit doe je door de variabele te ‘definiëren’ met het ‘=’ teken. Je kunt het bijna lezen als: voornaam is gelijk aan Mark. Nu “weet” de computer dus dat de variabele ‘voornaam’ de string ‘Mark’ is. Ditzelfde doen we met de achternaam. Daarna tellen we deze bij elkaar op en je krijgt weer de volledige naam “Mark Rutte”.

voornaam = 'Mark'
achternaam = 'Rutte'

print(voornaam + ' ' + achternaam)

Voorbeeld uit de natuurkunde: snelheid = afstand / tijd of in formulevorm v = s / t. Als we nu eerst de getallen voor afstand en tijd in variabelen opslaan, dan kunnen we dit vervolgens op een heel leesbare manier noteren in de code.

#distance in meters (m)
s = 20 

#time is seconds (s)
t = 5

#calculation of velocity in m/s
v = s / t

print(v)
print('De snelheid is ' + str(v) + ' m/s')

In Python hoef je niet te definiëren welk type de variabele is. Je hoeft dus niet in de definitie te schrijven dat het een getal (number) of tekst (string) is. Dit is in veel andere programmeertalen wel noodzakelijk. Dit is ook een reden waarom Python iets makkelijker te leren is dan andere programmeertalen. Python doet dit achter de schermen voor jou. Python herkent het type tijdens de definitie (door te analyseren wat er achter het is gelijk teken staat). Programmeertalen waarbij je wel het type moet aangeven bij de definitie van variabelen heten “strongly typed”.

Opdrachten

Je kunt de theorie van deze les afronden met opdrachten. Zie hier de opdrachten met numbers en strings.

Hopelijk tot de volgende les!

Geef een reactie

Het e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *