Procedural abstraction
21 belangrijke vragen over Procedural abstraction
Noem drie manieren waarop het begrip abstractie in programmeertalen tot uitdrukking komt.
- Een geschreven programma kan gezien worden als een abstractie van de werkelijkheid
- Een hogere programmeertaal is een abstractie van de onderliggende machinetaal van de computer
- Een programmeertaal biedt faciliteiten die het mogelijk maken om zelf nieuwe abstracties te definiëren
Noem twee soorten procedures.
- Function procedure: procedure die een te evalueren expressie bevat. Het resultaat is een waarde
- Proper procedure: procedure die een te verwerken opdracht (command) bevat. Het resultaat is een update van een of meer variabelen.
[T5.1]
Wat is de betekenis van abstractie in de context van programmeren?
Abstractie maakt onderscheid tussen het resultaat van programmaeenheid (het wat) en de wijze waarop het resultaat verkregen wordt (het hoe).
[T5]
- Hogere cijfers + sneller leren
- Niets twee keer studeren
- 100% zeker alles onthouden
In functionele talen wordt onderscheid gemaakt tussen function construction en function binding. Wat betekent dit onderscheid?
Function construction duidt op de implementatie van een functie. Function binding duidt op de binding van een functie aan een naam.
Met dit onderscheid wordt aangegeven dat het mogelijk is om de functiedefinitie te scheiden van de functie zelf.
[T5.1]
Wat is het verschil tussen een blokopdracht en een procedure?
Beide belichamen een opdracht. In tegenstelling tot een blokopdracht kan een procedure worden gebonden aan een naam en worden geparametriseerd. Hierdoor is het mogelijk om een procedure op verschillende plaatsen en met verschillende argumenten aan te roepen.
[C4.1]
Wat is het verschil tussen een argument en een actuele parameter?
Een argument is een waarde of andere entiteit die wordt doorgegeven aan een abstractie. Een actuele parameter is een expressie of andere constructie die een argument oplevert.
[T5.2]
Noem drie entiteiten die (afhankelijk van de programmeertaal) als argument aan een procedure kunnen worden meegegeven.
- Eerste-klas waarden
- Variabelen of pointers naar variabelen
- Procedures of pointers naar procedures
[T5.2]
Noem twee verschillende typen parametermechanismen.
- Copy parametermechanisme: de formele parameter wordt gekoppeld aan een lokale variabele die een kopie van het argument bevat.
- Reference parametermechanisme: de formele parameter wordt gekoppeld aan het argument zelf.
[T5.2]
Welke waarden kunnen in Java als argument worden gebruikt?
- Primitieve waarden
- Referenties (pointers)
Samengestelde waarden, variabele-referenties en methoden kunnen in Java niet als argument worden gebruikt.
[C4.2]
Noem twee nadelen van het copy-parametermechanisme
- Niet geschikt voor typen waaraan geen waarden toegekend kunnen worden (zoals ADA limited types);
- Het kopiëren van grote, samengestelde waarden is kostbaar.
[T5.2]
Noem drie voordelen van het reference-parametermechanisme ten opzichte van het copy-parametermechanisme.
- De semantiek van het reference parameters is eenvoudiger
- Reference parameters zijn geschikt voor alle typen (waaronder procedures)
- In het algemeen efficiënter bij samengestelde typen.
[T5.2]
Noem een belangrijk nadeel van het gebruik van variable parameters.
Het gebruik van variable parameters leidt tot aliassing: verschillende namen worden aan dezelfde entiteit gebonden. Dit maakt een programma lastiger te doorgronden.
[T5.2]
Noem twee bronnen van aliassing.
- Het gebruik van variable parameters
- Het gebruik van variable renaming definitions
[T5.2]
In Java kan een object als argument worden meegegeven aan een methode. In dat geval wordt de referentie naar dat object gekopieerd naar de formele parameter van de methode. Leg uit waarom de parameter feitelijk een copy-in parameter is.
Hier is sprake van het kopieermechanisme omdat een kopie van de referentie aan een nieuwe lokale variabele wordt toegekend. Bij een variable-parameter wordt de formele parameter gebonden aan de referentie in de aanroep.
Het effect is in beide gevallen hetzelfde.
[C4.2]
In welk opzicht is het correspondentieprincipe voordelig?
Een procedure die afhankelijk is van een niet-lokale declaratie van een entiteit, kan door middel van parametrisering flexibeler worden gemaakt als de programmeertaal een parametermechanisme voor de declaratie van de betreffende entiteit ondersteunt.
[T5.2]
Het correspondentieprincipe stelt dat een programmeertaal voor elke soort declaratie een corresponderend parametermechanisme moet bieden. Noem drie voorbeelden van corresponderende declaraties en parametermechanismen.
- Een constant-parameter correspondeert met de definitie van een constante
- Een variable-parameter correspondeert met een variable renaming definition
- Een copy-in parameter correspondeert met de declaratie van een (geïnitialiseerde) variabele
[T5.2]
Noem vier principes waaraan een eenvoudige, makkelijk te begrijpen programmeertaal zou moeten voldoen.
- Typevolledigheidsprincipe (leereenheid 1)
- Kwalificatieprincipe (leereenheid 3)
- Abstractieprincipe (leereenheid 4)
- Correspondentieprincipe (leereenheid 4)
Waarom wordt het reference-parametermechanisme ook wel definitie-parametermechanisme genoemd?
Bij het reference-parametermechanisme wordt de formele parameter direct gebonden aan het argument. Er is dus sprake van een binding van een naam aan een reeds bestaande entiteit, wat bij een definitie ook het geval is.
[C4.2]
Wat is het verschil tussen een variable-parameter en een name-parameter?
Een name-parameter is een reference-parameter die in normal-order, dus bij elk voorkomen van de formele parameter, wordt geëvalueerd.
[C4.zelftoets]
Voldoet een variable access in Java aan het abstractieprincipe?
[C4.zelftoets]
Voldoet een variabeledeclaratie in Java aan het abstractieprincipe?
[C4.zelftoets]
De vragen op deze pagina komen uit de samenvatting van het volgende studiemateriaal:
- Een unieke studie- en oefentool
- Nooit meer iets twee keer studeren
- Haal de cijfers waar je op hoopt
- 100% zeker alles onthouden