Abstracte datatypes

Op deze pagina ga je een abstract datatype genaamd punt maken. Hiermee maak je je eigen H2L2-TekenVorm-code aangenamer om te lezen, te debuggen en te gebruiken:

Geen Afbeelding

De naam zegt het al, een datatype is get soort data dat iets is (getal, tekst / tekens, lijst, etc.). Elke programmeertaal heeft primitieve datatypes, dit zijn de datatypes die standaard ingebouwd zitten in de taal. Snap! heeft als standaard datatypes onder andere getallen, tekst (woorden en zinnen), lijsten, functies en meer.

Het keuzemenu van dit is .. een ..blok toont alle tien de primitieve datatypes van Snap!
Geen Afbeelding

Een abstract datatype (of ADT) is een datatype dat nodig is voor je programma, maar niet ingebouwd zit in de programmeertaal. Je bouwt dit terwijl je programmeert.

In deze les bijvoorbeeld, maak je een punt datatype met:

Het woord 'abstract' wordt vaak gebruikt als iets moeilijker om te begrijpen is, maar in de computerwetenschappen, betekent het bijna het tegenovergestelde. ADT's zijn dingen die jij als programmeur schrijft, om je programma voor jezelf en anderen leesbaarder te maken, zodat debuggen en verbeteren makkelijker wordt.

 
Yasmine haakt aan bij Bo en Alex's discussie van de vorige pagina over het gebruik van lijsten met coördinaten om een letter te tekenen.
Yasmine: 'Ik keek naar ons Geen Afbeeldingblok en bedacht een manier om dit leesbaarder te maken.'
Bo: 'Ja, expressies zoals Geen Afbeelding zijn moeilijk te lezen. Zelfs nadat ik het had geschreven en gebruikte om de y coördinaat te vinden, moest ik twee keer nadenken voordat ik het snapte.'
Yasmine: 'Dat bedoel ik dus! Laten we het wat duidelijker maken. We kunnen een Geen Afbeelding blok definiëren en dat gebruiken, in plaats van item 2 van.'
Bo: 'Maar dat blok zou precies hetzelfde doen als item 2 van, dus wat is daar het nut van? Dat zal het programma niet korter maken.'
Yasmine: 'Ja, maar het maakt het programma wel leesbaarder en makkelijker om over na te denken. We kunnen x-coördinaat en y-coördinaat gebruiken in plaats van item van als invoer voor het ga naar blok.'
Yasmine doet een suggestie voor data-abstractie: een nieuwe ADT maken om de details te verbergen. Wanneer je de punt ADT gebruikt, hoef je verder niet na te denken over hoe punten worden weergegeven als lijst.

Ze bouwen twee blokken: Geen Afbeelding en Geen Afbeelding

Bo: 'Hm... en als we nu een Geen Afbeelding blok maken, dan kunnen we Geen Afbeelding schrijven in plaats van Geen Afbeelding.

Op die manier is het veel duidelijker dat het een lijst met punten is.'
Bo bouwt dit blok. Ze markeert de invoervariabelen x en y als getallen.

Geen Afbeelding

Typ geen # in de invoernaam van punt blok. Net zoals het symbool bij een lijst als invoer, is # geen onderdeel van de naam, maar een type-hint die je maakt wanneer je het invoertype getal selecteert: Geen Afbeelding
Het invoertype verandert ook de vorm van het invoer-slot om aan te geven wat voor soort invoer verwacht wordt.

Bouwer en selector

Het Geen Afbeeldingblok wordt de bouwer genoemd van het nieuwe abstracte datatype punt.

Het Geen Afbeelding-blok en het Geen Afbeelding-blok zijn ieder een selector. Ze selecteren ieder een component van een punt.
  1. Als je H2L2-TekenVorm-project nog niet open is, doe dat dan nu.
  2. Verbeter je ga naar punt blok (van "H2L2-TekenVorm") door een selector te gebruiken binnen het ga naar punt blok, zoals Bo en Yasmine eerder beschreven.
  3. Geen Afbeelding Zet dat script om in een algemeen Geen Afbeelding blok dat een lijst van punten aanneemt als invoer en die vorm tekent.
 
  1. Maak een lijst van punten die een andere letter of vorm tekent. Maak deze keer gebruik van een lijst van puntbouwers in plaats van een lijst van lijsten. Check of je teken vorm () blok werkt met deze nieuwe lijst.
  2. Als je andere letters hebt gemaakt, bouw dan een teken bericht()blok dat een lijst van letters als invoer aanneemt en teken vorm() meerdere keren gebruikt om een bericht te tekenen.

    Geen Afbeelding
    Zie je hoe hier abstractie gebruikt wordt? Het bericht "Hi" weergeven als Geen Afbeelding verbergt de complexiteit van de lijsten met coördinaten die zijn gebruikt om vormen te tekenen.
  1. Verander je project zodanig dat teken bericht de letters naast elkaar tekent, in plaats van over elkaar:
    Geen Afbeelding Geen Afbeelding
TerugVolgende