JavaScript. F. Vonk versie

Maat: px
Weergave met pagina beginnen:

Download "JavaScript. F. Vonk versie"

Transcriptie

1 2017 JavaScript F. Vonk versie

2 inhoudsopgave 1 inleiding programmeerconcepten instructies en sequenties strings variabelen en toekenning variabelen, types en vergelijking selectie herhaling functies scope arrays wat heb je geleerd Dit werk is gelicenseerd onder een Creative Commons Naamsvermelding NietCommercieel GelijkDelen 3.0 Unported licentie De afbeelding op het voorblad is verkregen via INFOwrs. Copyright 2010 INFOwrs Serviços em informatica

3 1 inleiding In de module over syntax, semantiek & lay-out hebben we al een tip van de sluier van het programmeren opgelicht. Je al een klein beetje JavaScript gezien en uitgevoerd. In de syntax, semantiek & lay-out module ging het echter voornamelijk over taalregels en codeerafspraken. Programmeren is echter meer dan dat, het vereist gestructureerd denken en creativiteit om tot oplossingen voor problemen te komen. Dus welkom bij de JavaScript module. In deze module ga je leren hoe je met JavaScript zelf code maakt om problemen op te lossen. Zoals we al eerder hebben aangegeven, is JavaScript een tekstuele programmeertaal die veel gebruikt wordt in websites. Let op, dat je alles wat je in de vorige module over syntax, semantiek & lay-out nodig gaat hebben in deze module. In deze module kom je opgaves tegen die je moet maken om de lesstof te verwerken. De antwoorden kunnen in de les besproken worden. opgave Opgaves in blauw moet je maken. Let op, links in dit document hebben een rode kleur. Veel plezier en succes

4 2 programmeerconcepten In de syntax, semantiek & lay-out module heb je de meeste programmeerconcepten al gezien. In deze module gaan we daar dieper op in en voegen we er nog een paar toe. In de volgende hoofdstukken gaan we naar de volgende concepten kijken: instructies (statements) sequenties strings variabelen toekenning types vergelijking selectie herhaling (loop) functies (methods) scope arrays Je hebt ook geleerd over de codeerafspraken die horen bij de programmeerconcepten. Zorg dat je deze blijft oefenen bij de opgaven in deze module. Op de toets en het SE over programmeren & algoritmiek moet je ze correct toepassen om puntaftrek te voorkomen! 3 instructies en sequenties Het concept instructie (statement) heb je al gezien. We hebben eenvoudige en complexe instructies en kunnen ze achter elkaar zetten om sequenties te maken. Instructies zijn feitelijk de bouwstenen van ieder computerprogramma. We hebben afgesproken, dat we bij het vak informatica eenvoudige instructies altijd afsluiten met een puntkomma! Nederlandse zinnen sluiten we immers ook af met een punt

5 4 strings Een string is een willekeurig stukje tekst. Let op, dat een string ook leeg kan zijn. Dat betekent dat er geen tekst in de string staat. We noemen dat een lege string. Je hebt al geleerd dat JavaScript bepaalde keywords kent. Voorbeelden van keywords zijn: var, if, else en while. Daarnaast kun je JavaScript woorden leren zoals de namen van functies en variabelen. Alle andere tekst wordt niet herkend door JavaScript. Hopelijk herinner je je nog dat we quotes gebruiken om JavaScript te vertellen dat het een stuk tekst, een string dus, niet moet proberen te begrijpen. Toen we de wereld wilden groeten deden we dat dus als volgt: document.write("hello World!<BR>"); We gebruikten de dubbele quotes om aan te geven dat Javascript niet hoeft te snappen wat de string Hello World!<BR> betekent. De lege string geven we aan door twee dubbele quotes direct achter elkaar te zetten, dus "". opgave 4.1 Maak een HTML bestand aan waar je eerst een lege regel in afdrukt, dan een willekeurig stuk tekst en dan weer een lege regel. Voer vervolgens de code uit in een webbrowser. karakters escapen Maar wat nu als onze string al dubbele quotes bevat, bijvoorbeeld in het volgende geval. Inge zei: "We gaan naar zee!" De voor de hand liggende oplossing zou zijn. document.write("inge zei: "We gaan naar zee!"<br>"); - 5 -

6 Dit werkt echter helaas niet. opgave 4.2 Zet de voorgaande code weer in een HTML bestand en voer deze uit in een webbrowser. Zet het console venster aan (F12) aan om te kijken wat er fout gaat. Je ziet dat JavaScript het niet snapt. Het ziet namelijk de string Inge zei: met een spatie erachter en vervolgens verwacht het een ) om de document.write functie af te sluiten. JavaScript heeft namelijk geen flauw idee wat We gaan naar zee! voorstelt. Er zijn twee manier om dit probleem op te lossen. De eerste is niet de mooiste maar werkt wel. We hebben verteld dat je zowel met enkele als dubbele quotes mag werken. Voor JavaScript zijn deze echter niet hetzelfde en daar kunnen we hier misbruik van maken. Zorg wel dat je het goede type enkele quote gebruikt! document.write('inge zei: "We gaan naar zee!"<br>'); Probeer het maar eens uit. Zoals gezegd is dit niet echt netjes. Een betere manier is om de karakters die JavaScript niet moet lezen, dus de dubbele quotes in onze zin, te "escapen". We hebben hier geen goed Nederlands woord voor dus hebben we de Engelse term escaping vernederlandst. Een karakter escapen doe je door er een backslash (\) voor te zetten. Op die manier "ontsnapt" het teken aan het oog van JavaScript. Dat ziet er als volgt uit. document.write("inge zei: \"We gaan naar zee!\"<br>"); Probeer ook dit maar eens uit. Het escapen bestaat in vrijwel iedere taal en kun je met ieder karakter doen dat door de taal herkend wordt. JavaScript heeft niet veel van zulke karakters, maar PHP (een taal die je later in de web leerlijn leert) bijvoorbeeld wel

7 Je gaat nu even opwarmen door te oefenen met instructies, sequenties en strings. opgave 4.3 Zorg ervoor dat je de volgende limerick 1 in je webbrowser te zien krijgt. Er was eens een kaasboer uit Gouda, die liep rond de tafel zijn vrouw na. De vrouw zei heel vief: "alles is relatief; als ik iets harder loop, zit ik jou na!" string concatenatie Als we programmeren, dan hebben we niet altijd kant en klare strings tot onze beschikking. Soms moeten we namelijk invoer van de gebruiker vragen en die dan vervolgens laten zien met wat tekst ervoor. Gelukkig heeft JavaScript een bewerking om strings achter elkaar te plakken. Dat doen we met de +. Dat ziet er misschien wat vreemd uit, omdat we de + normaal gesproken gebruiken om getallen op te tellen. In veel talen kun je echter ook strings "optellen" en dat wil zeggen dat je ze aan elkaar plakt. Strings aan elkaar plakken noemen we concatenatie. Hier een voorbeeld. var username = prompt("hoe heet je?"); document.write("hallo " + username + "!<BR>"); Ook dit stukje code kun je uitproberen als je wilt. In de eerste instructie zien we een aantal programmeerconcepten waar we straks nog uitgebreid op ingaan. We willen dat de gebruiker iets in kan voeren en daar gebruiken we de functie prompt voor. JavaScript kent deze functie standaard, daar hebben de makers van JavaScript voor gezorgd. De prompt functie geeft terug wat de gebruiker invoert, zodat we dat in een variabele op kunnen slaan. Wat "teruggeven" precies betekent, leer je straks bij het onderdeel functies

8 opgave 4.4 Maak een stukje code dat de gebruiker vraagt zijn/haar naam in te voeren en vervolgens om zijn/haar favoriete kleur in te vullen. De code moet daarna de volgende twee zinnen, ieder op een aparte regel, laten zien. Waar naam of kleur staat moet je afdrukken wat de gebruiker ingevoerd heeft. Hallo naam, leuk je te ontmoeten. Mijn favoriete kleur is ook kleur! Je hebt nu 1 string bewerking gezien, de concatenatie, maar er zijn er natuurlijk nog veel meer. Die hoef je niet allemaal te kennen. Als je ze nodig hebt, dan kun en mag je ze gewoon opzoeken. Kijk bijvoorbeeld maar eens bij de "string methods" op w3schools. string lengte Tot slot nog een belangrijke eigenschap (property) van strings. Ze hebben namelijk een lengte en soms is het handig om die te weten. Je hoeft dan niet zelf de karakters te gaan tellen, dat doet JavaScript automatisch voor je. Iedere string heeft namelijk een eigenschap die length heet en daarin staat de lengte van de string. Een eigenschap hoort altijd bij een entiteit. In het geval van length is de entiteit een string. Zo'n entiteit is of een object of een klasse in JavaScript, omdat het een object georiënteerde taal is. Wat een object en klasse precies zijn is op dit moment niet belangrijk, dus we blijven de term "entiteit" gebruiken. De naam van de entiteit staat voor de punt en de eigenschap achter de punt. Een voorbeeld om het duidelijker te maken. var username = prompt("hoe heet je?"); document.write("hallo " + username + "!<BR>"); document.write("je naam bestaat uit "); document.write(username.length); document.write(" karakters.<br>"); - 8 -

9 opgave 4.5 Verander de code die voor deze opgave staat, zodat je de laatste 3 schrijfinstructies samenvat in 1 schrijfinstructie

10 5 variabelen en toekenning In de syntax, semantiek & lay-out module hebben we het al over variabelen gehad. We zeiden toen dat je ze kunt zien als doosjes waar je iets in kunt bewaren. Misschien kun je je van bug fixen en software testen nog herinneren, dat een variabele feitelijk een plekje in het werkgeheugen (RAM) van de computer is. Variabelen zijn essentieel bij het programmeren, omdat we er dus dingen in kunnen onthouden. Als de gebruiker iets in moet voeren en we hebben dat op 10 plaatsen in de code nodig, dan willen we niet de gebruiker 10 keer om dezelfde invoer vragen. In plaats daarvan vragen we 1 keer om de invoer en bewaren die in een variabele. Maar ook als we 20 keer dezelfde berekening met dezelfde waardes moeten doen, die veel tijd kost, dan doen we dat niet 20 keer. We doen het 1 keer en slaan het resultaat op in een variabele. Dat bespaart ons veel tijd als we het programma uitvoeren. Een variabele heeft een naam en een inhoud. De naam wijst naar het plekje in het RAM waar de inhoud van de variabele staat. toekenning Aangezien een variabele een inhoud heeft, is het handig als we die inhoud kunnen lezen en schrijven. Bij schrijven van de inhoud van een variabele zeggen we, dat we een waarde toekennen aan de variabele. Vandaar dat we vaak spreken van toekenning. We zouden eigenlijk moeten zeggen: "..., dat we een waarde toekennen aan de inhoud van de variabele." Het is echter vervelend om steeds weer "de inhoud van" op te schrijven of te zeggen. Daarom laten we het meestal weg. Het is echter wel belangrijk, dat je beseft dat het bij lezen en schrijven altijd gaat om de inhoud van de variabele! Om een waarde toe te kennen aan een variabele gebruiken we de = operator, we noemen dit de toekenningsoperator. Bijvoorbeeld: var voornaam = "Jan"; var achternaam = "Jansen";

11 opgave 5.1 In het voorgaande stuk code staan twee variabelen, voornaam en achternaam. Zet de code in een HTML bestand en voeg daarna twee instructies toe om de waarde van de variabelen onder elkaar af te drukken. Voer vervolgens de code uit in een webbrowser. Vanuit de wiskunde ben je gewend om de = te gebruiken om te vergelijken en voor beginnende programmeurs kan dat in het begin lastig zijn. Wat kan helpen is om niet te zeggen: "De inhoud van de variabele voornaam is Jan." Maar in plaats daarvan te zeggen: "De inhoud van de variabele voornaam wordt Jan." Het schrijven is feitelijk het veranderen van de inhoud van de variabele. Op het moment dat je schrijft, dan gaat de bestaande inhoud van de variabele dus permanent verloren! Daar gaat de analogie met de doos dan ook fout, want als je iets nieuws in een doos stopt, dan zit de oude inhoud er ook nog steeds in. Als je een variabele dus als doos ziet, dan moet je het zien als een doos waar maar 1 ding in kan! Je hoeft niet altijd een vaste waarde toe te kennen aan een variabele, je kunt ook het resultaat van een berekening of functie gebruiken. Van dat laatste heb je al een voorbeeld gezien bij het opvragen van de naam van de gebruiker. var username = prompt("hoe heet je?"); Zoals je hebt gezien schrijven we iets naar een variabele door de naam van de variabele vóór de = te zetten. Logischerwijs kunnen we dus iets lezen uit een variabele door de naam van de variabele áchter de = te zetten. Bijvoorbeeld: var voornaam = "Jan"; var achternaam = "Jansen"; var volledigenaam = voornaam + " " + achternaam; Bij het lezen van de inhoud van de variabele (en ook hier zeggen we voortaan "het lezen van de variabele") gaat de inhoud niet verloren

12 opgave 5.2 Zet de voorgaande code in een HTML bestand en voer deze uit in een webbrowser. Zorg dat je goed begrijpt hoe de code werkt. declareren en initialiseren Variabelen kunnen niet zo uit het niets opduiken, we moeten ze bekend maken aan het systeem. Dat noemen we het declareren van een variabele. document.write(username + "<BR>"); Het voorgaande stuk code gaat dus niet werken. Bij het schrijven van de waarde van een variabele moet deze waarde namelijk gelezen worden en dat kan alleen als er van te voren iets in geschreven is. opgave 5.3 Zet de voorgaande code in een HTML bestand en voer deze uit in een webbrowser. Zet het console venster aan (F12) aan om te kijken wat er fout gaat. Een goede gewoonte is om een variabele bij de declaratie ook meteen een beginwaarde te geven. Dat noemen we initialiseren en dit zorgt ervoor, dat we zeker weten dat de variabele een zinvolle waarde bevat. Als we bij het declareren niet initialiseren, dan weten we feitelijk niet wat de inhoud van de variabele is op dat moment. In JavaScript heeft een variabele de waarde undefined totdat die variabele een waarde gegeven wordt. var username; document.write(username + "<BR>");

13 opgave 5.4 Zet de voorgaande code in een HTML bestand en voer deze uit in een webbrowser. Zorg dat je goed snapt wat er aan de hand is. In JavaScript kun je variabelen niet expliciet te declareren. Wanneer je een variabele voor de eerste keer een waarde geeft (initialiseren), dan wordt deze door JavaScript impliciet gedeclareerd. In JavaScript declareer je een variabele door er de eerste keer het keyword var voor te zetten. Je hebt hiervan al een aantal voorbeelden gezien. Je kunt variabelen in JavaScript ook declareren zonder het keyword var, maar dat doe je hoogst zelden. In Hoofdstuk 10 gaan we hier verder op in. var username = prompt("hoe heet je?"); In de code hierboven, declareren we dus een variabele met de naam username en de beginwaarde wordt bepaald door wat de gebruiker invoert. Je ziet hier dus ook meteen de initialisatie van de variabele, zoals het hoort. opgave 5.5 Maak een programma dat het volgende doet: 1. Vraag de voornaam van de gebruiker. 2. Vraag de achternaam van de gebruiker. 3. Maak een nieuwe variabele totalelengte aan die je op 0 zet. 4. Verander de waarde van totalelengte in de som van de lengtes van de voor- en achternaam van de gebruiker. 5. Druk de waarde van totalelengte af met een relevant stuk tekst ervoor

14 6 variabelen, types en vergelijking In het vorige hoofdstuk heb je gezien dat we dingen kunnen onthouden in variabelen, omdat ze een inhoud hebben. Misschien is het je daarbij opgevallen, dat de inhoud niet altijd van dezelfde soort is. Soms zit er een getal in een variabele zoals de lengte van een string, maar soms zit er ook gewoon een stuk tekst in. Tekst en getallen zijn toch heel andere dingen. Dus waarom maakt het JavaScript niet uit wat je erin stopt? Dat komt, omdat dat maar zo lijkt. Het maakt JavaScript wel degelijk uit wat je erin stopt, alleen is JavaScript heel vergevingsgezind richting de programmeur. De meeste scripttalen, waarvan JavaScript er 1 is, zijn zo vergevingsgezind. Programmeertalen zoals C, C++, C#, Java enzovoorts zijn dat echter niet. Daarom is leren programmeren in een scripttaal vaak het fijnst. Een ander woord voor soort is type. In programmeerjargon gebruiken we de term type. Aangezien we verschillende soorten waardes hebben, heeft iedere variabele een type. Getallen behoren uiteraard tot een ander type dan strings. Wanneer je een waarde in een variabele stopt, dan bepaalt JavaScript onder water automatisch het type van de variabele aan de hand van wat erin gestopt wordt. Stop je vervolgens iets van een ander type in diezelfde variabele, dan past JavaScript automatisch het type aan. Dat is nog eens handig! Bij eenvoudige programma's klopt dat, maar naarmate je complexere dingen gaat doen kan het ook een bron van fouten zijn. Daarom worden grote en complexe applicaties, bijvoorbeeld Microsoft Office of Photoshop, niet geschreven in scripttalen maar in programmeertalen. Juist omdat programmeertalen de programmeur dwingen goed na te denken over het type van variabelen. types In Javascript kennen we een aantal verschillende types, de belangrijkste zijn: Number String Boolean Array Object Met de eerste 4 krijg je zeker te maken, met Object mogelijk als je de web leerlijn kiest. Het type Number heb je al gebruikt zien worden. Tot nu toe hebben we alleen gehele getallen gebruikt, maar ook decimale getallen behoren tot dit type. Let op: Het decimale scheidingsteken is altijd een punt bij het programmeren in JavaScript!

15 Ook het type String heb je al gezien. Het type Boolean klinkt misschien onbekend, maar je hebt er eigenlijk al heel veel mee gedaan. Een variabele van het type Boolean kan maar twee waardes bevatten, namelijk true en false. Het is dus een binair type en dat zou je moeten kennen van talstelsels en logische schakelingen. Op het type Array komen we later terug. Variabelen van dit type kom je voorlopig nog niet tegen. opgave 6.1 Maak een programma waarin je 3 variabelen aanmaakt en een begin waarde geeft (initialiseren). Iedere variabele is van een ander type, maak er 1 aan van het type Number, 1 van het type String en 1 van het type Boolean. Druk vervolgens de waardes van de variabelen af. Voer je programma vervolgens uit in een webbrowser. vergelijking Zoals je hebt gezien kennen we waardes toe aan variabelen met de = (toekenningsoperator). Hopelijk herinner je je uit de syntax, semantiek & lay-out module nog dat we vergelijken met de == en === (vergelijkingsoperatoren). Bij de == kijkt JavaScript of wat er links en rechts van de == staat gelijk aan elkaar is. Hierbij negeert JavaScript het type van wat links en rechts staat. Het resultaat daarvan is bijvoorbeeld, dat JavaScript het getal 0 en de string 0 gelijk vindt aan elkaar. Bij de === doet JavaScript hetzelfde als bij de ==, maar houdt wel rekening met de types. Als je dus iets van het type Number vergelijkt met iets van het type String, dan zullen ze nooit gelijk gevonden worden. In dit geval zal JavaScript het getal 0 dus niet gelijk vinden aan de string

16 opgave 6.2 Zet het volgende programma in een test HTML bestand en kijk wat het doet. var string0 = "0"; var getal0 = 0; if (string0 == getal0) document.write("gelijk<br>"); else document.write("ongelijk<br>"); Je ziet hier een voorbeeld van hoe JavaScript de inhoud van de variabelen gelijk vindt en ziet de vergevingsgezindheid van de == in JavaScript. JavaScript kiest altijd het gunstigste type voor een variabele in geval van twijfel. Je hebt dit al eerder gezien. Kijk maar eens naar de volgende code. var username = prompt("hoe heet je?"); document.write("hallo " + username + "!<BR>"); document.write("je naam bestaat uit "); document.write(username.length); document.write(" karakters.<br>"); Hopelijk snap je, dat de inhoud van username.length van het type Number is en niet van het type String. Aan de document.write functie hoor je iets van type String mee te geven en toch wordt het getal gewoon goed afgedrukt. JavaScript transformeert het getal automatisch naar het type String voor je, want dat is waarschijnlijk de bedoeling

17 In de oplossing van opgave 4.5 heb je dit nog een keer gezien. Als het goed is heb je daar de volgende oplossing gekozen. document.write("je naam bestaat uit " + username.length + " karakters.<br>"); Hier wordt de + als string concatenatie gebruikt, maar het type van username.length is dus geen String. Ook hier transformeert JavaScript het type, omdat dat de meest zinvolle actie is. Het is echter wel belangrijk, dat je snapt dat dit gebeurt! opgave 6.3 Hopelijk heb je de code van de vorige opgave nog open. Verander de == in een === en kijk wat er gebeurt als je de code uitvoert. Je ziet nu dat JavaScript de inhoud van de variabelen ineens niet meer gelijk vindt. meer vergelijkingsoperatoren Je kunt in JavaScript uiteraard meer doen, dan alleen kijken of twee dingen gelijk aan elkaar zijn. Hier volgt een lijst van de meest gebruikte vergelijkingsoperatoren: > Test of links groter is dan rechts. Houdt geen rekening met het type. >= Test of links groter dan of gelijk is aan rechts. Houdt geen rekening met het type. < Test of links kleiner is dan rechts. Houdt geen rekening met het type. <= Test of links kleiner dan of gelijk is aan rechts. Houdt geen rekening met het type.!= Test of links en rechts ongelijk zijn. Houdt geen rekening met het type.!== Test of links en rechts ongelijk zijn. Houdt wel rekening met het type. opgave 6.4 Maak een programma waarin je de gebruiker 2 getallen in laat voeren. Vervolgens kijkt het programma welk van de getallen het kleinst is en drukt dat getal af. Voer je programma vervolgens uit in een webbrowser

18 zelf het type veranderen Je ziet dat de >, >=, < en <= geen rekening houden met het type van de dingen die ze vergelijken. Dat kan heel vervelend zijn. Zo zal de string 0 bijvoorbeeld kleiner zijn dan het getal 1. Maar ook de string 12 zal kleiner zijn dan de string 2. Je ziet, dat het belangrijk is om goed te weten wat je vergelijkt. Soms weet je niet zeker welk type een variabele op een gegeven moment heeft. Daarom is het fijn, dat JavaScript de programmeur toestaat het type van een variabele op te vragen of zelfs te veranderen. Dat laatste heet type conversion. De functie om een type op te vragen heet typeof. Bijvoorbeeld: typeof "Jan"; // Resultaat is string. typeof 10; // Resultaat is number. typeof 3.14; // Resultaat is number. typeof false; // Resultaat is boolean. Om het type van een variabele te veranderen bestaan een aantal functies. Degene die je het meest nodig zult hebben zijn: String (of soms tostring) Number (of soms parseint of parsefloat) Het converteren van types wordt het best duidelijk door wat voorbeelden. var x = 113; // x-coordinaat String(x); // resultaat is de string 113 x.tostring(); // resultaat is de string 113 String(123); // resultaat is de string 123 (123).toString(); // resultaat is de string 123 String( ); // resultaat is de string 156 ( ).toString(); // resultaat is de string 156 String(false); (false).tostring(); // resultaat is de string false // resultaat is de string false var x = "113"; // x-coordinaat Number(x); // resultaat is number 113 parseint(x); // resultaat is number 113 parsefloat(x); // resultaat is number

19 Number("3.14"); // resultaat is number 3.14 parseint("3.14"); // resultaat is number 3 parsefloat("3.14"); // resultaat is number 3.14 Number(""); // resultaat is number 0 parseint(""); // resultaat is number NaN parsefloat(""); // resultaat is number NaN Number(" "); // resultaat is number 0 parseint(" "); // resultaat is number NaN parsefloat(" "); // resultaat is number NaN Number("88 99"); // resultaat is number NaN parseint("88 99"); // resultaat is number 88 parsefloat("88 99"); // resultaat is number 88 Number(false); // resultaat is number 0 Number(true); // resultaat is number 1 In de meeste gevallen ga je genoeg hebben aan de String en Number functies, maar wanneer je de tostring functie gebruikt, dan moet je altijd haakjes om het getal of de getallen zetten. Je ziet dat bijvoorbeeld in ( ).toString();. Bij String( ); wordt eerst de optelling gedaan en dan pas de conversie naar het type String. Wanneer je bij een Booleaanse waarde de tostring functie gebruikt, dan hoef je geen haakjes te gebruiken, maar zonder haakjes gaat de syntax highlighting in Notepad++ verkeerd. Je ziet dat de functie Number zich anders gedraagt dan parseint en parsefloat. Doorgaans gebruiken we het liefst de String en Number functies. De waarde NaN is de indicatie dat er een niet geldig getal in de variabele staat. Het type van de variabele is dan Number

20 opgave 6.5 Pak een paar voorbeelden uit code voor het converteren van types en druk het resultaat van die voorbeelden af in je webbrowser. Bijvoorbeeld: document.write(parseint("") + "<BR>"); opgave 6.6 Zet het volgende programma in een HTML bestand. Pas vervolgens de code aan, zodat de uitvoer van alle document.write functies true geeft. Let op: Je mag alleen type conversie functies toevoegen, dus bijvoorbeeld geen quotes handmatig weghalen. document.write(("true" === true) + "<BR>"); document.write(("10" === 10) + "<BR>"); document.write(("3.14" === 3) + "<BR>"); document.write(("" === 0) + "<BR>"); document.write(( === "40") + "<BR>");

21 7 selectie In de syntax, semantiek & lay-out module en in het vorige hoofdstuk heb je al de theorie en een aantal voorbeelden van de selectie gezien. Zoals je intussen dus weet, is de selectie een complexe instructie en zijn er codeerafspraken over de layout. Zorg dat je deze tijdens het oefenen goed blijft gebruiken. Het is dus belangrijk om goed te beseffen, dat bij een selectie er altijd maximaal 1 pad wordt doorlopen. Als we naar een grafische representatie van een selectie kijken, dan zien we dat ook. Kijk maar naar de volgende 3 voorbeelden. Hier zie je een selectie met 1 pad; alleen het "ja" pad (true) bevat code en het "nee" pad (false) is leeg. Er kan nu uiteraard niet meer dan 1 pad doorlopen worden. In JavaScript ziet dit er als volgt uit. var koffergewicht = Number(prompt("Voer kg van koffer in.")); if (koffergewicht <= 20) document.write("alles is prima.<br>"); Als het goed is, dan valt je op dat we de Number functie toepassen op het resultaat dat de gebruiker invoert. Dat komt, omdat de prompt functie altijd iets van het type String teruggeeft. We weten echter, dat de gebruiker een getal in moet voeren en daarom converteren we het zelf naar het type Number

22 Hier zie je een selectie met 2 paden. Je ziet dat deze naast elkaar staan om aan te geven dat er dus maar 1 van de 2 wordt uitgevoerd. In JavaScript ziet dit er als volgt uit. var koffergewicht = Number(prompt("voer kg van koffer in")); if (koffergewicht <= 20) document.write("u hoeft niet bij te betalen.<br>"); else document.write("u moet bijbetalen.<br>"); Dit is een nettere versie van het eerste programma, omdat alle mogelijkheden voor het gewicht van de koffer nu worden bekeken en dus ook kunnen worden afgehandeld. In het eerste programma gebeurt er niets als de koffer zwaarder is dan 20 kilogram. Dat kan erg zijn als er wel degelijk iets had moeten gebeuren. Daarom is het veilig om altijd een else te hebben in een selectie. Let op: Na de else mag NOOIT iets staan, ook geen conditie! Hier zie je een selectie met 3 paden. Je ziet dat deze allemaal weer naast elkaar staan om aan te geven dat er dus maar 1 van de 3 wordt uitgevoerd. In JavaScript ziet dit er als volgt uit

23 var koffergewicht = Number(prompt("voer kg van koffer in")); if (koffergewicht <= 20) document.write("u hoeft niet bij te betalen.<br>"); else if (koffergewicht <= 40) document.write("u moet bijbetalen.<br>"); else document.write("uw koffer is te zwaar!<br>"); En zoals je weet, mag je dat ook compacter schrijven, zoals je nu gaat doen. opgave 7.1 Schrijf de voorgaande code compacter op zoals je geleerd hebt in de syntax, semantiek & lay-out module. De selectie zou intussen duidelijk moeten zijn, dus tijd om ermee te gaan oefenen. opgave 7.2 Maak een programma, dat de gebruiker vraagt een leeftijd als geheel getal in te voeren en afdrukt of iemand meer- of minderjarig is. opgave 7.3 Maak een programma, dat de gebruiker vraagt een 24 uurs tijdstip in hele uren in te voeren en afdrukt of het voor of na de middag (12 uur) is

24 Voor we naar de volgende opgave gaan, nog even een stukje herhaling over modulo rekenen. Je hebt dit al geleerd bij het bug fixen en software testen, maar het is misschien alweer ietwat weggezakt. Toch is modulo rekenen een heel belangrijk iets bij het programmeren. Zorg daarom, dat je het goed onder de knie hebt! Bij modulo rekenen bepalen we de rest van een integer deling (een deling van twee gehele getallen). De rest is het gehele getal dat we overhouden als we de noemer van de deling blijven aftrekken van de teller van de deling, totdat de teller kleiner is dan de noemer. Nog even een klein voorbeeld: 10 module 3 is gelijk aan 1. Immers: 10-3 is 7 en dat is groter dan 3 dus gaan we door. 7-3 is 4 en dat is groter dan 3 dus gaan we door. 4-3 is 1 en dat is kleiner dan 3 dus zijn we klaar en hebben we de rest gevonden. Nu even een nieuw weetje. Voor even getallen geldt, dat we bij integer delen door 2 een rest van 0 overhouden. Een oneven getal integer gedeeld door 2 heeft 1 als rest. In JavaScript wordt de modulo bewerking weergegeven door het procentteken (%). Met al deze wetenschap zou je de volgende opgave moeten kunnen maken. opgave 7.4 Maak een programma, dat de gebruiker vraagt een positief geheel getal in te voeren en afdrukt of het getal even of oneven is

25 8 herhaling Ook herhaling is al besproken in de syntax, semantiek & lay-out module. In dit hoofdstuk gaan we er niet veel dieper op in, maar ga je juist oefenen om de loops met teller onder de knie te krijgen. Je moet dit eerst goed beheersen voor je toe bent aan complexere loops. Het is mogelijk verstandig om het hoofdstuk over herhaling in de syntax, semantiek & lay-out module nog een keer door te nemen voor je verder gaat. Denk ook nu weer goed aan de codeerafspraken! In JavaScript bestaan veel soorten loops. De bekendste zijn de while-, for-, dowhile-, en repeat-loop. We gaan ons echter beperken tot de eerste 2, omdat die het meeste gebruikt worden. Met de while-loop heb je al geoefend, met de for-loop nog niet. Hopelijk heb je wel begrepen dat je de ene altijd om kunt schrijven in de andere. Overigens hoef je nooit een for-loop te gebruiken als je dat niet wilt. Je kunt feitelijk alles oplossen met een while-loop. Zoals gezegd, is de for-loop alleen een compactere manier van de loop opschrijven. Voor we verder gaan, ga je eerst zelf oefenen met het oplossen van een eenvoudig en bekend probleem waarvoor je een lus met een teller nodig hebt. opgave 8.1 Maak een programma, dat de getallen 1 tot en met 500 ieder op een nieuwe regel afdrukt. Nu ga je naar een iets moeilijker voorbeeld kijken. Stel we willen alle positieve drievouden (veelvouden van 3) onder de 100 afdrukken. Hoe pak je dat aan? Je weet, dat je drievouden kunt genereren door steeds drie op te tellen bij het vorige drievoud dat je gevonden hebt. Hier zie je het woord steeds staan. Dit soort signaalwoorden geven je hints over welk programmeerconcept je moet gebruiken. Het woord steeds duidt op een loop. Dus als je het kleinste drievoud hebt gevonden, dan kun je een loop maken die elke keer 3 optelt bij het vorige drievoud. Ook hier zie je weer een signaalwoord, namelijk vorige. Als je vorige ziet, dan weet je zeker dat je een variabele nodig hebt, je moet immers de vorige waarde onthouden. Dit programma lijkt dus heel erg op het programma dat je hebt gemaakt in de vorige opgave

26 Let goed op het commentaar in de code, dat geeft aan hoe de code geconstrueerd is. var drievoud = 3; // Zet beginwaarde op het eerste drievoud. // We moeten onder de 100 kijken, dus gebruiken < 100. // 100 zelf mag niet meer meedoen dus <= is fout! while (drievoud < 100) // Schrijf eerst het drievoud voordat je het volgende // drievoud bepaalt. // Anders vergeet je namelijk het eerste drievoud af te // drukken! // We maken hier ook weer gebruik van de automatische // type conversie van JavaScript. document.write(drievoud + "<BR>"); // Het volgende drievoud wordt bereikt door 3 bij het // vorige drievoud op te tellen. drievoud = drievoud + 3; // Schrijf dat we klaar zijn. Dat is handig om te zien, dat // we geen oneindige lus hebben gemaakt. In dat geval zien // we de tekst "klaar!" namelijk niet verschijnen. document.write("klaar!<br>"); Feitelijk is de variabele drievoud de teller van de loop. We hadden de variabele ook teller kunnen noemen, maar drievoud is duidelijker in dit geval. for-loop We gaan je nu uitleggen hoe dit er in de for-loop vorm uitziet. In de while-loop met een teller zien we dat we voor de lus de teller de juiste beginwaarde moeten geven (initialisatie). Vervolgens krijgen we het keyword while met de conditie erachter. De laatste instructie van de loop is het verhogen van de teller

27 De truc bij de for-loop is dat de 3 delen, die in de alinea hiervoor genoemd zijn (initialisatie, conditie en teller verhogen), in 1 programmaregel worden samengevat. Dit is feitelijk een schending van onze codeerafspraak die zegt dat iedere instructie op een nieuwe regel begint. Bij de for-loop is het echter de bedoeling om deze codeerafspraak te schenden, anders heeft de constructie geen nut! We krijgen dan de volgende regel code die ter vervanging dient van de regel met de while. for (var drievoud = 3; drievoud < 100; drievoud = drievoud + 3) De 3 delen tussen de haakjes achter het keyword zijn dus achtereenvolgens. initialisatie van de teller conditie op de teller verhogen van de teller (of eventueel verlagen!) Bij de derde bullet zie je, dat je ook "omgekeerde" loops kunt maken waarin je de teller niet verhoogt, maar verlaagt. Daar gaan we dadelijk een voorbeeld van laten zien. Dus om er een for-loop van te maken, vervang je de regel met de while door de regel met de for zoals je hiervoor hebt gezien. Uiteraard haal je de instructies die nu tussen haakjes achter het for keyword staan weg uit het while-loop programma. Wat je overhoudt uit het while-loop programma neem je 1 op 1 over in het for-loop programma en dan ben je klaar. We laten eerst even het while-loop programma zonder commentaar en "klaar" melding zien. var drievoud = 3; while (drievoud < 100) document.write(drievoud + "<BR>"); drievoud = drievoud + 3; En dan nu wat je krijgt als for-loop programma. Zorg dat je goed snapt wat er is gebeurd. for (var drievoud = 3; drievoud < 100; drievoud = drievoud + 3) document.write(drievoud + "<BR>");

28 Nog even een tweetal opmerkingen. Het keyword var verhuist dus gewoon mee. Let bovendien op, dat de laatste instructie tussen de haakjes achter het for keyword niet gevolgd wordt door een puntkomma en spatie! opgave 8.2 Schrijf het programma uit de vorige opgave om, zodat je gebruik maakt van een for-loop. verkorte schrijfwijzen Omdat we bij een for-loop nu ineens 3 instructies achter elkaar schrijven, wordt de regel langer. Om die regel compacter te maken, kunnen we gebruik maken van een verkorte schrijfwijze voor de toekenningen van een waarde aan een variabele. Deze verkorte schrijfwijze is overigens niet alleen handig bij for-loops maar in het algemeen. Eén van de meest gebruikte toekenningen bij een variabele is de verhoging met 1. teller = teller + 1; Deze instructie kunnen we als volgt afkorten. teller++; Dit ziet er misschien vreemd uit, maar het went heel snel als je er een tijdje mee geoefend hebt en het bespaart ruimte en typewerk. Misschien kun je dan al raden hoe de verlaging met 1 van een variabele eruit ziet. teller = teller - 1; En dit kunnen we afkorten tot. teller--;

29 Tot slot is er nog een manier waarop we rekenkundige bewerkingen (operatoren) zoals +, - en * kunnen afkorten. Dit is bijvoorbeeld handig als we moeten verhogen (of verlagen) met een getal groter dan 1. Hier wat voorbeelden. teller = teller + 3; teller = teller - 4; teller = teller * 6; Deze kunnen we afkorten tot. teller += 3; teller -= 4; teller *= 6; Deze verkorte schrijfwijze kun je gebruiken bij veel meer operatoren. Bij de hiervoor genoemde operatoren is het veilig, maar bij andere operatoren moet je goed uitkijken. Het wordt aangeraden om deze verkorte schrijfwijze alleen te gebruiken bij de hiervoor genoemde operatoren. Dat betekent dat we onze for-loop voor het berekenen van de positieve drievouden onder de 100 nog iets compacter kunnen maken. Kijk maar. for (var drievoud = 3; drievoud < 100; drievoud += 3) document.write(drievoud + "<BR>"); document.write("klaar!<br>"); aflopende loops Soms wil je kunnen aftellen, bijvoorbeeld bij de lancering van een raket. In dat geval moet je feitelijk een "omgekeerde" of aflopende loop maken. In dat geval gaan we niet de teller verhogen, maar juist verlagen. Uiteraard heeft dat ook invloed op de initialisatie en de conditie van de loop. Stel we willen aftellen vanaf 10 tot en met 1 en dan de tekst Ignition! afdrukken. In de tekst zie je feitelijk al staan wat er met de initialisatie moet gebeuren. Er staat vanaf 10, dus we moeten op 10 initialiseren. We moeten tot en met 1 gaan, dus zolang de teller >= 1 is moet je de lus uitvoeren

30 Feitelijk hebben we dan alle ingrediënten voor het programma, kijk maar. We gebruiken vanaf nu overigens de verkorte schrijfwijzen die we hiervoor gezien hebben! var teller = 10; while (teller >= 1) document.write(teller + "<BR>"); teller--; document.write("ignition!<br>"); Zo, genoeg gelezen, het is tijd om zelf aan de slag te gaan. Succes! opgave 8.3 Maak een programma, dat de getallen 1, 2, 4, 8, 16, 32, 64, 128 en 256 telkens op een nieuwe regel afdrukt. Je moet een while-loop gebruiken. opgave 8.4 Maak een programma, dat de tafel van 7 afdrukt. Elke regel van de tafel moet op een nieuwe regel in je webbrowser worden afgedrukt. Je moet een while-loop gebruiken. opgave 8.5 Maak een programma, dat alle positieve drievouden onder de 100 van hoog naar laag afdrukt. Elk drievoud moet op een nieuwe regel in je webbrowser worden afgedrukt. Je moet een while-loop gebruiken

31 opgave 8.6 Maak een programma, dat de getallen 1, 2, 4, 8, 16, 32, 64, 128 en 256 in omgekeerde volgorde telkens op een nieuwe regel afdrukt. Je moet een while-loop gebruiken. Uiteraard kunnen complexe instructies in complexe instructies staan. Je hebt al gezien, dat een selectie in een andere selectie kan voorkomen. Daar hebben we zelfs een verkorte schrijfwijze voor. Je ziet verder vaak, dat er een selectie in een loop voorkomt, maar ook loops in loops is heel normaal of een selectie met daarin een loop. opgave 8.7 Maak een programma, dat de gebruiker een bovengrens in laat voeren als positief geheel getal en alle even getallen onder die bovengrens afdrukt. Hierbij moet elk getal op een nieuwe regel staan. Je moet modulo rekenen en een while-loop gebruiken. En uiteraard ga je ook met de for-loop oefenen. opgave 8.8 Maak de vorige 5 opgaven nog een keer, maar gebruik nu een forloop in plaats van een while-loop. complexe lussen Tot nu toe heb je loops gezien en gemaakt die allemaal gebaseerd zijn op een teller. Er zijn echter nog veel meer manieren om een loop op te zetten. Een ander voorbeeld is op basis van een Booleaanse waarde. Laten we daar eens een voorbeeld van geven. Voor we dat doen even een intermezzo over gebruikersinvoer en -uitvoer. Tot nu toe heb je de prompt en document.write functies gebruikt. Dat ging goed, omdat we 1 keer invoer vroegen en daarna de uitvoer regelden

32 Als je echter invoer en uitvoer wilt afwisselen, dan werken prompt en document.write niet goed samen. Je kunt dan beter de alert functie gebruiken. Dat gaan we in het volgende voorbeeld dan ook doen. Het gebruik van de alert functie is niet moeilijk, want die lijkt op die van de document.write functie. We gaan een spelletje spelen. Het is het spelletje hoger-lager dat je ook al hebt gezien bij de syntax, semantiek & lay-out module. alert("we gaan het spel hoger-lager spelen."); alert("ik kies een getal tussen de 1 en 100.\nJa, de grenzen doen ook mee!"); alert("jij moet raden welk getal ik gekozen heb."); alert("als je het fout hebt, dan zeg ik of mijn getal hoger of lager is dan wat je geraden hebt."); var getalgeraden = false; var gekozengetal = Math.floor(Math.random() * 100) + 1; // Zolang het getal niet geraden is, moet de gebruiker // doorgaan met raden. while (getalgeraden === false) var usergetal = Number(prompt("Welk getal heb ik gekozen?")); if (usergetal === gekozengetal) getalgeraden = true; else if (usergetal < gekozengetal) // Te laag getal geraden. alert("mijn getal is hoger dan " + usergetal + "."); else // Te hoog getal geraden. alert("mijn getal is lager dan " + usergetal + "."); alert("juist, het getal is inderdaad " + gekozengetal + "."); In de document.write functie genereerden we HTML uitvoer en moesten we een regelovergang met <BR> doen. In de alert functie gebruiken we daarvoor de \n tekenreeks. Deze tekenreeks wordt in veel talen gebruikt om een regelovergang te forceren. In de variabele getalgeraden onthouden we of het getal geraden is. Voor de lus heeft de gebruiker nog niet geraden, dus het getal is nog niet geraden. Daarom is de initiële waarde van deze variabele false

33 In de variabele gekozengetal laten we de computer een geheel getal tussen 1 en 100 genereren. Dit moet inclusief de grenzen zijn, dus in het bereik [ ]. Dat doen we als volgt: 1. De Math.random functie aangeroepen. Deze genereert een decimaal getal in het bereik [0.. 1) 2. Deze functie kan dus niet het getal 1 genereren! 2. Vermenigvuldig het gegenereerde getal met 100 en dan krijgen we een decimaal getal in het bereik [ ). 3. We willen een geheel getal, dus we ronden naar beneden af met de functie Math.floor. Dan houden we een geheel getal over in het bereik [0.. 99]. 4. We tellen 1 op bij het resultaat, zodat we een geheel getal krijgen in het bereik [ ]. En dat is wat we wilden bereiken. Zolang de gebruiker het getal niet raadt, verandert het programma niets aan de waarde van variabele getalgeraden en zal de loop steeds opnieuw uitgevoerd worden. Zo gauw de gebruiker echter het getal raadt, dan wordt variabele getal- Geraden op true gezet. Als daarna de conditie van de loop gecontroleerd wordt, dan is deze ineens false geworden (immers de waarde true is ongelijk aan de waarde false) en zal de loop eindigen. Dit werkt dus subtiel anders dan bij een teller, maar het algemene principe is hetzelfde. We hebben nog steeds een initialisatie van een variabele die nodig is voor de loop, al is dit geen teller meer. Om dit soort variabelen een naam te geven noemen we ze de loop-variabelen. Ook hebben we nog steeds een geldige conditie tussen haakjes achter het while keyword. We kunnen echter niet meer spreken van het verhogen of verlagen van een teller. In plaats daarvan spreken we nu over het manipuleren van de loop-variabele. Dit zijn algemenere termen, die we kunnen gebruiken als we over een willekeurig opzet van een loop spreken, dus ook over een loop op basis van een teller. Je moet deze termen kennen. opgave 8.9 Maak een programma, dat het eerste positieve drievoud afdrukt en vervolgens steeds vraagt of het volgende drievoud afgedrukt moet worden. Het volgende drievoud moet gegenereerd worden als de gebruiker het woord ja intypt. 2 De ) aan het einde geeft aan dat het getal 1 niet in het bereik ligt

34 9 functies Bij app oriëntatie heb je geleerd wat procedures zijn. Een functie is feitelijk hetzelfde als een procedure. Ook heb je al functies gezien bij bug fixen en software testen. JavaScript functies worden methodes (methods) genoemd, omdat JavaScript tegenwoordig een object georiënteerde taal is. Om even kort te herhalen wat je al zou moeten weten het volgende: Een functie is dan een stuk code waar we een naam aan geven. Door de naam van de functie in je code te gebruiken, roep je de code ervan aan en wordt die uitgevoerd. De naam van een functie is als het ware een afkorting voor het stuk code. Functies zijn handig omdat ze voorkomen dat je hetzelfde stuk code steeds opnieuw moet schrijven als je die code op meerdere plaatsen nodig hebt. Een functie aanroepen is minder werk en beperkt tevens de lengte van je code. Wanneer je bovendien duidelijke namen gebruikt wordt je code ook makkelijker te lezen. Dit alles draagt bij aan de overzichtelijkheid en maakt daarmee het onderhoud van de code makkelijker. Daarom is het belangrijk om functies op de juiste manier te gebruiken. Nu gaan we een stapje dieper. Zoals je al gezien hebt bestaan er in JavaScript al een heleboel functies die je gewoon aan kunt roepen. De makers van JavaScript hebben de bijbehorende code voor je geschreven. JavaScript functies horen altijd bij een entiteit. De naam van de entiteit staat voor de punt en de echte functienaam achter de punt. Dus in document.write is document de entiteit en write de echte functienaam. Je hebt ook functies gezien waar geen entiteit voor de functienaam staat. Dat komt, omdat we in die gevallen de entiteit niet hoeven te noemen. Voorbeelden zijn de prompt en alert functies. Feitelijk hoor je die als window.prompt en window.alert te schrijven, maar de window entiteit mag je weglaten. opgave 9.1 Maak een programma, dat 50 gehele getallen in het bereik [ ] ieder op een nieuwe regel afdrukt. Gebruik een loop! Hint: Je kunt bij de code van hoger-lager spieken hoe je een random geheel getal genereert

35 Het mooie aan functies, buiten dat ze werk besparen en voor overzicht zorgen, is dat je er dingen aan mee kunt geven en dingen van terug kunt krijgen. Je hebt dit al gezien, maar we gaan uitleggen hoe dat werkt. Als je dat snapt, kun je ook zelf functies gaan definiëren. argumenten Wanneer je de prompt functie aanroep, dan ziet dat er bijvoorbeeld als volgt uit. prompt("hier de een of andere tekst."); Wat er tussen haakjes achter de functienaam staat noemen we de argumenten. Argumenten zijn dus de dingen die we aan de functie meegeven als we de functie aanroepen. Een functie kan 0 of meer argumenten hebben. Alle argumenten samen noemen we de argumentlijst. Wanneer een functie 0 argument mee moet krijgen is de argumentlijst dus leeg. Wanneer een functie 0 argumenten heeft, dan moet je nog steeds haakjes achter de functienaam zetten, anders snapt JavaScript het niet. Dit heb je gezien toen we een willekeurig getal wilden genereren. Math.random() Wanneer je aan een functie meer dan 1 argument mee kunt geven, dan worden de argument gescheiden door komma's. Daar heb je nog geen voorbeeld van gezien, maar een voorbeeld geven is niet zo moeilijk, omdat je aan document.write meerdere strings mee kunt geven die afgedrukt moeten worden. Tot nu toe hebben we de strings die we meegaven altijd netjes zelf aan elkaar geplakt met de +, maar dat hoeft niet. De volgende twee regels code doen namelijk precies hetzelfde. document.write("hallo " + username + "!<BR>"); en document.write("hallo ", username, "!<BR>"); Bij het aanroepen van een functie maken we de codeerafspraak dat na een komma in de argumentlijst altijd een spatie staat

36 resultaat Als we de prompt functie aanroepen, dan willen we graag weten wat de gebruiker invoert en dat liefst ook opslaan. Dat voorkomt namelijk dat we de gebruiker er nog een keer om moeten vragen. Dat ziet er, zoals je intussen zou moeten weten, zo uit. var watdefunctieteruggeeft = prompt("hier wat tekst."); Een functie kan dus of niets of wel iets teruggeven. Wat de functie teruggeeft noemen we het resultaat (in programmeerjargon return value). Dat levert 4 situaties op: 1. De functie geeft niets terug en dat vang je op in een variabele. In dat geval is de waarde van de variabele undefined. Feitelijk is dit niet zinvol, maar ook niet fout. De functie wordt nog steeds gewoon uitgevoerd. 2. De functie geeft niets terug en je vangt in je code ook niets op. Dit is zoals het hoort. De functie wordt nu gewoon uitgevoerd. 3. De functie geeft iets terug en dat vang je op in een variabele. Dit is zoals het hoort. De functie wordt uitgevoerd en het resultaat bewaar je, zodat je het verderop in je code kunt gebruiken. 4. De functie geeft iets terug, maar dat vang je niet op. Ook dit is doorgaans niet zinvol, maar ook niet fout. De functie wordt nog steeds uitgevoerd, maar het resultaat gaat verloren en kun je daarom ook niet gebruiken. Een voorbeeld waarin deze situatie wel zinvol kan zijn is de volgende: De aangeroepen functie doet iets zinvols en geeft vervolgens alleen terug of dat goed gegaan is of niet. Soms ben je niet geïnteresseerd in of het goed gegaan is of niet en dan kun je beslissen om het resultaat van de functie niet op te vangen. Meestal is het gebruik van functies vrij logisch en kun je aan de naam van de functie zien of deze iets teruggeeft of niet. Dus doe wat je denkt dat goed is. Er kan weinig fout gaan, zoals je hiervoor hebt gezien. opgave 9.2 Probeer zelf eens wat te spelen met JavaScript functies. Je kunt functies vinden op w3schools. Kijk daar bijvoorbeeld eens bij JS String en JS String Methods of JS Math

37 parameters Degene die de functie definieert bepaalt hoeveel argumenten er bij de aanroep aan meegegeven kunnen worden. Bij het definiëren van een functie moet de maker: De functie een naam geven. Definiëren hoeveel argumenten er aan meegegeven kunnen worden 3. Dit heet het definiëren van de parameters van de functie. Definiëren wat de functie terug gaat geven, het resultaat dus 4. De code van de functie maken. Bij de definitie van de functie spreken we dus over parameters, terwijl we bij het aanroepen van de functie spreken over argumenten. zelf functies definiëren Je hebt net gelezen wat je moet doen om een functie te definiëren. Wanneer je voor de web leerlijn kiest, ga je leren dat ook zelf doen. Voorlopig is het genoeg als je de functies die in JavaScript al bestaan kunt gebruiken. Als je nu toch al benieuwd bent naar hoe dit moet, dan kun je kijken op w3schools. 3 Bij JavaScript hoef je je niet te bekommeren om het type van de parameters. Bij programmeertalen zoals C, C++, C# en Java moet je dat wel. 4 Bij JavaScript hoef je je niet te bekommeren om het type van het resultaat. Bij programmeertalen zoals C, C++, C# en Java moet je dat wel

38 10 scope Als je aan het programmeren bent, dan wil je vaak dat het ene stuk code niet zomaar bij bijvoorbeeld de variabelen van een ander stuk code kan. Dat kan namelijk voor vervelende neveneffecten zorgen of voor onverklaarbaar gedrag. Daarom bestaat er in iedere taal het concept scope. Scope speelt een belangrijke rol bij variabelen, maar soms ook bij functies. Helaas wordt scope in iedere taal net iets anders gedefinieerd. Dus wat je hier leert over scope in relatie met JavaScript werkt helaas niet automatisch hetzelfde in andere talen! We gaan hier alleen in op de scope van variabelen. Dat kan, omdat functies in JavaScript ook gezien worden als variabelen. Ook dit is weer iets specifieks voor JavaScript en werkt anders in de meeste andere talen. De scope van een variabele bepaalt in welke delen van de code de variabele bekend is en dus gebruikt kan worden. De scope is of globaal of lokaal. Variabelen met een globale scope (vaak globale variabelen genoemd) zijn overal in de code binnen hetzelfde bestand bekend. Dat lijkt heel erg handig, maar in de praktijk kunnen globale variabelen leiden tot problemen en fouten. Je moet het gebruik ervan dus zoveel mogelijk beperken, al kun je ze soms niet vermijden. Variabelen met een lokale scope (vaak lokale variabelen genoemd) zijn in JavaScript alleen bekend in de functie waarin ze gedeclareerd worden. Een lokale variabele is dan ook een variabele die ín een functie gedeclareerd wordt. Een globale variabele is een variabele die niet ín een functie gedeclareerd wordt. Laten we eens naar een voorbeeld kijken. In de volgende code zie je een functie, genaamd televengetallenonder, die steeds het aantal even getallen bepaalt en afdrukt onder de waarde die eraan wordt meegegeven. Daarna wordt voor de getallen in het bereik [1.. 20] gekeken hoeveel even getallen er onder het dubbele van ieder getal in het bereik liggen. Dit is een zogenaamd speelvoorbeeld waarmee we het concept scope kunnen laten zien. Een speelvoorbeeld is een voorbeeld dat in de praktijk niet of weinig voorkomt, maar geconstrueerd is om iets specifieks te demonstreren over een concept

van PSD naar JavaScript

van PSD naar JavaScript 2015 van PSD naar JavaScript F. Vonk versie 2 19-9-2015 inhoudsopgave 1. inleiding... - 2-2. ontwikkelomgeving... - 3-3. programmeerconcepten... - 4 - statement... - 4 - sequentie... - 4 - variabele en

Nadere informatie

JavaScript - antwoorden

JavaScript - antwoorden 2017 JavaScript - antwoorden F. Vonk versie 2 2-1-2017 inhoudsopgave strings...- 3 - variabelen en toekenning...- 4 - variabelen, types en vergelijking...- 5 - selectie...- 8 - herhaling... - 11 - functies...

Nadere informatie

syntax, semantiek & lay-out

syntax, semantiek & lay-out 2016 syntax, semantiek & lay-out F. Vonk versie 1 23-8-2016 inhoudsopgave 1 inleiding... - 3-2 syntax... - 4-3 semantiek... - 8-3.1 instructie... - 8-3.2 sequentie... - 9-3.3 selectie... - 9-3.4 herhaling...

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

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

Android apps met App Inventor 2 antwoorden

Android apps met App Inventor 2 antwoorden 2014 Android apps met App Inventor 2 antwoorden F. Vonk versie 1 11-11-2014 inhoudsopgave Mollen Meppen... - 2 - Schrandere Scholier... - 15 - Meteoor... - 21 - Dit werk is gelicenseerd onder een Creative

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

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

Java Les 3 Theorie Herhaal structuren

Java Les 3 Theorie Herhaal structuren Java Les 3 Theorie Herhaal structuren Algemeen Een herhaal structuur een is programmeertechniek waarbij bepaalde Java instructies worden herhaald net zo lang tot een bepaalde voorwaarde is bereikt. Een

Nadere informatie

PSD. F. Vonk versie

PSD. F. Vonk versie 2015 PSD F. Vonk versie 3 18-9-2015 inhoudsopgave 1. inleiding... - 2-2. PSD... - 3 - sequentie... - 4 - selectie... - 4 - herhaling... - 5-3. Structorizer... - 10 - configuratie... - 11 - gebruik... -

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

Lab Webdesign: Javascript 3 maart 2008

Lab Webdesign: Javascript 3 maart 2008 H5: OPERATORS In dit hoofdstuk zullen we het hebben over de operators (of ook wel: operatoren) in JavaScript waarmee allerlei rekenkundige en logische bewerkingen kunnen worden uitgevoerd. Daarbij zullen

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

Vakgroep CW KAHO Sint-Lieven

Vakgroep CW KAHO Sint-Lieven Vakgroep CW KAHO Sint-Lieven Objecten Programmeren voor de Sport: Een inleiding tot JAVA objecten Wetenschapsweek 20 November 2012 Tony Wauters en Tim Vermeulen tony.wauters@kahosl.be en tim.vermeulen@kahosl.be

Nadere informatie

talstelsels F. Vonk versie 1 30-7-2013

talstelsels F. Vonk versie 1 30-7-2013 2013 talstelsels F. Vonk versie 1 30-7-2013 inhoudsopgave 1. inleiding... - 2-2. binair... - 4-3. hexadecimaal... - 10-4. octaal (vwo)... - 17-5. bonus opgaves... - 20-6. wat heb je geleerd... - 21 - Dit

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

intro informatica F. Vonk versie

intro informatica F. Vonk versie 2017 intro informatica F. Vonk versie 2 7-8-2017 inhoudsopgave 1. inleiding... - 4-2. ELO... - 4-3. opzet... - 5-4. plagiaat en eigen inbreng... - 5-5. leerlijnen... - 6-6. soorten opdrachten en beoordeling...

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

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

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

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

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

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

VAN HET PROGRAMMEREN. Inleiding

VAN HET PROGRAMMEREN. Inleiding OVERZICHT VAN HET PROGRAMMEREN Inleiding Als je leert programmeren lijkt het nogal overweldigend om die eerste stappen te doorworstelen. Er zijn dan ook heel wat programmeertalen (Java, Ruby, Python, Perl,

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

Lab Webdesign: Javascript 11 februari 2008

Lab Webdesign: Javascript 11 februari 2008 H2: BASISBEGRIPPEN In dit hoofdstuk zullen er enkele basisbegrippen worden behandelt PLAATSING VAN JAVASCRIPT-CODE DE SCRIPT-TAG De script-tag geeft aan dat er gebruik zal worden gemaakt van een scripttaal.

Nadere informatie

Lab Webdesign: Javascript 25 februari 2008

Lab Webdesign: Javascript 25 februari 2008 H4: FUNCTIES We zullen in dit hoofdstuk zien hoe we functies moeten maken, aanroepen, argumenten doorgeven en waarden retourneren. Ook zullen we het hebben over het begrip "recursie", en laten zien hoe

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

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

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

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

Een topprogrammeur in het OO programmeren is Graig Larman. Hij bedacht de volgende zin:

Een topprogrammeur in het OO programmeren is Graig Larman. Hij bedacht de volgende zin: Java Les 2 Theorie Beslissingen Algemeen Net als in het dagelijks leven worden in software programma s beslissingen genomen, naast het toekennen van waarden aan variabelen zijn beslissingen één van de

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

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

bug fixen F. Vonk versie

bug fixen F. Vonk versie 2017 bug fixen F. Vonk versie 1 24-7-2017 inhoudsopgave 1. inleiding... - 3-2. bug fixen... - 4-3. Sokoban... - 5-4. Breakout... - 7-5. Pac-Man... - 8-6. Asteroids... - 9-7. Snake... - 10-8. Super Mario...

Nadere informatie

Programmeren in Java les 3

Programmeren in Java les 3 4 september 2015 Deze les korte herhaling vorige week loops methodes Variabelen Soorten variabelen in Java: integer: een geheel getal, bijv. 1,2,3,4 float: een gebroken getal, bijv. 3.1415 double: een

Nadere informatie

DE INTERACTIEVE SHELL

DE INTERACTIEVE SHELL Hoofdstuk2 De interactieve shell 6 Hoofdstuk 2 DE INTERACTIEVE SHELL In dit hoofdstuk behandelen we: Integers (gehele getallen) en getallen met drijvende komma Expressies Waarden Operatoren Het evalueren

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

Informatietechnologie 2. JavaScript. Strings, getallen, datums, arrays en loops. Kristof Michiels

Informatietechnologie 2. JavaScript. Strings, getallen, datums, arrays en loops. Kristof Michiels Informatietechnologie 2 JavaScript Strings, getallen, datums, arrays en loops Kristof Michiels In deze presentatie Strings: methods en properties Getallen Datums Arrays Loops 2 / 48 Strings: methods en

Nadere informatie

VAN HET PROGRAMMEREN. Inleiding. Het spiraalmodel. De programmeertaal. vervolgens de berekening van het totale bedrag, incl. BTW:

VAN HET PROGRAMMEREN. Inleiding. Het spiraalmodel. De programmeertaal. vervolgens de berekening van het totale bedrag, incl. BTW: OVERZICHT VAN HET PROGRAMMEREN Inleiding Als je leert programmeren lijkt het nogal overweldigend om die eerste stappen te doorworstelen. Er zijn dan ook heel wat programmeertalen (Java, Ruby, Python, Perl,

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

Inhoud leereenheid 4. Inleiding JavaScript. Introductie 99. Leerkern 100. Zelftoets 108. Terugkoppeling 109

Inhoud leereenheid 4. Inleiding JavaScript. Introductie 99. Leerkern 100. Zelftoets 108. Terugkoppeling 109 Inhoud leereenheid 4 Inleiding JavaScript Introductie 99 Leerkern 100 1 Leren programmeren in JavaScript 100 2 Chapter 1: Introduction 101 3 Chapter 2, paragrafen 1 t/m 5 102 4 Chapter 2, paragrafen 6

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

assembleertaal F. Vonk versie

assembleertaal F. Vonk versie 2017 assembleertaal F. Vonk versie 1 8-8-2017 inhoudsopgave 1. inleiding... - 3-2. Zeer Eenvoudige Processor v2 (ZEP2)... - 4-3. de code, simulator en geheugen... - 6-4. optellen... - 11-5. vermenigvuldigen...

Nadere informatie

VBA voor Doe het Zelvers deel 20

VBA voor Doe het Zelvers deel 20 VBA voor Doe het Zelvers deel 20 Handleiding van Auteur: leofact Augustus 2015 handleiding: VBA voor Doe het Zelvers deel 20 Vorige aflevering In het vorige deel werd besproken hoe je de structuur en vensteropbouw

Nadere informatie

PROS1E1 Gestructureerd programmeren in C Dd/Kf/Bd

PROS1E1 Gestructureerd programmeren in C Dd/Kf/Bd Inhoudsopgave 1 Inleiding... 1 2 Toekenning- en herhalingsopdrachten (for loop)... 2 2.1 De wet van Ohm... 3 2.2 De spaarrekening... 3 2.3 De transformator... 3 3 Keuze- en herhalingsopdrachten (if, switch,

Nadere informatie

Lab Webdesign: Javascript 11 februari 2008

Lab Webdesign: Javascript 11 februari 2008 H3: HERHALINGSLUSSEN EN LOGICA Om de voorbeelden niet nodeloos lang te maken, zullen we in het vervolg niet altijd de SCRIPT-tags en de HTML-commentaarregels herhalen. Om de JavaScript-opdrachten --de

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

Afhankelijk van wanneer je het programma uitvoert, zie je een van de volgende resultaten:

Afhankelijk van wanneer je het programma uitvoert, zie je een van de volgende resultaten: Hoofdstuk 4 Voorwaarden en vertakkingen Laten we eens teruggaan naar ons eerste programma. Zou het niet leuk zijn als we in plaats van het algemene Hallo wereld, afhankelijk van de tijd van de dag, Goedemorgen

Nadere informatie

Module 3: Scratch programmeren: is het logisch of is het niet logisch?

Module 3: Scratch programmeren: is het logisch of is het niet logisch? Module 3: Scratch programmeren: is het logisch of is het niet logisch? Inhoudsopgave Module 3: Scratch programmeren: is het logisch of is het niet logisch?...1 Wat is een computerprogramma eigenlijk?...2

Nadere informatie

Syntax- (compile), runtime- en logische fouten Binaire operatoren

Syntax- (compile), runtime- en logische fouten Binaire operatoren Inhoud Syntax- (compile), runtime- en logische fouten Binaire operatoren Operaties op numerieke datatypen Evaluatie van expressies, bindingssterkte Assignment operaties en short-cut operatoren Controle

Nadere informatie

Informatie over. 5VWO DT51: JavaLogo. Casper Bezemer. Toetsweek 1 13 oktober 2016

Informatie over. 5VWO DT51: JavaLogo. Casper Bezemer. Toetsweek 1 13 oktober 2016 Informatie over 5VWO DT51: JavaLogo Casper Bezemer Toetsweek 1 13 oktober 2016 1 Informatie Voor toets DT51 wordt jou gevraagd Java(Logo) programma s te schrijven. De eerste opdracht is een Krimpfiguur,

Nadere informatie

Info-books. Toegepaste Informatica. Deel 20 : Algoritmen en programmeren in Access en Excel (Basis) AL20. Jos Gils Erik Goossens

Info-books. Toegepaste Informatica. Deel 20 : Algoritmen en programmeren in Access en Excel (Basis) AL20. Jos Gils Erik Goossens Info-books AL20 Toegepaste Informatica Deel 20 : Algoritmen en programmeren in Access en Excel (Basis) Jos Gils Erik Goossens Hoofdstuk 6 Lusstructuren of iteraties 6.1 Probleemstelling Het gebeurt dikwijls

Nadere informatie

talstelsels F. Vonk versie

talstelsels F. Vonk versie 2016 talstelsels F. Vonk versie 3 29-7-2016 inhoudsopgave 1. inleiding... - 2-2. binair... - 4-3. hexadecimaal... - 9 - intermezzo: RGB... - 12-4. octaal (vwo)... - 17-5. bonus opgaves... - 20-6. wat heb

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

TELEPORTEREN MET VARIABELEN

TELEPORTEREN MET VARIABELEN 2 TELEPORTEREN MET VARIABELEN Ben je zover dat je de kracht van Python kunt gebruiken om jouw Minecraft wereld te beheersen? In dit hoofdstuk krijg je een korte rondleiding langs de basisbegrippen van

Nadere informatie

Scratch les 3: Quiz! Je eigen spelshow

Scratch les 3: Quiz! Je eigen spelshow Scratch les 3: Quiz! Je eigen spelshow Hoeveel weten jouw vriendjes en vriendinnetjes over jouw favoriete onderwerp? Test het met je zelfgemaakte quiz! Ga naar https://scratch.mit.edu/projects/112774047/.

Nadere informatie

De Sense HAT heeft een temperatuursensor waarmee je de temperatuur. #lees de temperatuur van de sensor en sla op als temp

De Sense HAT heeft een temperatuursensor waarmee je de temperatuur. #lees de temperatuur van de sensor en sla op als temp De Astro Pi programmeren De temperatuursensor Mission Zero De Astro Pi is een kleine computer aan boord van het internationale ruimtestation (ISS). En jij kunt deze vanaf jouw computer programmeren! In

Nadere informatie

logische schakelingen & logica

logische schakelingen & logica 2016 logische schakelingen & logica F. Vonk versie 2 14-6-2016 Inhoudsopgave 1. inleiding... - 2-2. optellen... - 3-3. logische poorten... - 6-4. waarheidstabellen... - 8-5. logische schakelingen... -

Nadere informatie

MS Word opzet verslag

MS Word opzet verslag 2014 MS Word opzet verslag F. Vonk versie 1 7-5-2014 inhoudsopgave terminologie... - 3 -... - 5 - stap 1: voorblad toevoegen... - 5 - stap 2: paginanummers op de bladzijdes zetten... - 6 - stap 3: lege

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

Visual Basic.NET. Visual Basic.NET. M. den Besten 0.3 VB. NET

Visual Basic.NET. Visual Basic.NET. M. den Besten 0.3 VB. NET Visual Basic.NET M. den Besten 0.3 VB. NET Inhoud Voorwoord Deel 1 Visual Basic.NET 1.1 Inleiding...13 1.2 De programmeertaal Visual Basic.NET...14 1.3 Microsoft Visual Basic 2010 Express Edition...15

Nadere informatie

Pascal uitgediept Data structuren

Pascal uitgediept Data structuren Pascal uitgediept Data structuren MSX Computer & Club Magazine nummer 68-juni/juli 1994 Herman Post Scanned, ocr ed and converted to PDF by HansO, 2001 In deze aflevering wordt bekeken hoe zelf een datastructuur

Nadere informatie

[7] Variabelen en constanten

[7] Variabelen en constanten [7] Variabelen en constanten We gaan een eenvoudig programma schrijven waarbij we reclame maken voor CoderDojo Dendermonde. Volg mee via 07_VariabelenConstanten.py Dit is wat er moet verschijnen op het

Nadere informatie

Onafhankelijke verzamelingen en Gewogen Oplossingen, door Donald E. Knuth, The Art of Computer Programming, Volume 4, Combinatorial Algorithms

Onafhankelijke verzamelingen en Gewogen Oplossingen, door Donald E. Knuth, The Art of Computer Programming, Volume 4, Combinatorial Algorithms Onafhankelijke verzamelingen en Gewogen Oplossingen, door Donald E. Knuth, The Art of Computer Programming, Volume 4, Combinatorial Algorithms Giso Dal (0752975) Pagina s 5 7 1 Deelverzameling Representatie

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

Modelleren en Programmeren

Modelleren en Programmeren Modelleren en Programmeren Jeroen Bransen 11 december 2015 Ingebouwde datastructuren Meer boomstructuren Access specifiers Gebruikersinvoer Codestijl Packages SAT-solver Ingebouwde datastructuren Ingebouwde

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

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

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

Programmeren (1) Examen NAAM:

Programmeren (1) Examen NAAM: Schrijf al je antwoorden op deze vragenbladen (op de plaats die daarvoor is voorzien) en geef zowel klad als net af. Bij heel wat vragen moet je zelf Java-code schrijven. Hou dit kort en bondig. Je hoeft

Nadere informatie

Variabelen gebruiken in ons programma

Variabelen gebruiken in ons programma Hoofdstuk 3 Variabelen introduceren Variabelen gebruiken in ons programma Het zou leuk zijn als ons programma Hallo kan zeggen met de naam van de gebruiker in plaats van het algemene Hallo wereld?. Als

Nadere informatie

Deel 1: Arduino kennismaking. Wat is een microcontroller, structuur van een programma, syntax,

Deel 1: Arduino kennismaking. Wat is een microcontroller, structuur van een programma, syntax, Deel 1: Arduino kennismaking Wat is een microcontroller, structuur van een programma, syntax, Wat is een microcontroller Wat is een microcontroller? Microcontroller = kleine dedicated computer. - Beperkt

Nadere informatie

{ auteur, toelichting }

{ auteur, toelichting } Programmeren Blok A Trilogie van (programmeer)talen http://www.win.tue.nl/ wstomv/edu/ip0/ College Syntaxis (vormleer): Hoe ziet t eruit, hoe schrijf je t? Tom Verhoeff Technische Universiteit Eindhoven

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

Modelleren en Programmeren

Modelleren en Programmeren Modelleren en Programmeren Jeroen Bransen 13 november 2015 Expressies Functies Ingebouwde functies Variabelenbereik Inleveropgave 1 Terugblik Programma is een lijst van opdrachten Terugblik Programma is

Nadere informatie

II. ZELFGEDEFINIEERDE FUNCTIES

II. ZELFGEDEFINIEERDE FUNCTIES II. ZELFGEDEFINIEERDE FUNCTIES In Excel bestaat reeds een uitgebreide reeks van functies zoals SOM, GEMIDDELDE, AFRONDEN, NU enz. Het is de bedoeling om functies aan deze lijst toe te voegen door in Visual

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

Numerieke benadering van vierkantwortels

Numerieke benadering van vierkantwortels HP Prime Grafische Rekenmachine Numerieke benadering van vierkantwortels Doel: De waarde van een vierkantswortel met een recursieve rij benaderen, het schrijven van een klein programma. Sleutelwoorden:

Nadere informatie

USB Webserver installatie en gebruik

USB Webserver installatie en gebruik 2014 USB Webserver installatie en gebruik F. Vonk versie 2 14-8-2014 Inhoudsopgave 1. Inleiding... - 2-2. Installatie... - 3-3. USB Webserver... - 4-4. De MySQL omgeving... - 5-5. Een PHP script runnen...

Nadere informatie

PWS informatica. F. Vonk versie

PWS informatica. F. Vonk versie 2015 PWS informatica F. Vonk versie 2 3-9-2015 inhoudsopgave 1. inleiding... - 2-2. de ontwerpopdracht... - 3-3. de praktische leeropdracht... - 6-4. de theoretische leeropdracht... - 9 - Dit werk is gelicenseerd

Nadere informatie

logische schakelingen & logica antwoorden

logische schakelingen & logica antwoorden 2017 logische schakelingen & logica antwoorden F. Vonk versie 4 2-8-2017 inhoudsopgave waarheidstabellen... - 3 - logische schakelingen... - 4 - meer over logische schakelingen... - 8 - logica... - 10

Nadere informatie

Meer Blokken. 1. Dit is een functie genaamd Maximum, die twee argumenten heeft: number1 en number2.

Meer Blokken. 1. Dit is een functie genaamd Maximum, die twee argumenten heeft: number1 en number2. Meer Blokken Voorkennis: SuperDojo, Snake Leerdoelen: Meer Blokken Introductie Meer Blokken zijn Scratch s manier van functies. Functies zijn een heel belangrijk concept in alle programmeertalen. Het staat

Nadere informatie

Java. Basissyllabus. Egon Pas

Java. Basissyllabus. Egon Pas Java Basissyllabus Egon Pas 2011 BeanPole bvba Gasmeterlaan 92-9000 Gent BTW BE 472.902.516 Tel: + 32 9 224 42 17 Fax: + 32 9 223 62 88 www.beanpole.be info@beanpole.be 1 Programmeren 1.1 Hoe werkt een

Nadere informatie

JavaScript. 0 - Wat is JavaScript? JavaScript toevoegen

JavaScript. 0 - Wat is JavaScript? JavaScript toevoegen 0 - Wat is JavaScript? JavaScript is hele andere koek dan Scratch. Het wordt ook door professionele programmeurs gebruikt. Doordat er veel mensen gebruik maken van JavaScript is er veel informatie over

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

http://www.liacs.nl/home/kosters/java/

http://www.liacs.nl/home/kosters/java/ sheets Programmeren 1 Java college 2, Walter Kosters De sheets zijn gebaseerd op de hoofdstukken 2 tot en met 6 van: D. Bell en M. Parr, Java voor studenten, Prentice Hall, 2002 http://www.liacs.nl/home/kosters/java/

Nadere informatie

Voor vragen: http://www.richard3332.nl/ of mail naar Richard3332@gmail.com

Voor vragen: http://www.richard3332.nl/ of mail naar Richard3332@gmail.com Welkom bij mijn PHP tutorial (Deel 1) Ik ga in deze delen PHP uitleggen, dit doe ik in het programma notepad++ (gratis) deze kunt u downloaden van www.richard3332.nl/downloads.php Als u beschikt over dreamweaver

Nadere informatie

Rekenen aan wortels Werkblad =

Rekenen aan wortels Werkblad = Rekenen aan wortels Werkblad 546121 = Vooraf De vragen en opdrachten in dit werkblad die vooraf gegaan worden door, moeten schriftelijk worden beantwoord. Daarbij moet altijd duidelijk zijn hoe de antwoorden

Nadere informatie

APP INVENTOR ERVAREN

APP INVENTOR ERVAREN Inhoudsopgave Configuratie Een Beginscherm! Een Minigame maken Een Minigame met lijsten Procedures Controleer Alles! De Score tonen Afsluiten........ Configuratie Wat we behandelen: Hoe we een bestand

Nadere informatie

Cursus Programmeren en Dataverwerking.

Cursus Programmeren en Dataverwerking. Cursus Programmeren en Dataverwerking http://hay.github.io/codecourse Vanavond (18.00-21.30) Introductierondje Algemene introductie (60-90m) Iets over bits en bytes Iets over programmeurs en programmeertalen

Nadere informatie

Het relaas van de beginnende programmeur. Het hoe en waarom van de assistent

Het relaas van de beginnende programmeur. Het hoe en waarom van de assistent Het relaas van de beginnende programmeur Het hoe en waarom van de assistent 1. Help, mijn code doet niks... Mogelijke oplossingen: Heb je op run geduwd (groene pijltje)? Zolang je niet op 'run' duwt, kent

Nadere informatie

SEQUENTIE-STRUCTUUR. Oefening: Dichtheid

SEQUENTIE-STRUCTUUR. Oefening: Dichtheid SEQUETIE-STRUCTUUR Oefening: Dichtheid geef diameter vd bol(m) //Declaratie input variabelen double diameter; double soortmassa; //Declaratie variabelen voor tussenresultaten double volume; diameter //Declaratie

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

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

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

maplev 2010/7/12 14:02 page 15 #17 Nadere detaillering van een aantal zaken van Module 1 Geen,, " ", \, save, read, protect, unprotect

maplev 2010/7/12 14:02 page 15 #17 Nadere detaillering van een aantal zaken van Module 1 Geen,,  , \, save, read, protect, unprotect maplev 2010/7/12 14:02 page 15 #17 Module 2 Het gebruik van Maple, vervolg Onderwerp Voorkennis Expressies Nadere detaillering van een aantal zaken van Module 1 Geen,, " ", \, save, read, protect, unprotect

Nadere informatie

6,1. Samenvatting door een scholier 1809 woorden 28 oktober keer beoordeeld. Informatica

6,1. Samenvatting door een scholier 1809 woorden 28 oktober keer beoordeeld. Informatica Samenvatting door een scholier 1809 woorden 28 oktober 2005 6,1 16 keer beoordeeld Vak Methode Informatica Turing informatica samenvatting. hst3: algoritme:een beschrijving van stappen die gedaan moeten

Nadere informatie

1 Delers 1. 3 Grootste gemene deler en kleinste gemene veelvoud 12

1 Delers 1. 3 Grootste gemene deler en kleinste gemene veelvoud 12 Katern 2 Getaltheorie Inhoudsopgave 1 Delers 1 2 Deelbaarheid door 2, 3, 5, 9 en 11 6 3 Grootste gemene deler en kleinste gemene veelvoud 12 1 Delers In Katern 1 heb je geleerd wat een deler van een getal

Nadere informatie