Leertaak 7

Blokken en procedures

Achtergrond

Vrijwel elke programmeertaal heeft eigen scope-regels die de 'levensduur' en het waardeverloop van gedeclareerde objecten bepalen. Scope-problemen zijn een belangrijke bron van programmeerfouten. Daarom is een precieze karakterisering van scope-regels van belang. De formele semantiek kan gebruikt worden om programma's te controleren, liefst via een geautomatiseerde 'tool'.

Met behulp van een administratie van proceduredeclaraties is het mogelijk om dynamische en statische scope voor procedures te beschrijven. Het onderscheid is uit te drukken via een verschil in het mechanisme om nieuwe procedure-declaraties in de administratie te verwerken. In compilers kunnen we deze mechanismen terugvinden. Soms is er een speciale ingreep nodig om aan recursieve procedures de juiste semantiek toe te kennen.

De beschrijvingsmethode die we hier bekijken, leent zich goed als basis om andere proceduremechanismen te karakteriseren.

Leerdoel

Na het voltooien van deze taak kunt u

Instructie

  1. Lees p. 50-57. Kernbegrippen:
  2. Ga via Exercise 2.37 (p. 52) na of u de semantiekregels voor blokken kunt toepassen.
  3. Bekijk het programma in Exercise 2.39 (p. 55). Bepaal de waarde van y na uitvoering van het programma in het geval van Beredeneer de resultaten aan de hand van de semantiekregels.
  4. Construeer een statement dat het verschil tussen de twee regels in Tabel 2.6 (p. 56) illustreert. Motiveer het antwoord aan de hand van de semantiekregels. Wellicht lukt het ook zónder de gehele afleidingsbomen te tekenen (vgl. Exercise 2.40, p. 57) om een overtuigende redenering te geven.

Product

Reflectie