In deze les maak je tools voor het tekenen van complexe ontwerpen via lijsten met punten. Om dit te doen ga je probleem-decompositie gebruiken: een probleem opbreken in kleine stukjes.
Op deze pagina schrijf je een script dat ervoor zorgt dat punten in een lijst met elkaar verbonden worden, om zo de letter A tekenen.
Alex en Bo maken een programma dat een lijst van punten als invoer gebruikt en de punten met elkaar verbindt. Daarbij is ieder punt een lijst met x en y coördinaten. Alex en Bo denken op deze manier afbeeldingen of grafieken van data te kunnen gaan tekenen.
Om begin-coördinaten en een reeks basisgegevens te krijgen, schetsen ze de letter A op ruitjespapier. Ze
kiezen een schaal die past bij het plan.
Ze schrijven alle relevante coördinaten op, in een specifieke volgorde, beginnend bij het pijltje en met de klok
mee rond de contour van de A. Het eerste punt is (-50, 20), het tweede (-10, 120), enzovoort.
Daarna bouwen ze een lijst in Snap! op deze manier:
Nu hebben ze een script nodig dat deze lijst gebruikt om de tekening te maken. Bekijk het filmpje:
Bo klikt op Maak een variabele, noemt de variabele A, en bouwt:
.
Dan klikt ze op het maak A-blok om de code te runnen.
ga naar punt. x: en
y: apart te kunnen doorgeven. Hm...'
aangeeft dat de tweede invoer een lijst moet zijn.'
ga naar punt blok kunnen laten
zien dat het een lijst als invoer verwacht.'
kunt specificeren. Andere invoertypes worden op dezelfde manier gespecificeerd.
punt een lijst is bestaande uit twee coördinaten.
ga naar puntblok af en test je blok met een
paar punten als invoer om er zeker van te zijn dat het doet wat je wilt.ga naar punt blok gebruiken voor elk punt in onze lijst.'
kunnen gebruiken.'
Alex en Bo ontwerpen dit nieuwe script om proces van het bezoeken van ieder punt te automatiseren.
Daarna proberen ze het uit.
voor iedere doet precies wat we willen. Maar we moeten nog een paar bugs oplossen.'
ga naar in plaats van
glijd?
For Each
invoerlijst ← [3, -1, 2, 10, -5]
VOOR IEDER element IN invoerlijst
{
ALS ( (element > 0) EN (element * element > 4) )
{
LAAT ZIEN element
}
}
PROCEDURE Mysterie(getallenlijst, doelgetal)
{
teller ← 0
FOR EACH getal IN getallenlijst
{
ALS (number > doelgetal)
{
teller ← teller + 1
}
}
RAPPORTEER (teller)
}
mijnWiskundecijfers ← [100, 80, 90, 80, 60, 100, 50, 100]
Mysterie(mijnWiskundecijfers, 60)