Les 5 - Fouten

Grammatica's

Fouten

1 / 21
volgende
Slide 1: Slide
newEditorInformaticaMiddelbare schoolhavo, vwoLeerjaar 4-6

In deze les zitten 21 slides, met interactieve quizzen en tekstslides.

time-iconLesduur is: 50 min
Dit is niet oké

Onderdelen in deze les

Grammatica's

Fouten

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.

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?





Parser

  • Code die je geschreven hebt, heet de broncode

  • De parser controleer de syntaxis

  • Fouten die de parser ontdekt, heten syntax errors




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


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?




Op welke regel wordt hieronder een runtime error gevonden?

A

1

B

2

C

3

D

4

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


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?




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.

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

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

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

Antwoord fouten opsporen





I

Parser

Interpreter

Fout in betekenis

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

D


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

D


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

D


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

D


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.

Voor de volgende les

Fundament


  • Lees B4 - hoofdstuk
     4 door.

  • Maak hoofdstuk 4.2 
     vraag 3

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).