• Vanaf dit hoofdstuk staan er meer oefeningen dan je in één labo kan afwerken. Kies zelf, en sla over wat je al zeker kan.
  • Deze week heb je telkens één lus nodig. Geneste lussen komen in week 2.
  • Tenzij de opgave iets anders zegt, kies je zelf je lus. Weet je vooraf hoe vaak de lus moet draaien, dan is een for de beste keuze. Weet je dat niet, dan kies je een while of een do while (weet je nog het verschil?).
  • Let op continue mag niet, en break enkel in een switch of bij zoek-en-stop (zie het boeteblad). In deze oefeningen heb je geen van beide nodig: de reden om te stoppen hoort in de lusvoorwaarde.
  • Staat er n in een opgave, dan is dat een getal dat je bij de start aan de gebruiker vraagt.
  • In de voorbeelduitvoer begint gebruikersinvoer met >.

Opwarmers 1 (Essential)

Zeven korte oefeningen met een for. Vraag telkens eerst n aan de gebruiker. In de oplossingen staat die vraag er niet bij, enkel de lus.

  • Toon alle natuurlijke getallen van 1 tot en met n. (bv. 1 2 3 4 5 6)

Deze oplossing is afgeschermd.
Studenten krijgen de sleutel van hun lesgever. Heb je de sleutel al eens op dit toestel gebruikt, dan verschijnt de oplossing hier vanzelf.

  • Toon alle natuurlijke getallen van n tot en met 1. (bv. 6 5 4 3 2 1)

Deze oplossing is afgeschermd.
Studenten krijgen de sleutel van hun lesgever. Heb je de sleutel al eens op dit toestel gebruikt, dan verschijnt de oplossing hier vanzelf.

  • Toon alle even getallen van 1 tot en met 100. (2 4 6 … 100)

Deze oplossing is afgeschermd.
Studenten krijgen de sleutel van hun lesgever. Heb je de sleutel al eens op dit toestel gebruikt, dan verschijnt de oplossing hier vanzelf.

  • Toon alle oneven getallen van 1 tot en met 100. (1 3 5 … 99)

Deze oplossing is afgeschermd.
Studenten krijgen de sleutel van hun lesgever. Heb je de sleutel al eens op dit toestel gebruikt, dan verschijnt de oplossing hier vanzelf.

  • Toon de som van alle getallen van 1 tot en met n (dus 1 + 2 + 3 + … + n).

Deze oplossing is afgeschermd.
Studenten krijgen de sleutel van hun lesgever. Heb je de sleutel al eens op dit toestel gebruikt, dan verschijnt de oplossing hier vanzelf.

  • Toon de som van alle even getallen van 1 tot en met n. Typt de gebruiker 7, dan verschijnt er 12 (2 + 4 + 6).

Deze oplossing is afgeschermd.
Studenten krijgen de sleutel van hun lesgever. Heb je de sleutel al eens op dit toestel gebruikt, dan verschijnt de oplossing hier vanzelf.

  • Toon de som van alle oneven getallen van 1 tot en met n.

Deze oplossing is afgeschermd.
Studenten krijgen de sleutel van hun lesgever. Heb je de sleutel al eens op dit toestel gebruikt, dan verschijnt de oplossing hier vanzelf.

  • “Tot en met n” betekent i <= n. Met i < n mis je de laatste waarde: een off-by-one-fout, dé klassieker bij loops. Twijfel je, test dan met een kleine n zoals 3 en tel na.
  • Een som maak je aan vóór de lus. Binnen de lus zou ze elke ronde terug op 0 springen.
  • Bij aftellen draai je ook de test om: i >= 1. Met i <= 1 start de lus nooit.

Trace de teller (Essential)

Voer onderstaande stukjes code nog niet uit. Maak voor stukje 1, 2 en 3 eerst op papier een tabel zoals in While: de waarde van de teller bij de test, de uitkomst van de test, en wat er op het scherm komt. Voor stukje 4, 5 en 6 volstaat het om op te schrijven wat er verschijnt.

1.

int teller = 0;
while (teller < 4)
{
    teller++;
    Console.Write(teller + " ");
}

2.

int i = 5;
do
{
    i--;
    Console.Write(i + " ");
} while (i > 2);

3.

for (int j = 20; j > 0; j -= 4)
{
    Console.Write(j + " ");
}

4.

for (int k = 1; k <= 3; k++)
{
    int som = 0;
    som += k;
    Console.Write(som + " ");
}

5.

int rij = 0;
int kolom = 0;
while (rij < 3)
{
    rij++;
    while (kolom < 3)
    {
        kolom++;
        Console.Write("*");
    }
    Console.WriteLine("|");
}

6. Hoeveel keer verschijnt Hallo?

for (int a = 0; a < 4; a++)
{
    for (int b = 0; b < a; b++)
    {
        Console.Write("Hallo ");
    }
}

Voer daarna elk stukje uit en vergelijk met wat je opschreef. Klopt het niet, zoek dan eerst zelf waar je redenering fout liep.

Deze oplossing is afgeschermd.
Studenten krijgen de sleutel van hun lesgever. Heb je de sleutel al eens op dit toestel gebruikt, dan verschijnt de oplossing hier vanzelf.

Tafels van vermenigvuldigen 1

Gebruik de kracht van loops om pijlsnel de tafel van vermenigvuldigen van een getal naar keuze op het scherm te tonen: bijvoorbeeld 1 x 7, 2 x 7, tot en met 10 x 7.

Van welk getal wil je de tafel?
>7
1 x 7 = 7
2 x 7 = 14
...
10 x 7 = 70

Deze oplossing is afgeschermd.
Studenten krijgen de sleutel van hun lesgever. Heb je de sleutel al eens op dit toestel gebruikt, dan verschijnt de oplossing hier vanzelf.

Euler project (Essential)

Maak volgende opdracht, naar een opgave van projecteuler.net:

Als we alle natuurlijke getallen van 0 tot en met 10 oplijsten die een veelvoud van 3 of 5 zijn, dan krijgen we de getallen 3, 5, 6, 9 en 10. De som van deze 5 getallen is 33.

Maak nu een programma dat de som toont van alle veelvouden van 3 of 5 van 0 tot en met 1000. Dat moet 234168 geven.

Tip

De modulo-operator (%) is je grote held hier. Een getal is een veelvoud van x als getal % x 0 als resultaat geeft.

Deze oplossing is afgeschermd.
Studenten krijgen de sleutel van hun lesgever. Heb je de sleutel al eens op dit toestel gebruikt, dan verschijnt de oplossing hier vanzelf.

Kies de loop

Zonder code dit keer. Welke lus kies je in onderstaande situaties: for, while of do while? Schrijf bij elke situatie één zin waarom.

  1. Een wachtwoord vragen tot de gebruiker het juiste intypt.
  2. De 12 maanden van het jaar overlopen en elk op het scherm tonen.
  3. Aftellen van 10 tot 0 voor een raket vertrekt.
  4. Een dobbelsteen gooien tot er een zes valt.
  5. Een menu tonen, en het blijven tonen tot de gebruiker q kiest.
  6. Getallen optellen die de gebruiker intypt, tot hij 0 typt.
  7. Alle getallen van 1 tot en met n tonen die deelbaar zijn door 7.
  8. Een spaarrekening krijgt elk jaar 3% intrest. Na hoeveel jaar is het bedrag verdubbeld?

Deze oplossing is afgeschermd.
Studenten krijgen de sleutel van hun lesgever. Heb je de sleutel al eens op dit toestel gebruikt, dan verschijnt de oplossing hier vanzelf.

Afsluitwaarden

Acht oefeningen waarin de gebruiker waarden blijft invoeren tot hij een afsluitwaarde typt.

Tip

Met een afsluitwaarde bedoelen we een waarde die de gebruiker intypt om te stoppen. Zolang de gebruiker die afsluitwaarde NIET intypt, blijft het programma om nieuwe waarden vragen. De afsluitwaarde zelf telt niet mee.

  • Lees getallen in tot de gebruiker 0 typt. Toon daarna de som.

Deze oplossing is afgeschermd.
Studenten krijgen de sleutel van hun lesgever. Heb je de sleutel al eens op dit toestel gebruikt, dan verschijnt de oplossing hier vanzelf.

  • Lees getallen in tot de gebruiker 0 typt. Toon hoeveel getallen strikt positief waren, en hoeveel strikt negatief.

Deze oplossing is afgeschermd.
Studenten krijgen de sleutel van hun lesgever. Heb je de sleutel al eens op dit toestel gebruikt, dan verschijnt de oplossing hier vanzelf.

  • Lees getallen in tot de gebruiker -32768 typt. Toon hoeveel getallen strikt positief waren, hoeveel strikt negatief, en hoeveel gelijk aan nul.

Deze oplossing is afgeschermd.
Studenten krijgen de sleutel van hun lesgever. Heb je de sleutel al eens op dit toestel gebruikt, dan verschijnt de oplossing hier vanzelf.

  • Lees getallen in tot de gebruiker 0 typt. Toon het product van de getallen.

Deze oplossing is afgeschermd.
Studenten krijgen de sleutel van hun lesgever. Heb je de sleutel al eens op dit toestel gebruikt, dan verschijnt de oplossing hier vanzelf.

  • Lees positieve getallen in tot de gebruiker een negatief getal typt. Toon het (afgekapte) gemiddelde van de positieve getallen.

Deze oplossing is afgeschermd.
Studenten krijgen de sleutel van hun lesgever. Heb je de sleutel al eens op dit toestel gebruikt, dan verschijnt de oplossing hier vanzelf.

  • Lees getallen in tot de gebruiker -32768 typt. Toon het kleinste getal en hoe vaak het voorkwam. Typt de gebruiker 3, 2, 1, 2, 3, 1, 4, 5, 1, 2 en dan -32768, dan is het kleinste getal 1, en het kwam 3 keer voor.

Deze oplossing is afgeschermd.
Studenten krijgen de sleutel van hun lesgever. Heb je de sleutel al eens op dit toestel gebruikt, dan verschijnt de oplossing hier vanzelf.

  • Een reeks getallen in stijgende volgorde wordt ingelezen. De invoer stopt zodra er een getal kleiner is dan het vorige.

Deze oplossing is afgeschermd.
Studenten krijgen de sleutel van hun lesgever. Heb je de sleutel al eens op dit toestel gebruikt, dan verschijnt de oplossing hier vanzelf.

  • Een reeks getallen wordt ingelezen. De invoer stopt wanneer er twee keer na elkaar een nul ingelezen wordt. Toon daarna het gemiddelde van de getallen. De twee laatste nullen tellen niet mee, een losse nul midden in de reeks wel.
Geef een getal:
>5
Geef een getal:
>0
Geef een getal:
>3
Geef een getal:
>0
Geef een getal:
>0
Het gemiddelde is 2,67.

Deze oplossing is afgeschermd.
Studenten krijgen de sleutel van hun lesgever. Heb je de sleutel al eens op dit toestel gebruikt, dan verschijnt de oplossing hier vanzelf.

  • Bijna al deze oefeningen zijn een do while: je moet eerst iets inlezen voor je kan testen of het de afsluitwaarde is. Met een while moet je de vraag dan twee keer in je code zetten, of een kunstmatige beginwaarde verzinnen. Zie Waarom hier een do while en geen while?
  • De variabele in de lusvoorwaarde (getal) maak je aan vóór de do. Anders bestaat ze niet meer bij de test achteraan.
  • Test altijd met een gebruiker die meteen de afsluitwaarde typt. Crasht je programma dan, of toont het onzin?

Lijnen in volgorde

Deze lijnen code horen bij een programma dat getallen inleest tot de gebruiker 0 typt, en dan het gemiddelde toont. Ze zijn door elkaar geraakt, en de accolades zijn weg. Bovendien is er één lijn bij geslopen die er niet in thuishoort.

som += getal;
Console.WriteLine($"Het gemiddelde is {(double)som / aantal}");
int getal = int.Parse(Console.ReadLine());
while (getal != 0)
int aantal = 0;
break;
Console.WriteLine("Geef een getal (0 om te stoppen):");
getal = int.Parse(Console.ReadLine());
if (aantal > 0)
aantal++;
int som = 0;
Console.WriteLine("Geef een getal (0 om te stoppen):");

Zet de lijnen in de juiste volgorde, met accolades erbij, zodat het programma dit toont:

Geef een getal (0 om te stoppen):
>4
Geef een getal (0 om te stoppen):
>5
Geef een getal (0 om te stoppen):
>0
Het gemiddelde is 4,5

Welke lijn is de indringer, en waarom heb je ze niet nodig? Doe het eerst op papier en test daarna in Visual Studio, ook eens met meteen een 0.

Deze oplossing is afgeschermd.
Studenten krijgen de sleutel van hun lesgever. Heb je de sleutel al eens op dit toestel gebruikt, dan verschijnt de oplossing hier vanzelf.

Zonder break (Essential)

Een programma dat getallen optelt tot de gebruiker 0 typt: stagiair Steven liet het schrijven door een A.I. Negatieve getallen tellen niet mee. De code werkt:

int som = 0;
while (true)
{
    Console.WriteLine("Geef een getal (0 om te stoppen):");
    int getal = int.Parse(Console.ReadLine());
    if (getal == 0)
    {
        break;
    }
    if (getal < 0)
    {
        Console.WriteLine("Negatieve getallen tellen niet mee.");
        continue;
    }
    som += getal;
}
Console.WriteLine($"De som is {som}.");

Toch kost ze in jaar 1 punten: een while (true) waar je enkel met break uit geraakt, en een continue (zie het boeteblad). Wie deze code leest, ziet in de lusvoorwaarde niet wanneer de lus stopt.

Herschrijf de code zonder break en zonder continue, met exact dezelfde uitvoer. Test beide versies met 5, -3, 2 en 0: allebei tonen ze De som is 7.

Deze oplossing is afgeschermd.
Studenten krijgen de sleutel van hun lesgever. Heb je de sleutel al eens op dit toestel gebruikt, dan verschijnt de oplossing hier vanzelf.

Code van een A.I. staat vaak vol break en continue: in veel talen en projecten is dat gewoon. Het boeteblad verbiedt ze niet omdat ze fout zijn, maar omdat je eerst moet leren een lus te schrijven die vanzelf stopt. Kan je de reden om te stoppen in één zin zeggen, dan hoort die zin in de lusvoorwaarde.

Stevens menulus (Essential)

Steven moet een menu schrijven dat blijft vragen tot de gebruiker a, b of c typt. Dit leverde zijn A.I.:

string keuze = "";
while (keuze != "a" || keuze != "b" || keuze != "c");
{
    Console.WriteLine("Kies a, b of c:");
    keuze = Console.ReadLine();
}
Console.WriteLine($"Je koos {keuze}.");

Deel 1. Voer de code nog niet uit. Wat verwacht je dat er gebeurt als je ze start? Er zitten twee fouten in. Zoek ze op papier, en voer de code pas daarna uit om je voorspelling te controleren. (Stop het programma met de rode stop-knop in Visual Studio.)

Deze oplossing is afgeschermd.
Studenten krijgen de sleutel van hun lesgever. Heb je de sleutel al eens op dit toestel gebruikt, dan verschijnt de oplossing hier vanzelf.

Deel 2. Steven ziet in dat de vraag minstens één keer gesteld moet worden, en herschrijft het als do while. Hij haalt ook de puntkomma weg en draait de test om met De Morgan:

do
{
    Console.WriteLine("Kies a, b of c:");
    string keuze = Console.ReadLine();
} while (keuze != "a" && keuze != "b" && keuze != "c");
Console.WriteLine($"Je koos {keuze}.");

Nu compileert het niet. Lees de foutmelding en herstel de code.

Deze oplossing is afgeschermd.
Studenten krijgen de sleutel van hun lesgever. Heb je de sleutel al eens op dit toestel gebruikt, dan verschijnt de oplossing hier vanzelf.

  • Een lusvoorwaarde zegt wanneer je doorgaat, niet wanneer je stopt. Bedenk eerst wanneer de invoer goed is, en draai dat daarna om. Zie Foute input van gebruiker met loops verwerken.
  • Een puntkomma hoort enkel achteraan een do while, nooit achter if (...), while (...) of for (...).
  • De test van een do while staat buiten de accolades. Wat je erin test, moet je vóór de do aanmaken.

Boekhouder (Essential)

Maak een boekhoudprogramma. De gebruiker typt positieve en negatieve getallen, telkens gevolgd door enter. Het programma stopt met vragen wanneer de gebruiker q typt. Na elke invoer, en op het einde nog eens, toont het:

  • De balans: de som van alle ingevoerde getallen. Typte de gebruiker 4, -10 en 8, dan staat de balans op 2.
  • De som van de negatieve getallen. Bij 4, -10, 8 en -6 is dat -16.
  • De som van de positieve getallen. Bij 4, -10, 8 en -6 is dat 12.
  • Het gemiddelde van alle ingevoerde getallen, als kommagetal.
Geef een getal (q om te stoppen):
>4
Balans: 4, positief: 4, negatief: 0, gemiddelde: 4
Geef een getal (q om te stoppen):
>-10
Balans: -6, positief: 4, negatief: -10, gemiddelde: -3
Geef een getal (q om te stoppen):
>8
Balans: 2, positief: 12, negatief: -10, gemiddelde: 0,6666666666666666
Geef een getal (q om te stoppen):
>q

EINDRAPPORT
Balans: 2
Som van de positieve getallen: 12
Som van de negatieve getallen: -10
Gemiddelde: 0,6666666666666666

Test ook wat er gebeurt als de gebruiker meteen q typt.

Deze oplossing is afgeschermd.
Studenten krijgen de sleutel van hun lesgever. Heb je de sleutel al eens op dit toestel gebruikt, dan verschijnt de oplossing hier vanzelf.

Loops-a-volonté

Twaalf losse oefeningen om je lussen te drillen. Beide grenzen zijn steeds inbegrepen!

  • Toon alle Unicode-tekens en hun waarde van 10 tot en met n. Tip: Convert.ToChar(65) geeft de hoofdletter A. Sommige tekens, zeker de eerste, zijn onzichtbaar en tonen dus niets.

Deze oplossing is afgeschermd.
Studenten krijgen de sleutel van hun lesgever. Heb je de sleutel al eens op dit toestel gebruikt, dan verschijnt de oplossing hier vanzelf.

  • Toon het alfabet van a tot en met z.

Deze oplossing is afgeschermd.
Studenten krijgen de sleutel van hun lesgever. Heb je de sleutel al eens op dit toestel gebruikt, dan verschijnt de oplossing hier vanzelf.

  • Vraag een getal en een macht, en toon het getal tot die macht. 2 en 4 geeft 16. Math.Pow mag niet: vermenigvuldig zelf, met een lus.

Deze oplossing is afgeschermd.
Studenten krijgen de sleutel van hun lesgever. Heb je de sleutel al eens op dit toestel gebruikt, dan verschijnt de oplossing hier vanzelf.

  • Toon alle delers van n: de getallen waardoor je n kan delen zonder rest. De delers van 100 zijn 1, 2, 4, 5, 10, 20, 25, 50 en 100.

Deze oplossing is afgeschermd.
Studenten krijgen de sleutel van hun lesgever. Heb je de sleutel al eens op dit toestel gebruikt, dan verschijnt de oplossing hier vanzelf.

  • Toon de eerste n getallen van de reeks van Fibonacci: 0 1 1 2 3 5 8 13 … Elk getal is de som van de twee vorige.

Deze oplossing is afgeschermd.
Studenten krijgen de sleutel van hun lesgever. Heb je de sleutel al eens op dit toestel gebruikt, dan verschijnt de oplossing hier vanzelf.

  • Tel het aantal cijfers van een getal. 12348 heeft er 5.

Deze oplossing is afgeschermd.
Studenten krijgen de sleutel van hun lesgever. Heb je de sleutel al eens op dit toestel gebruikt, dan verschijnt de oplossing hier vanzelf.

  • Toon de som van de kwadraten van de even getallen van 50 tot en met 100.

Deze oplossing is afgeschermd.
Studenten krijgen de sleutel van hun lesgever. Heb je de sleutel al eens op dit toestel gebruikt, dan verschijnt de oplossing hier vanzelf.

  • Lees 10 getallen in. Toon van de positieve getallen hoeveel er deelbaar waren door 2, hoeveel door 3 en hoeveel door 6.

Deze oplossing is afgeschermd.
Studenten krijgen de sleutel van hun lesgever. Heb je de sleutel al eens op dit toestel gebruikt, dan verschijnt de oplossing hier vanzelf.

  • Toon de som van de eerste 20 termen van deze reeksen:
    • 6 + 12 + 18 + 24 + …
    • 1 + 2 + 4 + 8 + …
    • 1 + 1/2 + 1/4 + 1/8 + …
    • 1 + 1/3 + 1/5 + 1/7 + …

Deze oplossing is afgeschermd.
Studenten krijgen de sleutel van hun lesgever. Heb je de sleutel al eens op dit toestel gebruikt, dan verschijnt de oplossing hier vanzelf.

  • Toon alle getallen tot en met 100 die een veelvoud van 3 zijn én oneven.

Deze oplossing is afgeschermd.
Studenten krijgen de sleutel van hun lesgever. Heb je de sleutel al eens op dit toestel gebruikt, dan verschijnt de oplossing hier vanzelf.

  • Toon de som van 9 + 99 + 999 + 9999 + 99999 + 999999, met een lus uiteraard.

Deze oplossing is afgeschermd.
Studenten krijgen de sleutel van hun lesgever. Heb je de sleutel al eens op dit toestel gebruikt, dan verschijnt de oplossing hier vanzelf.

  • Toon de eerste n termen van de harmonische reeks, en daarna hun som. De laatste + mag je gewoon laten staan:
Hoeveel termen?
>5
1/1 + 1/2 + 1/3 + 1/4 + 1/5 + 
Som = 2,283333

Deze oplossing is afgeschermd.
Studenten krijgen de sleutel van hun lesgever. Heb je de sleutel al eens op dit toestel gebruikt, dan verschijnt de oplossing hier vanzelf.

RNA Transcriptie (Essential)

Bij transcriptie wordt DNA omgezet naar RNA. Schrijf een programma dat een DNA-string van 12 letters omzet naar de bijhorende RNA-string. De gebruiker typt telkens één letter (een nucleotide) en drukt op enter. Na 12 geldige letters stopt het programma en toont het beide strings.

De omzetting:

  • G wordt C
  • C wordt G
  • T wordt A
  • A wordt U

Typt de gebruiker ACGTGGTCTTAA, dan is het resultaat UGCACCAGAAUU.

Laat beide strings groeien met +=. Typt de gebruiker een letter die niet bestaat, dan toon je een melding en vraag je opnieuw. Die letter telt niet mee.

Geef een nucleotide (G, C, T of A):
>A
Geef een nucleotide (G, C, T of A):
>x
Onbekende letter. Probeer opnieuw.
Geef een nucleotide (G, C, T of A):
>C
...
DNA: ACGTGGTCTTAA
RNA: UGCACCAGAAUU

Deze oplossing is afgeschermd.
Studenten krijgen de sleutel van hun lesgever. Heb je de sleutel al eens op dit toestel gebruikt, dan verschijnt de oplossing hier vanzelf.

De Casting Call (Final Essentials)

Jij bent de regisseur van de volgende grote Hollywood-blockbuster. Vandaag houd je een casting call om de hoofdrolspeler te vinden. Schrijf een programma dat dit auditieproces beheert.

  1. Start de auditie: het programma vraagt de naam van de kandidaat, en blijft dat doen tot de gebruiker als naam STOP intypt.
  2. Beoordeling:
    • Vraag voor elke kandidaat een auditiescore (een geheel getal van 0 tot en met 10).
    • Is de score lager dan 7? Toon: “Helaas [Naam], je rol is uitgeknipt.”
    • Is de score 7 of hoger? Toon: “Proficiat [Naam], je bent door naar de screentest!”
  3. De statistieken:
    • Houd bij hoeveel acteurs er door zijn naar de screentest.
    • Houd bij wie de beste auditie van de dag had (de hoogste score). Onthoud zowel de naam als de score. Bij een gelijke score blijft de eerste kandidaat de beste.
  4. De aftiteling: na STOP toon je een samenvatting:
    • Het aantal acteurs dat de screentest haalde.
    • De naam en de score van de beste acteur van de dag.
    • Kwam er niemand opdagen, dan toon je dat.
Naam van de kandidaat (STOP om te eindigen):
>Leonardo
Auditiescore (0 tot en met 10):
>9
Proficiat Leonardo, je bent door naar de screentest!
Naam van de kandidaat (STOP om te eindigen):
>Meryl
Auditiescore (0 tot en met 10):
>6
Helaas Meryl, je rol is uitgeknipt.
Naam van de kandidaat (STOP om te eindigen):
>STOP

Aantal acteurs door naar de screentest: 1
De rol gaat waarschijnlijk naar Leonardo met een topscore van 9/10!
Tip

Je hebt variabelen nodig die buiten je lus gemaakt worden om de beste naam en de hoogste score tot nu toe te onthouden. Bij elke nieuwe score die hoger is dan je huidige maximum, werk je ze allebei bij.

Deze oplossing is afgeschermd.
Studenten krijgen de sleutel van hun lesgever. Heb je de sleutel al eens op dit toestel gebruikt, dan verschijnt de oplossing hier vanzelf.

Schaak-elo met loop

Een bonusoefening die verderbouwt op de Elo-oefeningen uit hoofdstuk 4 en 5.

Zorg ervoor dat je Elo-programma blijft werken:

  1. De gebruiker geeft zijn eigen Elo-rating op.
  2. Een lus vraagt telkens de rating van de tegenstander en daarna de uitslag: A (jij won), B (je tegenstander won) of D (draw, gelijkspel). Typt de gebruiker iets anders, dan telt het als een gelijkspel. Na elke partij verschijnt de nieuwe rating van de gebruiker.
  3. Geeft de gebruiker een negatieve rating op voor zijn tegenstander, dan stopt de lus.
Wat is je Elo-rating?
>1000
Rating van je tegenstander (negatief om te stoppen):
>1100
Wie won? A (jij), B (je tegenstander) of D (draw)
>A
Je nieuwe rating is 1006.
Rating van je volgende tegenstander (negatief om te stoppen):
>-1
Je eindigt met een rating van 1006.

Deze oplossing is afgeschermd.
Studenten krijgen de sleutel van hun lesgever. Heb je de sleutel al eens op dit toestel gebruikt, dan verschijnt de oplossing hier vanzelf.

Armstrong nummer (PRO)

Een getal is een narcistisch getal of armstronggetal als het de som is van zijn eigen cijfers, elk tot de macht verheven van het aantal cijfers.

  • 9 is een Armstrong-nummer, want 9 = 9^1 = 9
  • 10 is geen Armstrong-nummer, want 10 != 1^2 + 0^2 = 1
  • 153 is een Armstrong-nummer, want 153 = 1^3 + 5^3 + 3^3 = 1 + 125 + 27 = 153
  • 154 is geen Armstrong-nummer, want 154 != 1^3 + 5^3 + 4^3 = 1 + 125 + 64 = 190

Schrijf een programma dat de gebruiker een getal vraagt en toont of het een Armstrong-nummer is.

Tip

Je zou het getal als tekst kunnen opsplitsen in losse tekens, maar volg de wiskundige weg: zo leer je werken met lussen en rekenen.

  1. Tel eerst hoeveel cijfers het getal heeft, zoals in Loops-a-volonté.
  2. Pel daarna de cijfers er van rechts af. Neem je 4563, dan geeft 4563 % 10 het laatste cijfer, 3, en 4563 / 10 geeft 456: de rest van het getal. Herhaal tot er niets meer overblijft.

Deze oplossing is afgeschermd.
Studenten krijgen de sleutel van hun lesgever. Heb je de sleutel al eens op dit toestel gebruikt, dan verschijnt de oplossing hier vanzelf.