1. Syntax & controlestructuren
1. Syntax & controlestructuren
Tijdens deze les oefen je op:
- De basis syntax van JavaScript
- Het gebruik van controlestructuren zoals lussen en condities.
- Het gebruik van functies en variabelen.
Syntax, variabelen en voorwaardelijke instructies
Oefening 1
Schrijf een script dat aan gebruikers vraagt om hun naam en voornaam apart in te geven. Vraag daarna aan de gebruiker of de juist correct ingegeven is, toon vervolgens een gepaste boodschap afhankelijk van het gekozen antwoord.
Geef je voornaam in: Sebastiaan
Geef je achternaam in: Henau
Je naam is Sebastiaan Henau
Is dit correct? [y/N] y
Bedankt voor de bevestiging!Geef je voornaam in: Sebastiaan
Geef je achternaam in: dqsfgqgq
Je naam is Sebastiaan dqsfgqgq
Is dit correct? [y/N] n
Sorry voor de verwarring, voer het programma opnieuw uit om je correcte naam in te geven.Oefening 2
Vraag de gebruiker om twee getallen in te geven. Bereken vervolgens de som, het verschil, het product, het quotient en de rest na gehele deling (modulo) van deze getallen. Als de gebruiker op enter drukt zonder iets in te geven moet de defaultwaarde gebruikt worden. Voor het eerste getal is dit 0 en voor het tweede getal 1 (want delen door 0 kan niet).
Geef een eerste getal in: [0] 20
Geef een tweede getal in: [1] 9
De som van 20 en 9 is 29
Het verschil tussen 20 en 9 is 11
Het product van 20 en 9 is 180
Het quotiënt van 20 en 9 is 2.2222222222222223
De rest van de deling van 20 door 9 is 2Oefening 3
Vraag de gebruiker om één getal in te geven, print vervolgens uit of het getal even of oneven is.
Geef een getal in: 20
20 is een even getalGeef een getal in: 13
13 is een oneven getalOefening 4
Schrijf een script dat de gebruiker vraagt om een getal in te geven en afhankelijk van de waarde één van de volgende dingen uitprint.
- Als het getal kleiner is dan 10 print je "Het getal is kleiner dan 10".
- Als het getal groter is dan 20 print je "Het getal is groter dan 20".
- Als het getal tussen 10 en 20 ligt print je het kwadraat[1] uit.
Los deze oefening op met een if-then-else if-else.
Geef een getal in tussen 10 en 20: 5
Dit getal is kleiner dan 10Geef een getal in tussen 10 en 20: 26
Dit getal is groter dan 20Geef een getal in tussen 10 en 20: 15
Het kwadraat van dit getal is 225Oefening 5
Los de vorige oefening opnieuw op, maar gebruik dit keer een switch.
Oefening 6
Schrijf een programma dat uitrekent hoeveel iemand voor een bioscoopkaartje moet betalen.
Het programma vraagt gebruikers om hun leeftijd en beslist dan op basis van volgende regels.
a. Jonger dan 5 jaar: Gratis
b. Tussen 5 en 12 jaar: Halve prijs
c. Tussen 13 en 54 jaar: Vol tarief
d. Ouder dan 54 jaar: Gratis
c. De ingegeven leeftijd kan niet omgevormd worden naar een getal: Foutmelding
⋊> bun exercise6.js
Geef je leeftijd in: 8
Je betaalt je ticket aan halve prijs.
⋊> bun exercise6.js
Geef je leeftijd in: 30
Je krijgt geen korting.
⋊> bun exercise6.js
Geef je leeftijd in: 65
Je ticket is gratis.
⋊> bun exercise6.js
Geef je leeftijd in: Error
Je hebt geen geldige leeftijd ingegeven.Oefening 7
Vraag de gebruiker om drie getallen in te geven, geef vervolgens weer wat de kleinste, grootste en middelste waarde is.
Geef een eerste getal in: [0] 20
Geef een tweede getal in: [0] 49
Geef een derde getal in: [0] 10
Het kleinste getal is 10
Het middelste getal is 20
Het grootste getal is 49Oefening 8
Vraag de gebruiker om hun massa in te geven en om een planeet of maan te kiezen. Bereken vervolgens het gewicht van de gebruiker op de gekozen planeet of maan, hiervoor kan je volgende formule gebruiken:
In bovenstaande vergelijking geeft de valversnelling weer, hieronder vindt je de nodige waardes.
| Planeet/Maan | Valversnelling |
|---|---|
In het geval dat de gebruiker een ongeldige keuze maakt of geen geldige masse opgeeft, geef je een gepaste foutmelding terug.
Geef je massa in: 80
Op welke planeet wil je jouw gewicht berekenen?
A. Maan
B. Jupiter
C. Mars
D. Venus
E. Neptunus
Jouw keuze: A
Jouw gewicht op Maan is 130 NewtonGeef je massa in: 80*
Op welke planeet wil je jouw gewicht berekenen?
A. Maan
B. Jupiter
C. Mars
D. Venus
E. Neptunus
Jouw keuze: C
Je hebt geen geldige planeet gekozen of je opgegeven massa kon niet geconverteerd worden naar een getal.Geef je massa in: 80
Op welke planeet wil je jouw gewicht berekenen?
A. Maan
B. Jupiter
C. Mars
D. Venus
E. Neptunus
Jouw keuze: Z
Je hebt geen geldige planeet gekozen of je opgegeven massa kon niet geconverteerd worden naar een getal.Iteraties
Oefening 9
Neem je oplossing van oefening 1 en herschrijf deze het programma blijft draaien tot je een correcte naam hebt ingegeven.
Geef je voornaam in: Sebastiaan
Geef je achternaam in: Hena
Je naam is Sebastiaan Hena
Is dit correct? [y/N] n
Sorry voor de verwarring, geef je naam opnieuw in.
Geef je voornaam in: Sebastiaan
Geef je achternaam in: Henau
Je naam is Sebastiaan Henau
Is dit correct? [y/N] y
Bedankt voor de bevestiging!Oefening 10
Schrijf een programma dat de gebruiker vraagt om een getal in te lezen en dat vervolgens een overeenkomstig aantal plustekens uitprint.
⨯ bun exercise11.js
Geef een getal in: 11
+++++++++++
⨯ bun exercise11.js
Geef een getal in: 3
+++Oefening 11
Vraag de gebruiker om een getal. Vertrek van het ingegeven getal en tel er 12 bij op zolang de som kleiner blijft dan 100. Print de totale reeks uit in de console.
Geef een getal in: 4
4 16 28 40 52 64 76 88Oefening 12
In een natuurpark zijn 50 leeuwen aanwezig. Het aantal groeit jaarlijks met 15%. Ga na hoelang het duurt vooraleer er meer dan 1000 zijn.
Stel, voordat je de berekening uitvoert, de vraag of dat het jaartal getoond moet worden. Als dit zo is, moet je voor elk jaar uitprinten hoeveel leeuwen er zijn. Als het jaartal niet getoond moet worden, print je de hoeveelheid leeuwen op één lijn achter elkaar uit.
Wil je het aantal jaren zien? [y/N] n
50 57 65 74 85 97 111 127 146 167 192 220 253 290 333 382 439 504 579 665 764 878 1009Wil je het aantal jaren zien? [y/N] y
1: 57
2: 65
3: 74
4: 85
5: 97
6: 111
7: 127
8: 146
9: 167
10: 192
11: 220
12: 253
13: 290
14: 333
15: 382
16: 439
17: 504
18: 579
19: 665
20: 764
21: 878
22: 1009Oefening 13
Het vermoeden van Collatz is een (onbewezen) wiskundig vermoeden dat in 1937 werd geformuleerd door de Duitse wiskundige Lothar Collatz. Het vermoeden stelt dat je, vertrekkende van een willekeurig natuurlijk getal, volgende bewerkingen achter elkaar kunt uitvoeren en dat je dan uiteindelijk altijd bij 1 uitkomt:
- Als het getal even is, deel je het door 2 om het volgende getal te berekenen
- Als het getal oneven is, vermenigvuldig je het met 3 en tel je er 1 bij op om het volgende getal te berekenen
Voor ziet de rij er als volgt uit:
, , , , , , , , ,
Schrijf een programma dat een willekeurig getal inleest en de Collatz-rij genereert voor elk getal kleiner of gelijk aan het ingegeven getal. In onderstaande uitvoer is gebruik gemaakt van een stringmethode om alle getallen exact 5 karakters lang te maken.
Hoeveel rijen moeten geprint worden? 24
2: 2
3: 3 10 5 16 8 4 2
4: 4 2
5: 5 16 8 4 2
6: 6 3 10 5 16 8 4 2
7: 7 22 11 34 17 52 26 13 40 20 10 5 16 8 4 2
8: 8 4 2
9: 9 28 14 7 22 11 34 17 52 26 13 40 20 10 5 16 8 4 2
10: 10 5 16 8 4 2
11: 11 34 17 52 26 13 40 20 10 5 16 8 4 2
12: 12 6 3 10 5 16 8 4 2
13: 13 40 20 10 5 16 8 4 2
14: 14 7 22 11 34 17 52 26 13 40 20 10 5 16 8 4 2
15: 15 46 23 70 35 106 53 160 80 40 20 10 5 16 8 4 2
16: 16 8 4 2
17: 17 52 26 13 40 20 10 5 16 8 4 2
18: 18 9 28 14 7 22 11 34 17 52 26 13 40 20 10 5 16 8 4 2
19: 19 58 29 88 44 22 11 34 17 52 26 13 40 20 10 5 16 8 4 2
20: 20 10 5 16 8 4 2
21: 21 64 32 16 8 4 2
22: 22 11 34 17 52 26 13 40 20 10 5 16 8 4 2
23: 23 70 35 106 53 160 80 40 20 10 5 16 8 4 2
24: 24 12 6 3 10 5 16 8 4 2Functies
Oefening 14
Schrijf drie functies berekenSom, berekenVerschil en berekenProduct. Elk van deze functies heeft twee parameters, getal1 en getal2.
Vraag de gebruiker om twee getallen in te geven en roep vervolgens de drie functies op.
Geef getal1 in [0] 16
Geef getal2 in [0] 7
De ingegeven getallen zijn 16 en 7.
De som is: 23
Het verschil is: 9
Het product is: 112Oefening 15
Schrijf een functie waarmee de tafel van een opgegeven getal berekend en uitgeprint kan worden.
Geef getal [7] 7
1 x 7 = 7
2 x 7 = 14
3 x 7 = 21
4 x 7 = 28
5 x 7 = 35
6 x 7 = 42
7 x 7 = 49
8 x 7 = 56
9 x 7 = 63
10 x 7 = 70Oefening 16
Schijf een functie waarmee een rij gegenereerd kan worden. De functie heeft twee argumenten. De eerste parameter is een startgetal, het tweede argument is een anonieme functie die één getal als invoer krijgt en hier een bewerking op uitvoert (bv. vermenigvuldigen met 2) en het resultaat teruggeeft.
Zolang het laatste element in de rij kleiner is dan 100 moet de rij blijven groeien. Als het laatste element groter is dan 100 moet de functie stoppen en het resultaat teruggeven.
Gebruik de functie om twee rijen te genereren, de eerste rij start bij 1 en vermenigvuldigt elk getal met 2. De tweede rij start bij 2 en neemt telkens het kwadraat van het vorige getal.
Maal 2:
1 2 4 8 16 32 64 128
Kwadraat:
2 4 16 256Oefening 17
Pas bovenstaande opgave aan zodat de functie een derde argument heeft waarmee de stop waarde ingesteld kan worden. De default waarde is 100.
Maal 2 (met default):
1 2 4 8 16 32 64 128
Kwadraat (met de grens op 1000):
2 4 16 256 65536Oefening 18
Voeg nog een laatste uitbreiding toe aan de vorige opgave. Zorg ervoor dan de functie die de bewerking uitvoert twee signaturen kan hebben. De eerste vorm van de functie is diegene die je in de vorige oefeningen gebruikt hebt. De tweede vorm neemt een tweede parameter die de positie in de rij voorstelt.
Gebruik de tweede vorm van de functie om een rij te generen waar er afwisselend 5 opgeteld en 2 afgetrokken wordt.
Maal 2:
1 2 4 8 16 32 64 128
Afwisselend plus 5 en min 2 (grens op 30):
2 7 5 10 8 13 11 16 14 19 17 22 20 25 23 28 26 31Optioneel & uitdagend Oefening 19
De rij van Fibonacci is een rij getallen die begint bij en . Elk volgend getal in de rij is de som van de twee voorgaande getallen.
, , , , , , , , ,
Schrijf een recursieve functie die het -de Fibonacci getal berekent. Een recursieve functie is een functie die zichzelf aanroept. Voor zulke functies is het uitermate belangrijk om een basisgeval/stopconditie te definiëren, anders zal de functie oneindig blijven doorlopen.
function voorbeeldRecursie(parameter) {
if (stopConditie) {
// Basisgeval, kan alles teruggeven behalve een aanroep van deze functie (voorbeeldRecursie).
return ...
}
// Recursieve aanroep, de parameter is iets dat berekend wordt uit de huidige parameter.
return voorbeeldRecursie(nieuweParameter)
}Waarschuwing
Gebruik deze functie niet om een reeks Fibonacci getallen te genereren met meer dan 25 elementen. De recursieve aanpak is zeer inefficient en kan uren duren een zeer veel geheugen gebruiken. Volgende les zullen we een efficiëntere aanpak bespreken.
Welk Fibonacci-getal wil je berekenen? 12
144Welk Fibonacci-getal wil je berekenen? 8
21Welk Fibonacci-getal wil je berekenen? 23
28657Optioneel & uitdagend Oefening 20
De Levenshtein afstand is een maat voor het verschil tussen twee strings en wordt bijvoorbeeld gebruikt in spellcheckers of in fuzzy zoekalgoritmen (zoeken naar matches die niet exact zijn). Op basis van het aantal bewerkingen (invoegen, verwijderen of vervangen van een karakter) dat nodig is om van de ene string naar de andere te gaan, wordt een afstandswaarde berekend.
Schrijf een recursieve functie die de Levenshtein afstand tussen twee strings berekent. Gebruik hiervoor onderstaand algoritme:
Als de eerste string leeg is, is de afstand gelijk aan de lengte van de tweede string (want je moet zoveel karakters invoegen).
Als de tweede string leeg is, is de afstand gelijk aan de lengte van de eerste string (want je moet zoveel karakters verwijderen).
Als geen van beide strings leeg is, vergelijk dan het eerste karakter van beide strings (hiervoor kan je de charAt methode gebruiken):
Als de karakters gelijk zijn, roep de functie dan recursief aan met de rest van beide strings (zonder het eerste karakter). Om de rest te berekenen kan je de substring methode gebruiken.
Als de karakters niet gelijk zijn, bereken dan de afstand voor elk van de drie mogelijke bewerkingen (verwijderen, invoegen, vervangen) en neem de minimumwaarde hiervan plus één (voor de uitgevoerde bewerking). Om de minimumwaarde te berekenen kan je de min methode gebruiken.
- Verwijderen: roep de functie recursief aan met de eerste string zonder het eerste karakter en de volledige tweede string.
- Invoegen: roep de functie recursief aan met de volledige eerste string en de tweede string zonder het eerste karakter.
- Vervangen: roep de functie recursief aan met beide strings zonder het eerste karakter.
Voer de eerste string in: Book
Voer de tweede string in: Film
De Levenshtein afstand tussen "Book" en "Film" is 4.Voer de eerste string in: Thomas More
Voer de tweede string in: JavaScript
De Levenshtein afstand tussen "Thomas More" en "JavaScript" is 10.Je kan het kwadraat berekenen door een getal met zichzelf te vermenigvuldigen, de machtsverheffing operator te gebruiken of via een wiskundige functie. ↩︎