Abstracte datatypes

Op deze pagina, ga je een abstract data-type genaamd punt maken, zodat je eigen H2L2-TekenVorm code aangenamer is om te lezen, debuggen en gebruiken:
Geen Afbeelding

De naam zegt het eigenlijk al, een data-type zegt wat voor type de data is (getal, tekst / tekens, lijst, etc.). Elke programmeertaal heeft primitieve data-types, dit zijn de data-types die al standaard ingebouwd zitten in de taal. Snap! heeft als standaard data-types onder andere getallen, tekst (woorden en zinnen), lijsten, Booleans, en nog veel meer:

Het keuzemenu van dit blok toont alle primitieve types van Snap!.
Geen Afbeelding

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

In deze les bijvoorbeeld, maak je een puntdata-type 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, de programmeur, gebruikt om jouw programma makkelijker te laten lezen, debuggen en gebruiken. Niet alleen makkelijker voor jezelf, maar ook makkelijker voor anderen.

 
Yasmine vergezelt Bo en Alex's eindeloze 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 veel 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 doet een suggestie voor data-abstractie: een nieuwe ADT maken om de details te verbergen. Wanneer men de punt ADT, gebruikt, hoef je verder niet na te denken over hoe punten worden weergegeven als lijst.
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 wél 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."
Ze bouwen twee blokken: Geen Afbeelding en Geen Afbeelding
Bo:" Hmmm... 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 yv als getallen.
Geen Afbeelding
Typ # niet in de invoernaam van punt. Net zoals het symbool bij een lijst als invoer, is # geen onderdeel van de naam, maar een type-hint die je maakt wanneer je getal selecteert als invoer-type:
Geen Afbeelding
Het invoertype verandert ook de vorm van het invoer-slot om aan te geven wat voor soort invoer verwacht wordt.
Het Geen Afbeeldingblok wordt de bouwer genoemd van het nieuwe abstracte data-type punt. De Geen Afbeelding- en Geen Afbeeldingblokken worden de selecteerders genoemd, omdat ze ieder een component selecteren van een punt.
  1. Als je H2L2-TekenVormproject nog niet open is, open dat dan nu.
  2. Verbeter je ga naar punt blok (van "H2L2-TekenVorm") door een selecteerder 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.
    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.
    Geen Afbeelding
Geen Afbeelding
  1. Verander je project zodanig dat teken bericht de letters naast elkaar tekent, in plaats van over elkaar:
    Geen Afbeelding
TerugVolgende