Problemen oplossen met algoritmen en computationeel denken

Leer hoe informatici problemen aanpakken. Ontdek wat informatica onderzoekt en oefen daarna de vier technieken van computationeel denken: een probleem opdelen, patronen herkennen, alleen de relevante details behouden en een nauwkeurige stapsgewijze oplossing opschrijven. Schrijf algoritmen in pseudocode met variabelen, beslissingen en lussen, teken ze als stroomdiagrammen, controleer ze met tracetabellen en testgegevens en maak je eerste programma’s met blokken in Scratch.

BeginnerLes 1 van 7 in Cursus Informatica: hoe computers, data, algoritmen en internet werken

Wat je leert

  1. Beschrijf wat informatica onderzoekt, hoe het verschilt van alleen programmeren en hoe je met computationeel denken een probleem omzet in een oplossing die een mens of een computer kan uitvoeren.
    • Beschrijf wat informatica onderzoekt
      Leg uit dat informatica de studie van berekening en informatie is, benoem de belangrijkste deelgebieden en beschrijf elke berekening als het omzetten van invoer in uitvoer.
    • Beschrijf computationeel denken en de vier bijbehorende technieken
      Definieer computationeel denken, benoem decompositie, patroonherkenning, abstractie en algoritmeontwerp en gebruik ze samen in een probleemoplossingsproces.
  2. Gebruik decompositie, patroonherkenning en abstractie om een groot, onduidelijk probleem om te zetten in kleine, algemene delen die eenvoudig zijn op te lossen.
    • Deel een probleem op in behapbare deelproblemen
      Deel een probleem op in deelproblemen, orden ze in een hiërarchie en bepaal wanneer een deel klein genoeg is om direct op te lossen.
    • Herken patronen en generaliseer oplossingen
      Zoek overeenkomsten binnen en tussen problemen, hergebruik oplossingen voor terugkerende delen en generaliseer een patroon zodat één oplossing voor veel gevallen werkt.
    • Gebruik abstractie om je op de relevante details te richten
      Behoud de details die een doel vereist, verberg de rest en gebruik modellen en benoemde procedures als abstracties met duidelijke invoer en uitvoer.
  3. Beschrijf wat een algoritme correct en bruikbaar maakt en schrijf algoritmen in pseudocode met variabelen, invoer en uitvoer, beslissingen en lussen.
    • Leg uit wat een algoritme is en wat een algoritme goed maakt
      Definieer een algoritme, controleer instructies op nauwkeurigheid en volledigheid en vergelijk verschillende algoritmen voor hetzelfde probleem op correctheid en aantal stappen.
    • Sla gegevens op en verander ze met variabelen, invoer en uitvoer
      Schrijf pseudocode die invoer leest, waarden opslaat en bijwerkt in variabelen, met operatoren rekent en uitvoer oplevert.
    • Neem beslissingen met selectie
      Schrijf voorwaarden met vergelijkingsoperatoren en logische operatoren en gebruik IF, ELSE en ELSE IF zodat een algoritme voor elke invoer het juiste pad volgt.
    • Herhaal stappen met lussen
      Gebruik telgestuurde en voorwaardegestuurde lussen, houd lopende totalen en aantallen bij en voorkom oneindige lussen en fouten van één te veel of te weinig.
  4. Teken en lees stroomdiagrammen, zet stroomdiagrammen en pseudocode in elkaar om en controleer algoritmen door ze te doorlopen en te testen met zorgvuldig gekozen gegevens.
    • Lees en teken stroomdiagrammen
      Gebruik de standaard stroomdiagramsymbolen en stroomlijnen om de stappen van een algoritme weer te geven en lees het pad dat het algoritme volgt.
    • Geef beslissingen en lussen weer in stroomdiagrammen en pseudocode
      Teken selectie en iteratie in stroomdiagrammen en zet een algoritme in beide richtingen om tussen stroomdiagram en pseudocode.
    • Doorloop en test een algoritme en spoor fouten op en herstel ze
      Controleer een algoritme met de hand met een tracetabel, kies normale, grenswaarde- en ongeldige testgegevens en zoek en herstel de drie soorten fouten.
  5. Gebruik een programmeeromgeving met blokken zoals Scratch om programma’s te maken met sequentie, lussen, beslissingen, variabelen, gebeurtenissen en eigen blokken, en leg het verband met pseudocode en tekstuele code.
    • Leer je weg vinden in een programmeeromgeving met blokken
      Leg uit hoe programmeren met blokken werkt, benoem de onderdelen van een Scratch-project en gebruik blokvormen en -categorieën om een script te maken.
    • Maak programma’s met blokken voor lussen, beslissingen en variabelen
      Gebruik herhaalblokken, oneindig herhaalblokken, als-andersblokken, herhaal-tot-blokken, variabelen en het vraagblok om interactieve programma’s te maken, en lees ze als algoritmen.
    • Gebruik gebeurtenissen en eigen blokken en maak de overstap naar tekstuele code
      Start scripts met gebeurtenissen, laat sprites samenwerken met berichten, definieer eigen blokken met invoer en pas dezelfde ideeën toe in tekstuele talen.

Problemen oplossen met algoritmen: uitleg

5 hoofdstukken

1

Wat informatica onderzoekt en hoe je een probleem aanpakt

Informatica begint met vragen over informatie en de processen waarmee je die verwerkt. Door een taak te beschrijven aan de hand van invoer en uitvoer wordt het doel duidelijk voordat je code schrijft. Computationeel denken biedt vervolgens manieren om het werk te organiseren, herbruikbare structuren te herkennen, de relevante details te kiezen en een oplossing te maken die je kunt controleren. Die methoden zijn zowel bij dagelijkse planning als bij programma’s nuttig.

1.1 Berekening, informatie en de problemen die ze helpen oplossen

Een computer kan een route berekenen, een geluid afspelen of een lijst met namen ordenen. Informatica onderzoekt de processen achter deze taken: hoe informatie wordt weergegeven en verwerkt, welke problemen kunnen worden opgelost en hoe je systemen bouwt die de oplossingen uitvoeren.

Beschrijf een berekening

Een bruikbaar startmodel is invoer → verwerking → uitvoer. Een routeplanner ontvangt een startpunt en een bestemming. De routeplanner doorzoekt informatie over wegen en geeft vervolgens een route, een afstand in kilometers en een reistijd terug. De wegeninformatie bestaat ook uit gegevens die het proces nodig heeft. Het zichtbare resultaat is slechts één onderdeel van de berekening.

Beschrijf een computationeel probleem voordat je een methode kiest. Bijvoorbeeld: “Invoer: een lijst met namen. Uitvoer: dezelfde namen in alfabetische volgorde.” Dit legt vast hoe een correct resultaat eruit moet zien. Het laat ruimte voor verschillende methoden om dat resultaat te bereiken. Als de uitvoer een naam weglaat, is het probleem niet opgelost, ook als de overige namen op volgorde staan.

Meer dan code schrijven

Programmeren is instructies schrijven in een taal die een computer kan uitvoeren. Het is een belangrijke activiteit binnen de informatica. Het bredere vakgebied onderzoekt ook of er een oplossing bestaat, hoeveel werk die kost en hoe mensen die veilig en gemakkelijk kunnen gebruiken.

GebiedEen vraag die het onderzoekt
Algoritmen en theorieWelke stappen lossen een probleem op en wat kan worden berekend?
ProgrammeertalenHoe kun je instructies duidelijk uitdrukken?
ComputersystemenHoe ondersteunen hardware, besturingssystemen en netwerken berekeningen?
Gegevens en databasesHoe kun je informatie opslaan, ordenen en terugvinden?
Kunstmatige intelligentie en machinaal lerenHoe kunnen systemen taken uitvoeren zoals patronen herkennen?
Mens-computerinteractieHoe kunnen mensen een systeem begrijpen en gebruiken?
BeveiligingHoe kun je gegevens en systemen beschermen?
ComputergraphicsHoe kun je afbeeldingen maken en weergeven?
Software-engineeringHoe kunnen teams betrouwbare programma’s bouwen en onderhouden?

De grenzen overlappen. Bij het ontwerpen van een beeldbewerkingsprogramma kun je bijvoorbeeld tegelijkertijd te maken hebben met computergraphics, gebruikersinteractie en software-engineering. Informatica ondersteunt ook andere vakgebieden: biologen vergelijken DNA-sequenties, klimaatwetenschappers modelleren de atmosfeer en kunstenaars gebruiken software om afbeeldingen en muziek te maken.

Verwante vakgebieden en praktische grenzen

Computertechniek richt zich op fysieke apparaten zoals processors en printplaten. Informatietechnologie, of IT, richt zich op het kiezen, installeren en beheren van systemen voor een organisatie. Datawetenschap combineert statistiek en computertechnieken om conclusies uit gegevens te trekken. Deze vakgebieden delen methoden met informatica, maar leggen de nadruk op ander werk.

Computers voeren nauwkeurige instructies snel uit, vaak miljarden eenvoudige bewerkingen per seconde. Snelheid herstelt geen onduidelijke instructie. “Voeg wat zout toe” laat de hoeveelheid ongenoemd; een proces dat automatisch moet worden uitgevoerd, heeft een nauwkeurige handeling nodig.

Er zijn ook andere grenzen dan snelheid. Sommige nauwkeurig beschreven problemen hebben geen algoritmische oplossing. Andere problemen hebben oplossingen die te veel stappen vereisen om praktisch uitvoerbaar te zijn. Vragen wat een computer kan bereiken, maakt deel uit van de informatica zelf.

Belangrijkste punten

  • Informatica onderzoekt berekening, informatie en de systemen die informatie verwerken.
  • Een probleemstelling legt geldige invoer en vereiste uitvoer vast voordat een methode wordt gekozen.
  • Programmeren drukt instructies uit; informatica onderzoekt ook correctheid, gebruiksvriendelijkheid, beveiliging en de grenzen van berekening.
  • Invoer, verwerking en uitvoer beschrijven de rollen van gegevens en stappen in een berekening.

1.2 Zet een probleem om in een plan dat je kunt controleren

Computationeel denken maakt een probleem duidelijk genoeg om het stap voor stap op te lossen. Een mens kan de oplossing uitvoeren, een computer kan dat doen of ze kunnen het werk verdelen. Bij het denkwerk bepaal je ook wat het probleem inhoudt en hoe je een resultaat controleert.

Vier technieken die samenwerken

Decompositie deelt een probleem op in kleinere delen. Patroonherkenning vindt overeenkomsten of terugkerend werk. Abstractie behoudt de details die nodig zijn voor een doel en laat andere weg. Algoritmeontwerp zet een oplossing om in nauwkeurige, geordende stappen.

Dit zijn hulpmiddelen waarop je kunt terugvallen wanneer dat nodig is. Het zijn geen vier vakjes die je in een vaste volgorde moet afwerken. Een mislukte test kan een ontbrekend deelprobleem aan het licht brengen. Een terugkerend deelprobleem kan wijzen op een herbruikbare procedure. Een model heeft misschien nog een detail nodig voordat het algoritme kan werken.

Jeannette Wing hielp de term “computationeel denken” algemeen bekend te maken in een essay uit 2006. Haar belangrijkste boodschap was dat deze aanpak voor iedereen nuttig is, ook voor mensen die niet als programmeur werken.

Begrijp, plan, voer uit en controleer

De wiskundige George Pólya beschreef in 1945 vier fasen voor het oplossen van problemen. In de informatica leiden die tot concrete handelingen:

  1. Begrijp het probleem. Bepaal de invoer, uitvoer, randvoorwaarden en succescriteria.
  2. Maak een plan. Kies kleinere taken, bruikbare patronen en een algoritme.
  3. Voer het plan uit. Geef het weer en voer het uit met pseudocode, een stroomdiagram of een programma.
  4. Kijk terug. Vergelijk het resultaat met de succescriteria en pas de oplossing zo nodig aan.

Een randvoorwaarde is een regel waaraan de oplossing moet voldoen, zoals een maximale beschikbare tijd. Een succescriterium is een manier om het resultaat te beoordelen. “Maak één boodschappenlijst met de benodigde hoeveelheden” is te controleren. “Maak boodschappen doen beter” laat het resultaat onduidelijk.

Werk een maaltijdplan uit

Stel dat je avondmaaltijden voor een week nodig hebt. De invoer omvat de recepten, het aantal personen en het voedsel dat al beschikbaar is. De uitvoer is een plan en een boodschappenlijst. Dieetwensen en beschikbare kooktijd zijn randvoorwaarden.

Deel het werk op in maaltijden kiezen, de lijst maken en koken. Patroonherkenning laat zien dat verschillende recepten rijst en uien gebruiken. Abstractie geeft een ingrediënt weer met zijn naam en hoeveelheid, zoals “rijst, 1 kg”, zonder een merknaam te bewaren als het merk geen invloed heeft op het plan.

Je kunt het boodschappenalgoritme nu ordenen: kies de maaltijden, schrijf de ingrediënten op, voeg terugkerende ingrediënten samen, trek af wat al in de voorraadkast staat en koop wat overblijft. Door hoeveelheden samen te voegen voordat je de voorraadkast controleert, voorkom je dat dezelfde voorraad voor elk recept afzonderlijk wordt afgetrokken.

Controleer het resultaat aan de hand van de maaltijden. Elk benodigd ingrediënt moet in voldoende hoeveelheid beschikbaar zijn. Als een ingrediënt ontbreekt, ga dan na hoe de lijst is opgebouwd en pas de betreffende stap aan.

Een veelvoorkomende fout is beginnen met coderen voordat je hebt bepaald welk resultaat nodig is. Een snel programma kan het verkeerde probleem nauwgezet oplossen. Mensen kiezen nog steeds het model, de randvoorwaarden en de stappen; de computer voert de instructies uit die deze keuzes weergeven.

Belangrijkste punten

  • Computationeel denken maakt oplossingen nauwkeurig genoeg om ze door mensen of computers te laten uitvoeren.
  • Decompositie, patroonherkenning, abstractie en algoritmeontwerp kun je in elke bruikbare volgorde inzetten.
  • Schrijf invoer, uitvoer, randvoorwaarden en succescriteria op voordat je een oplossing implementeert.
  • Gebruik tests om aanpassingen aan het plan, het model of de stappen te bepalen.
  • De aanpak is zowel toepasbaar op dagelijkse planning als op software.
2

Deel problemen op in bruikbare, herbruikbare delen

Een ingewikkelde taak wordt gemakkelijker op te lossen als de delen, terugkerende structuren en essentiële details zichtbaar zijn. Decompositie geeft elk deel een taak, patroonherkenning maakt methoden zichtbaar die je kunt hergebruiken en abstractie laat je met een eenvoudiger model werken. De voorbeelden laten zien hoe je die grenzen kiest en controleert of het vereenvoudigde plan nog alles bevat wat nodig is om de oorspronkelijke taak af te maken.

2.1 Deel het werk op in delen die bij elkaar passen

Een groot probleem kan moeilijk in één keer te overzien zijn. Decompositie vervangt het door kleinere deelproblemen die je afzonderlijk kunt begrijpen, oplossen en controleren. Samen moeten de delen nog steeds een oplossing voor het oorspronkelijke probleem vormen.

Werk van het geheel naar de details

Begin met de hoofdtaak. Deel die op in enkele betekenisvolle verantwoordelijkheden en werk vervolgens elke verantwoordelijkheid verder uit. Dit is top-downdecompositie. In een boomvormig decompositiediagram staat het hele probleem bovenaan met de kleinere taken eronder. De takken laten zien bij welke taak een kleinere taak hoort.

Bij een quizapp zijn de hoofddelen vragen en antwoorden opslaan, vragen stellen, antwoorden controleren en de score bijhouden en tonen. Het deel “een vraag stellen” kun je opsplitsen in de vraagtekst tonen, de antwoordopties tonen en de keuze van de lerende inlezen.

Een tekstueel structuurdiagram zou er zo uit kunnen zien:

Run a quiz
    Store questions and answers
    Ask a question
        Show question text
        Show answer options
        Read the choice
    Check the answer
    Keep and show the score

Deze takken beschrijven verantwoordelijkheden. Alleen hun verticale positie geeft niet de volledige uitvoeringsvolgorde aan. De app herhaalt bijvoorbeeld het stellen en controleren van vragen zolang er vragen over zijn. Een afzonderlijk algoritme beschrijft dat verloop.

Bepaal wanneer je stopt met opsplitsen

Een deel is klein genoeg wanneer je ziet hoe je het direct kunt oplossen, of wanneer een bestaande methode of bestaand hulpmiddel het afhandelt. “Lees de keuze” kan een bruikbare taak zijn zodra je weet hoe de interface invoer verzamelt. Als je die opsplitst in afzonderlijke handbewegingen, voeg je details toe die niet helpen bij het ontwerpen van de app.

Maak eerst de hoofdindeling. Als je begint met het beschrijven van kleine handelingen, besteed je gemakkelijk tijd aan één scherm terwijl je een volledige verantwoordelijkheid vergeet, zoals bepalen wanneer de quiz eindigt.

Bepaal afhankelijkheden

Een afhankelijkheid betekent dat een taak het resultaat van een andere taak nodig heeft. De quiz moet een keuze ontvangen voordat die wordt gecontroleerd en de keuze controleren voordat de score wordt bijgewerkt. Schrijf op wat elk deel ontvangt en oplevert. Zo worden de overdrachten duidelijk.

Delen moeten zo onafhankelijk mogelijk zijn. Als de weergave verandert van vier antwoordknoppen naar een andere invoermethode, moet de scoreberekening nog steeds met het gecontroleerde resultaat kunnen werken. Duidelijke grenzen maken het mogelijk dat mensen tegelijkertijd afzonderlijke delen bouwen en maken latere wijzigingen eenvoudiger.

Onafhankelijkheid betekent niet dat de delen nooit informatie uitwisselen. Ze hebben afgesproken invoer en uitvoer nodig. Een scoreonderdeel dat TRUE of FALSE verwacht, kan niet rechtstreeks de ruwe tekst van een onderdeel voor vraagweergave gebruiken zonder een stap die het antwoord controleert.

Zoek naar hiaten en overlap

Lees het oorspronkelijke probleem opnieuw en vraag je af of het voltooien van elk deel de hele taak zou afronden. Het eerste diagram laat niet zien wanneer de quiz stopt. Voeg die verantwoordelijkheid toe aan de algemene besturing van de quiz. Vraag ook of twee delen allebei de score veranderen, waardoor een correct antwoord mogelijk twee keer wordt geteld.

Controleer elk klein deel afzonderlijk en controleer daarna het gecombineerde proces. Een correcte vraagweergave en een correcte antwoordcontrole kunnen samen toch misgaan als het ene onderdeel een ander keuzeformaat stuurt dan het andere verwacht.

Belangrijkste punten

  • Decompositie deelt een volledig probleem op in kleinere verantwoordelijkheden.
  • Werk de hoofddelen verder uit voordat je hun kleine handelingen beschrijft.
  • Stop wanneer je een deel direct kunt oplossen of een bestaande oplossing het kan afhandelen.
  • Afhankelijkheden bepalen welke resultaten beschikbaar moeten zijn voordat een andere taak begint.
  • Controleer of de gecombineerde delen geen hiaten laten en geen taak dubbel uitvoeren.
  • Duidelijke invoer en uitvoer maken het eenvoudiger om afzonderlijke delen te bouwen en te combineren.

2.2 Vind het patroon en maak het herbruikbaar

Achter terugkerend werk gaat vaak een herbruikbare methode schuil. Patroonherkenning betekent zoeken naar overeenkomsten, herhalingen of trends binnen een probleem en tussen verschillende problemen. De nuttige vraag is wat gelijk blijft en wat verandert.

Vind herhaling binnen een taak

Om een vierkant te tekenen kan een bewegende pen vier keer 100 stappen vooruitgaan en 90 graden naar rechts draaien. Het paar handelingen wordt herhaald. Een lus geeft dat paar eenmaal weer en bepaalt het aantal herhalingen:

REPEAT 4 TIMES
    Move forward 100 steps
    Turn right 90 degrees

Dit patroon maakt de structuur gemakkelijker zichtbaar. Het maakt ook aanpassen eenvoudiger: als je de afstand vooruit op één plaats verandert, veranderen alle zijden.

Vervang veranderende details door parameters

Generalisatie laat één oplossing voor een groep gevallen werken. Een parameter is een benoemde invoer die een detail weergeeft dat kan veranderen. Voor regelmatige veelhoeken kunnen het aantal zijden en de lengte van een zijde parameters zijn.

Een pen die een regelmatige veelhoek rondgaat, draait in totaal één volledige omwenteling. De draai bij elke hoek is:

draaihoek=360∘/n

Hier is n het aantal zijden. Herhaal het paar van bewegen en draaien n keer, met elke keer dezelfde zijdelengte en draaihoek.

Regelmatige veelhoekZijdenDraai bij elke hoek
Driehoek3120°
Vierkant490°
Vijfhoek572°
Zeshoek660°

De draai is de verandering van de richting van de pen, niet de binnenhoek van de veelhoek. Bij een driehoek zou een draai van 60 graden niet het bedoelde pad met drie zijden opleveren.

Herken dezelfde methode in verschillende problemen

Bij het vinden van de goedkoopste vlucht, de kortste route en de hoogste toetsscore moet je steeds de beste kandidaat onthouden die je tot dan toe hebt gezien. Begin met een kandidaat. Bekijk elke volgende kandidaat en vervang de onthouden kandidaat wanneer de nieuwe beter is. De richting van de vergelijking verandert tussen laagste en hoogste, maar het algemene patroon blijft bruikbaar.

Patronen kunnen ook gegevens ordenen. Als je uitgaven groepeert in voeding, vervoer en wonen, worden gemeenschappelijke kenmerken zichtbaar. Als de verkoop van paraplu’s herhaaldelijk stijgt wanneer er regen wordt voorspeld, kan een winkel de trend gebruiken om de voorraad te helpen plannen. Een trend is een aanwijzing om te onderzoeken; de reden waarom die geldt, is van belang als je bepaalt of die zal aanhouden.

Controleer het voorgestelde patroon

De getallen 1, 2, 4 bepalen het volgende getal niet eenduidig. Verdubbelen geeft 8. De verschillen steeds met één vergroten geeft 7, omdat de verschillen tot nu toe 1 en 2 zijn. Er zijn meer gevallen of een regel die de reeks verklaart nodig om te bepalen welk patroon bij het probleem past.

Zoek naar betekenisvolle verschillen voordat je een oplossing hergebruikt. Een rekening gelijk verdelen en die verdelen naar wat iedereen heeft besteld, hebben allebei betrekking op een gezamenlijk totaal. Gelijk verdelen lost de eerste taak op, maar voor de tweede is de bestelling van elke persoon nodig. Hergebruik de gemeenschappelijke structuur pas nadat je het detail hebt bepaald dat het vereiste resultaat verandert.

Belangrijkste punten

  • Patroonherkenning vindt herbruikbare structuur binnen en tussen problemen.
  • Generalisatie vervangt veranderende details door benoemde parameters.
  • Een regelmatige veelhoek met n zijden gebruikt n gelijke bewegingen en draaien van 360° / n.
  • Controleer meer gevallen en betekenisvolle verschillen voordat je op een patroon vertrouwt.

2.3 Behoud de details die het doel vereist

Een model kan eenvoudiger zijn dan de werkelijkheid en toch nuttig zijn. Abstractie behoudt de informatie die nodig is voor een bepaald doel en laat andere details weg. De kwaliteit hangt af van de vraag of het model de vragen van de taak kan beantwoorden.

Kies een model voor de taak

Een metrokaart behoudt stations, hun volgorde op elke lijn en plaatsen waar lijnen aansluiten. Die details helpen een reiziger een reis te plannen. De kaart kan afstanden vertekenen en straatpatronen weglaten omdat het belangrijkste doel is om verbindingen te tonen.

Diezelfde kaart is een slecht hulpmiddel om te bepalen hoe ver je tussen twee stations moet lopen. Het model heeft een detail weggelaten dat het nieuwe doel vereist. Een detail is relevant vanwege het probleem, niet omdat het in het algemeen interessant is.

Bekijk twee modellen van dezelfde auto:

DoelDetails die het model nodig heeft
RacespelSnelheid, positie en richting
ParkeergaragesysteemKenteken, aankomsttijd en parkeerplaats

Het racespel moet de beweging bijwerken. De garage moet de auto herkennen en het bezoek bijhouden. Geen van beide modellen hoeft elk fysiek kenmerk van de auto te behouden.

Verberg stappen achter een duidelijke naam

Abstractie laat je ook gebruiken wat een onderdeel doet zonder telkens te hoeven nadenken over hoe het werkt. Om een wasprogramma te kiezen hoef je de motor van de wasmachine niet rechtstreeks aan te sturen.

In een algoritme is een procedure een benoemde groep stappen. Door de naam aan te roepen worden die stappen uitgevoerd. Een naam zoals average(list) maakt een taak duidelijk en verbergt tegelijkertijd de terugkerende berekening. Een procedure die een resultaat terugstuurt naar degene die de procedure aanroept, heeft een retourwaarde. De aanroeper kan die waarde opslaan of in een andere berekening gebruiken.

Een parameter geeft een procedure invoer die kan veranderen. drawPolygon(sides, length) heeft twee parameters. De aanroep drawPolygon(6, 100) levert zes zijden en een lengte van 100 stappen. Dit combineert abstractie, die de tekenstappen verbergt, met generalisatie, die verschillende vormen en afmetingen ondersteunt.

De grens van een procedure moet duidelijk zijn: welke invoer accepteert de procedure en welk resultaat of welke handeling levert die op? Voor een gemiddelde vereist een lege lijst een speciale afhandeling omdat er geen aantal is om door te delen. Stappen verbergen neemt de noodzaak om bruikbare invoer te definiëren niet weg.

Bouw lagen van begrip op

Een chatapp biedt een manier om een bericht te versturen. Daaronder biedt het besturingssysteem diensten die de app kan gebruiken. Daaronder voert hardware bewerkingen uit. Elke laag vertrouwt op het gedrag van de volgende laag zonder elk intern detail aan de gebruiker van die laag te tonen. Een interne wijziging kan beperkt blijven tot die laag wanneer het beloofde gedrag gelijk blijft.

De technieken ondersteunen elkaar. Decompositie bepaalt de delen. Patroonherkenning vindt delen met een gemeenschappelijke structuur. Abstractie geeft die delen namen en duidelijke grenzen zodat ze kunnen worden gecombineerd.

Een veelgemaakte abstractiefout is een gegeven weglaten dat bepaalt of een resultaat werkt. Een routeplanner die eenrichtingsstraten negeert, kan een onmogelijke autoroute voorstellen. Om een model te controleren, schrijf je op welke beslissingen het moet ondersteunen en ga je na of de behouden gegevens voor elke beslissing voldoende zijn.

Belangrijkste punten

  • Abstractie behoudt informatie die relevant is voor een doel en verbergt onnodige details.
  • Hetzelfde object kan voor verschillende taken verschillende modellen nodig hebben.
  • Een procedure geeft herbruikbare stappen een naam; parameters leveren invoer en een retourwaarde gaat terug naar de aanroeper.
  • Een procedure met parameters kan zowel abstractie als generalisatie bieden.
  • Dankzij lagen kan een onderdeel vertrouwen op het gedrag van een ander onderdeel zonder alle interne stappen daarvan te tonen.
3

Druk algoritmen uit met variabelen, beslissingen en lussen

Een algoritme zet een plan om in instructies waarvan je het gedrag precies kunt volgen. Variabelen bewaren de veranderende toestand, voorwaarden kiezen paden en lussen herhalen werk totdat een aantal of een voorwaarde de herhaling beëindigt. Door deze structuren regel voor regel te doorlopen zie je waarom de volgorde van instructies belangrijk is. Je vergelijkt ook methoden op correctheid en aantallen stappen en gebruikt daarna pseudocode om berekeningen, keuzes en herhaalde verwerking uit te drukken.

3.1 Schrijf een methode die eindigt en het juiste resultaat geeft

Een algoritme is een eindige, geordende verzameling nauwkeurige instructies om een probleem op te lossen of een taak te voltooien. Bij geldige invoer levert het na een eindig aantal stappen de vereiste uitvoer. Een recept, montage-instructies en staartdelen gebruiken allemaal dit idee.

Controleer de eigenschappen van de methode

Een bruikbaar algoritme heeft vastgelegde invoer en uitvoer. Elke stap moet nauwkeurig genoeg zijn om één betekenis te hebben en uitvoerbaar genoeg om te kunnen worden uitgevoerd. De stappen moeten eindigen en hun resultaat moet correct zijn voor elke geldige invoer.

“Zoek het grootste getal” noemt een doel, maar legt geen methode vast. “Bekijk elk getal en onthoud het grootste dat je tot dan toe hebt gezien” geeft een methode die je kunt uitwerken tot instructies. De methode roept ook een vraag over de invoer op: wat moet er gebeuren als de lijst leeg is? Door geldige invoer te definiëren voorkom je dat de methode onvolledig blijft.

Alledaagse instructies kunnen hiaten bevatten die mensen vanuit hun ervaring aanvullen. “Doe de jam op het brood” laat het openen van de pot en het smeren van een hoeveelheid op een oppervlak weg. Als je een methode voor automatische uitvoering ontwerpt, vermeld dan de handelingen die het uitvoerende systeem nodig heeft en zet ze in een bruikbare volgorde.

Maak onderscheid tussen de methode en de weergave ervan

Een algoritme is de oplossingsmethode. Een programma drukt een methode uit in een programmeertaal zodat een computer die kan uitvoeren. Hetzelfde algoritme kan voorkomen in pseudocode, in een stroomdiagram en in programma’s die in verschillende talen zijn geschreven.

Drie besturingsstructuren ordenen de uitvoering:

StructuurWat gebeurt er?
SequentieStappen worden na elkaar uitgevoerd.
SelectieEen voorwaarde kiest een pad.
IteratieEen blok stappen wordt herhaald.

Samen met variabelen zijn deze structuren voldoende om elk algoritme uit te drukken. Dit is het idee achter een klassiek resultaat dat Böhm en Jacopini in 1966 publiceerden. Een algoritme kan ze combineren: doorloop een lijst, test elke waarde en werk een opgeslagen resultaat in volgorde bij.

Vergelijk correcte methoden

Stel dat een alfabetisch geordend telefoonboek 1.000 pagina’s heeft. Als je pagina’s één voor één controleert, kunnen 1.000 paginacontroles nodig zijn. Als je steeds twee pagina’s omslaat en alleen elke tweede pagina controleert, zijn maximaal ongeveer 500 controles nodig, plus één stap terug als je de naam voorbij bent gegaan.

Een andere methode opent het resterende deel in het midden en behoudt de helft die de naam kan bevatten. Met hoogstens 10 halveringen breng je 1.000 mogelijke pagina’s terug tot één:

1000 → 500 → 250 → 125 → 63 → 32
     → 16 → 8 → 4 → 2 → 1

Door de gesorteerde volgorde kun je veilig een helft weggooien. Zonder die volgorde zou de weggegooide helft de naam kunnen bevatten. Deze aanname over de invoer hoort bij de methode.

Bij 2.000 pagina’s kan elke pagina controleren twee keer zoveel controles kosten, terwijl halveren slechts één extra halvering kost: 11. Vergelijken hoe aantallen stappen groeien, verklaart meer dan één uitvoering op één machine timen.

Controleer de correctheid voordat je de snelheid prijst. Een methode die alleen het eerste en het laatste getal in een lijst bekijkt, vindt toevallig 12 in [7, 3, 12]. De methode mist 12 in [7, 12, 3]. Eén succesvol voorbeeld kan niet aantonen dat de methode het volledige invoerbereik aankan.

Belangrijkste punten

  • Een algoritme moet nauwkeurig, uitvoerbaar, eindig en correct zijn, met vastgelegde invoer en uitvoer.
  • Een algoritme is een methode; een programma drukt instructies uit in een uitvoerbare taal.
  • Sequentie, selectie en iteratie ordenen de stappen van een algoritme.
  • De aannames van een algoritme over de invoer moeten gelden om de redenering geldig te laten zijn.
  • Vergelijk correcte methoden op basis van hoe hun werk groeit als de invoer groeit.

3.2 Sla waarden op en werk ze in volgorde bij

Pseudocode beschrijft een algoritme met gestructureerde, leesbare instructies. Het is niet gebonden aan één programmeertaal. Je kunt aan de logica werken voordat je rekening houdt met de leestekens en andere schrijfregels van een taal.

Lees de notatie

Sleutelwoorden worden met hoofdletters geschreven: INPUT, OUTPUT, IF, WHILE en FOR. Elke instructie heeft een eigen regel. Inspringing laat zien welke instructies bij een blok horen. Commentaar begint met // en legt de code uit zonder een handeling toe te voegen.

De pijl ← betekent toekenning. Sommige andere pseudocodeconventies gebruiken = of SET … TO voor toekenning. Hier vergelijkt = waarden. Lees count ← 0 als “count krijgt nul”. Een variabele is een benoemde plaats die een waarde opslaat die kan veranderen. Een constante heeft een naam maar behoudt dezelfde waarde, zoals PASS_MARK ← 50.

De rechterkant van een toekenning wordt eerst berekend. Het resultaat vervangt de oude waarde aan de linkerkant. Als count de waarde 4 bevat, leest count ← count + 1 de oude 4, telt er 1 bij op en slaat 5 op. Het is een instructie om opgeslagen gegevens te veranderen, geen vergelijking die stelt dat een getal gelijk is aan zichzelf plus één.

Koppel gegevens aan bewerkingen
TypeBetekenis en voorbeeld
Geheel getalGeheel getal, zoals 17
Reëel getal of drijvendekommagetalGetal dat een decimaal deel kan hebben, zoals 21,5
TekenreeksTekst, zoals “Lima”
Booleaanse waardeTRUE of FALSE
Lijst of arrayGeordende waarden, zoals [18, 21, 19, 22, 20]

De getallen 12 en 3 optellen geeft 15. De tekenreeksen “12” en “3” samenvoegen geeft “123”. Kies beschrijvende namen zoals temperature en total, zodat de rol van een waarde zichtbaar blijft.

Rekenkundige operatoren zijn onder meer +, −, * en /. DIV geeft het gehele quotiënt en MOD geeft de rest. Zo is 17 DIV 5 gelijk aan 3 en 17 MOD 5 gelijk aan 2. De test n MOD 2 = 0 herkent een even geheel getal. Vergelijkingen zoals =, ≠, <, >, ≤ en ≥ leveren booleaanse waarden op.

Lees, bereken en toon
INPUT minutes
hours ← minutes DIV 60
rest ← minutes MOD 60
OUTPUT hours, "h", rest, "min"

Bij 135 minuten gebruiken twee volledige groepen van 60 samen 120 minuten, waardoor 15 overblijft. De uitvoer is “2 h 15 min”. INPUT ontvangt gegevens, de twee toekenningen verwerken ze en OUTPUT stuurt het resultaat.

Bewaar een waarde voordat je die vervangt

Stel dat a de waarde 5 bevat en b de waarde 8. Na de instructies a ← b en vervolgens b ← a bevatten beide variabelen 8. De eerste instructie heeft de enige opgeslagen kopie van 5 overschreven.

Gebruik een tijdelijke variabele:

temp ← a
a ← b
b ← temp

Na de eerste regel bevat temp de waarde 5. De tweede regel plaatst 8 in a. De derde plaatst de bewaarde 5 in b. Een toekenning kopieert een huidige waarde; die maakt geen blijvende verbinding tussen variabelen.

Geef elke variabele een beginwaarde voordat je die uitleest. Een lopend totaal heeft total ← 0 nodig vóór de eerste optelling. Als je de toekenning na de optelling plaatst, heeft de eerste stap geen vastgelegde beginwaarde.

Belangrijkste punten

  • Pseudocode gebruikt een consistente notatie om logica uit te drukken zonder een programmeertaal te kiezen.
  • Een toekenning berekent de rechterkant en vervangt de opgeslagen waarde aan de linkerkant.
  • Gegevenstypen bepalen mede welke bewerkingen zinvol zijn.
  • DIV geeft een geheel quotiënt; MOD geeft een rest.
  • INPUT ontvangt gegevens en OUTPUT stuurt een resultaat.
  • Een tijdelijke variabele bewaart de oude waarde tijdens een verwisseling.
  • Initialiseer een variabele voordat de waarde ervan wordt gebruikt.

3.3 Kies het juiste pad met voorwaarden

Selectie kiest welke instructies worden uitgevoerd. Een voorwaarde is een expressie met de waarde TRUE of FALSE. De vergelijking score ≥ 50 vraagt of de huidige score minstens 50 is.

Gebruik IF en ELSE
IF score ≥ 50 THEN
    OUTPUT "Pass"
ELSE
    OUTPUT "Fail"
END IF

Precies één tak wordt uitgevoerd. Bij 50 is de voorwaarde TRUE en is de uitvoer “Pass”. Bij 49 is de voorwaarde FALSE en is de uitvoer “Fail”. Een IF zonder ELSE slaat het blok over wanneer de voorwaarde FALSE is.

De vergelijking moet bij de regel passen. “Minstens 50” omvat 50, dus is ≥ nodig. Met > zou die grensscore worden afgewezen. Waarden op de grens testen is een directe manier om deze fout te vinden.

Orden verschillende gevallen

Een ELSE IF-keten controleert voorwaarden in volgorde en voert de eerste bijpassende tak uit:

IF temperature ≥ 30 THEN
    OUTPUT "Hot"
ELSE IF temperature ≥ 20 THEN
    OUTPUT "Warm"
ELSE IF temperature ≥ 10 THEN
    OUTPUT "Mild"
ELSE
    OUTPUT "Cold"
END IF

Bij 24 °C is de eerste test onwaar en de tweede waar. De uitvoer is “Warm”. Bij 10 °C wordt de derde tak uitgevoerd. Bij −3 °C wordt de laatste ELSE uitgevoerd.

Een temperatuur van 35 °C voldoet aan alle drie de opgeschreven vergelijkingen, maar alleen de eerste bijpassende tak wordt uitgevoerd. Als temperature ≥ 10 als eerste kwam, zou die 35 opvangen en “Mild” uitvoeren. Test bij overlappende grenzen met “minstens” eerst de grootste. De lagere takken handelen dan de waarden af die niet aan de hogere grenzen voldeden.

Combineer voorwaarden
OperatorWanneer het resultaat TRUE is
A AND BZowel A als B is TRUE.
A OR BMinstens één van A en B is TRUE.
NOT AA is FALSE.

Gebruik temperature ≥ 10 AND temperature < 20 om temperaturen vanaf 10 °C tot maar niet met 20 °C op te nemen. Aan beide grenzen moet worden voldaan. Bij 15 zijn beide voorwaarden TRUE. Bij 20 is de tweede FALSE.

Als je voor dit interval OR gebruikt, krijg je temperature ≥ 10 OR temperature < 20. Dat accepteert elk getal: een waarde onder 10 voldoet nog steeds aan het tweede deel, terwijl elke waarde van minstens 10 aan het eerste voldoet. OR is nuttig wanneer elk van beide mogelijkheden voldoende is, niet wanneer aan twee grenzen tegelijk moet worden voldaan.

Plaats een beslissing binnen een andere beslissing

Een geneste IF plaatst een beslissing binnen een tak van een andere beslissing. Je kunt bijvoorbeeld eerst controleren of een wachtwoord lang genoeg is en dan binnen de succesvolle tak controleren of het een cijfer bevat. De binnenste beslissing wordt alleen bereikt wanneer de buitenste voorwaarde dat toestaat.

Laat het binnenste blok inspringen zodat de paden zichtbaar zijn. Als verschillende geneste beslissingen een eenvoudige regel moeilijk leesbaar maken, overweeg dan voorwaarden met AND te combineren of een ELSE IF-keten te gebruiken. Volg een waarde door de werkelijke volgorde voordat je aanneemt dat elke opgeschreven test wordt bereikt.

Belangrijkste punten

  • Een voorwaarde heeft een booleaans resultaat: TRUE of FALSE.
  • IF … ELSE kiest één van twee paden; een ELSE IF-keten kiest het eerste bijpassende geval.
  • Inclusieve en exclusieve grenzen vereisen de bijpassende vergelijkingsoperator.
  • AND vereist beide voorwaarden, OR vereist er minstens één en NOT keert een voorwaarde om.
  • Orden overlappende grenzen zo dat een vroege tak een later geval niet afvangt.
  • Een binnenste beslissing wordt alleen uitgevoerd als de uitvoering de tak bereikt waarin die staat.

3.4 Herhaal werk en houd de juiste toestand bij

Iteratie herhaalt een blok instructies. Met een lus kun je terugkerend werk eenmaal beschrijven, maar je moet nog steeds bepalen wanneer de lus begint, wanneer die eindigt en welke waarden bij elke doorgang veranderen.

Kies hoe de herhaling wordt bestuurd
LusHoe de lus werkt
FOR i ← 1 TO 5Wordt vijf keer uitgevoerd, voor 1 tot en met 5.
FOR EACH item IN listWordt eenmaal per lijstelement uitgevoerd.
WHILE condition DOControleert vóór elke doorgang; herhaalt zolang de voorwaarde TRUE is.
REPEAT … UNTIL conditionControleert na elke doorgang; stopt wanneer de voorwaarde TRUE is.

Een FOR-lus past bij een bekend aantal herhalingen. Een voorwaardegestuurde lus past bij een taak waarvan het stoppunt afhangt van waarden of nieuwe invoer. Het lusblok van een WHILE-lus kan nul keer worden uitgevoerd. Het lusblok van een REPEAT … UNTIL-lus met eindvoorwaarde wordt minstens één keer uitgevoerd.

Doorloop een aftelling
n ← 3
WHILE n > 0 DO
    OUTPUT n
    n ← n − 1
END WHILE
OUTPUT "Go!"

Bij de eerste test is n gelijk aan 3. De lus geeft 3 als uitvoer en verandert n in 2. De volgende doorgangen geven 2 en 1 als uitvoer. Na de verandering van 1 naar 0 is de test FALSE. De uitvoering verlaat de lus en geeft “Go!” als uitvoer.

Als je de aanpassing weglaat, blijft n gelijk aan 3, zodat de lus de stoptoestand nooit bereikt. Een lus die moet eindigen, heeft een manier nodig om de voorwaarde te veranderen: een aanpassing binnen de lus of nieuwe invoer kan daarvoor zorgen.

Bouw een totaal op en tel elementen

Een accumulator bouwt een resultaat op over verschillende doorgangen. Een teller houdt bij hoe vaak iets gebeurt. Zo bepaal je het gemiddelde van de dagtemperaturen 18, 21, 19, 22 en 20 °C:

total ← 0
count ← 0
FOR EACH t IN temperatures
    total ← total + t
    count ← count + 1
END FOR
OUTPUT total / count

De opeenvolgende totalen zijn 18, 39, 58, 80 en 100. De teller eindigt op 5, dus is het gemiddelde 20 °C. Initialiseer beide variabelen vóór de lus. Als je total binnen de lus terugzet, wis je de eerdere optellingen. Een lege lijst vereist vóór de deling een afzonderlijke controle, omdat het aantal nul is.

Onthoud de beste waarde tot dan toe

Laat largest bij een niet-lege lijst beginnen met het eerste element. Bekijk vervolgens elke waarde en vervang largest wanneer een grotere waarde verschijnt:

largest ← first item of list
FOR EACH value IN list
    IF value > largest THEN
        largest ← value
    END IF
END FOR
OUTPUT largest

Voor [7, 3, 12, 5] blijft de onthouden beste waarde 7, wordt die 12 en blijft die 12. Beginnen bij nul gaat mis voor een lijst zoals [−4, −9, −2], waarvan de grootste waarde −2 is. Nul was nooit een kandidaat.

Controleer de eerste en laatste doorgang

Een fout van één te veel of te weinig voegt één herhaling toe of laat er één weg. FOR i ← 0 TO 5 wordt zes keer uitgevoerd. In de aftelling zou n ≥ 0 ook nul als uitvoer geven. Schrijf de eerste en laatste waarde van de besturingsvariabele op om het aantal te controleren.

Geneste lussen herhalen een lus binnen een andere lus. Bij 3 rijen en 4 kolommen wordt het binnenste blok voor elke rij vier keer uitgevoerd, in totaal 12 uitvoeringen. De binnenste lus begint opnieuw bij elke buitenste doorgang.

Belangrijkste punten

  • Telgestuurde lussen herhalen een bekend aantal keer; voorwaardegestuurde lussen zijn afhankelijk van een test.
  • WHILE test vóór het lusblok, terwijl REPEAT … UNTIL in pseudocode erna test.
  • Initialiseer accumulatoren en tellers vóór de lus en werk ze binnen de lus bij.
  • Een zoektocht naar de grootste waarde kan beginnen bij het eerste element van een niet-lege lijst.
  • Een lus die eindigt, heeft een weg naar de stoptoestand nodig.
  • Controleer begin- en eindwaarden op fouten van één te veel of te weinig; een inclusief bereik van 0 tot en met 5 heeft zes waarden.
  • Een binnenste lus wordt bij elke doorgang van de buitenste lus volledig uitgevoerd.
4

Teken de paden en controleer de resultaten

Een diagram kan de paden door een algoritme zichtbaar maken en een handmatige uitvoering kan de waarden op één van die paden laten zien. Stroomdiagrammen en pseudocode beschrijven dezelfde logica in verschillende vormen. Door ertussen om te zetten kun je verkeerd geplaatste tests en aanpassingen ontdekken. Zorgvuldig gekozen testgegevens controleren vervolgens gewone gevallen, grenswaarden en ongebruikelijke invoer, terwijl je bij het debuggen een reproduceerbare fout gebruikt om de eerste stap te vinden die moet worden hersteld.

4.1 Lees een stroomdiagram pijl voor pijl

Een stroomdiagram tekent een algoritme als vormen die door pijlen zijn verbonden. De vormen geven soorten stappen aan en de pijlen laten zien welke stap daarna wordt uitgevoerd. Een kort diagram maakt een proces zichtbaar voor iemand die misschien geen code leest.

Kies voor elke taak een vorm

De belangrijkste symbolen volgen ISO 5807. Ze hebben elk een eigen taak:

SymboolVormTaak
Start-stopsymboolOvaal of rechthoek met afgeronde hoekenMarkeert Start of Einde.
ProcessymboolRechthoekVoert een handeling of berekening uit.
Invoer-uitvoersymboolParallellogramLeest of verstuurt gegevens.
BeslissingssymboolRuitTest een voorwaarde of waarde en kiest één uitgang.
Voorgedefinieerd procesRechthoek met dubbele verticale zijlijnenRoept een afzonderlijk beschreven procedure aan.
VerbindingssymboolKleine cirkel met een labelVerbindt gescheiden delen van de stroom.

Een stroomlijn heeft een pijl die de richting aangeeft. De gebruikelijke leesrichting is van boven naar beneden en van links naar rechts, maar de pijl bepaalt de werkelijke volgende stap. Een lijn die teruggaat naar een eerder punt kan herhaling aangeven.

Maak een eenvoudige sequentie

Gebruik deze vijf symbolen in volgorde om de oppervlakte van een rechthoekige kamer te berekenen:

  1. Start-stopsymbool: “Start”.
  2. Invoer-uitvoersymbool: “Voer lengte en breedte in”.
  3. Processymbool: area ← length * width.
  4. Invoer-uitvoersymbool: “Toon oppervlakte”.
  5. Start-stopsymbool: “Einde”.

Verbind elke stap met de volgende met een pijl. Bij een lengte van 4,5 m en een breedte van 3 m geeft de berekening 13,5 vierkante meter. Het lezen van de invoer berekent de oppervlakte niet; dat hoort in een eigen procesrechthoek. Het tonen van de oppervlakte hoort in het uitvoerparallellogram.

Dit diagram heeft geen keuze of herhaald pad. Het is een zuivere sequentie en de vorm maakt de volgorde duidelijk.

Volg een beslissing met de huidige waarden

Een ruit stelt een vraag of test een waarde. Geef bij een ja-neevraag zoals score ≥ 50? de uitgangen de labels “Ja” en “Nee”. Bepaal de uitkomst van de voorwaarde met de huidige score en volg precies één bijpassende pijl.

Een beslissing kan meer dan twee mogelijke uitgangen hebben wanneer die verschillende afzonderlijke waarden test. Geef elke uitgang de waarde of het geval dat die vertegenwoordigt als label. De labels maken de volgende stap ondubbelzinnig.

Een handeling zoals count ← count + 1 hoort in een procesrechthoek. Een vraag zoals count < 5? hoort in een beslissingsruit. Als je deze taken door elkaar haalt, is niet meer duidelijk of een waarde wordt veranderd of getest.

Controleer de verbindingen

Een duidelijk diagram heeft één Start en minstens één Einde. Elk proces- en invoer-uitvoersymbool heeft één uitgaande stroomlijn. Elke ja-neebeslissing heeft twee uitgangen met een label. Volg elk pad om te controleren of het een bedoelde volgende stap of Einde bereikt.

Laat een tak na de uitvoer niet los eindigen. Als beide takken met dezelfde stap moeten doorgaan, laat je ze vóór die stap samenkomen. Gebruik verbindingssymbolen met labels wanneer lange of kruisende lijnen de pagina moeilijk te volgen maken. Met een symbool voor een voorgedefinieerd proces kan een grote procedure op een afzonderlijk diagram staan, terwijl het hoofddiagram zijn overzichtelijke vorm behoudt.

Belangrijkste punten

  • Een stroomdiagram gebruikt vormen voor soorten stappen en pijlen voor de uitvoeringsvolgorde.
  • Rechthoeken voeren handelingen uit, parallellogrammen verwerken gegevens en ruiten kiezen paden.
  • Geef de uitgangen van een beslissing labels en volg de pijl die bij de huidige waarde past.
  • Gebruik start- en eindsymbolen en verbind elk bedoeld pad.
  • Een symbool voor een voorgedefinieerd proces kan de details van een afzonderlijke procedure verbergen.

4.2 Teken takken en lussen zonder hun logica te veranderen

Pseudocode en stroomdiagrammen kunnen hetzelfde algoritme uitdrukken. Als je tussen beide omzet, moet je de volgorde van handelingen, de voorwaarden en elke route door het proces behouden. Een netjes diagram met een test op een andere plaats beschrijft een ander algoritme.

Toon een keuze en voeg de paden weer samen

Teken voor een slaaggrens van 50 een ruit met het label score ≥ 50?. De Ja-uitgang leidt naar een uitvoerparallellogram met het label “Pass”. De Nee-uitgang leidt naar een parallellogram met het label “Fail”. Laat de paden vóór Einde samenkomen.

In pseudocode worden deze paden de takken IF en ELSE. Het punt waar ze weer samenkomen, komt overeen met de eerste instructie na END IF. Het diagram mag de uitvoer Pass niet verder leiden door de uitvoer Fail; bij één uitvoering hoort slechts één van beide op het pad.

Zet de test op de juiste plaats

Een lus heeft een pad terug naar een eerdere stap en een beslissing die bepaalt of de herhaling doorgaat. Plaats bij een WHILE-lus de beslissing vóór het lusblok. De FALSE-uitgang slaat het lusblok over, zodat nul doorgangen mogelijk zijn.

Plaats bij een REPEAT … UNTIL-lus met eindvoorwaarde de beslissing na het lusblok. De FALSE-uitgang keert terug naar het lusblok en de TRUE-uitgang verlaat de lus. Het lusblok wordt minstens één keer uitgevoerd omdat de uitvoering het bereikt vóór de eerste test.

LusPlaats van de beslissingVerlaten van de herhaling
WHILE conditionVóór het lusblokVoorwaarde is FALSE.
REPEAT … UNTIL conditionNa het lusblokVoorwaarde is TRUE.
Werk een aanmelding met drie pogingen uit
attempts ← 0
REPEAT
    INPUT password
    attempts ← attempts + 1
UNTIL password = storedPassword OR attempts = 3
IF password = storedPassword THEN
    OUTPUT "Welcome"
ELSE
    OUTPUT "Account locked"
END IF

Begin het diagram met Start en een procesrechthoek voor attempts ← 0. Teken vervolgens het parallellogram voor wachtwoordinvoer en daarna de rechthoek voor de verhoging. De lusruit vraagt “Wachtwoord correct OF attempts = 3?”. De Nee-uitgang keert terug naar de wachtwoordinvoer. De Ja-uitgang verlaat de lus.

De stopvoorwaarde geeft twee mogelijke redenen om te stoppen en kan dus op zichzelf niet het laatste bericht kiezen. Voeg een tweede ruit toe die vraagt of het wachtwoord correct is. Ja leidt naar “Welcome”; Nee leidt naar “Account locked”. Bij een correcte derde poging stopt de lus en verwelkomt de tak voor een correct wachtwoord de gebruiker nog steeds.

Zet om door paden te volgen

Als je pseudocode omzet in een diagram, maak je van elke toekenning een rechthoek en van elke invoer of uitvoer een parallellogram. Maak van tests voor takken en lussen ruiten. Verbind het lusblok terug met de besturende beslissing op de juiste plaats.

Als je een diagram omzet in pseudocode, onderzoek je waar de paden van elke ruit naartoe leiden. Paden die alternatieven uitvoeren en weer samenkomen, wijzen op selectie. Een pad dat terugkeert naar eerder werk wijst op iteratie. Laat elk blok inspringen overeenkomstig zijn grenzen.

Controleer de bestemming van elke teruggaande pijl. Als die terugkeert ná de besturende beslissing, wordt de volgende test overgeslagen. Als die terugkeert vóór een eenmalige initialisatie, kan bij elke doorgang een teller worden teruggezet en kan de lus mogelijk niet eindigen.

Belangrijkste punten

  • Bij het omzetten van weergaven moeten handelingen, voorwaarden en uitvoeringspaden behouden blijven.
  • Selectietakken komen na hun afzonderlijke werkzaamheden weer samen.
  • Lussen met voorafgaande voorwaardetest kunnen het lusblok overslaan; lussen met eindvoorwaarde voeren het minstens één keer uit.
  • Na het verlaten van een lus kan een afzonderlijke beslissing nodig zijn om te bepalen waarom de lus stopte.
  • Teruggaande pijlen moeten via de bedoelde besturende test terugkeren en eenmalige initialisatie niet herhalen.

4.3 Vind fouten met tracetabellen en goed gekozen tests

Een algoritme kan er redelijk uitzien en toch het verkeerde doen. Bij doorlopen volg je de instructies precies en leg je vast wat er gebeurt. Bij testen voer je het uit met gekozen invoer en controleer je de resultaten. Bij debuggen zoek en herstel je de oorzaak van een fout.

Maak de toestand zichtbaar

Een tracetabel legt variabelen en uitvoer vast tijdens een handmatige uitvoering. Gebruik de huidige waarden, niet de waarden waarvan je verwacht dat de maker ze bedoelde. Bijvoorbeeld:

total ← 0
FOR i ← 1 TO 4
    total ← total + i
END FOR
OUTPUT total
Punt tijdens de uitvoeringitotalUitvoer
Na initialisatie–0–
Na eerste optelling11–
Na tweede optelling23–
Na derde optelling36–
Na vierde optelling410–
Bij OUTPUT41010

Deze compacte tabel toont de toestand na elke optelling. Voeg bij een lastige fout rijen toe na afzonderlijke instructies en een kolom voor de resultaten van voorwaarden. Ook een lustest met FALSE hoort in een gedetailleerde uitvoeringstabel: die verklaart waarom de uitvoering de lus verlaat.

Kies tests op basis van de regels

Bepaal het verwachte resultaat voordat je elke test uitvoert. Anders accepteer je de uitvoer van het programma gemakkelijk alleen omdat die verscheen. Sommige tests controleren een eigenschap, zoals het op volgorde houden van uitvoer, in plaats van één exact resultaat.

Voor scores die geldig zijn van 0 tot en met 100, met een slaaggrens van 50:

SoortVoorbeeldinvoerWat de test controleert
Normaal73Een typische geldige voldoende score.
Grenswaarde0, 49, 50, 100Uiteinden en de beslissingsgrens.
Net buiten het bereik−1, 101Afwijzing buiten de geldige uiteinden.
Ongeldig type“abc”Afwijzing van tekst waar een score nodig is.

De categorieën grenswaarde en ongeldig kunnen overlappen: −1 ligt zowel dicht bij een grens als buiten het geldige bereik. De categorie verklaart waarom de test nuttig is. Een regel met score > 50 slaagt voor normale tests met 73 en 49, maar faalt bij precies 50.

Test ook ongebruikelijke invoerstructuren. Een lege lijst, één element, allemaal gelijke waarden en negatieve waarden maken verschillende aannames zichtbaar. Een algoritme voor het gemiddelde moet een lege lijst afhandelen voordat het door het aantal deelt. Een algoritme voor de grootste waarde dat op nul is geïnitialiseerd, kan falen bij een lijst met alleen negatieve waarden.

Bepaal welke fout je herstelt

Een syntaxisfout overtreedt de schrijfregels van een taal, zoals een ontbrekend sluitend haakje. Een uitvoeringsfout ontstaat tijdens de uitvoering, zoals een deling door nul. Een logische fout laat uitvoering toe maar geeft een verkeerd resultaat, zoals het uitsluiten van de slaaggrens met >.

Deze categorieën helpen je een controle te kiezen. Syntaxiscontrole vindt ongeldige taalvormen. Een handmatige uitvoering kan de eerste verkeerde toestand bij een logische fout zichtbaar maken. Testgegevens kunnen een uitvoeringsfout uitlokken die bij typische invoer nooit optreedt.

Debug vanaf de eerste afwijking

Reproduceer de fout met specifieke invoer. Volg of toon tussenwaarden en vind de eerste stap waar de werkelijke toestand afwijkt van de verwachte toestand. Verander de oorzaak en voer daarna de mislukte test en de eerdere tests opnieuw uit. Een reparatie aan de ene tak kan een andere tak kapotmaken.

Slagen voor geselecteerde tests levert bewijs over die invoer. Voor correctheid moet de methode nog steeds elke geldige invoer afhandelen. Combineer testen daarom met redeneren over de instructies en hun aannames.

Belangrijkste punten

  • Een handmatige uitvoering legt vast wat instructies daadwerkelijk doen, met de huidige variabelewaarden.
  • Kies verwachte resultaten of vereiste eigenschappen voordat je tests uitvoert.
  • Gebruik normale waarden, grenswaarden, ongeldige waarden en structurele randgevallen.
  • Syntaxisfouten overtreden taalregels, uitvoeringsfouten ontstaan tijdens de uitvoering en logische fouten veroorzaken verkeerd gedrag.
  • Zoek de eerste verkeerde toestand, herstel de oorzaak en voer eerdere tests opnieuw uit.
  • Slagen voor een verzameling tests levert bewijs, zonder correctheid voor elke geldige invoer aan te tonen.
5

Maak en coördineer programma’s in Scratch

Blokken geven instructies een zichtbare vorm, zodat je een programma kunt maken en uitvoeren terwijl je je op de logica richt. Scratch introduceert dat model met sprites, gebeurtenissen, variabelen, beslissingen en lussen. Korte projecten verbinden invoer met zichtbare uitvoer en eigen blokken zetten terugkerend werk om in benoemde procedures. Het coördineren van verschillende scripts laat ook zien waarom de volgorde binnen één script verschilt van de timing tussen scripts.

5.1 Maak een script met Scratch-blokken

Bij programmeren met blokken staan grafische blokken voor instructies en waarden. Je sleept ze naar een werkruimte en klikt ze aan elkaar. Dankzij de vormen hoef je veel syntaxis niet te onthouden en kun je je richten op de logica van het programma.

Ken de onderdelen van een project

Scratch is gemaakt bij het MIT Media Lab. Andere blokomgevingen zijn Snap!, ontwikkeld aan de University of California, Berkeley, Microsoft MakeCode en Blockly. Blockly is een bibliotheek voor het bouwen van blokinterfaces; die ontstond bij Google en ging in 2025 over naar de Raspberry Pi Foundation.

In Scratch is het speelveld het gebied waar het project zichtbaar wordt uitgevoerd. Sprites zijn personages of objecten die erop handelen. Een sprite kan scripts, uiterlijken en geluiden hebben. Een script is een stapel blokken; een uiterlijk is een afbeelding die de sprite kan tonen.

Het speelveld is 480 bij 360 Scratch-eenheden. Het middelpunt is het coördinatenpunt (0, 0). Horizontale x-coördinaten lopen van −240 tot 240 en verticale y-coördinaten van −180 tot 180. Bewegingsstappen in Scratch zijn eenheden op het speelveld, geen meters.

Laat je leiden door de blokvorm
BlokvormRolVoorbeeld
StartblokStart een script als reactie op een gebeurtenis.“wanneer op groene vlag wordt geklikt”
StapelblokVoert één opdracht uit.“neem 10 stappen”
C-vormigOmsluit blokken in een lus of tak.“herhaal 10 keer”
Afgerond waardeblokLevert een waarde.Het waardeblok van een variabele
Zeshoekig booleaans blokLevert TRUE of FALSE.“raak ik muisaanwijzer?”
EindblokBeëindigt een script.“stop alle”

Een waardeblok past in een invoerveld van een ander blok. Een opdracht past in een stapel handelingen. Een booleaans blok past in een voorwaardeveld. De vorm helpt onderscheid te maken tussen een waarde leveren en een opdracht uitvoeren.

Zoek blokken per categorie

Scratch 3 heeft negen hoofdcategorieën met elk een eigen kleur: Beweging, Uiterlijken, Geluid, Gebeurtenissen, Besturen, Waarnemen, Functies, Variabelen en Mijn blokken. Beweging verandert de positie; Uiterlijken verzorgt het zichtbare uiterlijk en tekstballonnen; Waarnemen ontvangt informatie; Functies berekent of vergelijkt. De uitbreiding Pen voeg je afzonderlijk toe wanneer een project lijnen moet tekenen terwijl een sprite beweegt.

Voer een korte sequentie uit

Selecteer een sprite en plaats deze blokken onder een startblok “wanneer op groene vlag wordt geklikt”:

  1. “ga naar x: 0 y: 0”
  2. “zeg Hallo! 2 sec.”
  3. “neem 100 stappen”

Klik op de groene vlag. De sprite gaat eerst naar het midden, toont dan twee seconden “Hallo!” en beweegt vervolgens 100 stappen in de huidige richting. Het zegblok met tijdsduur maakt de pauze zichtbaar. De stapel wordt van boven naar beneden uitgevoerd.

Een losse stapel kan worden uitgevoerd als je er rechtstreeks op klikt in de werkruimte, maar start niet door de groene vlag zonder het bijpassende gebeurtenisstartblok. Controleer zowel de volgorde van de stapel als de startgebeurtenis als het project niet lijkt te reageren.

Ook correct passende blokken hebben een correct plan nodig. Een beweging kan plaatsvinden vóór een bedoelde terugzetting van de positie, of een vraag kan worden gesteld nadat het resultaat is getoond. Vormen helpen bij een geldige opbouw; doorlopen laat zien of die opbouw het bedoelde werk doet.

Belangrijkste punten

  • Blokken drukken instructies en waarden uit met vormen die hun plaatsing aangeven.
  • Het speelveld toont het project; sprites hebben hun eigen scripts, uiterlijken en geluiden.
  • Een script wordt vanaf de startgebeurtenis in volgorde door de stapel heen uitgevoerd.
  • Het midden van Scratch ligt op (0, 0), met een speelveld van 480 bij 360 eenheden.
  • Gebruik categorieën om blokken te vinden en voeg zo nodig uitbreidingen zoals Pen toe.
  • Een passende blokkenopbouw kan nog steeds een logische fout bevatten.

5.2 Laat een blokprogramma reageren en herhalen

Scratch gebruikt dezelfde ideeën als pseudocode: een waarde opslaan, een voorwaarde testen en stappen herhalen. De blokken maken de structuur zichtbaar, maar hun plaats bepaalt nog steeds wanneer elke handeling plaatsvindt.

Kies een lus die bij de taak past

“Herhaal 10 keer” voert het lusblok tien keer uit. “Herhaal” blijft doorgaan totdat het programma stopt en past bij een spel dat voortdurend invoer controleert. “Herhaal tot ” test vóór elke doorgang en stopt wanneer de voorwaarde waar is. Het lusblok kan daardoor nul keer worden uitgevoerd, anders dan bij REPEAT … UNTIL met eindvoorwaarde in pseudocode.

Met de uitbreiding Pen en de pen op het speelveld tekent “herhaal 4 keer” met daarin “neem 100 stappen” en “draai 90 graden naar rechts” een vierkant. Gebruik voor een regelmatige zeshoek zes herhalingen en een draai van 60 graden. De richtingsveranderingen tellen rond de vorm op tot 360 graden.

Sla een waarde op en kies een tak

Maak score aan in Variabelen. “Maak score 0” kent de beginwaarde toe. “Verander score met 1” telt op bij de huidige waarde. Zet het terugzetten vóór een lus die de score bijhoudt; binnen de lus zou het terugzetten de eerdere score elke keer wissen.

Het afgeronde waardeblok score levert de huidige waarde aan andere blokken. Als je het vakje aanvinkt, verschijnt een venster op het speelveld dat helpt bij het doorlopen.

Een blok “als … dan … anders” voert één van zijn twee blokdelen uit. In het zeshoekige voorwaardeveld past een booleaans blok zoals “(score) > (9)” of “raak ik muisaanwijzer?”. De operatoren “en”, “of” en “niet” combineren voorwaarden met dezelfde betekenis als in pseudocode.

Ontvang invoer, maak tekst en toon die

Het blok “vraag [Wat is je naam?] en wacht” pauzeert voor invoer en slaat die op in “antwoord”. Het blok “voeg [Hallo, ] en (antwoord) samen” maakt tekst. Plaats dat waardeblok binnen “zeg … 2 sec.” om de begroeting te tonen. Als de invoer “Amara” is, is de uitvoer “Hallo, Amara”.

De drie rollen zijn afzonderlijk: vraag ontvangt gegevens, samenvoegen verwerkt tekst en zeg toont die. Een waardeblok kan een nuttige waarde berekenen zonder zelf iets te tonen.

Maak een raadspel

Gebruik deze blokvolgorde, waarbij elk ingesprongen deel binnen het omsluitende blok staat:

"when green flag clicked"
"set secret to (pick random 1 to 10)"
"ask [Guess a number from 1 to 10] and wait"
"repeat until <(answer) = (secret)>"
    "if <(answer) > (secret)> then"
        "say [Too high] for 2 seconds"
    "else"
        "say [Too low] for 2 seconds"
    "ask [Guess a number from 1 to 10] and wait"
"say [Correct!] for 2 seconds"

Een correcte eerste gok slaat de lus over. Bij geheim getal 6 en de gokken 3, 8 en 6 is de terugkoppeling “Too low”, “Too high” en daarna “Correct!”. De nieuwe vraag binnen de lus levert een waarde die de voorwaarde waar kan maken.

Terugkoppeling met een tijdsduur is belangrijk. De vraag van een zichtbare sprite gebruikt zijn tekstballon, zodat de volgende vraag een tekstballon van zeg zonder tijdsduur direct vervangt. Met een zegblok van twee seconden kan de lerende de terugkoppeling eerst lezen.

Lees de lus als WHILE answer ≠ secret om die in pseudocode te controleren. Als je de herhaalde vraag weglaat, blijft het spel vastzitten met het oude verkeerde antwoord; als je het laatste succesbericht binnen de lus plaatst, staat het op het verkeerde pad.

Belangrijkste punten

  • Het Scratch-blok “herhaal tot” controleert vóór elke doorgang en kan het lusblok overslaan.
  • Initialiseer een score vóór een lus en werk die binnen de lus bij.
  • Een booleaans blok levert de voorwaarde voor een beslissing.
  • Vraag leest invoer, samenvoegen maakt tekst en zeg toont tekst.
  • Een raadlus heeft nieuwe gokken nodig om de stopvoorwaarde te kunnen bereiken.
  • Zegblokken met tijdsduur houden terugkoppeling zichtbaar voordat een nieuwe vraag de tekstballon vervangt.

5.3 Coördineer scripts en hergebruik een eigen blok

Een Scratch-project heeft vaak verschillende scripts die op verschillende gebeurtenissen wachten. Gebeurtenisgestuurd programmeren start een script wanneer een gebeurtenis plaatsvindt. Met een eigen blok kan een script vervolgens benoemd herbruikbaar werk aanroepen.

Start het juiste script

Startblokken zijn onder meer “wanneer op groene vlag wordt geklikt”, “wanneer op deze sprite wordt geklikt”, “wanneer spatiebalk wordt ingedrukt” en “wanneer ik signaal [bericht] ontvang”. Elk blok beschrijft wat de aangekoppelde stapel start.

Verschillende scripts kunnen op dezelfde gebeurtenis reageren. Twee sprites kunnen allebei starten wanneer op de groene vlag wordt geklikt en vervolgens naast elkaar draaien. De plaats van hun stapels in de werkruimte bepaalt geen uitvoeringsvolgorde tussen de scripts.

Binnen één script blijven handelingen van boven naar beneden geordend. Tussen scripts kan timing belangrijk zijn. Als twee scripts dezelfde sprite in tegengestelde richtingen bewegen, hangt hun gezamenlijke resultaat af van wanneer de handelingen worden uitgevoerd. Geef scripts duidelijke verantwoordelijkheden en coördineer het werk wanneer de ene taak het resultaat van een andere nodig heeft.

Stuur een bericht tussen scripts

“Zend signaal [spel voorbij]” stuurt een bericht naar alle sprites en het speelveld. Bijpassende scripts met “wanneer ik signaal [spel voorbij] ontvang” starten als reactie. De berichtnaam moet overeenkomen; die bepaalt welke gebeurtenis de ontvangers afhandelen.

“Zend signaal en wacht” laat de verzender bovendien pauzeren totdat de ontvangende scripts klaar zijn. Gebruik dit wanneer de volgende handeling afhangt van hun voltooiing. Een besturend script kan bijvoorbeeld een voorbereidingsbericht verzenden en wachten terwijl sprites naar startposities bewegen, en daarna het spel beginnen.

Wachten bepaalt geen volgorde tussen de ontvangers onderling. Als twee ontvangers voor de voorbereiding allebei dezelfde waarde overschrijven, hebben ze nog steeds een plan nodig dat tegenstrijdige verantwoordelijkheden voorkomt. Een ontvanger die eindeloos draait, voorkomt ook dat de wachtende verzender doorgaat.

Geef terugkerend werk een naam en invoer

Maak in Mijn blokken een eigen blok met een invoer genaamd size. De definitie kun je zo beschrijven:

"define square (size)"
    "repeat 4"
        "move (size) steps"
        "turn right 90 degrees"

Met de pen op het speelveld tekent de aanroep “vierkant (100)” zijden van 100 stappen. De aanroep “vierkant (60)” gebruikt dezelfde instructies met kortere zijden. Het eigen blok biedt abstractie door de stappen achter een naam te verbergen en generalisatie doordat de aanroeper de grootte kan opgeven.

De aanroep voert de definitie uit; die kopieert geen tweede, handmatig onderhouden versie naar het script. Als je de definitie verandert, verandert het werk dat latere aanroepen uitvoeren. Daardoor is een terugkerende methode gemakkelijker te onderhouden.

Neem de ideeën mee naar tekst
Idee in ScratchIdee in pseudocode of tekstuele code
“herhaal 4 keer”Telgestuurde lus
“als … dan … anders”Selectie
“maak score 0”Toekenning
Eigen blokProcedure
Gebeurtenisstartblok en aangekoppeld scriptGebeurtenisafhandelaar

In een tekstuele taal typ je de instructies en volg je de regels van de taal voor leestekens en spaties. De onderliggende redenering over toestand, voorwaarden en herhaling blijft van toepassing.

Blokken nemen veel syntaxisfouten weg, maar een verkeerde voorwaarde kan nog steeds het verkeerde pad kiezen. Handmatige uitvoeringen en tests blijven nuttig. Grote blokprojecten kunnen ook moeilijk te doorzoeken en te vergelijken worden omdat hun scripts veel schermruimte innemen; tekst is gemakkelijker te doorzoeken en te beheren voor grote softwareprojecten.

Belangrijkste punten

  • Een gebeurtenis start de scripts waarvan de startblokken erop reageren.
  • Scripts kunnen gelijktijdig draaien, dus hun plaats in de werkruimte bepaalt hun volgorde niet.
  • Een signaal verzenden start bijpassende ontvangers; signaal verzenden en wachten wacht ook tot ze klaar zijn.
  • Eigen blokken verbergen herbruikbare stappen en kunnen parameters aannemen.
  • Dezelfde logica van toekenning, selectie, iteratie en procedures is toepasbaar in tekstuele code.

Problemen oplossen met algoritmen: voorbeelden

5 Walkthroughs

1

Van een taak naar een controleerbare oplossing

10 stappen
Herken een berekening, leg het resultaat vast en gebruik de vier denktechnieken om een oplossing te plannen.
  1. 1
    IntroductieBegin met het resultaat

    Een duidelijk probleem is gemakkelijker op te lossen dan een vaag verzoek. Stel dat een leesgroep de namen van haar leden alfabetisch wil tonen. Bepaal voordat je software kiest welke informatie beschikbaar is en wat het eindresultaat moet bevatten.

    Je volgt dat verzoek van een probleemstelling naar een plan, met invoer, verwerking, uitvoer en de vier technieken van computationeel denken.

  2. 2
    UitlegBenoem de invoer en uitvoer

    De invoer is de lijst met namen van de leden. De vereiste uitvoer is dezelfde lijst in alfabetische volgorde. De verwerking is de methode die de namen anders rangschikt.

    Deze rollen verschillen. Een lijst waarin een lid ontbreekt, voldoet niet aan de taak, ook als de overige namen op volgorde staan. Door de uitvoer vast te leggen kun je die fout herkennen voordat je bepaalt hoe de methode werkt.

  3. 3
    VerbandPlaats de taak binnen de informatica

    Informatica onderzoekt informatie en de processen die informatie verwerken. Deze taak roept vragen op over het weergeven van namen, het ontwerpen van een methode en het controleren of het resultaat correct is.

    Met programmeren zou je instructies uitdrukken in een uitvoerbare taal. De bredere vragen komen eerst: welke uitvoer is vereist, welke aannames heeft de methode nodig en hoeveel werk levert een grotere lijst op?

  4. 4
    UitdagingControleer een voorgestelde uitvoer

    De namen in de invoer zijn “Noor”, “Ava” en “Luis”. Een systeem toont “Ava”, “Noor”. Aan welke eis is niet voldaan, zelfs voordat je de snelheid bespreekt?

    ---reveal---

    Het systeem heeft niet elke naam uit de invoer behouden: Luis ontbreekt. Alfabetische volgorde alleen is niet de volledige eis aan de uitvoer. Het resultaat moet de oorspronkelijke namen bevatten en ze in de vereiste volgorde plaatsen.

  5. 5
    UitlegKies hulpmiddelen om mee te denken

    Vier technieken helpen het verzoek om te zetten in een oplossing. Decompositie scheidt namen verzamelen, ze ordenen en het resultaat tonen. Patroonherkenning vindt terugkerend werk bij de namen. Abstractie behoudt de informatie die de taak nodig heeft. Algoritmeontwerp legt de instructies vast.

    Je kunt elke techniek opnieuw gebruiken wanneer een controle een probleem aan het licht brengt. De namen beschrijven soorten denkwerk, geen vaste uitvoeringsvolgorde van vier stappen.

  6. 6
    VoorbeeldMaak de eisen bruikbaar

    Schrijf de invoer, uitvoer, randvoorwaarden en succescriteria op. Voor de leesgroep is de invoer de ledenlijst en de uitvoer een geordende weergave. Elke naam behouden is een eis; het aantal en de aanwezigheid van de leden controleren helpt het resultaat te beoordelen.

    Maak vervolgens een plan, geef het weer en test het. Deze handelingen volgen de fasen van Pólya: begrijpen, plannen, uitvoeren en terugkijken. Een test kan iets aan het licht brengen wat het eerste plan miste.

  7. 7
    AnalogieGebruik dezelfde manier van denken voor maaltijden

    Maaltijden plannen gebruikt dezelfde aanpak. Scheid recepten kiezen van de boodschappenlijst maken. Herken gedeelde ingrediënten, behoud relevante hoeveelheden en orden de handelingen: voeg de behoeften samen, controleer het aanwezige voedsel en doe boodschappen.

    De weergave “rijst, 1 kg” behoudt een bruikbare hoeveelheid zonder een irrelevante merknaam te bewaren. Het doel bepaalt welke details belangrijk zijn; koken voor meer mensen verandert de hoeveelheden die het plan nodig heeft.

  8. 8
    UitdagingKies de eerste nuttige handeling

    Een organisator zegt: “Maak het programma van het evenement beter.” Een ontwikkelaar begint een kleurrijke weergave te ontwerpen. Wat moet het team verduidelijken vóór die implementatiekeuze?

    ---reveal---

    Verduidelijk de beschikbare informatie, het vereiste resultaat en de randvoorwaarden. Vraag bijvoorbeeld wat “beter” betekent en hoe succes wordt gecontroleerd. Een verzorgde weergave kan een plan uitvoeren dat het planningsprobleem nooit heeft aangepakt.

  9. 9
    UitdagingVerbind het plan met de controle

    Een hulpmiddel voegt ingrediëntenlijsten samen maar telt dezelfde voorraad uit de kast eenmaal voor elk recept dat die gebruikt. De uiteindelijke hoeveelheid op de boodschappenlijst is te klein. Welk deel van de geordende methode moet worden onderzocht en waarom?

    ---reveal---

    Onderzoek hoe gedeelde behoeften worden samengevoegd en de bestaande voorraad wordt afgetrokken. De voorraad in de kast moet worden verrekend met de gecombineerde behoefte. De mislukte uitvoer wijst terug naar de verwerkingsstappen, ook als de ingrediëntgegevens correct zijn ingevoerd.

  10. 10
    SamenvattingNeem een duidelijk probleem mee naar de volgende stap

    Een bruikbare startbeschrijving benoemt de invoer, vereiste uitvoer, randvoorwaarden en controles. De oplossing kan vervolgens worden opgedeeld, vereenvoudigd, weergegeven en aangepast.

    Schrijf voor je volgende taak één concreet succescriterium op voordat je een methode kiest. Daarmee moet iemand anders het resultaat kunnen beoordelen zonder te weten met welke software of taal het is gemaakt.

2

Maak een klein model van een grotere taak

13 stappen
Deel een quiz op in verantwoordelijkheden, hergebruik gemeenschappelijke methoden en kies de details die elk deel nodig heeft.

Sla deze les op om elke Walkthrough stap voor stap te volgen.

  1. 1
    IntroductieMaak een quiz behapbaar
  2. 2
    UitlegBegin met verantwoordelijkheden
  3. 3
    VoorbeeldWerk één tak verder uit
  4. 4
    TipLeg de overdrachten vast
  5. 5
    UitdagingVind een hiaat in het plan
  6. 6
    UitlegZoek naar hetzelfde werk
  7. 7
    VoorbeeldGeneraliseer een tekenmethode
  8. 8
    UitdagingControleer of hergebruik gerechtvaardigd is
  9. 9
    AnalogieHoud het doel van de kaart voor ogen
  10. 10
    VoorbeeldGeef een taak een naam en verberg de stappen
  11. 11
    UitdagingKies gegevens voor het doel
  12. 12
    UitdagingCombineer de drie technieken
  13. 13
    SamenvattingOnderzoek de grenzen die je hebt gekozen
3

Doorloop een volledig algoritme van invoer tot uitvoer

20 stappen
Bouw een kleine methode voor lijstverwerking en oefen daarbij toekenning, selectie, lussen en terminatie.

Sla deze les op om elke Walkthrough stap voor stap te volgen.

  1. 1
    IntroductieVolg wat de instructies daadwerkelijk doen
  2. 2
    UitlegMaak de methode volledig
  3. 3
    VoorbeeldVergelijk het werk bij geordende pagina’s
  4. 4
    UitdagingTest de aanname van de methode
  5. 5
    UitlegLees een toekenning als vervanging
  6. 6
    VoorbeeldBewaar de oude waarde bij een verwisseling
  7. 7
    UitdagingVerdeel een tijdsduur in groepen en een rest
  8. 8
    UitlegKies één pad
  9. 9
    VoorbeeldVereis beide grenzen
  10. 10
    UitdagingOrden overlappende tests
  11. 11
    UitlegBepaal wanneer de lus test
  12. 12
    VoorbeeldBereid een lopende gemiddeldeberekening voor
  13. 13
    VoorbeeldDoorloop de eerste twee doorgangen
  14. 14
    VoorbeeldRond de gemiddeldeberekening af
  15. 15
    TipControleer voortgang en eindwaarden
  16. 16
    VoorbeeldLaat de beste waarde met een kandidaat beginnen
  17. 17
    UitdagingDoorloop de stappen vóór de volgende test
  18. 18
    VerbandHerhaal een lus voor elke rij
  19. 19
    UitdagingCombineer selectie en accumulatie
  20. 20
    SamenvattingGebruik een handmatige uitvoering om het resultaat te onderbouwen
4

Volg een stroomdiagram en herstel een grenswaardefout

15 stappen
Zet een kort proces om, volg de waarden en kies tests die correct en incorrect gedrag onderscheiden.

Sla deze les op om elke Walkthrough stap voor stap te volgen.

  1. 1
    IntroductieBekijk zowel het pad als de waarden
  2. 2
    UitlegKoppel vormen aan handelingen
  3. 3
    VoorbeeldTeken de sequentie voor oppervlakte
  4. 4
    UitdagingKies het ontbrekende symbool
  5. 5
    UitlegZet een vertakking om in IF
  6. 6
    VoorbeeldPlaats een WHILE-beslissing vooraan
  7. 7
    VoorbeeldPlaats een aanmeldtest na de invoer
  8. 8
    UitdagingVolg een succesvolle laatste poging
  9. 9
    UitlegLeg de huidige toestand vast
  10. 10
    VoorbeeldSchrijf verwachtingen op vóór de uitvoering
  11. 11
    TipKies verschillende soorten testinvoer
  12. 12
    UitdagingVind de eerste verkeerde aanpassing
  13. 13
    UitlegHerstel de oorzaak en controleer opnieuw
  14. 14
    UitdagingGebruik een handmatige uitvoering en een nieuwe test samen
  15. 15
    SamenvattingLaat elke controle een vraag beantwoorden
5

Maak een interactief Scratch-programma

17 stappen
Gebruik gebeurtenissen, toestand, invoer, terugkoppeling, lussen en eigen blokken en houd scripts op elkaar afgestemd.

Sla deze les op om elke Walkthrough stap voor stap te volgen.

  1. 1
    IntroductieVerbind een plan met zichtbaar gedrag
  2. 2
    UitlegKies de sprite en startgebeurtenis
  3. 3
    VoorbeeldVoer een korte stapel in volgorde uit
  4. 4
    UitdagingMaak onderscheid tussen een waarde en een handeling
  5. 5
    UitlegInitialiseer vóór herhaald werk
  6. 6
    VoorbeeldOntvang invoer en maak uitvoer
  7. 7
    VoorbeeldKies het geheime getal en vraag eenmaal
  8. 8
    VoorbeeldGeef leesbare terugkoppeling
  9. 9
    VoorbeeldVolg drie gokken
  10. 10
    UitdagingVergelijk de twee tot-vormen
  11. 11
    UitlegCoördineer een afhankelijk script
  12. 12
    UitdagingControleer wat voltooiing vereist
  13. 13
    VoorbeeldMaak één tekenprocedure
  14. 14
    VerbandNeem de structuur mee naar tekst
  15. 15
    TipGeef gedeelde toestand een duidelijke eigenaar
  16. 16
    UitdagingCombineer voorbereiding, herhaling en hergebruik
  17. 17
    SamenvattingLees het gedrag als een algoritme

Problemen oplossen met algoritmen: oefenvragen

50 Oefenvragen in 5 sets

Set 1: Definieer een probleem en maak een plan10 Oefenvragen

Vraag 1 van 10

Een systeem ontvangt een lijst met gemeten massa’s, berekent het gemiddelde en toont één waarde in kilogrammen. Wat is de uitvoer?
  1. De ingevoerde lijst met massa’s.
  2. De getoonde gemiddelde massa.
  3. De stappen voor het gemiddelde.
  4. Het aantal gebruikte stappen.
Toon antwoordVerberg antwoord
Antwoord: B
De uitvoer is het resultaat dat het proces naar buiten brengt: de gemiddelde massa in kilogrammen. De metingen zijn de invoer waaruit dat resultaat wordt berekend. Als je ze verwart, draai je de richting van de berekening om; de stappen voor het berekenen van een gemiddelde beschrijven het proces zelf.

Vraag 2 van 10

Een organisator vraagt om een programma dat workshopnamen alfabetisch ordent. Met welke eis kan iemand het resultaat controleren?
  1. Het programma toont een lijst met kortere namen bovenaan.
  2. Het programma gebruikt een lus om elke ingediende workshopnaam te bekijken.
  3. De uitvoer bevat de tien namen waar bezoekers het vaakst om vragen.
  4. De uitvoer bevat elke oorspronkelijke naam in alfabetische volgorde.
Toon antwoordVerberg antwoord
Antwoord: D
Een controleerbare eis legt de vereiste uitvoer vast: alle oorspronkelijke namen, alfabetisch geordend. Een lus vereisen kiest een deel van een methode zonder vast te stellen of het resultaat correct is. Namen weglaten zou niet aan de taak voldoen, ook als de overige namen op volgorde staan.

Vraag 3 van 10

Voordat een team een programma voor zaalreserveringen ontwerpt, noteert het de beschikbare informatie, het vereiste resultaat en regels tegen dubbele boekingen. Welke probleemoplossingsfase is dit?
  1. Het probleem begrijpen.
  2. Het algoritme uitvoeren.
  3. De implementatie debuggen.
  4. Uitvoeringssnelheden vergelijken.
Toon antwoordVerberg antwoord
Antwoord: A
Het team legt invoer, uitvoer en randvoorwaarden vast. Dat hoort bij het begrijpen van het probleem. Het heeft nog geen instructies gekozen die kunnen worden uitgevoerd. Voor debuggen is gedrag nodig om te onderzoeken; met de reserveringsregels leg je vast wat correct gedrag moet zijn.

Vraag 4 van 10

Een pakketsysteem is opgedeeld in aanvragen lezen, routes kiezen en routelabels afdrukken. Labels moeten de gekozen route tonen. Welke afhankelijkheid moet het plan behouden?
  1. Een route kiezen moet vóór het afdrukken van het label gebeuren.
  2. Een label afdrukken moet vóór het lezen van de aanvraag gebeuren.
  3. Aanvragen lezen moet wachten tot alle labels zijn afgedrukt.
  4. Routes kiezen moet wachten tot alle labels zijn afgedrukt.
Toon antwoordVerberg antwoord
Antwoord: A
Het afdrukken heeft de routekeuze als invoer nodig, dus moet voor dat pakket eerst de route worden gekozen. Als je die taken omdraait, ontbreekt de vereiste waarde voor het label. Het systeem opdelen helpt alleen als het plan ook de afhankelijkheden behoudt.

Vraag 5 van 10

Een ontwerper blijft een taak opdelen in kleinere delen. Wanneer is het redelijk om te stoppen met het verder uitwerken van één deel?
  1. Als elke hoofdtak even ver is uitgewerkt.
  2. Als het deel een naam heeft maar de methode onbekend blijft.
  3. Als de oplossing duidelijk is of een bestaand hulpmiddel het afhandelt.
  4. Als de invoer is genoemd maar de uitvoer nog niet is vastgelegd.
Toon antwoordVerberg antwoord
Antwoord: C
Je kunt stoppen met verder uitwerken zodra een deel direct oplosbaar is of al door een bekende oplossing wordt afgehandeld. Een gelijk aantal takken maakt een decompositie niet beter. De bruikbare grens wordt bepaald door het werk en de beschikbare methoden, dus kunnen verschillende takken een verschillende diepte vereisen.

Vraag 6 van 10

Een tekenmethode herhaalt acht gelijke bewegingen en gelijke draaien naar rechts om een regelmatige achthoek te maken. Welke draai is na elke beweging nodig?
  1. 135 graden.
  2. 45 graden.
  3. 60 graden.
  4. 90 graden.
Toon antwoordVerberg antwoord
Antwoord: B
De richtingsveranderingen moeten samen één volledige omwenteling vormen, dus is elk van de acht draaien 360∘/8=45∘. Als je 135 graden gebruikt, verwar je de binnenhoek van de achthoek met de richtingsverandering. De herhaalde draai wordt gemeten tussen de oude en nieuwe bewegingsrichting.

Vraag 7 van 10

Een bezorgmodel behoudt wegverbindingen en straatlengtes, maar verwijdert eenrichtingsbeperkingen. Het stelt soms een route tegen de toegestane rijrichting in voor. Wat moet worden veranderd?
  1. Verwijder straatlengtes uit de routebepaling.
  2. Behoud alleen de namen van de begin- en eindstraat.
  3. Deel straten op in stukken van gelijke lengte.
  4. Behoud eenrichtingsbeperkingen in het model.
Toon antwoordVerberg antwoord
Antwoord: D
Een model voor autoroutes heeft toegestane rijrichtingen nodig omdat die bepalen welke routes bruikbaar zijn. Abstractie moet details weglaten die voor het doel niet relevant zijn, niet een regel die het antwoord verandert. Meer geometrische details zouden de ontbrekende informatie over de toegestane richting niet herstellen.

Vraag 8 van 10

Drie programma’s zoeken het lichtste pakket, de kortste opname en de laagste temperatuur in niet-lege lijsten. Welke herbruikbare methode past bij alle drie?
  1. Onthoud nul en vervang die telkens wanneer een kleinere waarde verschijnt.
  2. Vergelijk alleen de eerste en laatste waarde en geef de kleinste terug.
  3. Onthoud de eerste waarde en vervang die telkens wanneer een kleinere waarde verschijnt.
  4. Geef de waarde terug die midden tussen de eerste en laatste waarde ligt.
Toon antwoordVerberg antwoord
Antwoord: C
Alle drie de taken zoeken een minimum, dus is de methode die de beste waarde tot dan toe onthoudt op alle drie toepasbaar. Door met de eerste waarde te beginnen is het opgeslagen resultaat een echte kandidaat; beginnen met nul gaat mis wanneer elke waarde positief is. Door ook elke resterende waarde te bekijken vind je een minimum in het midden.

Vraag 9 van 10

Een reeks instructies zegt “herhaal de controle”, maar geeft geen stopregel of eindig aantal. Welke eigenschap van het algoritme staat niet vast?
  1. Dat de methode eindigt.
  2. Dat de methode gegevens opslaat.
  3. Dat de methode selectie gebruikt.
  4. Dat de methode invoer heeft.
Toon antwoordVerberg antwoord
Antwoord: A
Een algoritme moet bij geldige invoer na een eindig aantal stappen eindigen. De instructie geeft geen manier om te weten wanneer de herhaling stopt. Herhaling op zichzelf is toegestaan en een lus kan eindig zijn; de ontbrekende stopregel verhindert hier dat je kunt onderbouwen dat de lus eindigt.

Vraag 10 van 10

Welke waarden blijven over na deze pseudocode?

a ← 6
b ← 11
a ← b
b ← a
  1. a = 11, b = 6
  2. a = 11, b = 11
  3. a = 6, b = 11
  4. a = 6, b = 6
Toon antwoordVerberg antwoord
Antwoord: B
De derde regel kopieert 11 naar a en vervangt de eerdere 6. De laatste regel leest die huidige waarde van a en kopieert dus ook 11 naar b. Voor een verwisseling zou je de oorspronkelijke 6 in een tijdelijke variabele moeten opslaan voordat je a overschrijft; een toekenning bewaart oude waarden niet vanzelf.
Set 2: Volg variabelen, beslissingen en lussen10 Oefenvragen

Sla deze les op om elk antwoord te zien en elke set te oefenen.

Vraag 1 van 10

Wat is de uitvoer?

value ← 7
value ← value + 4
OUTPUT value
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 2 van 10

Een tijdsduur is 248 minuten. Welke waarden geven 248 DIV 60 en 248 MOD 60, in die volgorde?
  1. 4 en 8.
  2. 4 en 48.
  3. 8 en 4.
  4. 3 en 68.
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 3 van 10

Een meting wordt geaccepteerd wanneer die minstens 12 is. Welke vergelijking moet de acceptatie testen?
  1. measurement > 12
  2. measurement ≤ 12
  3. measurement = 12
  4. measurement ≥ 12
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 4 van 10

Een sensorwaarde moet van 4 inclusief tot 9 exclusief lopen. Welke voorwaarde controleert dit?
  1. value ≥ 4 OR value < 9
  2. value ≥ 4 AND value < 9
  3. value > 4 AND value ≤ 9
  4. value ≤ 4 OR value ≥ 9
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 5 van 10

Wat is de uitvoer voor load = 82?

IF load ≥ 80 THEN
    OUTPUT "High"
ELSE IF load ≥ 50 THEN
    OUTPUT "Medium"
ELSE
    OUTPUT "Low"
END IF
  1. Alleen “Medium”.
  2. Alleen “High”.
  3. “High” en daarna “Medium”.
  4. Alleen “Low”.
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 6 van 10

Hoe vaak wordt de uitvoer uitgevoerd?

FOR i ← 2 TO 6
    OUTPUT i
END FOR
  1. 4 keer.
  2. 6 keer.
  3. 5 keer.
  4. 2 keer.
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 7 van 10

Welke reeks wordt als uitvoer gegeven?

n ← 5
WHILE n > 0 DO
    n ← n − 2
    OUTPUT n
END WHILE
  1. 3, 1, −1.
  2. 5, 3, 1.
  3. 3, 1.
  4. 5, 3, 1, −1.
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 8 van 10

Wat is de uitvoer?

total ← 0
FOR EACH n IN [2, 5, 6, 9]
    IF n MOD 2 = 0 THEN
        total ← total + n
    END IF
END FOR
OUTPUT total
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 9 van 10

Een buitenste lus bezoekt rij 1 tot en met 3. Voor elke rij bezoekt een binnenste lus kolom 1 tot en met 5 en telt 2 op bij een totaal dat eenmaal op nul is geïnitialiseerd. Welk totaal blijft over?
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 10 van 10

Een niet-lege lijst kan willekeurige gehele getallen bevatten. Een methode om de grootste waarde te vinden initialiseert largest ← 0 en vervangt die waarde alleen wanneer een groter element verschijnt. Welke enkele verandering maakt de beginwaarde geldig voor elke dergelijke lijst?
  1. Vervang de vergelijking > door ≥.
  2. Initialiseer largest met het laatste element plus 1.
  3. Zet largest vóór elke vergelijking terug op nul.
  4. Initialiseer largest met het eerste lijstelement.
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Set 3: Lees stroomdiagrammen en onderzoek fouten10 Oefenvragen

Sla deze les op om elk antwoord te zien en elke set te oefenen.

Vraag 1 van 10

Welk stroomdiagramsymbool moet distance ← speed * time bevatten?
  1. Een invoer-uitvoerparallellogram.
  2. Een beslissingsruit.
  3. Een start-stopsymbool.
  4. Een procesrechthoek.
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 2 van 10

Een stroomdiagram leest een geheel aantal in en bereikt een ruit met het label count = 0?. Waar moet de uitvoering bij aantal 3 vervolgens heen?
  1. Via de uitgang met het label Ja.
  2. Via de uitgang met het label Nee.
  3. Via beide uitgangen na elkaar.
  4. Terug naar Start vóór de keuze.
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 3 van 10

Een stroomdiagram test items > 0? vóór een herhaald lusblok. Ja gaat het blok in en keert terug naar de test; Nee gaat naar Einde. Welke pseudocodestructuur past daarbij?
  1. WHILE items > 0 DO … END WHILE
  2. REPEAT … UNTIL items > 0
  3. IF items > 0 THEN … END IF
  4. FOR items ← 0 TO 1 … END FOR
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 4 van 10

Een programma accepteert leeftijden in gehele jaren van 18 tot en met 65. Welke invoer controleert direct of de bovengrens ten onrechte wordt uitgesloten?
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 5 van 10

Een programma voor het gemiddelde deelt total door count. Het werkt voor verschillende niet-lege lijsten, maar gaat mis bij een lege lijst. Wat moet vóór de deling worden afgehandeld?
  1. Het geval waarin count nul is.
  2. Het geval van een negatief totaal.
  3. De eerste waarde onder de laatste.
  4. Herhaalde waarden in de lijst.
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 6 van 10

Wat zijn de opeenvolgende opgeslagen totalen na elke uitvoering van het lusblok?

total ← 1
FOR i ← 1 TO 3
    total ← total * 2
END FOR
  1. 1, 2, 4.
  2. 2, 3, 4.
  3. 2, 4, 8.
  4. 2, 4, 6.
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 7 van 10

Een aanmeldprocedure leest een code, verhoogt het aantal pogingen en keert terug als de code onjuist is EN het aantal pogingen attempts < 4 is. Bij de vierde poging is de code correct. Welke test moet na de lus kiezen tussen “Accepted” en “Limit reached”?
  1. Of attempts kleiner is dan vier.
  2. Of de ingevoerde code correct is.
  3. Of het lusblok minstens eenmaal is uitgevoerd.
  4. Of attempts gelijk is aan de beginwaarde.
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 8 van 10

Een programma moet gehele temperaturen van −8 tot en met 12 accepteren. Het controleert nu temperature > −8 AND temperature ≤ 12. Tests met −9, 0, 12 en 13 slagen. Welke nieuwe test maakt de fout zichtbaar en wat moet het verwachte resultaat zijn?
  1. −7, geaccepteerd.
  2. 11, geaccepteerd.
  3. −9, afgewezen.
  4. −8, geaccepteerd.
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 9 van 10

Een stroomdiagram initialiseert total ← 0, leest daarna een waarde in, telt die op bij total en test of nog een waarde nodig is. De Ja-pijl keert terug naar de initialisatie. Het doel is een lopend totaal. Waar moet die Ja-pijl naar terugkeren?
  1. Naar de invoerstap na de initialisatie.
  2. Naar de initialisatiestap vóór de invoer.
  3. Naar de uitvoerstap na de beslissing.
  4. Naar de optelstap zonder invoer te lezen.
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 10 van 10

Een programma draait zonder vast te lopen maar wijst een voldoende score af omdat het > gebruikt waar de regel ≥ vereist. Wat voor soort fout is dit?
  1. Een syntaxisfout.
  2. Een logische fout.
  3. Een uitvoeringsfout.
  4. Een typefout bij de invoer.
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Set 4: Maak en coördineer Scratch-scripts10 Oefenvragen

Sla deze les op om elk antwoord te zien en elke set te oefenen.

Vraag 1 van 10

Een Scratch-stapel wordt uitgevoerd als je erop klikt in de werkruimte, maar doet niets als je op de groene vlag klikt. Wat moet de stapel bij die gebeurtenis starten?
  1. Een startblok “wanneer op groene vlag wordt geklikt”.
  2. Een startblok “wanneer op deze sprite wordt geklikt”.
  3. Een eindblok “stop alle” onderaan.
  4. Een afgerond waardeblok bovenaan.
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 2 van 10

Welk soort Scratch-blok levert TRUE of FALSE aan het voorwaardeveld van een als-blok?
  1. Een afgerond tekstwaardeblok.
  2. Een stapelblok met een opdracht.
  3. Een zeshoekig booleaans blok.
  4. Een gebeurtenisstartblok.
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 3 van 10

In Scratch wordt score op 0 gezet vóór “herhaal 6 keer”. Binnen het herhaalblok wordt “maak score 0” gevolgd door “verander score met 2”. Welke score blijft over?
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 4 van 10

In Scratch is done al TRUE vóór een blok “herhaal tot ”. Hoe vaak wordt het lusblok uitgevoerd?
  1. Eén keer.
  2. Twee keer.
  3. Het herhaalt tot het wordt gestopt.
  4. Nul keer.
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 5 van 10

Een Scratch-script vraagt om een stad en evalueert vervolgens “voeg [Stad: ] en (antwoord) samen”. Welke extra handeling toont de resulterende tekst in de tekstballon van de sprite?
  1. Plaats een variabele-instelblok na het samenvoegblok.
  2. Plaats het samenvoegblok binnen een zegblok.
  3. Plaats het samenvoegblok binnen een ander samenvoegblok.
  4. Plaats een vergelijkingsblok rond het samenvoegblok.
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 6 van 10

Wat is de invoerparameter in een eigen blok met de naam “teken pad (lengte)”?
  1. De benoemde waarde lengte.
  2. De stapel die het blok aanroept.
  3. De groenevlaggebeurtenis.
  4. Het uiterlijk van de sprite.
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 7 van 10

Een besturend script verzendt het signaal “voorbereiden”. Een ontvanger doet er twee seconden over om een sprite naar de startpositie te bewegen. Het besturende script mag pas “Klaar” aankondigen nadat die ontvanger klaar is. Welke verandering legt de vereiste volgorde vast?
  1. Plaats de ontvanger onder het besturende script in de werkruimte.
  2. Gebruik “zend signaal voorbereiden en wacht” vóór “Klaar”.
  3. Verzend “voorbereiden” direct nadat “Klaar” is gezegd.
  4. Verzend twee gewone signalen voordat “Klaar” wordt gezegd.
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 8 van 10

Twee scripts die door de groene vlag starten, geven allebei dezelfde variabele verschillende waarden en eindigen daarna. Een derde script leest die zonder coördinatie. Waarom is vertrouwen op één gekozen eindwaarde onveilig?
  1. De variabele bewaart beide toegekende getallen als een lijst met twee elementen.
  2. Het onderste script in de werkruimte moet altijd als laatste zijn waarde toekennen.
  3. De scripts draaien gelijktijdig, dus kan de schrijftiming de gelezen waarde veranderen.
  4. De toekenning met het grotere getal moet altijd het kleinere getal vervangen.
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 9 van 10

Een raadspel vraagt eenmaal en herhaalt daarna totdat antwoord = geheim. Binnen de lus geeft de sprite terugkoppeling of de gok te hoog of te laag is, maar vraagt nooit opnieuw. De eerste gok is onjuist. Wat verhindert dat de lus eindigt?
  1. De lus controleert de stopvoorwaarde vóór de eerste doorgang van het lusblok.
  2. De terugkoppeling kiest tussen een bericht voor te hoog en een voor te laag.
  3. Het geheime getal is gekozen voordat de eerste vraag werd getoond.
  4. Geen instructie haalt een nieuw antwoord op voor de volgende voorwaardecontrole.
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 10 van 10

Een eigen blok tekent een regelmatige veelhoek met invoer voor het aantal zijden en de zijdelengte. Wat zorgt voor generalisatie?
  1. De naam laat de aanroeper de interne tekenstappen negeren.
  2. Het startblok start wanneer de groenevlaggebeurtenis plaatsvindt.
  3. De veranderende invoer laat één methode verschillende gevallen afhandelen.
  4. De categorie maakt alle blokcombinaties logisch correct.
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Set 5: Pas de ideeën toe in nieuwe situaties10 Oefenvragen

Sla deze les op om elk antwoord te zien en elke set te oefenen.

Vraag 1 van 10

Een museummodel slaat bezoekersaantallen per zaal op. Een nieuwe taak moet rolstoeltoegankelijke routes plannen. Wat is de belangrijkste reden dat het model meer informatie nodig heeft?
  1. Elk model moet elk fysiek kenmerk van een gebouw bevatten.
  2. Het nieuwe doel vereist toegankelijkheidsdetails die het telmodel wegliet.
  3. Het model heeft meer bezoekersmetingen nodig voordat routeplanning werkt.
  4. Het model kan de nieuwe taak aan als aantallen nauwkeuriger worden opgeslagen.
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 2 van 10

Een methode halveert herhaaldelijk een gesorteerde verzameling van 64 mogelijke pagina’s. De verzameling groeit daarna tot 256 pagina’s. Hoe verandert het aantal halveringen dat nodig is om die tot één pagina terug te brengen?
  1. Het stijgt van 6 naar 24.
  2. Het stijgt van 8 naar 10.
  3. Het stijgt van 6 naar 8.
  4. Het stijgt van 32 naar 128.
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 3 van 10

Een systeem accepteert een monster alleen als de massa van 2 tot en met 5 kg is en het etiket leesbaar is. De huidige test is (mass ≥ 2 AND mass ≤ 5) OR readable. Welke onterechte acceptatie kan optreden?
  1. Een monster van 6 kg wordt geaccepteerd als het etiket leesbaar is.
  2. Een monster van 3 kg wordt afgewezen als het etiket leesbaar is.
  3. Een monster van 2 kg wordt afgewezen als het etiket leesbaar is.
  4. Een monster van 5 kg wordt afgewezen als het etiket leesbaar is.
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 4 van 10

Een programma probeert tijdens het verwerken van gegevens door nul te delen en stopt met een foutmelding. Welk soort fout is opgetreden?
  1. Een syntaxisfout.
  2. Een uitsluitend logische indelingsfout.
  3. Een overlap in de decompositie.
  4. Een uitvoeringsfout.
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 5 van 10

Wat is de uitvoer?

total ← 0
count ← 0
FOR EACH n IN [−3, 4, 0, 8, −1]
    IF n > 0 THEN
        total ← total + n
        count ← count + 1
    END IF
END FOR
OUTPUT total / count
  1. 2,4.
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 6 van 10

Een besturend script gebruikt “zend signaal en wacht” om de voorbereiding af te ronden voordat het spel begint. Eén ontvanger voor de voorbereiding bevat een oneindig “herhaal”-blok. Er vindt geen stophandeling plaats. Wat gebeurt er met het volgende blok van het besturende script?
  1. Het wordt uitgevoerd zodra de ontvanger aan de eerste doorgang begint.
  2. Het blijft wachten omdat die ontvanger nooit klaar is.
  3. Het wordt uitgevoerd na precies één doorgang van de ontvangerlus.
  4. Het wordt uitgevoerd wanneer alle ontvangende scripts samen zijn gestart.
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 7 van 10

Een team ontwerpt een toegangsregistratie die één optelt bij het aantal aanwezigen, een welkomstberichtmodule die voor dezelfde aankomst ook één optelt en een weergavemodule. Welke verantwoordelijkheid moet veranderen om een verkeerd totaal te voorkomen?
  1. Slechts één module moet bij elke aankomst het aantal aanwezigen verhogen.
  2. Beide modules moeten vóór het verhogen op de weergave wachten.
  3. De weergavemodule moet het aantal vóór beide verhogingen terugzetten.
  4. De twee verhogingen moeten samen na het welkomstbericht plaatsvinden.
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 8 van 10

Een algoritme begint met n ← 0, herhaalt daarna n ← n + 2 totdat n ≥ 5 en geeft n als uitvoer. Een stroomdiagram is getekend met dezelfde voorwaarde vóór het lusblok: Ja gaat naar uitvoer, Nee gaat het blok in en keert terug. Voor deze invoer geven beide 6 als uitvoer. Welke verandering maakt hun verschillende lusgedrag zichtbaar?
  1. Initialiseer n op 2: de versie met eindvoorwaarde geeft 6, de versie met voorafgaande test 6.
  2. Initialiseer n op 4: de versie met eindvoorwaarde geeft 6, de versie met voorafgaande test 6.
  3. Initialiseer n op 6: de versie met eindvoorwaarde geeft 8, de versie met voorafgaande test 6.
  4. Initialiseer n op −2: de versie met eindvoorwaarde geeft 6, de versie met voorafgaande test 6.
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 9 van 10

Welk paar is de uitvoer?

a ← 9
b ← 14
temp ← a
a ← b + 1
b ← temp
OUTPUT a, b
  1. 14, 9.
  2. 15, 9.
  3. 15, 15.
  4. 9, 14.
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Vraag 10 van 10

Een team vraagt zich af of een nauwkeurig beschreven probleem überhaupt een algoritmische oplossing heeft, voordat iemand een programma schrijft. Welk deel van de informatica illustreert dit?
  1. De grenzen van berekening onderzoeken.
  2. Hardware voor een organisatie kiezen.
  3. Conclusies trekken uit een steekproef van gegevens.
  4. Syntaxis van een uitvoerbare taal schrijven.
Toon antwoordVerberg antwoord

Sla deze les op om dit antwoord te zien.

Kom je niet uit je eigen opgave? Huiswerkhulp

Kernbegrippen

90 Kernbegrippen, elk met een definitie

A

abstractie
Abstractie is de details behouden die een bepaald doel nodig heeft en andere details verbergen, zodat een probleem of onderdeel gemakkelijker te gebruiken is.
Een metrokaart kan verbindingen behouden en het stratenpatroon tussen de stations weglaten.
abstractielaag
Een abstractielaag is een niveau van een systeem dat vastgelegd gedrag biedt en tegelijk de details verbergt van hoe werk op een lager niveau wordt uitgevoerd.
Een chatapp vertrouwt op diensten van het besturingssysteem zonder de gebruiker de hardware rechtstreeks te laten besturen.
accumulator
Een accumulator is een variabele die tijdens lusdoorgangen een lopend resultaat opbouwt door elke nieuwe bijdrage in de opgeslagen waarde te verwerken.
Een lopend totaal telt de volgende temperatuur op bij de hoeveelheid die al uit eerdere dagen is opgebouwd.
afhankelijkheid
Een afhankelijkheid is een relatie waarbij één taak het resultaat van een andere taak nodig heeft, wat beperkt wanneer de afhankelijke taak kan doorgaan.
In een quiz moet de taak die de score bijhoudt het gecontroleerde antwoord ontvangen voordat die kan bepalen of er een punt bijkomt.
algoritme
Een algoritme is een eindige, geordende verzameling nauwkeurige instructies die voor elke invoer binnen het geldige domein de vereiste uitvoer oplevert.
Een correcte methode om de grootste waarde te vinden moet voldoende van de lijst bekijken om ook een maximum in het midden te vinden.
antwoordblok
Het antwoordblok is een Scratch-waardeblok dat het laatst via een vraag-en-wachtblok ingevoerde antwoord levert voor latere verwerking.
Na een naam te hebben gevraagd kan een script antwoord in samenvoegen plaatsen om een persoonlijke begroeting te maken.

B

berekening
Een berekening is een proces dat instructies uitvoert op ingevoerde informatie om een resultaat te produceren dat daarna door een ander proces kan worden gebruikt.
Een routeberekening gebruikt locaties en kaartgegevens en levert een route met een afstand en reistijd op.
beslissingssymbool
Een beslissingssymbool is een ruit in een stroomdiagram die een voorwaarde of waarde test en precies één van de uitgaande paden met labels kiest.
De ruit score ≥ 50? stuurt een voldoende score langs Ja en een lagere score langs Nee.
besturingsstructuur
Een besturingsstructuur is een manier om de uitvoeringsvolgorde te organiseren, waaronder opeenvolgende stappen, voorwaardelijke keuzes en herhaalde blokken werk.
Een algoritme dat een lijst verwerkt kan een beslissing binnen een lus plaatsen en een variabele in een sequentie bijwerken.
booleaans blok
Een booleaans blok is een zeshoekig Scratch-waardeblok dat TRUE of FALSE levert aan het voorwaardeveld van een beslissing of lus.
Een vergelijking uit Waarnemen kan een als-blok vertellen of de sprite de muisaanwijzer raakt.
booleaanse waarde
Een booleaanse waarde is een gegevenswaarde met één van twee mogelijke toestanden, TRUE of FALSE, die vaak door een vergelijking of logische bewerking wordt opgeleverd.
De vergelijking score ≥ 50 levert een booleaanse waarde die bepaalt welke tak van het algoritme wordt uitgevoerd.

C

computationeel denken
Computationeel denken is een manier om problemen en oplossingen te formuleren als stappen die een mens, een computer of een combinatie van beide kan uitvoeren.
Gedeelde ingrediënten voor verschillende maaltijden plannen gebruikt computationeel denken voordat er software aan te pas komt.
computertechniek
Computertechniek is het ontwerpen en ontwikkelen van fysieke computerhardware, zoals processors, printplaten en verwante apparaten.
Bij het ontwerpen van een processorschakeling ligt de nadruk op computertechniek, terwijl bij het onderzoeken van oplosbare problemen de nadruk op theorie ligt.
concurrente uitvoering
Concurrente uitvoering is het uitvoeren van verschillende scripts in overlappende tijdsperioden, zodat hun handelingen zonder coördinatie van de timing kunnen afhangen.
Twee scripts die verschillende waarden naar één variabele schrijven, hebben een plan nodig voordat een ander script op die waarde vertrouwt.
constante
Een constante is een benoemde waarde die gedurende een algoritme onveranderd blijft en een vaste regel of hoeveelheid expliciet maakt in de instructies.
Een benoemde slaaggrens kan met veel scores worden vergeleken zonder tijdens de berekening te veranderen.
correctheid
Correctheid is de eigenschap dat voor elke geldige invoer het vereiste gedrag wordt geleverd en daarbij de vastgelegde regels van het probleem worden nageleefd.
Een methode die het maximum alleen vindt wanneer het aan een uiteinde van een lijst staat, is niet correct voor alle lijsten.

D

datawetenschap
Datawetenschap gebruikt statistiek en computertechnieken om conclusies uit gegevens te trekken en combineert kwantitatief redeneren met methoden om informatie te verwerken.
Een datawetenschapper kan vastgelegde metingen onderzoeken om trends te herkennen en mogelijke verklaringen te beoordelen.
debuggen
Debuggen is de oorzaak van een programmafout vinden en herstellen door die te reproduceren, de uitvoering te onderzoeken en het effect van een reparatie te controleren.
De eerste onverwachte waarde in een tracetabel kan wijzen op een aanpassing die het opgebouwde resultaat heeft gewist.
decompositie
Decompositie is een complexe taak opdelen in kleinere deelproblemen die kunnen worden begrepen, opgelost en gecontroleerd voordat ze worden gecombineerd.
Bij een quiz kun je het tonen van een vraag scheiden van het controleren van het antwoord en het bijwerken van de score.
decompositiediagram
Een decompositiediagram is een boom die laat zien hoe een volledige taak wordt opgedeeld in kleinere verantwoordelijkheden op opeenvolgende detailniveaus.
Takken onder “Een vraag stellen” kunnen tekst tonen, keuzes tonen en invoer lezen weergeven.
deelprobleem
Een deelprobleem is een kleinere taak binnen een groter probleem, met een verantwoordelijkheid die bijdraagt aan het oplossen van het hele probleem.
Antwoordopties tonen is een deelprobleem binnen de grotere taak om een quizvraag te stellen.

E

eigen blok
Een eigen blok is een benoemde Scratch-procedure waarvan de definitie herbruikbare opdrachten bevat en invoerparameters voor veranderende waarden kan bevatten.
Een vierkantblok kan zijden van verschillende lengtes tekenen wanneer elke aanroep een nieuwe grootte opgeeft.
ELSE IF-keten
Een ELSE IF-keten test voorwaarden in volgorde en voert alleen de eerste bijpassende tak uit, met eventueel een afsluitende ELSE voor gevallen die niet overeenkomen.
Overlappende grenzen met “minstens” vereisen een zorgvuldige volgorde, zodat een vroege tak niet elk geval afvangt.

F

fout van één te veel of te weinig
Een fout van één te veel of te weinig is een grensfout waardoor een telling of herhaald proces één element te veel of één element te weinig omvat.
Een aftelling met n ≥ 0 geeft naast de positieve waarden ook nul als uitvoer als het lusblok n uitvoert.

G

gebeurtenis
Een gebeurtenis is iets wat plaatsvindt, zoals een toetsaanslag of de ontvangst van een bericht, en scripts kan activeren die in een programma zijn aangemeld om erop te reageren.
Een klik op de groene vlag start de Scratch-scripts met bijpassende groenevlagstartblokken.
gebeurtenisafhandelaar
Een gebeurtenisafhandelaar is een script of stuk code dat start wanneer een bepaalde gebeurtenis plaatsvindt en de reactie uitvoert die aan die gebeurtenis is toegewezen.
Een script “wanneer ik signaal [spel voorbij] ontvang” kan de beweging stoppen wanneer het project dat bericht verzendt.
gegevenstype
Een gegevenstype duidt aan welk soort waarde wordt weergegeven en helpt bepalen welke bewerkingen voor die waarde zinvol zijn.
Getallen optellen berekent een numerieke som, terwijl twee tekenreeksen samenvoegen hun tekst aaneenzet.
geheel getal
Een geheel getal kan negatief, nul of positief zijn en is geschikt voor aantallen en andere waarden zonder breukdeel.
Een lusteller neemt gehele waarden aan, terwijl het berekende gemiddelde van de invoerwaarden een breukdeel kan hebben.
gehele deling (DIV)
Gehele deling (DIV) is een operator voor deling van gehele getallen die het gehele quotiënt geeft door volledige groepen ter grootte van de deler in een niet-negatief deeltal te tellen.
Bij 135 minuten bepaalt 135 DIV 60 twee volledige uren voordat de resterende minuten worden afgehandeld.
generalisatie
Generalisatie is een specifieke oplossing omzetten in een methode voor een groep gevallen door te bepalen wat gelijk blijft en wat kan variëren.
Eén methode om veelhoeken te tekenen kan verschillende aantallen zijden accepteren in plaats van één script per vorm te gebruiken.
grenswaardetest
Een grenswaardetest controleert een geldige eindwaarde of beslissingsgrens en waarden in de buurt daarvan, waar kleine vergelijkingsfouten de acceptatie kunnen veranderen.
Precies 50 testen maakt een strikte groter-danvergelijking zichtbaar wanneer een slaagregel die score omvat.

H

handmatige uitvoering
Een handmatige uitvoering is een algoritme met gekozen invoerwaarden met de hand volgen en de werkelijke bewerkingen vastleggen zonder een computerprogramma uit te voeren.
Een lerende gebruikt een tracetabel om de eerste doorgang, de laatste doorgang en de stoptest van een lus met de hand te controleren.
herhaal-tot-blok
Een herhaal-tot-blok is een Scratch-lus die vóór elke doorgang een booleaanse waarde controleert en het lusblok herhaalt zolang die stopvoorwaarde FALSE is.
Als de eerste gok correct is, slaat een herhaal-tot-correct-blok het terugkoppelingsblok volledig over.
herhaalblok
Een herhaalblok is een Scratch-besturingsblok dat de omsloten opdrachten een vastgesteld aantal keer uitvoert voordat het doorgaat met het volgende blok.
Een paar van bewegen en draaien vier keer herhalen kan een vierkant tekenen wanneer de pen op het speelveld staat.

I

informatica
Informatica is de studie van berekening, informatie en het ontwerp van systemen die problemen oplossen met nauwkeurige processen.
Een informaticus kan onderzoeken of een probleem oplosbaar is voordat iemand een uitvoerbaar programma schrijft.
informatietechnologie
Informatietechnologie is het kiezen, installeren, onderhouden en beheren van computersystemen voor een organisatie.
Een IT-team kan de computers en accounts configureren die een organisatie voor haar dagelijkse werk nodig heeft.
invoer
Invoer bestaat uit gegevens die vóór of tijdens de uitvoering aan een berekening worden geleverd en informatie bieden die de instructies kunnen gebruiken.
Een door een gebruiker ingevoerde temperatuur is invoer voor een programma dat beslist welk bericht het toont.
invoer-uitvoersymbool
Een invoer-uitvoersymbool is een parallellogram in een stroomdiagram dat een stap voorstelt die gegevens ontvangt of een resultaat naar een gebruiker of andere bestemming stuurt.
Een kamerlengte inlezen en een oppervlakte tonen gebruiken allebei gegevenssymbolen, terwijl de berekening een rechthoek gebruikt.
iteratie
Iteratie is een blok instructies herhalen op basis van een aantal of voorwaarde, zodat een methode terugkerend werk kan afhandelen zonder de stappen te dupliceren.
Een lus kan dezelfde vergelijking toepassen op elke kandidaat en tegelijk de beste tot dan toe onthouden.

L

lijst
Een lijst is een geordende verzameling waarden die als één gegevensitem wordt behandeld, zodat een algoritme de elementen kan bezoeken en combineren of vergelijken.
Een FOR EACH-lus kan de temperatuurmetingen in een lijst bezoeken en het totaal ervan opbouwen.
logische fout
Een logische fout is een gebrek in de instructies waardoor een draaiend programma gedrag of resultaten oplevert die afwijken van de vereiste regels.
Een strikte vergelijking voor een inclusieve slaaggrens gebruiken wijst de score op de grens ten onrechte af.
logische operator
Een logische operator combineert of keert booleaanse voorwaarden om: AND vereist beide, OR vereist minstens één en NOT keert een waarde om.
Een controle op een geldig interval combineert de onder- en bovengrens met AND, zodat beide moeten gelden.
lus met eindvoorwaarde
Een lus met eindvoorwaarde evalueert de besturende voorwaarde na het herhaalde lusblok, zodat het blok minstens één keer wordt uitgevoerd vóór een beslissing om te stoppen.
Een aanmeldprocedure met REPEAT … UNTIL vraagt om een wachtwoord voordat wordt besloten of een volgende poging nodig is.
lus met voorafgaande voorwaardetest
Een lus met voorafgaande voorwaardetest evalueert de besturende voorwaarde voordat het lusblok elke keer wordt uitgevoerd, zodat het blok nul keer kan worden uitgevoerd als niet aan de voorwaarde is voldaan.
Een WHILE-diagram kan direct van de eerste beslissing naar de stap na de lus gaan.

M

model
Een model is een vereenvoudigde weergave van iets die voldoende relevante informatie behoudt om vragen voor een bepaald doel te beantwoorden.
Een parkeermodel registreert de identiteit en aankomsttijd van een auto zonder te simuleren hoe de motor werkt.

N

nesting
Nesting is een besturingsstructuur binnen het blok van een andere structuur plaatsen, zodat het bereiken van de binnenste structuur afhangt van de omringende stroom.
Een binnenste wachtwoordcontrole kan pas worden uitgevoerd nadat de buitenste lengtecontrole de uitvoering naar die tak heeft gestuurd.

O

oneindig herhaalblok
Een oneindig herhaalblok is een Scratch-lus die het lusblok blijft uitvoeren totdat het script of programma wordt gestopt en zo doorlopend gedrag ondersteunt.
Een spel kan een oneindige lus gebruiken om te blijven controleren of een toets wordt ingedrukt.
oneindige lus
Een oneindige lus is een herhaling die nooit eindigt omdat de uitvoering nooit een toestand of handeling bereikt die het herhaalde werk stopt.
Een aftelling vanaf een positief getal herhaalt eindeloos als het lusblok de door de lus geteste waarde nooit verlaagt.

P

parameter
Een parameter is een benoemde invoer in de definitie van een procedure waarmee de instructies kunnen werken met waarden die door verschillende aanroepen worden opgegeven.
Met de parameter grootte kan een tekenprocedure bij de ene aanroep 60 stappen gebruiken en bij een andere 100.
patroonherkenning
Patroonherkenning is het vaststellen van overeenkomsten, herhalingen of trends binnen gegevens of taken die wijzen op een gemeenschappelijke structuur of herbruikbare methode.
Herhaalde paren van bewegen en draaien wijzen op een lus wanneer een pen de zijden van een regelmatige veelhoek volgt.
probleemoplossingscyclus
Een probleemoplossingscyclus is een proces waarin je een probleem begrijpt, een oplossing plant, die uitvoert en controleert, met aanpassingen waar nodig.
Een mislukte test kan een ontwerper ertoe brengen terug te gaan om het oorspronkelijke plan te veranderen of ontbrekende invoer op te nemen.
procedure
Een procedure is een benoemde groep instructies die kan worden aangeroepen om een taak uit te voeren, soms met opgegeven invoer of een teruggegeven resultaat.
Een aanroeper kan een procedure voor het gemiddelde gebruiken zonder telkens de stappen voor optellen en delen opnieuw te schrijven.
processymbool
Een processymbool is een rechthoek in een stroomdiagram die een handeling of berekening voorstelt die de huidige gegevens van het programma verandert of verwerkt.
De rechthoek area ← length * width berekent een waarde nadat de twee metingen zijn ingelezen.
programma
Een programma is een verzameling instructies die in een programmeertaal is uitgedrukt zodat een computer het vastgelegde gedrag kan uitvoeren.
Een stroomdiagram en een uitvoerbaar programma kunnen dezelfde methode via verschillende weergaven uitdrukken.
programmeren
Programmeren is instructies schrijven in een taal die een computer kan uitvoeren, waardoor een geplande methode wordt omgezet in uitvoerbaar gedrag.
Een ontwikkelaar kan dezelfde berekeningsmethode in verschillende programmeertalen implementeren.
programmeren met blokken
Programmeren met blokken is een programma bouwen uit grafische instructie- en waardeblokken waarvan de vormen aangeven hoe ze kunnen worden gecombineerd.
Een beginner kan een lus samenstellen zonder de leestekens te typen die een tekstuele taal vereist.
pseudocode
Pseudocode is een gestructureerde, leesbare beschrijving van een algoritme die de logica uitdrukt zonder de syntaxis van één programmeertaal te volgen.
Sleutelwoorden in hoofdletters en ingesprongen blokken maken de bedoelde lusstructuur zichtbaar vóór de implementatie.

R

randvoorwaarde
Een randvoorwaarde is een regel of grens waaraan een oplossing moet voldoen en die bepaalt welke mogelijke resultaten of methoden aanvaardbaar zijn.
Een maaltijdplan moet zowel rekening houden met de beschikbare kooktijd als met ieders dieetwensen.
reële getalgegevens
Reële getalgegevens geven numerieke grootheden weer die een breukdeel kunnen hebben en worden in een programma doorgaans met een drijvendekommagetype opgeslagen.
Een gemeten kamerlengte van 4,5 meter heeft een numeriek type nodig dat het breukdeel kan weergeven.
restbepaling (MOD)
Restbepaling (MOD) is een operator voor gehele getallen die de rest na gehele deling geeft; bij niet-negatieve invoer is dat wat na volledige groepen overblijft.
De waarde 135 MOD 60 geeft de 15 minuten die overblijven nadat twee volledige uren zijn weggenomen.
retourwaarde
Een retourwaarde is een resultaat dat een procedure naar de aanroeper terugstuurt, waar het kan worden opgeslagen, met andere gegevens gecombineerd of verder doorgegeven.
Een procedure voor het gemiddelde kan 20 teruggeven zodat de aanroeper die waarde met een andere meting kan vergelijken.

S

script
Een script is een verbonden stapel Scratch-blokken die geordend gedrag beschrijft en doorgaans door een gebeurtenisstartblok wordt gestart wanneer de gebeurtenis plaatsvindt.
Een groenevlagscript kan een variabele terugzetten, een vraag stellen en daarna een terugkoppelingsbericht kiezen.
selectie
Selectie is de besturingsstructuur die een voorwaarde test en kiest welke tak van instructies voor de huidige toestand wordt uitgevoerd.
Een slaagcontrole kiest één bericht als de score voldoende is en een ander als dat niet zo is.
sequentie
Sequentie is de besturingsstructuur waarbij instructies na elkaar worden uitgevoerd en elke latere instructie de eerder achtergelaten toestand gebruikt.
Een meting inlezen voordat je het resultaat berekent, is een sequentie met een noodzakelijke afhankelijkheid.
signaal
Een signaal is een Scratch-bericht dat naar alle sprites en het speelveld wordt gestuurd en alle scripts start waarvan de ontvangende startblokken bij dat bericht passen.
Een besturend script kan “voorbereiden” verzenden zodat verschillende sprites via hun eigen ontvangers naar hun positie bewegen.
speelveld
Het speelveld is het zichtbare projectgebied van Scratch, met een afmeting van 480 bij 360 eenheden en horizontale en verticale coördinaten met (0, 0) als middelpunt.
Een sprite die naar x: 0 en y: 0 wordt gestuurd, beweegt naar het midden voordat het volgende blok wordt uitgevoerd.
sprite
Een sprite is een personage of object in een Scratch-project met eigen scripts, uiterlijken en geluiden dat op gebeurtenissen kan reageren en handelingen kan uitvoeren.
Twee sprites kunnen op hetzelfde signaal reageren en daarbij verschillende taken in het project uitvoeren.
start-stopsymbool
Een start-stopsymbool is een stroomdiagramsymbool, getekend als ovaal of rechthoek met afgeronde hoeken, dat een start- of eindpunt van de uitvoering markeert.
Een diagram voor de oppervlakte van een kamer begint bij Start en bereikt Einde nadat de berekende oppervlakte is getoond.
startblok
Een startblok is een Scratch-blok dat een script start, met een vorm die boven de opdrachtstapel staat en de gebeurtenis aangeeft die de aangekoppelde instructies activeert.
Een groenevlagstartblok laat de stapel op de vlag reageren, terwijl een toetsstartblok op die toets reageert.
stroomdiagram
Een stroomdiagram is een diagram dat algoritmestappen met symbolen weergeeft en de uitvoeringsvolgorde toont met gerichte verbindende stroomlijnen.
Als je één verzameling invoerwaarden langs de pijlen volgt, zie je welk pad die uitvoering neemt.
stroomlijn
Een stroomlijn is een verbinding met een pijl tussen stroomdiagramsymbolen die aangeeft welke stap op een andere volgt, inclusief een terugkeer naar herhaald werk.
Een teruggaande stroomlijn kan van de aanpassing in het lusblok terugkeren naar de beslissing die een volgende doorgang bestuurt.
succescriterium
Een succescriterium is een specifieke manier om te beoordelen of een oplossing het beoogde resultaat heeft bereikt en aan de behoeften van het probleem voldoet.
Een boodschappenlijst voldoet als die voldoende bevat van elk ingrediënt dat voor de gekozen maaltijden nodig is.
syntaxisfout
Een syntaxisfout is een overtreding van de schrijfregels van een programmeertaal waardoor de betreffende instructies niet correct kunnen worden geïnterpreteerd.
Een ontbrekend sluitend haakje kan verhinderen dat tekstuele code wordt uitgevoerd voordat de logica is getest.

T

tak
Een tak is één mogelijk pad door een beslissing, met het werk dat wordt uitgevoerd wanneer de bijbehorende voorwaarde of het bijbehorende geval wordt gekozen.
In een aanmeldstroomdiagram toont de tak voor een geslaagde aanmelding “Welcome” en voegt zich daarna vóór Einde weer bij de stroom.
tekenreeks
Een tekenreeks is een reeks teksttekens waarmee een programma namen, berichten of tekst die op een getal lijkt als tekstgegevens kan opslaan.
De tekenreeksen “12” en “3” samenvoegen levert “123” op, wat verschilt van hun numerieke som berekenen.
tekst-samenvoegblok
Het tekst-samenvoegblok is een Scratch-waardeblok dat één tekstwaarde maakt door twee opgegeven stukken tekst te combineren zonder die zelf te tonen.
Een zegblok kan de begroeting tonen die ontstaat door “Hallo, ” samen te voegen met het antwoordblok.
telgestuurde lus
Een telgestuurde lus herhaalt het lusblok een bekend aantal keer, vaak met een teller waarvan de waarden een vastgelegd inclusief bereik doorlopen.
Een FOR-lus van 1 tot en met 5 voert vijf doorgangen uit, terwijl beginnen bij 0 één extra doorgang toevoegt.
teller
Een teller is een variabele die bijhoudt hoe vaak een gebeurtenis plaatsvindt of hoeveel elementen tijdens de uitvoering zijn verwerkt.
De teller wordt eenmaal per meting verhoogd zodat het eindtotaal kan worden gedeeld door het aantal metingen.
toekenning
Een toekenning is het opslaan van een nieuw berekende waarde in een variabele, waarbij de eerder onder die naam opgeslagen waarde wordt vervangen.
In count ← count + 1 wordt de oude waarde van count gelezen voordat de nieuwe waarde terug in count wordt geplaatst.
top-downdecompositie
Top-downdecompositie is een volledig probleem uitwerken in hoofddelen en die delen vervolgens verder uitwerken in kleinere, directer oplosbare taken.
Een ontwerper bepaalt de verantwoordelijkheden van een quiz voordat de gedetailleerde handelingen binnen elk scherm worden vastgesteld.
tracetabel
Een tracetabel is een overzicht van variabelewaarden, resultaten van voorwaarden en uitvoer terwijl de instructies van een algoritme tijdens een bepaalde uitvoering worden gevolgd.
Een handmatige uitvoering van een lopende som toont het totaal na elke optelling en maakt zo een onverwachte terugzetting zichtbaar.
trend
Een trend is een terugkerende richting of relatie die in gegevens wordt waargenomen en voorspellingen kan ondersteunen zolang het patroon relevant blijft.
Een winkel vergelijkt de verkoop van paraplu’s met regenvoorspellingen voordat de winkel dat patroon gebruikt om de voorraad te plannen.

U

uitvoer
Uitvoer is een resultaat dat een berekening naar buiten brengt, zoals getoonde tekst, een berekende waarde of gegevens die aan een ander proces worden doorgegeven.
De gemiddelde massa die verschijnt na het verwerken van een verzameling metingen is de uitvoer van de berekening.
uitvoeringsfout
Een uitvoeringsfout is een fout die optreedt terwijl een programma wordt uitgevoerd, vaak uitgelokt door specifieke invoer of een specifieke toestand tijdens een bewerking.
Een gemiddeldeberekening voor een lege lijst leidt tot deling door nul als het aantal zonder eerdere controle wordt gebruikt.

V

variabele
Een variabele is een benoemde opslagplaats waarvan de huidige waarde kan worden gelezen en vervangen terwijl een algoritme of programma wordt uitgevoerd.
Een tellervariabele verandert van 4 naar 5 nadat een instructie één bij de huidige waarde optelt.
verbindingssymbool
Een verbindingssymbool is een stroomdiagramsymbool met een label dat gescheiden delen van de uitvoeringsstroom verbindt en de lezer helpt een voortzetting in het diagram te volgen.
Overeenkomende labels op verbindingssymbolen kunnen een lange kruisende lijn vervangen die een groot diagram moeilijk te volgen zou maken.
voorgedefinieerd proces
Een voorgedefinieerd proces is een stroomdiagramstap die een afzonderlijk beschreven procedure aanroept en wordt getekend als een rechthoek met dubbele verticale lijnen aan de zijkanten.
Een hoofddiagram kan een controleprocedure aanroepen zonder elke interne vergelijking op dezelfde pagina te tekenen.
voorwaarde
Een voorwaarde is een expressie die wordt geëvalueerd als TRUE of FALSE en de beslissing voor een tak of voorwaardegestuurde lus levert.
De voorwaarde remaining > 0 bepaalt of de lus nog een element moet verwerken.
voorwaardegestuurde lus
Een voorwaardegestuurde lus bepaalt herhaling met een booleaanse test, zodat het aantal doorgangen kan afhangen van veranderende gegevens of nieuwe invoer.
Een raadspel kan blijven vragen totdat het antwoord overeenkomt met de geheime waarde die aan het begin is gekozen.

W

waardeblok
Een waardeblok is een afgerond Scratch-blok dat een waarde, zoals tekst of een getal, aan een invoerveld van een ander blok levert.
Het waardeblok van de score levert het huidige getal aan een vergelijking die controleert of het doel is bereikt.

Over deze les

Door StudeliFout melden

Maak je eigen Studiemateriaal

Maak van je aantekeningen, slides en documenten Leermodules, Oefenvragen, Flashcards en 6 andere tools.

Aan de slag