Wat is een predikaat?

In deze les werk je aan een woordpuzzeloplosser. Deze zoekt in een woordenlijst en rapporteert woorden met specifieke kenmerken.

Op deze pagina kijk je naar predikaten en bouw je er zelf een paar die je in andere projecten kunt gebruiken.

Een predikaat is een blok dat altijd een boolean waarde meldt.
Predikaten rapporteren alleen of
In Snap! worden predikaatblokken weergegeven met zeshoekige blokken.


Je bent predikaten al eens eerder tegengekomen. Predikaten verwerken de voorwaarden die gebruikt worden door voorwaardelijke blokken, zoals als of herhaal tot, om te beslissen wanneer ze iets moeten doen.
Predikaten stellen een vraag, bijvoorbeeld:
'Bezit de spelerlijst het antwoord van de speler?'



of 'Raakt deze sprite de sprite aan die 'Sprite' heet?'



  1. "H2L3-Predikaten"

  2. In de laatste les en in Hoofdstuk 1 Les 5 heb je scripts gemaakt waarin de sprite de muis volgde.



    Nu ga je een script maken waarin je met je muis op het speelveld in twee kleuren kunt schrijven, afhankelijk van de positie van de muis:

    Gebruik een van deze predikaten voor (on)gelijkheid:
    Geen Afbeelding
  1. Verbeter je tekenscript, zodanig dat de sprite altijd de muis volgt, maar alleen iets tekent wanneer de knop van de muis ingedrukt is. Op deze manier kun je losse, niet-verbonden vormen tekenen.

    Zorg dat het versleepbaar-blok niet aangevinkt is boven het script gedeelte voordat je dit probeert. Zo begrijpt Snap! dat je niet een bezig bent sprite te verslepen wanneer je erop klikt.


    Waarschijnlijk wil je het blok gebruiken, dat je kunt vinden in het Waarnemen-palet.
  1. Bouw een predikaat dat zegt of een invoergetal tussen twee andere getallen staat. Test het in verschillende gevallen.

    Je zult misschien één of meer van zulke Boolean-operatoren handig vinden voor het tussen?blok.

    Je kunt kiezen of je het tussen? blok de twee grens-getallen bevat of niet. Je kunt dit later nog veranderen, afhankelijk van waar je het blok gebruikt.

    Een predikaat maken

    • Kies de hexagonale predikaatvorm.


    • Je moet het blok gebruiken om de resultaten van functies (inclusief predicaatfuncties) te rapporteren.

    • Veel talen gebruiken return in plaats van rapporteer als naam van het commando dat een waarde terug te geven aan het einde van een functieaanroep.



  2. Gebruik tussen? om een script te schrijven dat ervoor zorgt dat je met de muis met drie kleuren kunt schrijven, afhankelijk van je plek op het speelveld.

    Let op. Je letters zullen verbonden zijn, tenzij je 'niet-verbondenheid' codeert, zoals genoemd bij punt 3.
    Geen Afbeelding
  3. Bouw een predikaat dat test op deelbaarheid, door de stappen hieronder te volgen.
    1. Experimenteer eerst met het moduloblok.
      • Probeer verschillende invoeren.
      • Houd het tweede getal constant, en probeer verschillende invoerwaarden voor het eerste getal.
      • Stel een hypothese op. Wat valt je op?

    2. Het blok rapporteert wat overblijft nadat het eerste getal is gedeeld door het tweede. rapporteert bijvoorbeeld 2, omdat wanneer 17 wordt gedeeld door 5, er 2 overblijft. Wanneer een getal een ander getal gelijkmatig deelt, dan blijft er geen rest over. Dus rapporteert 0.


    3. Definieer nu het predikaat met modulo.

  4. Gebruik je deelbaarpredikaat om een ander predikaat te bouwen dat test of de invoer even is.
    Hint: een getal dat even is, is deelbaar door 2.



    In dit plaatje van een bakstenen muur, zit er een verschil tussen de even en oneven rijen. In de volgende les ga je het even? blok gebruiken om een muur van baksteen te tekenen.





  1. Bouw een predikaat dat test of de invoer een heel getal is. Hierbij vind je misschien handig.

Test jezelf - Predikaten

Er is geen standaard ≤ blok in Snap!, maar stel we willen er een bouwen.
Welke twee van de volgende Boolean expressies zijn gelijk aan de expressie ?
Het volgende code fragment was ontworpen om getal te testen op een oneven nummer:
ALS (ONTBREKENDE VOORWAARDE)
    {
      LAAT ZIEN "Dit getal is oneven."
    }

Welke van de volgende opties kan gebruikt worden op de plaats van de ONTBREKENDE VOORWAARDE?
TerugVolgende