Wat is een predikaat?

In deze les, ga je werken aan een woordpuzzeloplosser die door een lange lijst aan woorden gaat zoeken en woorden met specifieke tekens zal melden.

Op deze pagina, ga je kijken naar zulke predikaten en zul je er zelf ook een paar bouwen die je kunt gebruiken in andere projecten.

Predikaten

Predikaten zijn blokken die die altijd een Boolean waarde melden (ze geven alleen een of ). In Snap! worden deze weergegeven door middel van hexagonale (zes-hoekige) blokken.

Je bent predikaten al eens eerder tegengekomen. Predikaten verwerken de condities die gebruikt worden door conditionele of voorwaardelijke blokken (zoals als of herhaal tot) om te beslissen wanneer ze iets moeten doen. Predikaten stellen een vraag zoals: "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 ook veel eerder terug bij Hoofdstuk 1 Les 5), heb je scripts gemaakt waarin de sprite de muis volgde.

    Nu ga je een script maken dat ervoor zorgt dat je met je muis in je speelveld kunt schrijven in twee kleuren, afhankelijk van de positie van de muis:
    Gebruik een van de gelijk/ongelijk-predikaten:
    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, zodat je niet-verbonden vormen kunt tekenen.
    Zorg dat het versleepbaar-blok niet aangevinkt is boven het script gedeelte voordat je dit probeert (zodat Snap! niet denkt dat je een sprite probeert te verslepen wanneer je erop klikt).
    Waarschijnlijk wil je het blok gebruiken, dat je kunt vinden in het Waarnemen-palet.
  1. 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.

    Bouw een predikaat dat zegt of een invoergetal tussen twee andere getallen staat, en test het in verschillende gevallen.

    Een predikaat maken

    • Kies de hexagonale predikaatvorm.
    • Je moet het blok gebruiken om de resultaten van de rapporteerfuncties te melden (inclusief predikaatfuncties).
    • Veel talen gebruiken return in plaats van rapporteer als naam van het commando dat een waarde terug geeft aan het eind van een functie.

  2. Gebruik tussen? om een script te schrijven dat ervoor zorgt dat je met drie kleuren kunt schrijven in je speelveld (afhankelijk van je hoogte op het speelveld), gebruik je muis:
    Je letters zullen verbonden zijn tenzij je de tijd had om de niet-verbondenheid te coderen zoals eerder genoemd.
    Geen Afbeelding
  3. Bouw een predikaat dat test voor deelbaarheid door de stappen hieronder te volgen.
    1. Experimenteer eerst met het moduloblok.
      1. Probeer verschillende inputs.
      2. Laat het tweede getal als constante, en probeer verschillende invoeren voor het eerste getal.
      3. 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 geheel deelt, dan blijft er 0 over. Dus rapporteert 0.

    3. Definieer nu het predikaat met het gebruik van modulo.
  4. Gebruik je deelbaarpredikaat om een andere predikaat te bouwen dat test of de input even (deelbaar door 2) is.
    In dit plaatje, zijn de even en oneven genummerde rijen verschillend. In de volgende les, ga je het even? blok gebruiken om een muur van baksteente tekenen.
  1. Bouw een predikaat dat test of de invoer een integer oftewel een heel getal is. Hierbij vind je misschien handig.

Zelf-Check: Predikaten

  1. Er is geen standaard ≤ blok in Snap!. Stel, we willen er zo eentje 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 CONDITIE)
        {
          LAAT ZIEN "Dit getal is oneven."
        }

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