Bindings and scope

27 belangrijke vragen over Bindings and scope

Waarom zou men de scope van declaraties willen kunnen beperken?

Als een eenmaal ingevoerde naam in het hele programma naar dezelfde entiteit verwijst, is het niet mogelijk delen van een programma onafhankelijk van elkaar te schrijven. Bovendien moeten alle declaraties verschillende namen hebben.

[C3.Introductie]

Wat is het verschil tussen statische scoping en dynamische scoping?

Bij statische scoping kunnen we van elke naam op grond van de programmatekst vaststellen wat de corresponderende declaratie is. Een procedure wordt uitgevoerd in de omgeving waarin de procedure is gedefinieerd.

Bij dynamische scoping hangt het van de verwerking van het programma af welke declaratie van toepassing is. Een procedure wordt uitgevoerd in de omgeving waarin de procedure wordt aangeroepen.

[T4.2]

Wat wordt (in relatie tot bindingen) verstaan onder een omgeving?

Een omgeving is een (partiële) afbeelding van namen naar entiteiten.

[T4.1]

  • Hogere cijfers + sneller leren
  • Niets twee keer studeren
  • 100% zeker alles onthouden
Ontdek Study Smart

Wat is een bindable entity?

Een binding entity is elke entiteit die geassocieerd kan worden met een naam.

Voor welke entiteiten dit geldt is afhankelijk van de programmeertaal.

[T4.1]

Kent Haskell een geneste blokstructuur?

In Haskell ontstaat een geneste blokstructuur bijvoorbeeld door gebruik te maken van een where-constructie.

[C3.2]

Noem zeven soorten declaraties in Java en geef per declaratie aan welke entiteit(en) in de betreffende declaratie gebonden worden.

  • Packagedefinitie: package
  • Klassedeclaratie: klassetype
  • Interfacedeclaratie: interfacetype
  • Constantedefinitie: primitieve waarde of referentie
  • Variabeledeclaratie: variabelereferentie
  • Methodedefinitie: methode
  • Parameterdeclaratie: formele parameter

Wat wordt verstaan onder de scope van een declaratie?

De scope van een declaratie is dat deel van de programmatekst waarvoor de declaratie effectief is.

[T4.2]

Noem drie soorten blokstructuren.

  • Monolithische blokstructuur: het hele programma bestaat uit één blok.
  • Platte blokstructuur: in het programma komen diverse blokken voor, maar uitsluitend naast elkaar.
  • Geneste blokstructuur: blokken komen binnen andere blokken voor.

[T4.2]

Noem twee nadelen van een platte blokstructuur.

  • Elke procedure en elke globale variabele moet een unieke naam hebben;
  • Een variabele die niet lokaal gedeclareerd kan worden moet noodzakelijkerwijs globaal gedeclareerd worden, met als scope het hele programma.

[T4.2]

Wat is een belangrijk voordeel van een geneste blokstructuur?

Op elke plaats waar een naam gedeclareerd moet worden kan een blok geplaatst worden.

[T4.2]

Waarom conflicteert dynamische scoping met static typing?

Dynamische scoping maakt het voor de compiler onmogelijk om op grond van de programmatekst typecontrole uit te voeren. Of een bepaalde functieaanroep kan leiden tot een type error is bij dynamische scoping afhankelijk van de control flow van het programma.

[T4,2]

Noem drie nadelen van dynamische scoping ten opzichte van statische scoping

  • Functieabstracties (methodeabstracties) zijn moeilijker te begrijpen;
  • Scoping vindt plaats tijdens de verwerking van het programma, wat nadelig is voor de verwerkingssnelheid.
  • Statische typecontrole is in het algemeen moeilijker
[C3.zelftoets]

Wat wordt bedoeld met 'naam I is vrij in X'?

Dit betekent dat in programmafragment X géén binding occurrence van I voorkomt.

[T4.2]

Met welk doel worden worden closures toegepast?

Met behulp van closures is het mogelijk een subprogramma (functie, object, expressie) één of meer privévariabelen te geven die blijven bestaan tussen de verschillende aanroepen van die functie.
[C3.2.4]

Wat is het verschil tussen een declaratie en een definitie?

Volgens het tekstboek is een definitie een vorm van een declaratie waarbij geen neveneffecten optreden, zodat het enige effect het tot stand brengen van bindingen is.
In de cursus wordt het woord declaratie gebruikt bij een (nieuwe) variabeledeclaratie en bij een (nieuwe) typedeclaratie. In andere gevallen, zoals bij de declaratie van een functie, wordt het woord definitie gebruikt.
[C3.3]

Noem vier soorten primitieve declaraties (simple declarations)

  • declaraties van typen
  • declaraties van constanten
  • declaraties van variabelen
  • definities van procedures
[T4.3]

Noem drie soorten samengestelde declaraties

  • collaterale declaraties
  • sequentiële declaraties
  • recursieve declaraties
[T4.3]

Er worden twee soorten typedeclaraties onderscheiden: type definitions en new-type declarations. Wat is het verschil?

Een type definition creëert een binding tussen een naam en een bestaand type.
Een new-type declaratie creëert een binding tussen een naam en een nieuw type, dat niet equivalent is met een bestaand type.
Type definities sluiten aan bij structurele equivalentie van typen en new-type declarations sluiten aan bij naamequivalentie van typen.
[T4.3]

Welke declaraties kunnen in Java in een blok voorkomen?

  • klassedeclaraties
  • constantedefinities
  • variabeledeclaraties
Interfacedeclaraties en methodedefinities kunnen niet in een blok voorkomen.
[C3.3]

In welke drie vormen kan een blok in Java voorkomen?

  • als methodebody
  • als opdracht
  • als initialisatieblok in een klassebody
[C3.3]

Geef een voorbeeld van een new-type declaration in C.

In C kan met de sleutelwoorden enum, struct en union een naam met een nieuw type worden geassocieerd.

Wat is de functie van een variabele renaming definition (in ADA)?

Een variabele renaming definition associeert een naam met een bestaande variabele, zodat in feite een alias wordt gecreëerd.
[T4.3]

Wat is de scope van een declaratie binnen een sequentiële declaratie?

De scope begint bij het einde van de betreffende subdeclaratie en eindigt bij het einde van het omhullende blok.
[T4.3]

Wat wordt bedoeld met de uitspraak dat twee functies wederzijds recursief zijn?

Daarmee wordt bedoeld dat de twee functies gebruikmaken van elkaar.
Dit is alleen mogelijk als functies gebruik kunnen maken van functies die pas later (volledig) gedeclareerd worden.
[T4.3]

Wat wordt verstaan onder een blokdeclaratie en wat is het nut ervan?

Een blokdeclaratie is een declaratie die één of meer lokale declaraties bevat, zoals bijvoorbeeld een klassedeclaratie in Java.
Door gebruik te maken van een blokdeclaratie kan het aantal zichtbare bindings buiten de blokdeclaratie beperkt blijven.
[T4.4]

Wat is in Haskell het verschil tussen een where-constructie en een let-expressie?

Een where-constructie is een declaratie die lokaal is voor een andere declaratie.
Een let-expressie is een declaratie die lokaal is voor een expressie.
In het ene geval is dus sprake van een blokdeclaratie en in het andere geval van een blokexpressie.
[C3.4]

Noem een voordeel van dynamische scoping ten opzichte van statische scoping.

Bij aanpassingen hoeven alleen de gewijzigde delen van het programma opnieuw vertaald te worden
[C3.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
Onthoud sneller, leer beter. Wetenschappelijk bewezen.
Trustpilot-logo