Leertaak 2
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'.
Voor de werking van procedures en het interpreteren van
locale declaraties zijn veel verschillende mogelijkheden. We kunnen ze treffend
onderscheiden via speciale semantiekregels.
Leerdoel
Na het voltooien van deze taak kunt u
- onderstaande kernbegrippen (zie 'Instructie') verklaren;
- de semantiek van programma's met blokken beredeneren;
- de semantiek van programma's met dynamische scope voor variabelen en procedures
beredeneren.
Instructie
- Lees p. 50-56 (tot aan 'Static scope rules for procedures'). Kernbegrippen:
- declaraties (van variabelen en procedures)
- scope (van variabelen en procedures)
- statische scope, dynamische scope
- locaal, globaal
- recursie
- Ga via Exercise 2.37 (p. 52) na of u de semantiekregels voor blokken kunt
toepassen.
- Ga via Exercise 2.38 (p. 55) na of u de semantiekregels voor procedures
kunt toepassen.
Product
- Uitwerking van Exercise 2.37: redenering die aantoont dat executie van het
gegeven statement tot een toestand leidt waarin x de waarde 4 heeft. Aandachtspunt:
tekent u een afleidingboom of zijn er andere mogelijkheden?
- Uitwerking van Exercise 2.38: afleidingsboom bij het gegeven procedure-statement.
Reflectie
- Is uw redenering over semantiek van het blok-statement kernachtig en maakt
u gebruik van de afleidingsregels?
- Geeft u de gevraagde afleidingsboom (bij de procedure-semantiek) overzichtelijk
weer?
- Maken uw uitwerkingen gebruik van de juiste technische semantische begrippen?
Zijn uw beweringen en redeneerstappen duidelijk aangegeven?