PO: Informatica Olympiade

Maat: px
Weergave met pagina beginnen:

Download "PO: Informatica Olympiade"

Transcriptie

1 PO: Informatica Olympiade Handreiking Wt Stedelijk Gymnasum s-hertogenbosch Wat is de Informatica Olympiade? De Nederlandse Informatica Olympiade (NIO) is een programmeerwedstrijd voor de bovenbouw van het Voortgezet onderwijs. Het is een onderdeel van de International Olympiad in Informatics (IOI). De eerste ronde van de NIO bestaat uit 4 onderdelen A, B, C en D: Opgaven en links: PDF met alle opgaven van de NIO 2019 Digitaal inleverplatform van de NIO Hoofdwebsite van de NIO De 100 inzendingen met de meeste punten (mits deze minimaal 200 punten hebben gehaald) worden uitgenodigd voor de tweede ronde van de NIO in maart 2018 (meestal op de Technische Universiteit Twente). Om mee te doen aan de olympiade, moeten je uitwerkingen digitaal zijn ingeleverd bij de NIO voor 16 januari (Ze worden bij inleveren direct automatisch nagekeken en je kunt zo vaak nieuwe/verbeterde versies insturen als je wilt). De beste deelnemers van de tweede ronde gaan door naar de derde ronde om te bepalen wie er namens Nederland mee mag doen aan de Internationale Informatica Olympiade in de zomer van 2019 in Azerbeidzjan. 1

2 Inhoud Wat is de Informatica Olympiade?... 1 De PO... 3 Puntenverdeling:... 3 Inleveren en beoordeling:... 3 Automatisch nakijken... 4 Tips en tricks bij de A opgaven... 7 Algemene tips... 7 Opdracht 1: Trapezium (1 pnt)... 7 Opdracht 2: Letterbeeld (1 pnt)... 7 Opdracht 3: Cijferwoorden (1 pnt)... 9 Opdracht 4: Getallenrivieren (1,5 pnt): Globale opzet van de oplossing Een stroom functie De rivierenlijst aanleggen De rivierenlijst vullen met de hoofdrivieren De invoer verwerken Opdracht 5: Eenrichtingsverkeer (1,5 pnt) Introductie recursie Oplossings-strategie Invoer lezen De recursieve functie De functie uitvoeren De route omzetten naar letters

3 De PO Als PO voor Informatica gaan we de een deel van de opgaven van de eerste ronde van de NIO maken, namelijk die van categorie A en C. Je bent zelf vrij om ook daadwerkelijk mee te doen aan de Olympiade met je uitwerkingen (Met het maken van de PO ben je al een flink eind op weg, je kunt dan zelf de overige opgaven nog maken voor meer punten). Meer details over hoe je meedoet en welke voorwaarden er zijn, vind je op Wt helpt je natuurlijk graag als je officieel mee wilt doen. De olympiade schrijft niet voor in welke programmeertaal je de oplossingen maakt. De opgaven zijn zo gemaakt dat je in principe in elke taal een oplossing kunt schrijven. In dit document ga ik er van uit dat je het in Python doet. Als je liever een andere taal gebruikt, mag dat natuurlijk ook. Puntenverdeling: Je doet deze PO alleen of met zijn tweeën. (Let op: De deelname aan de NIO zelf is individueel, dus van een duo kan maar 1 persoon deelnemen, omdat je niet 2x dezelfde code in kunt/mag leveren. Als je toch allebei wilt deelnemen, zul je verschillende versies van je oplossingen moeten maken.) We maken voor de PO alleen opgaven A en C (en eventueel D als je wilt). Opgaven B worden uniek gegenereerd voor elke deelnemer. Deze opgaven moet je zeker ook maken als je aan de Olympiade mee wilt doen, maar voor de PO slaan we ze over, omdat deze voor Wt niet goed na te kijken zijn. De beoordeling van de PO is als volgt: 1 punt cadeau Je verslag met toelichting op je code en logboek leveren samen 1 punt op Met het maken van opgaven A1 t/m A4 kun je 4,5 punten verdienen: o A1: 1,0 punt o A2: 1,0 punt o A3: 1,0 punt o A4: 1,5 punt Met het maken van A5, en opgave C (en eventueel D als superbonus), zijn de laatste 3,5 punten te verdienen: o A5: 1,5 punt o C1: 1,0 punt o C2: 1,0 punt Deels correcte oplossingen van een opgave leveren een deel van de punten op, dus ook al kom je er niet uit, lever je beste poging van elke opgave toch in. Let op: de opgaven lopen op in moeilijkheid, maar de puntenwaardering ligt relatief zwaar op de eerste opgaven. Zo moet het voor iedereen mogelijk zijn een nette voldoende te halen en voor de doorzetters zijn hogere punten haalbaar. Inleveren en beoordeling: Je levert bij Wt je gemaakte programma s in. Daarnaast maak je een begeleidend verslag waarin je de code uitlegt. Hiermee help je mij jouw/jullie code te begrijpen en laat je zien dat je begrijpt wat je gedaan hebt (plagiaatcontrole). Tevens lever je een logboekje in met de bestede tijd per persoon. Dit 3

4 geeft mij inzicht in jullie tijdsbesteding en kan dienen als bewijsmateriaal bij eventuele onenigheid binnen een duo. Let op: Omdat deze PO plagiaat gevoelig is (Wt heeft er eerder problemen mee gehad), let ik extra op het kopiëren van andermans code en op de codetoelichting die je in je verslag geeft. Bij twijfel zal Wt om een mondelinge toelichting vragen om te checken of je je eigen code hebt geschreven en snapt wat je hebt gedaan! Elkaar een beetje helpen mag natuurlijk (en wordt zelfs aangemoedigd), maar code inleveren die je zelf niet helemaal begrijpt en dus niet kan toelichten, mag niet. Je levert alle onderdelen van de PO (de programma s en het verslag) in in een.zip file bij de opdracht die openstaat in Magister. Je hoeft per groepje uiteraard maar 1 keer in te leveren. Uiterlijke inleverdatum: Zondag 9 december om 23:59 uur Automatisch nakijken De informatica olympiade werkt met een automatisch nakijksysteem. Hierbij kun je een script dat je geschreven hebt als oplossing voor een van de opgaven inleveren. Er worden dan een aantal testcases automatisch op losgelaten en je krijgt punten voor elke testcase waarvoor je script het juiste antwoord geeft. Voor de testcases die misgaan krijg je te zien wat de foutmelding was (bv. Een fout antwoord, een error bij het runnen, maximale runtime overschreden, etc.). Met deze info kun je je script eventueel verbeteren en weer een nieuwe versie indienen. Je kunt elke opgave zo vaak proberen als je wilt, de hoogste score blijft staan. Zelfs als je niet aan de officiële olympiade wilt meedoen kun je hier dankbaar gebruik van maken om je PO opgaven te testen. Het werkt als volgt: Ga naar en maak een account aan. Als je bent ingelogd zie je links alle A, B en C opgaven staan (en 00 is een testopgave voor als je wilt checken of het inleveren werkt). Klik op de opgave je je wilt inleveren en klik Voeg inzending toe. Je kunt nu een script uploaden. Vergeet niet de juiste programmeertaal te selecteren (Python 2): 4

5 Als je op opslaan klikt wordt je script geupload en uitgevoerd. Je ziet dan je inzending in de lijst staan met de status uitvoeren. Dit betekent dat je script op dit moment uitgeveord wordt. Als je na een paar seconden de pagina ververst (F5), dan zie je als het goed is de status op klaar staan en is er een score gegeven (max 40 voor elke A opgave): Je kunt nu op de inzending klikken voor meer info en eventuele foutmeldingen als je niet alle 40 punten hebt gehaald: 5

6 Als er foutmeldingen staan in de rechtertabel kunnen die je helpen de fouten in je script op te sporen. De rest van dit document bevat tips, hints en uitleg om je te helpen de A opgaven te tackelen. 6

7 Tips en tricks bij de A opgaven Algemene tips - Bij elk van deze opgaven wordt er 1 of meer keer om input gevraagd (bij het automatisch nakijken wordt je programma getest met verschillende inputs). Gebruik hiervoor steeds simpelweg raw_input() De Olympiadesoftware gaat er vanuit dat je precies input leest zoals in de opgave is opgegeven en dat je precies het antwoord geeft zoals is voorgeschreven. Je moet dus geen extra tekst of tussenuitkomsten afdrukken. Doe dus ook niet zoiets als raw_input("geef een getal"), maar simpelweg raw_input() (met niets tussen de haakjes), zodat er niets extras op het scherm wordt geprint. Je opgave wordt anders niet goedgerekend door de nakijksoftware. - Om je programma s te testen is het vervelend steeds de invoer te moeten intypen. Zet tijdens het testen de waardes waar je mee wilt testen rechtstreeks in de code (en commentaar de input even weg). Dat scheelt je een hoop typewerk. Niet vergeten de input weer terug te zetten voordat je de opgave instuurt naar de nakijksoftware! Opdracht 1: Trapezium (1 pnt) Deze eerste opgave is een echte opwarmer en zou je met slechts enkele regels Python moeten kunnen maken. Een paar tips: Gebruik een for-loop om het juiste aantal rijen te printen Vergeet niet dat je in Python strings kunt vermenigvuldigen. Dus "x" * 6 geeft "xxxxxx". Dat komt hier bijzonder goed van pas om het juiste aantal sterren op elke rij af te drukken Opdracht 2: Letterbeeld (1 pnt) In deze opgave moet je eigenschappen van letters gaan bekijken en tellen. Om dat voor elkaar te krijgen, gaan we de volgende stappen uitvoeren in ons programma: We moeten de twee eigenschappen van elke letter (aantal gesloten gebieden en aantal uiteindes) vastleggen. Hiervoor gaan we 2 lijsten (python lists) met elk 26 waarden aanleggen (voor elke letter 1 waarde). o Eerst wat handwerk: Schrijf op een papiertje van alle letters uit de opgave op hoeveel gesloten gebieden ze hebben ( A: 1, B: 2, C:0, D: 1, etc.) en hoeveel uiteindes ze hebben (A: 2, B:0, C:2, D:0, etc) o Maak nu een lijst gesloten_gebieden en zet daar op volgorde deze 26 integer waarden in en doe hetzelfde voor een lijst uiteindes. We moeten de letters uit de invoer kunnen omrekenen naar hun positie in deze lijsten (A is positie 0, B is positie 1, C positie 2, etc.) 7

8 o Hiervoor moeten we even de ASCII tabel er bij halen: o Elke letter heeft een eigen positie (nummer) op de ASCII tabel. In deze opgave wordt alleen met de hoofdletters gewerkt. De hoofdletters zitten netjes naast elkaar in de ASCII tabel met waarde 65 (A) t/m 90 (Z). In python kun je een letter omzetten naar de bijbehorende ASCII waarde met ord(): code = ord("q") print code Uitvoer: 81 Andersom kan ook natuurlijk. Het teken opvragen van een bepaalde ASCII cijferwaarde gaat als volgt: letter = chr(87) print letter 8

9 o Uitvoer: "W" De ASCII waarde van letter A is 65, die van letter B is 66, etc. Bedenk zelf een truuk om de ASCII waardes van de letters om te rekenen naar hun positie in de lijst uit de vorige stap. (Dus zou moeten worden: A is 0, B is 1, etc.) We kunnen nu een (for) loop doen over alle letters van het woord, met de truuk uit de vorige stap de index van die letter in de lijsten bepalen en vervolgens de twee waardes van die letter opzoeken en optellen. Vergeet niet om vooraf aan de loop 2 tellers aan te maken die de totalen van deze waardes bijhouden. Als we klaar zijn met de loop, hebben we het antwoord en kunne we het afdrukken naar de output. Opdracht 3: Cijferwoorden (1 pnt) Het tackelen van deze opdracht ziet er globaal als volgt uit: Maak een list letterwoorden met daarin strings van alle mogelijke getallen ("TWEE", "DRIE", etc) Doe een for-loop over deze list (check dus een voor een alle mogelijke uitkomsten) Binnen deze for-loop doe je een tweede for-loop over alle letters van de invoer o Houd bij welke letters van het huidige letterwoord je al hebt gezien o Als je een matchende letter tegenkomt, schuif je een plek op o Heb je het einde van een letterwoord bereikt voordat je de hele invoer hebt gezien, dan is dat het goede antwoord en kun je het huidige letterwoord printen o Als je alle letterwoorden hebt gehad en geen match hebt gevonden, vergeet dan niet om geen te printen als antwoord. Extra hints: Houd in een int variabele bij op welke positie je bent in het huidige letterwoord dat je checkt Vergeet niet bij elk nieuw letterwoord weer op 0 te beginnen met deze variabele Verzin een truuk om te weten of je op het einde van je check nog geen moet printen. Dus houd in een variabele bij of je al iets geprint hebt. ZO niet, moet je op het eind geen printen. 9

10 Opdracht 4: Getallenrivieren (1,5 pnt): De opdracht beschrijft hoe getallenrivieren werken. Er wordt gesteld dat alle mogelijke rivieren uiteindelijk samengaan met de rivier van 1, 3 of 9. Gegeven een startgetal, moeten we de rivier van dat getal volgen om te bepalen met welke rivier (1, 3 of 9) hij samenstroomt. We hoeven alleen te kijken naar de getallen tot (dat is veel, maar ook weer niet zó veel). Globale opzet van de oplossing 1. Bepaal vooraf van alle getallen tussen de 1 en de of ze tot de rivier van 1, 3 of 9 behoren en leg dit vast in een lijst. Dat wil zeggen: volg de rivieren van 1, 3 en 9 en onderweg slaan we alle stappen op. 2. Volg stap voor stap de rivier van het invoergetal 3. Kijk bij elke stap van de rivier in de lijst uit 1. Om te zien of we al bij een plek uit de rivier van 1, 3 of 9 zijn aangeland. Zo ja, hebben we het antwoord gevonden, zo nee stromen we nog even verder. Een stroom functie Omdat we steeds in stapjes de stroom van een getallenrivier gaan volgens, ligt het erg voor de hand om een functie te schrijven. Deze functie neemt een invoer getal en returnt de volgende stap uit de rivier. Door vervolgens deze functie herhaaldelijk aan te roepen, kunnen we de rivier laten stromen. Schrijf een functie stroom(stap) die een integer stap als argument neemt en hiervan de afzonderlijke getallen optelt bij stap. - Maak in de functie een kopie van stap in string-vorm. (met str(9)vervang je de int 9 door de string "9" weet je nog?) - Nu kun je met een for loop door de individuele getallen van stap lopen en deze optellen (vergeet niet elk individueel getal weer terug om te zetten naar int voordat je optelt) - Tel deze som op bij stap en return het resultaat - Test je functie. Voer eens uit print stroom(345). Het antwoord zou 357 moeten zijn. De rivierenlijst aanleggen We gaan nu een lijst met integers maken. In deze lijst leggen we van alle getallen onder de vast tot welke hoofd-rivier ze behoren (1,3 of 9) of dat ze niet tot een hoofdrivier behoren (Dan zetten we die positie op 0). Om je een idee te geven, de eerste 20 getallen (posities 0 t/m 19) van deze lijst zien er als we klaar zijn zo uit: [0, 1, 1, 3, 1, 0, 3, 0, 1, 9, 0, 0, 3, 0, 0, 3, 1, 0, 9, 0] Dat wil zeggen: - 0 behoort niet tot een hoofdriver (vandaar de 0 op die plek) - 1 behoort tot de hoofdriver van 1 (vandaar de 1 op die plek - 2 behoort tot de hoofdriver van 1-3 behoort tot de hoofdriver van 3-4 behoort tot de hoofdriver van 1-5 behoort niet tot een hoofdrivier 10

11 - Etc Als de lijst klaar is, kunnen we dus simpelweg met het commando rivierenlijst[x] opzoeken tot welke hoofdrivier het getal x behoort. Om de lijst aan te maken, gaan we eerst alle getallen in de lijst op 0 zetten. Dat kan simpelweg met: rivierenlijst = [0]* Rivierenlijst is nu een lijst van nullen achter elkaar (print hem maar eens voor de grap). Nu moeten we de rivieren van 1, 3 en 9 invullen op de juiste posities in deze lijst. Hiervoor gaan we 3 loops uitvoeren, voor elke hoofdrivier een. Daarbij kunnen we dankbaar gebruik maken van de functie die we hiervoor hebben gemaakt De rivierenlijst vullen met de hoofdrivieren Ik beschrijf de stappen voor het invullen van de rivier van 1. - Maak een variabele getal en vul deze met het cijfer 1 (het startgetal) - Sla op de positie van getal in de rivierenlijst het getal 1 op om aan te geven dat deze positie tot de rivier van 1 behoort. - Maak nu een while loop die net zo lang herhaalt als dat getal kleiner is dan In de while loop doe je het volgende: o Maak getal gelijk aan de volgende stap van de rivier met behulp van je functie stroom() o Sla op de positie van getal weer in de rivierenlijst het getal 1 op om aan te geven dat deze positie tot de rivier van 1 behoort. Als de while loop eindigt, heb je alle getallen uit de hoofdrivier van 1 opgenomen in de lijst. Je doet nu dus nog eens hetzelfde voor de rivieren van 3 en 9 De invoer verwerken Nu hebben we alles klaar staan om de rivier van de invoer te laten stromen: - Lees het invoergetal uit de input - Maak weer een while loop die blijft lopen zolang dat getal niet tot een van de hoofdrivieren behoort (zoek dat dus op in rivierenlijst). In de loop doe je o Bepaal met de stroom() functie de volgende stap van de rivier o Check of deze nieuwe stap tot een hoofdrivier behoort. Zo ja, return dat als je eindantwoord. Zo niet, doe je niets. De while loop gaat dan weer verder Dus je doorloopt de rivier van het invoergetal stap voor stap met behulp van je stroom() functie. Zodra je bij een stap komt die tot en van de hoofdrivieren behoort heb je het eindantwoord gevonden. 11

12 Opdracht 5: Eenrichtingsverkeer (1,5 pnt) Het doorlopen van een graaf (een diagram met knooppunten en verbindingen zoals hier) op zoek naar een specifieke route, is niet eenvoudig. Er zijn veel mogelijkheden, zeker als het aantal knooppunten toeneemt (de opgave is voor grafen tot en met 26 knoppunten, dus dat is flink wat). Het lastigste deel is je administratie. Hoe houd je bij welke stappen je al gehad hebt en welke kanten je nog op kunt. Hoe voorkom je dat je dingen dubbel doet en oneindig door het netwerk blijft dwalen? Introductie recursie Voor het oplossen van deze opgave heb je een programmeerprincipe nodig dat recursie heet. Recursie is programmeren met een functie (def) die zichzelf aanroept (en daarbij dus zichzelf weer aanroept, die daarbij zichzelf weer aanroept, etc.) Voor een goede introductie op recursie, kijk eens hier: (Deze link werkt niet op school. Een werkende Wt kopie staat hier) Een bekend voorbeeld van recursie is het berekenen van de Fibonacci reeks (wat we vorig jaar al zonder recursie hebben gedaan in Wt Python opgave 9). Hier is een recursieve oplossing voor het Fibonacci probleem: def fib(n): if n==1 or n==2: return 1 else: return fib(n-1) + fib(n-2) Extra interessante info: Het zoeken van pad door een graaf (een diagram met verbonden punten) is een klassiek informatica-probleem met veel toepassingen in de echte wereld (denk aan een navigatiesysteem of ov routeplanner.) Een van de beroemdste algoritmes voor dit soort problemen komt van de Nederlandse informatica Dijkstra en is opgesteld in de jaren 50. Dijkstra s Kortste-Pad algoritme wordt tegenwoordig nog steeds gebruikt voor navigatiesystemen en dergelijke. Bekijk (en test) het voorbeeld eens om goed te snappen wat er gebeurt. Vergelijk de recursieve oplossing met de gewone (iteratieve) oplossing die je vorig jaar hebt gemaakt (hier zijn Wt s uitwerkingen overigens), vraag Wt eventueel om extra uitleg om de recursieve versie goed te snappen. Oplossings-strategie Nu je weet wat recursie is, kunnen we de opgave oplossen. Globaal ziet de oplossing er als volgt uit: - Lees alle invoer en sla de verbindingen tussen de steden op in een 2D lijst - We maken een recursieve functie die vanuit een startpunt alle verbonden steden gaat bezoeken. Hierbij wordt bijgehouden welke steden al bezocht zijn en in welke stad we op dit moment zijn 12

13 - Als het deze functie lukt om een pad te maken dat even lang is als het aantal steden, hebben we een antwoord gevonden - De steden zijn genummerd met letters (A, B, C, etc), dus we moeten ons antwoord nog even omzetten in de juiste stedenletters Invoer lezen De invoer bestaat uit een getal dat aangeeft hoeveel steden er zijn. Dit getal moeten we lezen en hebben we nodig als grens voor de volgende loop. Laten we het aantal noemen. We willen de verbindingen graag opslaan in een 2D lijst (een lijst met daarin weer lijsten met daarin getallen). De handigste vorm is zo (met de voorbeeldinvoer): [[0, 1, 0, 1, 1], [0, 0, 1, 0, 0], [1, 0, 0, 0, 1], [0, 1, 1, 0, 1], [0, 1, 0, 0, 0]] Begin met een lege lijst verbindingen. Maak een for loop met precies aantal stappen. Elke stap lees je een regel van de invoer als string in. Maak een nieuwe lege lijst rij. Doorloop de gelezen regel en zet elk getal uit die regel in de rij list. Als je klaar bent met de regel, append je de rij lijst aan de verbindingen lijst. Als je klaar bent met de loop, is je 2D lijst gevuld met alle verbindingen. De recursieve functie We gaan onze functie zo bouwen, dat als hij wordt aangeroepen met een startpunt, hij alle mogelijke paden vanuit dat punt gaat proberen, in de hoop alle punten te bereiken. Deze functie voeren we vervolgens uit met alle mogelijke startpunten. Omdat we uit de opgave weten dat er altijd een goede oplossing mogelijk is, moeten we zo een route tegenkomen. We maken een recursieve functie pad(huidig_pad, huidig_punt) Deze functie heeft 2 parameters: - huidig_pad is een list met alle punten die we al bezocht hebben - huidig_punt is het punt waar we ons op dit moment bevinden (in principe kun je huidig punt weglaten, want dat is simpelweg het laatste punt uit de huidig_pad lijst, maar voor het gemak nemen we deze los) Als je dus straks alle mogelijke paden vanuit punt 3 wilt checken, roep je deze functie aan met: pad([3],3) Deze gaat dan recursief alle mogelijke paden vanuit 3 langs. Als hij een pad vindt dat de alle punten aandoet, hebben we ons antwoord gevonden De implementatie (body) van de functie komt op het volgende neer: - Check of de lengte van huidig_pad gelijk is aan het aantal punten o Als dat zo is, dan zijn we klaar en returnen we huidig_pad 13

14 o Anders: Tel het aantal mogelijke stappen die je nog kunt zetten vanaf het huidige punt. Hiervoor doorloop je de verbindingen lijst om te kijken waar je heen kunt. Punten die je al gehad hebt (te zien in huidig_pad), tel je niet mee. Check of het aantal mogelijke punten 0 is Als dat zo is loopt deze route dood (je hebt immers nog niet alle punten bezocht, maar je kunt geen stappen meer zetten), dus return je False Als dat niet zo is, gaan we de pad() functie recursief aanroepen voor alle mogelijke stappen die we vanuit hier nog kunnen zetten. Vergeet niet de nieuwe stap te verwerken in de parameters die je aan de recursieve aanroep meegeeft. (Dus je pad is nu 1 langer en je huidig punt Van elke recursieve aanroep ga je checken of het resultaat False is (dan is dat pad doodgelopen) Als het False is doe je niets (het feit dat 1 subpad doodloopt, wil niet zeggen dat ze allemaal doodlopen). We wachten dus nog het resultaat van de overige paden af Als het niet False is, dan is het een list met een correcte route. Return deze weer. (Dus die geef je weer netjes door aan de vorige recursiestap) Als je alle paden gecheckt hebt return je False (als er namelijke een zinnig pad bij zat, heb je al en return waarde gegeven en om je niet op deze plek) De functie uitvoeren We moeten nu de recursieve functie opstarten (en zijn recursieve ding laten doen) voor alle mogelijke startpunten. Hiervoor kunnen we een for-loop gebruiken. We kunnen deze loop afbreken zodra we een antwoord hebben gevonden uit de functie dat niet False is. Met break kun je de loop dan stoppen. De route omzetten naar letters Omdat we met lists hebben gewerkt hebben we tot nu toe alle knooppunten als een cijfer geïnterpreteerd (A=0, B=1, C=2, etc.). De opgave vereist dat we ons antwoord als een rij letters printen. Hiervoor moeten we de getalen uit ons antwoord omzetten naar de juiste hofdletter Hiervoor kun je weer de ASCII tabel gebruiken, zoals in opgave 2. Succes met C1 en C2! 14

PO: Informatica Olympiade

PO: Informatica Olympiade PO: Informatica Olympiade 2017-2018 Handreiking Wt Stedelijk Gymnasum s-hertogenbosch Wat is de Informatica Olympiade? De Nederlandse Informatica Olympiade (NIO) is een programmeerwedstrijd voor de bovenbouw

Nadere informatie

PO: Informatica Olympiade

PO: Informatica Olympiade PO: Informatica Olympiade 2016-2017 Wat is de Informatica Olympiade? De Nederlandse Informatica Olympiade (NIO) is een programmeerwedstrijd voor de bovenbouw van het Voortgezet onderwijs. Het is een onderdeel

Nadere informatie

PO: Informatica Olympiade 2013-2014

PO: Informatica Olympiade 2013-2014 PO: Informatica Olympiade 2013-2014 Wat is de Informatica Olympiade? De Nederlandse Informatica Olympiade (NIO) is een programmeerwedstrijd voor de bovenbouw van het Voortgezet onderwijs. Het is een onderdeel

Nadere informatie

DomJudge-Practicum. Open Dag UU

DomJudge-Practicum. Open Dag UU 1 Introductie DomJudge-Practicum Open Dag UU Bij veel vakken die je volgt tijdens je studie informatica aan de UU, moet je programmeeropdrachten maken. Soms moet je die inleveren zodat ze door de docent

Nadere informatie

HOOFDSTUK 3. Imperatief programmeren. 3.1 Stapsgewijs programmeren. 3.2 If Then Else. Module 4 Programmeren

HOOFDSTUK 3. Imperatief programmeren. 3.1 Stapsgewijs programmeren. 3.2 If Then Else. Module 4 Programmeren HOOFDSTUK 3 3.1 Stapsgewijs programmeren De programmeertalen die tot nu toe genoemd zijn, zijn imperatieve of procedurele programmeertalen. is het stapsgewijs in code omschrijven wat een programma moet

Nadere informatie

De eerste ronde Nederlandse Informatica Olympiade 2014-2015

De eerste ronde Nederlandse Informatica Olympiade 2014-2015 De eerste ronde Nederlandse Informatica Olympiade 2014-2015 De informatica olympiade is een wedstrijd voor leerlingen uit het voortgezet onderwijs in Nederland. Het is een wedstrijd die bestaat uit drie

Nadere informatie

Simon de schildpad. 2015 J van Weert 1

Simon de schildpad. 2015 J van Weert 1 Programmeren met Simon Simon de schildpad 2015 J van Weert 1 Inleiding: Wat is programmeren eigenlijk? Een computer doet niets zonder een programma. Die programma s worden geschreven door mensen: programmeurs.

Nadere informatie

Als een PSD selecties bevat, deelt de lijn van het programma zich op met de verschillende antwoorden op het vraagstuk.

Als een PSD selecties bevat, deelt de lijn van het programma zich op met de verschillende antwoorden op het vraagstuk. HOOFDSTUK 3 3.1 Stapsgewijs programmeren In de vorige hoofdstukken zijn programmeertalen beschreven die imperatief zijn. is het stapsgewijs in code omschrijven wat een programma moet doen, net als een

Nadere informatie

Een spoedcursus python

Een spoedcursus python Een spoedcursus python Zoals je in de titel misschien al gezien hebt, geven wij een spoedcursus Python. Door deze cursus leer je alle basics, zoals het rekenen met Python en het gebruik van strings. Het

Nadere informatie

DE ASTRO PI PROGRAMMEREN VOOR MISSION ZERO

DE ASTRO PI PROGRAMMEREN VOOR MISSION ZERO DE ASTRO PI PROGRAMMEREN DOCENTENHANDLEIDING 1 Deze handleiding is bedoeld om leerlingen te ondersteunen bij de Astro Pi Challenge, waarbij leerlingen een programma voor de Astro Pi-computer in het ISS

Nadere informatie

Je gaat leren programmeren en een spel bouwen met de programmeertaal Python. Websites zoals YouTube en Instagram zijn gebouwd met Python.

Je gaat leren programmeren en een spel bouwen met de programmeertaal Python. Websites zoals YouTube en Instagram zijn gebouwd met Python. 1 Je gaat leren programmeren en een spel bouwen met de programmeertaal Python. Websites zoals YouTube en Instagram zijn gebouwd met Python. Voordat je leert programmeren, moet je jouw pc zo instellen dat

Nadere informatie

BEGINNER JAVA Inhoudsopgave

BEGINNER JAVA Inhoudsopgave Inhoudsopgave 6 Configuratie Hallo wereld! Praten met de gebruiker Munt opgooien Voorwaarden Lussen......6 Configuratie Met deze Sushi kaarten ga je een simpel spel maken met één van de meest populaire

Nadere informatie

Programmeermethoden NA. Week 5: Functies (vervolg)

Programmeermethoden NA. Week 5: Functies (vervolg) Programmeermethoden NA Week 5: Functies (vervolg) Kristian Rietveld http://liacs.leidenuniv.nl/~rietveldkfd/courses/prna/ Bij ons leer je de wereld kennen 1 Functies Vorige week bekeken we functies: def

Nadere informatie

Simon de schildpad. 2012 J van Weert 1

Simon de schildpad. 2012 J van Weert 1 Programmeren met Simon Simon de schildpad 2012 J van Weert 1 Inleiding: Wat is programmeren eigenlijk? Een computer doet niets zonder een programma. Die programma s worden geschreven door mensen: programmeurs.

Nadere informatie

Variabelen en statements in ActionScript

Variabelen en statements in ActionScript Ontwikkelen van Apps voor ios en Android Variabelen en statements in ActionScript 6.1 Inleiding Als we het in de informatica over variabelen hebben, bedoelen we een stukje in het geheugen van de computer

Nadere informatie

Programmeren met Arduino-software

Programmeren met Arduino-software Programmeren met Arduino-software De software waarin we programmeren is Arduino IDE. Deze software is te downloaden via www.arduino.cc. De programmeertaal die hier gebruikt wordt, is gebaseerd op C en

Nadere informatie

Inleiding Programmeren 2

Inleiding Programmeren 2 Inleiding Programmeren 2 Gertjan van Noord November 26, 2018 Stof week 3 nogmaals Zelle hoofdstuk 8 en recursie Brookshear hoofdstuk 5: Algoritmes Datastructuren: tuples Een geheel andere manier om te

Nadere informatie

De eerste ronde Nederlandse Informatica Olympiade

De eerste ronde Nederlandse Informatica Olympiade De eerste ronde Nederlandse Informatica Olympiade 2018-2019 De informatica olympiade is een wedstrijd voor leerlingen uit het voortgezet onderwijs in Nederland. Het is een wedstrijd die bestaat uit drie

Nadere informatie

Recursion. Introductie 37. Leerkern 37. Terugkoppeling 40. Uitwerking van de opgaven 40

Recursion. Introductie 37. Leerkern 37. Terugkoppeling 40. Uitwerking van de opgaven 40 Recursion Introductie 37 Leerkern 37 5.1 Foundations of recursion 37 5.2 Recursive analysis 37 5.3 Applications of recursion 38 Terugkoppeling 40 Uitwerking van de opgaven 40 Hoofdstuk 5 Recursion I N

Nadere informatie

Programmeermethoden. Recursie. week 11: november kosterswa/pm/

Programmeermethoden. Recursie. week 11: november kosterswa/pm/ Programmeermethoden Recursie week 11: 21 25 november 2016 www.liacs.leidenuniv.nl/ kosterswa/pm/ 1 Pointers Derde programmeeropgave 1 Het spel Gomoku programmeren we als volgt: week 1: pointerpracticum,

Nadere informatie

Small Basic Programmeren Text Console 2

Small Basic Programmeren Text Console 2 Oefening 1: Hoogste getal Je leest een reeks positieve gehele getallen in totdat je het getal 0 (nul) invoert. Daarna stopt de invoer en druk je een regel af met het hoogste getal uit de reeks. Voorbeeld:

Nadere informatie

[14] Functies. Volg mee via 14_Functies-1.py. We beginnen met een eenvoudig voorbeeldje:

[14] Functies. Volg mee via 14_Functies-1.py. We beginnen met een eenvoudig voorbeeldje: [14] Functies Een goede programmeur doet altijd zijn best om zoveel mogelijk aan hergebruik van code te doen. Je probeert in je programma code te gebruiken die iemand anders heeft gemaakt, of code die

Nadere informatie

Programmeermethoden. Recursie. Walter Kosters. week 11: november kosterswa/pm/

Programmeermethoden. Recursie. Walter Kosters. week 11: november kosterswa/pm/ Programmeermethoden Recursie Walter Kosters week 11: 20 24 november 2017 www.liacs.leidenuniv.nl/ kosterswa/pm/ 1 Vierde programmeeropgave 1 De Grote getallen programmeren we als volgt: week 1: pointerpracticum,

Nadere informatie

Programmeermethoden NA. Week 5: Functies (vervolg)

Programmeermethoden NA. Week 5: Functies (vervolg) Programmeermethoden NA Week 5: Functies (vervolg) Kristian Rietveld http://liacs.leidenuniv.nl/~rietveldkfd/courses/prna2016/ Functies Vorige week bekeken we functies: def bereken(a, x): return a * (x

Nadere informatie

Je gaat leren programmeren in Ruby. En daarna in Ruby een spelletje maken. Websites zoals Twitch en Twitter gemaakt zijn met behulp van Ruby?

Je gaat leren programmeren in Ruby. En daarna in Ruby een spelletje maken. Websites zoals Twitch en Twitter gemaakt zijn met behulp van Ruby? 1 Je gaat leren programmeren in Ruby. En daarna in Ruby een spelletje maken. Websites zoals Twitch en Twitter gemaakt zijn met behulp van Ruby? Voordat je begint met programmeren, moet je Ruby installeren.

Nadere informatie

Een korte samenvatting van enkele FORTRAN opdrachten

Een korte samenvatting van enkele FORTRAN opdrachten Een korte samenvatting van enkele FORTRAN opdrachten Inhoud 1 Introductie 3 2 De structuur van een FORTRAN programma 3 3 Datatypen, variabelen en declaraties 3 4 Expressies-volgorde van uitwerking 4 5

Nadere informatie

ALGORITMIEK: antwoorden werkcollege 5

ALGORITMIEK: antwoorden werkcollege 5 ALGORITMIEK: antwoorden werkcollege 5 opgave 1. a. Brute force algoritme, direct afgeleid uit de observatie: loop v.l.n.r. door de tekst; als je een A tegenkomt op plek i (0 i < n 1), loop dan van daaruit

Nadere informatie

Controle structuren. Keuze. Herhaling. Het if statement. even1.c : testen of getal even of oneven is. statement1 statement2

Controle structuren. Keuze. Herhaling. Het if statement. even1.c : testen of getal even of oneven is. statement1 statement2 Controle structuren De algemene vorm: 1 bloks door middel van indentatie Keuze Herhaling if expressie :...... In de volgende vorm is het else gedeelte weggelaten: if expressie :... Het if keuze- of conditioneel

Nadere informatie

[8] De ene 1 is de andere niet

[8] De ene 1 is de andere niet [8] De ene 1 is de andere niet Volg mee via 08_Types.py In de volgende leerfiche gaan we rekenen met Python. Dat kan je in een programma doen, maar dat kan je ook gewoon vanuit het Shell-venster doen.

Nadere informatie

Inleiding Programmeren 2

Inleiding Programmeren 2 Inleiding Programmeren 2 Gertjan van Noord November 28, 2016 Stof week 3 nogmaals Zelle hoofdstuk 8 en recursie Brookshear hoofdstuk 5: Algoritmes Datastructuren: tuples Een geheel andere manier om te

Nadere informatie

Stroomschema s maken op papier

Stroomschema s maken op papier 1 Stroomschema s maken op papier Een programma direct maken in Python, gaat vaak wel goed als het een klein programma is. Als het programma groter en moeilijker is, is het lastig om goed te zien welk commando

Nadere informatie

De eerste ronde Nederlandse Informatica Olympiade

De eerste ronde Nederlandse Informatica Olympiade De eerste ronde Nederlandse Informatica Olympiade 2017-2018 De informatica olympiade is een wedstrijd voor leerlingen uit het voortgezet onderwijs in Nederland. Het is een wedstrijd die bestaat uit drie

Nadere informatie

algoritmiek - antwoorden

algoritmiek - antwoorden 2016 algoritmiek - antwoorden F. Vonk versie 1 28-8-2016 inhoudsopgave eenvoudige algoritmes... - 3 - complexe algoritmes... - 7 - zoeken (vwo)... - 10 - sorteren (vwo)... - 12 - Dit werk is gelicenseerd

Nadere informatie

recursie Hoofdstuk 5 Studeeraanwijzingen De studielast van deze leereenheid bedraagt circa 6 uur. Terminologie

recursie Hoofdstuk 5 Studeeraanwijzingen De studielast van deze leereenheid bedraagt circa 6 uur. Terminologie Hoofdstuk 5 Recursion I N T R O D U C T I E Veel methoden die we op een datastructuur aan kunnen roepen, zullen op een recursieve wijze geïmplementeerd worden. Recursie is een techniek waarbij een vraagstuk

Nadere informatie

Programmeermethoden NA. Week 6: Lijsten

Programmeermethoden NA. Week 6: Lijsten Programmeermethoden NA Week 6: Lijsten Kristian Rietveld http://liacs.leidenuniv.nl/~rietveldkfd/courses/prna2016/ Getal opbouwen Stel je leest losse karakters (waaronder cijfers) en je moet daar een getal

Nadere informatie

Practicumopgave 3: SAT-solver

Practicumopgave 3: SAT-solver Practicumopgave 3: SAT-solver Modelleren en Programmeren 2015/2016 Deadline: donderdag 7 januari 2016, 23:59 Introductie In het vak Inleiding Logica is onder andere de propositielogica behandeld. Veel

Nadere informatie

Tentamen Imperatief en Object-georiënteerd programmeren in Java voor CKI

Tentamen Imperatief en Object-georiënteerd programmeren in Java voor CKI Tentamen Imperatief en Object-georiënteerd programmeren in Java voor CKI Vrijdag 22 januari 2010 Toelichting Dit is een open boek tentamen. Communicatie en het gebruik van hulpmiddelen zijn niet toegestaan.

Nadere informatie

Programmeermethoden NA

Programmeermethoden NA Programmeermethoden NA Week 6: Lijsten Kristian Rietveld http://liacs.leidenuniv.nl/~rietveldkfd/courses/prna/ Bij ons leer je de wereld kennen 1 Getal opbouwen Stel je leest losse karakters (waaronder

Nadere informatie

Uitwerking tentamen Algoritmiek 9 juli :00 13:00

Uitwerking tentamen Algoritmiek 9 juli :00 13:00 Uitwerking tentamen Algoritmiek 9 juli 0 0:00 :00. (N,M)-game a. Toestanden: Een geheel getal g, waarvoor geldt g N én wie er aan de beurt is (Tristan of Isolde) b. c. Acties: Het noemen van een geheel

Nadere informatie

Achtste college algoritmiek. 8 april Dynamisch Programmeren

Achtste college algoritmiek. 8 april Dynamisch Programmeren Achtste college algoritmiek 8 april 2016 Dynamisch Programmeren 1 Werkcollege-opgave Dutch Flag Problem Gegeven een array gevuld met R, W, en B. Reorganiseer dit array zo dat van links naar rechts eerst

Nadere informatie

Tentamen Programmeren in C (EE1400)

Tentamen Programmeren in C (EE1400) TU Delft Tentamen Programmeren in C (EE1400) 5 april 2012, 9.00 12.00 Faculteit EWI - Zet op elk antwoordblad je naam en studienummer. - Beantwoord alle vragen zo nauwkeurig mogelijk. - Wanneer C code

Nadere informatie

PYTHON REEKS 1: BASICS. Mathias Polfliet

PYTHON REEKS 1: BASICS. Mathias Polfliet PYTHON REEKS 1: BASICS Mathias Polfliet mpolflie@etrovub.be EENVOUDIGE REKENMACHINE 2 soorten getallen Getallen Z -> integers (gehele getallen) Getallen R -> floating points (reële getallen) Door beperkte

Nadere informatie

Een eenvoudig algoritme om permutaties te genereren

Een eenvoudig algoritme om permutaties te genereren Een eenvoudig algoritme om permutaties te genereren Daniel von Asmuth Inleiding Er zijn in de vakliteratuur verschillende manieren beschreven om alle permutaties van een verzameling te generen. De methoden

Nadere informatie

OEFENINGEN PYTHON REEKS 6

OEFENINGEN PYTHON REEKS 6 OEFENINGEN PYTHON REEKS 6 1. A) Schrijf een functie die een getal x en een getal y meekrijgt. De functie geeft de uitkomst van volgende bewerking als returnwaarde terug: x y x als x y x y y als x < y B)

Nadere informatie

Zo gaat jouw kunstwerk er straks uitzien. Of misschien wel heel anders.

Zo gaat jouw kunstwerk er straks uitzien. Of misschien wel heel anders. Spirograaf in Python Een kunstwerk maken Met programmeren kun je alles maken! Ook een kunstwerk! In deze les maken we zelf een kunstwerk met Python. Hiervoor zal je werken met herhalingen en variabelen.

Nadere informatie

Informatica: C# WPO 9

Informatica: C# WPO 9 Informatica: C# WPO 9 1. Inhoud Functies (functies met return-waarde) 2. Oefeningen Demo 1: Som Demo 2: Min en max of array Demo 3: Retourneer array van randomwaarden A: Absolute waarde A: Afstand A: Aantrekkingskracht

Nadere informatie

extra oefening algoritmiek - antwoorden

extra oefening algoritmiek - antwoorden extra oefening algoritmiek - antwoorden opgave "Formule 1" Maak een programma dat de gebruiker drie getal A, B en C in laat voeren. De gebruiker zorgt ervoor dat er positieve gehele getallen worden ingevoerd.

Nadere informatie

PYTHON REEKS 2: FUNCTIES. Mathias Polfliet

PYTHON REEKS 2: FUNCTIES. Mathias Polfliet PYTHON REEKS 2: FUNCTIES Mathias Polfliet mpolflie@etrovub.be TERUG NAAR PYTHON BASICS VRAAG 1: VOLUME BOL Het volume van een bol met straal r is 4 3 πr3 π Wat is het volume in cm³ van een bol met straal

Nadere informatie

Tentamen Programmeren in C (EE1400)

Tentamen Programmeren in C (EE1400) TU Delft Tentamen Programmeren in C (EE1400) 3 feb. 2012, 9.00 12.00 Faculteit EWI - Zet op elk antwoordblad je naam en studienummer. - Beantwoord alle vragen zo nauwkeurig mogelijk. - Wanneer C code gevraagd

Nadere informatie

Programmeren. a. 0, 0, 0 b. 0, 0, 27 c. 15, 12, 0 d. 15, 12, 27

Programmeren. a. 0, 0, 0 b. 0, 0, 27 c. 15, 12, 0 d. 15, 12, 27 Programmeren 0. (1 punt.) Stel, een "afhankelijk kind" is een persoon is die jonger is dan 18 jaar, en hooguit 8.000 euro verdient. Welke van de onderstaande expressies definieert een afhankelijk kind?

Nadere informatie

Disclaimer Het bestand dat voor u ligt, is nog in ontwikkeling. Op verzoek is deze versie digitaal gedeeld. Wij willen de lezer er dan ook op wijzen

Disclaimer Het bestand dat voor u ligt, is nog in ontwikkeling. Op verzoek is deze versie digitaal gedeeld. Wij willen de lezer er dan ook op wijzen Disclaimer Het bestand dat voor u ligt, is nog in ontwikkeling. Op verzoek is deze versie digitaal gedeeld. Wij willen de lezer er dan ook op wijzen dat er zowel typografische als inhoudelijke onvolkomenheden

Nadere informatie

Uitleg: In de bovenstaande oefening zie je in het eerste blokje een LEES en een SCHRIJF opdracht. Dit is nog lesstof uit het tweede trimester.

Uitleg: In de bovenstaande oefening zie je in het eerste blokje een LEES en een SCHRIJF opdracht. Dit is nog lesstof uit het tweede trimester. In onderstaande oefeningen zijn kleuren gebruikt. Deze dienen aleen om de structuren makkelijker terug te kunnen herkennen. Ze worden niet standaard zo gebruikt. De dunne rood/roze balken zijn ook geen

Nadere informatie

10 Meer over functies

10 Meer over functies 10 Meer over functies In hoofdstuk 5 hebben we functies uitgebreid bestudeerd. In dit hoofdstuk bekijken we drie andere aspecten van functies: recursieve functies dat wil zeggen, functies die zichzelf

Nadere informatie

Pythoncursus. Opdrachtenserie 3. Tanja, Koen en Marein oktober Opdracht 1 - Turtlegraphics

Pythoncursus. Opdrachtenserie 3. Tanja, Koen en Marein oktober Opdracht 1 - Turtlegraphics Pythoncursus Opdrachtenserie 3 Tanja, Koen en Marein oktober 2018 Opdracht 1 - Turtlegraphics In deze opdracht gaan we tekenen! Hiervoor gebruiken we de library turtlegraphics, waarmee je met Python een

Nadere informatie

Algoritmisch Denken: Dodo s Bit Parity

Algoritmisch Denken: Dodo s Bit Parity Algoritmisch Denken: Dodo s Opdrachtomschrijving: Jouw opdracht, als je deze accepteert, is om Mimi (een Dodo) te leren een bit parity fout te ontdekken en te herstellen. Leerdoelen: Ik kan een correct

Nadere informatie

Uitwerking tentamen Analyse van Algoritmen, 29 januari

Uitwerking tentamen Analyse van Algoritmen, 29 januari Uitwerking tentamen Analyse van Algoritmen, 29 januari 2007. (a) De buitenste for-lus kent N = 5 iteraties. Na iedere iteratie ziet de rij getallen er als volgt uit: i rij na i e iteratie 2 5 4 6 2 2 4

Nadere informatie

Stroomschema s maken in Word

Stroomschema s maken in Word 1 Stroomschema s maken in Word Een programma direct maken in Scratch gaat vaak wel goed als het een klein programma is. Als het programma groter en moeilijker is, is het lastig om goed te zien welk commando

Nadere informatie

Inleiding Programmeren 2

Inleiding Programmeren 2 Inleiding Programmeren 2 Gertjan van Noord November 19, 2018 Overzicht Grafische programma s en tekstgebaseerde programma s Stijladviezen (Jeff Knupp, Writing Idiomatic Python) File Processing (Zelle 5.9.2)

Nadere informatie

Programmeermethoden. Pointers. Walter Kosters. week 10: november kosterswa/pm/

Programmeermethoden. Pointers. Walter Kosters. week 10: november kosterswa/pm/ Programmeermethoden Pointers Walter Kosters week 10: 13 17 november 2017 www.liacs.leidenuniv.nl/ kosterswa/pm/ 1 Pointers Introductie Een pointer is in feite gewoon een geheugenadres. Het geheugen kun

Nadere informatie

Informatica: C# WPO 10

Informatica: C# WPO 10 Informatica: C# WPO 10 1. Inhoud 2D arrays, lijsten van arrays, NULL-values 2. Oefeningen Demo 1: Fill and print 2D array Demo 2: Fill and print list of array A: Matrix optelling A: Matrix * constante

Nadere informatie

Wt s aanvullende Python opgaven

Wt s aanvullende Python opgaven Wt s aanvullende Python opgaven Je leert de basics met Codecademy, maar je wordt het pas meester met oefeningen. Kijk in de studiewijzer om te zien welk deel van de Codecademy Python cursus je eerst moet

Nadere informatie

[15] Variabelen in functies (of: een woordje over scope)

[15] Variabelen in functies (of: een woordje over scope) [15] Variabelen in functies (of: een woordje over scope) In de vorige leerfiche hebben we geleerd over functies. We leerden dat functies parameters hebben en dat ze return-waarden kunnen teruggeven aan

Nadere informatie

Inhoudsopgave Voorwoord 5 Voordat je begint 6 Wat heb je nodig? 7 De website bij het boek 7 Voor ouders, verzorgers en leraren

Inhoudsopgave Voorwoord 5 Voordat je begint 6 Wat heb je nodig? 7 De website bij het boek 7 Voor ouders, verzorgers en leraren Inhoudsopgave Voorwoord... 5 Voordat je begint... 6 Wat heb je nodig?... 7 De website bij het boek... 7 Voor ouders, verzorgers en leraren... 8 Vervolgboeken over programmeren... 8 1. Aan de slag met Python

Nadere informatie

HOOFDSTUK 3. Imperatief programmeren. 3.1 Stapsgewijs programmeren. 3.2 If Then Else. Informatie. Voorbeeld. Voorbeeld: toegangsprijs

HOOFDSTUK 3. Imperatief programmeren. 3.1 Stapsgewijs programmeren. 3.2 If Then Else. Informatie. Voorbeeld. Voorbeeld: toegangsprijs HOOFDSTUK 3 3.1 Stapsgewijs programmeren De programmeertalen die tot nu toe genoemd zijn, zijn imperatieve of procedurele programmeertalen. is het stapsgewijs in code omschrijven wat een programma moet

Nadere informatie

Niet-numerieke data-types

Niet-numerieke data-types Intern wordt een karakter voorgesteld als een rij van acht bits, Niet-numerieke data-types string de letter a 01100001 0110 0001 0x61 97 Bij interpretatie van de inhoud van een byte als een geheel getal,

Nadere informatie

Functioneel programmeren

Functioneel programmeren Functioneel programmeren Practicumopgave 2: Mastermind Het doel van deze opgave is het implementeren van het spel Mastermind; zie http://nl.wikipedia.org/wiki/mastermind voor een uitleg. Het spel is klein

Nadere informatie

Modelleren en Programmeren

Modelleren en Programmeren Modelleren en Programmeren Jeroen Bransen 6 december 2013 Terugblik Programma en geheugen Opdrachten Variabelen Methoden Objecten Klasse Programma en geheugen Opdrachten Variabelen zijn gegroepeerd in

Nadere informatie

Handleiding bij de Booktest Generator

Handleiding bij de Booktest Generator Handleiding bij de Booktest Generator Het programma voor het maken van toetsen bij boeken. (c) 2005/2009 Visiria Uitgeversmaatschappij Twisk Inleiding Onze dank voor het aanvragen van de Booktest Generator.

Nadere informatie

OEFENINGEN PYTHON REEKS 1

OEFENINGEN PYTHON REEKS 1 Vraag 1: Expressies & Types OEFENINGEN PYTHON REEKS 1 Python maakt gebruik van enkele vaak voorkomende (data)types. Zo zijn er integers die behoren tot de gehele getallen (VB: 3), zijn er float s die behoren

Nadere informatie

Vierde college algoritmiek. 2 maart Toestand-actie-ruimte Exhaustive Search

Vierde college algoritmiek. 2 maart Toestand-actie-ruimte Exhaustive Search Algoritmiek 2018/Toestand-actie-ruimte Vierde college algoritmiek 2 maart 2018 Toestand-actie-ruimte Exhaustive Search 1 Algoritmiek 2018/Toestand-actie-ruimte Kannen Voorbeeld 4: Kannenprobleem We hebben

Nadere informatie

Stroomschema s maken op papier

Stroomschema s maken op papier 1 Stroomschema s maken op papier Een programma direct maken in Scratch, gaat vaak wel goed als het een klein programma is. Als het programma groter en moeilijker is, is het lastig om goed te zien welk

Nadere informatie

Van CaseTalk naar een database in SQLite studio

Van CaseTalk naar een database in SQLite studio Van CaseTalk naar een database in SQLite studio Dit document legt uit hoe je een SQL export uit CaseTalk kunt importeren in het DBMS (Database Management System) SQLite Studio. SQLIte studio is handig

Nadere informatie

Modeluitwerking Tentamen Computationele Intelligentie Universiteit Leiden Informatica Vrijdag 11 Januari 2013

Modeluitwerking Tentamen Computationele Intelligentie Universiteit Leiden Informatica Vrijdag 11 Januari 2013 Modeluitwerking Tentamen Computationele Intelligentie Universiteit Leiden Informatica Vrijdag Januari 20 Opgave. Python Gegeven is de volgende (slechte) Python code:. def t(x): 2. def p(y):. return x*y

Nadere informatie

REEKS I. Zaterdag 6 november 2010, 9u

REEKS I. Zaterdag 6 november 2010, 9u TEST INFORMATICA 1STE BACHELOR IN DE INGENIEURSWETENSCHAPPEN - ACADEMIEJAAR 2010-2011 REEKS I Zaterdag 6 november 2010, 9u NAAM :... VRAAG 1: MINSTENS [5 PUNTEN] Schrijf een methode minstens(), met twee

Nadere informatie

Uitwerking Tweede deeltentamen Imperatief programmeren - versie 1 Vrijdag 21 oktober 2016, uur

Uitwerking Tweede deeltentamen Imperatief programmeren - versie 1 Vrijdag 21 oktober 2016, uur Uitwerking Tweede deeltentamen Imperatief programmeren - versie 1 Vrijdag 21 oktober 2016, 13.00-15.00 uur 1. De situatie die ontstaat door class A : B C D; kan beschreven worden door (a) B is een A (b)

Nadere informatie

1.3 Rekenen met pijlen

1.3 Rekenen met pijlen 14 Getallen 1.3 Rekenen met pijlen 1.3.1 Het optellen van pijlen Jeweetnuwatdegetallenlijnisendat0nochpositiefnochnegatiefis. Wezullen nu een soort rekenen met pijlen gaan invoeren. We spreken af dat bij

Nadere informatie

Arrays. Complexe datastructuren. Waarom arrays. Geen stijlvol programma:

Arrays. Complexe datastructuren. Waarom arrays. Geen stijlvol programma: Geen stijlvol programma: Complexe datastructuren Arrays vijf verschillende variabelen voor iets dat als één rij getallen bestempeld wordt; onbruikbaar wanneer het over meer getallen (bijvoorbeeld ) gaat.

Nadere informatie

MINICURSUS PHP. Op dit lesmateriaal is een Creative Commons licentie van toepassing Sebastiaan Franken en Rosalie de Klerk Bambara

MINICURSUS PHP. Op dit lesmateriaal is een Creative Commons licentie van toepassing Sebastiaan Franken en Rosalie de Klerk Bambara MINICURSUS PHP Op dit lesmateriaal is een Creative Commons licentie van toepassing. 2017-2018 Sebastiaan Franken en Rosalie de Klerk Bambara PHP Cursus Deze cursus is om de eerste stappen in de wereld

Nadere informatie

Opdracht 4: Overzichtelijker en generieker

Opdracht 4: Overzichtelijker en generieker Opdracht 4: Overzichtelijker en generieker Algoritmisch Denken en Gestructureerd Programmeren in Greenfoot c 2015 Renske Smetsers-Weeda & Sjaak Smetsers Op dit werk is een creative commons licentie van

Nadere informatie

Formulieren maken met Dreamweaver CS 4/CS 5

Formulieren maken met Dreamweaver CS 4/CS 5 Formulieren maken met Dreamweaver CS 4/CS 5 In deze handleiding leer je om een formulier en elementen die je binnen een formulier kunt gebruiken, te ontwerpen met Dreamweaver. Het uitgangspunt is dat dit

Nadere informatie

VOORBLAD SCHRIFTELIJKE TOETSEN

VOORBLAD SCHRIFTELIJKE TOETSEN Technology, Innovation & Society Delft VOORBLAD SCHRIFTELIJKE TOETSEN OPLEIDING TOETSCODE GROEP : ELEKTROTECHNIEK : GESPRG : EP11/EP12 TOETSDATUM : 07-02-2014 TIJD : 13.00 14.30 uur AANTAL PAGINA S (incl.

Nadere informatie

Hoofdstuk 7: Werken met arrays

Hoofdstuk 7: Werken met arrays Programmeren in Microsoft Visual Basic 6.0, lessenserie voor het voortgezet onderwijs HAVO/VWO David Lans, Emmauscollege, Marnix Gymnasium Rotterdam, januari 2004 Hoofdstuk 7: Werken met arrays 7.0 Leerdoel

Nadere informatie

De Sense HAT programmeren Je eerste computerprogramma

De Sense HAT programmeren Je eerste computerprogramma De Sense HAT programmeren Je eerste computerprogramma De Sense HAT is een uitbreiding voor de Raspberry Pi die speciaal voor de Astro Pi-wedstrijd is gemaakt. Met dit bord is het mogelijk om allerlei informatie

Nadere informatie

Stoomcursus. wiskunde A. Rekenregels voor vereenvoudigen. Voorbereidende opgaven VWO ( ) = = ( ) ( ) ( ) = ( ) ( ) = ( ) = = ( )

Stoomcursus. wiskunde A. Rekenregels voor vereenvoudigen. Voorbereidende opgaven VWO ( ) = = ( ) ( ) ( ) = ( ) ( ) = ( ) = = ( ) Voorbereidende opgaven VWO Stoomcursus wiskunde A Tips: Maak de voorbereidende opgaven voorin in een van de A4-schriften die je gaat gebruiken tijdens de cursus. Als een opdracht niet lukt, werk hem dan

Nadere informatie

Opgaven WISB256 midterm

Opgaven WISB256 midterm Opgaven WISB256 midterm 18 mei 2015 Vragen A Oertellen 4 B Hekjes verven 5 C Tetranacci 6 D Swipe 7 E Rekenen met de Reverse Polish Notation 9 F Reverse Polish Notation omschrijven 10 G Reverse Polish

Nadere informatie

Arduino Cursus, Deel 2 Programmeren. Simon Pauw, ZB45, Amsterdam

Arduino Cursus, Deel 2 Programmeren. Simon Pauw, ZB45, Amsterdam Arduino Cursus, Deel 2 Programmeren Simon Pauw, ZB45, Amsterdam Programmeren Geen zorgen als je niet alles begrijpt. Doel: Het snappen van bestaande code. Meeste kennis ook toepasbaar buiten de Arduino

Nadere informatie

PHP. Les 4 : Variabelen

PHP. Les 4 : Variabelen PHP Les 4 : Variabelen Interessante links: o http://www.dbzweb.be/moermant/ o http://php.net/manual/en/function.echo.php o http://www.w3schools.com/php/default.asp Wat zijn variabelen? Variabelen zijn

Nadere informatie

Programmeren A. Genetisch Programma voor het Partitie Probleem. begeleiding:

Programmeren A. Genetisch Programma voor het Partitie Probleem. begeleiding: Programmeren A Genetisch Programma voor het Partitie Probleem begeleiding: Inleiding Het Partitie Probleem luidt als volgt: Gegeven een verzameling van n positieve integers, vindt twee disjuncte deelverzamelingen

Nadere informatie

Opgaven. Python Assessment

Opgaven. Python Assessment Opgaven Python Assessment Nijmegen - Utrecht www.atcomputing.nl Copyright 2015,2016 Versie: 1a Inleiding Met dit assessment kun je controleren of je voldoende parate kennis over Python hebt om te beginnen

Nadere informatie

OPDRACHT Opdracht 2.1 Beschrijf in eigen woorden wat het bovenstaande PSD doet.

OPDRACHT Opdracht 2.1 Beschrijf in eigen woorden wat het bovenstaande PSD doet. Les C-02: Werken met Programma Structuur Diagrammen 2.0 Inleiding In deze lesbrief bekijken we een methode om een algoritme zodanig structuur te geven dat er gemakkelijk programmacode bij te schrijven

Nadere informatie

Javascript oefenblad 1

Javascript oefenblad 1 Leer de basis van Javascript. Javascript oefenblad 1 Niels van Velzen Javascript oefenblad 1 Pagina 2 Inleiding Javascript is niet altijd even makkelijk. Vooral aan het begin is het even wennen hoe de

Nadere informatie

Examencursus. wiskunde A. Rekenregels voor vereenvoudigen. Voorbereidende opgaven VWO kan niet korter

Examencursus. wiskunde A. Rekenregels voor vereenvoudigen. Voorbereidende opgaven VWO kan niet korter Voorbereidende opgaven VWO Examencursus wiskunde A Tips: Maak de voorbereidende opgaven voorin in een van de A4-schriften die je gaat gebruiken tijdens de cursus. Als een opdracht niet lukt, werk hem dan

Nadere informatie

Achtste college algoritmiek. 12 april Verdeel en Heers. Dynamisch Programmeren

Achtste college algoritmiek. 12 april Verdeel en Heers. Dynamisch Programmeren Achtste college algoritmiek 12 april 2019 Verdeel en Heers Dynamisch Programmeren 1 Uit college 7: Partitie Partitie Partitie(A[l r]) :: // partitioneert een (sub)array, met A[l] als spil (pivot) p :=

Nadere informatie

Toetsvragen maken Toetsvragen die je gaat maken, worden geplaatst in een itembank. Je kunt dit vergelijken met een map in Office365.

Toetsvragen maken Toetsvragen die je gaat maken, worden geplaatst in een itembank. Je kunt dit vergelijken met een map in Office365. Quayn starten Meld je aan bij SOMtoday. Ga in een nieuw tabblad naar https://mondriaancollege.quayn.eu Je wordt direct herkend. Je ziet rechtsboven je naam staan. Handleiding Een uitgebreide handleiding

Nadere informatie

GEDETAILLEERDE INHOUD

GEDETAILLEERDE INHOUD GEDETAILLEERDE INHOUD dankwoord 17 Inleiding 19 Waarom leer je programmeren?... 19 Waarom Python?... 20 Waarom Minecraft?... 20 Wat staat er in dit boek?.... 20 Online bronnen... 22 Ga nu maar op avontuur...

Nadere informatie

P O P Y T H O N P R O G R AMMER EN: G A N Z E N B O R D

P O P Y T H O N P R O G R AMMER EN: G A N Z E N B O R D P O P Y T H O N P R O G R AMMER EN: G A N Z E N B O R D BOUW JE EIGEN BORDSPEL MET PYGAME J. van Weert Wt (at) sgdb.nl Stedelijk Gymnasium s-hertogenbosch 2015 1 INHOUD 1 Inleiding... 3 2 Opzet, beoordeling

Nadere informatie

oefening JavaScript - antwoorden

oefening JavaScript - antwoorden oefening JavaScript - antwoorden De antwoorden op deze opgaven zijn meestal wat aan de brede kant voor een Word document. Het is daarom handig om ze in Notepad++ te kopiëren en ze dan te bekijken. opgave

Nadere informatie