This lesson contains 21 slides, with interactive quizzes and text slides.
Lesson duration is: 50 min
Items in this lesson
Grammatica's
Fouten
Slide 1 - Slide
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 - Slide
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 - Slide
Parser
Code die je geschreven hebt, heet de broncode
De parser controleer de syntaxis
Fouten die de parser ontdekt, heten syntax errors
Slide 4 - Slide
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 - Slide
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 - Slide
Op welke regel wordt hieronder een runtime error gevonden?
A
1
B
2
C
3
D
4
Slide 7 - Quiz
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 - Slide
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 - Slide
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 - Slide
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 - Slide
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 - Slide
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 - Drag question
Antwoord fouten opsporen
I
Parser
Interpreter
Fout in betekenis
Slide 14 - Slide
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 - Quiz
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 - Quiz
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 - Quiz
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 - Quiz
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 - Slide
Voor de volgende les
Fundament
Lees B4 - hoofdstuk 4door.
Maak hoofdstuk 4.2 vraag 3
Slide 20 - Slide
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).