In deze les zitten 21 slides, met interactieve quizzen en tekstslides.
Lesduur is: 50 min
Onderdelen in deze les
Grammatica's
Fouten
Slide 1 - Tekstslide
Leerdoel
Je kunt het verschil tussen een parser en een compiler uitleggen.
Ook kun je verschillende soorten fouten identificeren, zoals een syntactische, runtime en semantische fout, en kun je deze bij het programmeren herkennen.
Slide 2 - Tekstslide
Inleiding
In een programmeertaal moet elke zin volledig duidelijk zijn. Daarom zijn er ook precieze grammaticaregels voor alle onderdelen van de taal.
Voordat de computer jouw code gaat uitvoeren, wordt eerst de syntaxis op fouten gecontroleerd.
Hoe werkt dit precies?
Slide 3 - Tekstslide
Parser
Code die je geschreven hebt, heet de broncode
De parser controleer de syntaxis
Fouten die de parser ontdekt, heten syntax errors
Slide 4 - Tekstslide
Compiler en interpreter
Na de parser gaat de compiler of de interpreter aan het werk.
Een compiler maakt veen bestand met objectcode:
Dat is code die een computer kan uitvoeren
Het staat in een een uitvoerbaar bestand, een executable
Een interpreter voert de code direct uit:
Bijvoorbeeld Javascriptcode wordt door een interpreter gelijk uitgevoerd in een browser
Slide 5 - Tekstslide
Soorten bugs
De parser vindt vooraf fouten: syntax errors
Een interpreter kan fouten vinden tijdens het uitvoeren van de code:
runtime errors
Op welke regel wordt hieronder een runtime error gevonden?
Slide 6 - Tekstslide
Op welke regel wordt hieronder een runtime error gevonden?
A
1
B
2
C
3
D
4
Slide 7 - Quizvraag
Runtime errors
Je kunt geen strings met elkaar vermenigvuldigen, dus regel 3 is fout
Een parser ontdekt deze niet, want regel 3 voldoet aan de grammaticale regel voor een toekenning
Pas tijdens het uitvoeren komt deze fout aan het licht
Slide 8 - Tekstslide
Semantische fout
Sommige fouten zijn fouten in de betekenis van de code: semantische fouten
Een parser, compiler of interpreter ontdekt deze fouten helemaal niet
Waarom klopt de gevonden uitkomst (14.7) hier niet?
Slide 9 - Tekstslide
Antwoord semantische fout
In deze code staan geen haakjes om cijfer1 + cijfer2 + cijfer3. Daardoor klopt het resultaat niet. Deze fout wordt niet door de compiler ontdekt. Ook de computer zal geen foutmelding geven tijdens het uitvoeren van de code. Het is een fout van de programmeur, waardoor de betekenis van de code niet overeenkomt met het doel: een semantische fout.
Slide 10 - Tekstslide
Semantiek
Syntaxis gaat over de vorm van taal
Semantiek gaat over de betekenis ervan
Syntactisch fout, maar semantisch duidelijk:
Het glas staat opde tafol
Syntactisch goed, maar semantisch onduidelijk (niet te begrijpen):
De vierkante cirkel wiegde het kleurloze groen in een woedende slaap
Slide 11 - Tekstslide
Semantische fouten opsporen
Parsers, compilers en interpreters ontdekken geen semantische fouten
Daarom moet een applicatie daarop worden getest
Bijvoorbeeld door allerlei soorten invoer te geven, en dan te controleren of het resultaat goed is
Slide 12 - Tekstslide
Vraag – Fouten in de code
Er zijn verschillende soorten fouten gemaakt in deze stukjes code. Geef voor elke code aan wat voor fout er is gemaakt: is er een syntax error, een runtime error of een semantische fout?
Syntax error
Runtime error
Semantische fout
Slide 13 - Sleepvraag
Antwoord fouten opsporen
I
Parser
Interpreter
Fout in betekenis
Slide 14 - Tekstslide
Gaat de volgende uitspraak over syntax errors, runtime errors of semantische fouten?
Deze fout wordt gevonden door de parser.
A
Syntax error
B
Runtime error
C
Semantische fout
Slide 15 - Quizvraag
Gaat de volgende uitspraak over syntax errors, runtime errors of semantische fouten?
Deze fout zal nooit zorgen voor een foutmelding.
A
Syntax error
B
Runtime error
C
Semantische fout
Slide 16 - Quizvraag
Gaat de volgende uitspraak over syntax errors, runtime errors of semantische fouten?
De interpreter kan deze fouten tegenkomen.
A
Syntax error
B
Runtime error
C
Semantische fout
Slide 17 - Quizvraag
Gaat de volgende uitspraak over syntax errors, runtime errors of semantische fouten?
Programma's met deze fout, kun je niet uitvoeren
A
Syntax error
B
Runtime error
C
Semantische fout
Slide 18 - Quizvraag
Leerdoel
Je kunt het verschil tussen een parser en een compiler uitleggen.
Ook kun je verschillende soorten fouten identificeren, zoals een syntactische, runtime en semantische fout, en kun je deze bij het programmeren herkennen.
Slide 19 - Tekstslide
Voor de volgende les
Fundament
Lees B4 - hoofdstuk 4door.
Maak hoofdstuk 4.2 vraag 3
Slide 20 - Tekstslide
PTA R41: Algoritmen, automaten en grammatica's
Uit Fundament - B (Grondslagen)
B1: hoofdstuk 1, 2 en 3.1 t/m 3.3 (3.4 dus niet)
B3: hoofdstuk 1 en 2 (hoofdstuk 3 dus niet)
B4: hoofdstuk 1, 2, 3.1 t/m 3.10 en 4 (3.11 en 3.12 dus niet)
Alle LessonUp-presentaties horen verder ook tot de leerstof (vooral bij B1 wijken deze nog wel eens af van de lesstof in Fundament, bijv. met het Modderdorp).