Logic programming

23 belangrijke vragen over Logic programming

Wat is het verschil tussen enerzijds imperatieve en functionele programmeertalen en anderzijds logische programmeertalen?

Imperatieve en functionele programmeertalen implementeren mappings, terwijl logische programmeertalen relations implementeren.
[T15.1]

Noem twee verschillen tussen mappings en relations

  • Mappings zijn in het algemeen many-to-one (een functie levert één resultaat op), terwijl relations many-to-many zijn.
  • Bij relations wordt geen onderscheid gemaakt tussen inputs en outputs, relations kennen geen richting.
[T15.1]

Wat zijn de drie key concepts van logisch programmeren?

  • Assertions (beweringen)
  • Horn-clausules
  • Relations
[T15.1]
  • Hogere cijfers + sneller leren
  • Niets twee keer studeren
  • 100% zeker alles onthouden
Ontdek Study Smart

Welke vier vormen kan een term in Prolog aannemen?

  • Variable
  • Numeric literal
  • Atom
  • Structure construction
[T15.3.1]

Wat wordt bedoeld met de uitspraak relations abstract over assertions?

We kunnen een relation opnemen in een clausule, zodat we de relation aanroepen via de clausule.
[T15.1]

Wat zijn twee essentiële kenmerken van een Horn-clausule?

  • Er komt geen negatie in voor.
  • Links van de if staat niet meer dan één assertie
[C15.1]

Waarom voldoet Prolog niet aan het ideaal van logisch programmeren?

Prolog geeft niet altijd alle antwoorden die logisch gezien correct zijn.
Dit wordt veroorzaakt door de wijze waarop resolutie in Prolog geïmplementeerd is.
[C15.4]

Wat wordt in het imperatieve paradigma onder een programma verstaan?

Een imperatief programma bestaat uit een specificatie van opdrachten die uitgevoerd kunnen worden om de toestand van het geheugen te veranderen.
[C15.5]

Wat wordt in het functionele paradigma onder een programma verstaan?

Een functioneel programma bestaat uit een specificatie van functies die uitgerekend kunnen worden, waarbij alle factoren die het functieresultaat beïnvloeden, meegegeven moeten worden als parameter.
[C15.5]

In welke twee gevallen kan de volgorde van berekening een rol spelen?

  • Bij het samenstellen van deelberekeningen
  • Bij het aanroepen van een abstractie met parameters
[C15.7]

Noem twee manieren waarop in een functionele taal de volgorde van berekening kan worden voorgeschreven

  • Functiecompositie
  • Continuatiefuncties
[C15.7]

Wat wordt in verband met logisch programmeren bedoeld met de omkeerbaarheid van relaties?

Een relatie kan gebruikt worden om uit de parameter het resultaat te berekenen, maar ook om uit het resultaat de parameter terug te vinden.
Een logisch programma maakt geen onderscheid tussen inputs en outputs.
[C15.8]

Welke restrictie geldt in Prolog ten aanzien van het gebruik van standaardrelaties en -operatoren?

Standaardrelaties en -operatoren mogen alleen gebruikt worden met variabelen als parameter die al een waarde hebben gekregen in eerder geëvalueerde relaties.
[C15.8]

Hoeveel relaties zijn mogelijk tussen twee verzamelingen S en T?

Het aantal relaties is gelijk aan het aantal deelverzamelingen van het cartesisch product S x T.
Het cartesisch product S x T bevat #S x #T waarden. Iedere waarde kan wel of niet in een deelverzameling voorkomen. Het aantal deelverzamelingen is dus 2 ^ (#S x #T)
[C15.1]

Kunnen we in Java een methode analoog aan de Haskell-functie map schrijven?

Nee dit is om de volgende redenen niet mogelijk:
  • In Java kunnen we geen parametrisch polymorfe methoden schrijven zoals de functie map
  • Methoden kunnen in Java niet als parameter aan een andere methode worden meegegeven
[C15.6]

Hoe kunnen we in Prolog de volgorde van berekening beïnvloeden?

De volgorde van berekening wordt in Prolog bepaald door de volgorde waarin de voorwaarden opschrijven.
[C15.7]

Noem vier soorten vragen die een logisch programma kan beantwoorden

  • Of R(a,b) waar is bij een gegeven a en b
  • Alle y waarvoor R(a,y) waar is bij een gegeven a
  • Alle x waarvoor R(x,b) waar is bij een gegeven b
  • Alle x en y waarvoor R(x,y) waar is
[C15.zelftoets]

Welke drie waarden kent Prolog?

  • Getallen
  • Atomen
  • Structuren
[C15.zelftoets]

Onder welke voorwaarden mogen we een Prolog-relatie aanroepen met een bekend resultaat en met onbekende parameters?

Dit is alleen mogelijk als in de definitie van de relatie geen ingebouwde relaties worden gebruikt die eisen dat hun parameters al eerder van een waarde zijn voorzien.
[C15.zelftoets]

Waarom heeft een relatie in Prolog een parameter meer dan een overeenkomstige functie in Haskell?

In een Prolog-relatie is er een extra parameter omdat ook het resultaat in de relatie als parameter wordt aangegeven.
[C15.zelftoets]

Welke primitieve waarden kent Prolog?

  • Numbers
  • Atoms (parameterloze contructors)
[T15.3.1]

Welke samengestelde waarden kent Prolog?

  • Tagged structures (vergelijkbaar met tagged tuples)
[T15.3.1]

Wat wordt in een logische taal verstaan onder een assertie?

Een assertie is een bewering in de vorm r(T1,...,Tn) waarbij r een m-voudige relatie is en de termen T1,...,Tn expressies zijn die variabelen kunnen bevatten.
[T15.1]

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