Groepen‎ > ‎Java‎ > ‎Oefeningen - Pure Java‎ > ‎

Logica

Doel
Leer hoe je je programma kunt sturen met behulp van:
  • if/else om code onder bepaalde voorwaarden uit te voeren
  • for en while om code te herhalen
We gaan de papegaai laten tellen. Voor even getallen zetten we een sterretje en voor oneven getallen een hekje. We laten de papegaai ook om getallen vragen tot je 0 ingeeft.

Aan de slag

1. Een for lus schrijven

Om te tellen in Java heb je een for-statement nodig. Voeg eerst een nieuwe methode countTo met een enkele parameter van het type int. Hiermee zullen we tellen tot het getal dat meegegeven werd.

Een nieuwe methode

public class TalkingParrot {
    public void countTo(int number) {

    }
}

Een for-statement schrijf je door het woord for te schrijven gevolgd door 3 statements tussen haakjes.

Het eerste statement is de declaratie van een variabele binnen de lus. Het statement sluit je af met puntkomma.

Het tweede statement is een voorwaarde om de lus uit te voeren. Deze voorwaarde zal aan het begin van de lus geëvalueerd worden. Ook na elke keer de lus uitgevoerd is wordt de voorwaarde geëvalueerd. Zolang de voorwaarde true (waar) is, wordt de lus uitgevoerd. Ook dit statement sluit je af met puntkomma.

Het laatste statement tenslotte is eventuele code die na elke iteratie moet worden uitgevoerd. Na dit statement volgt geen puntkomma meer, maar sluit je af met een haakje toe. Vervolgens schrijf je de code om uit te voeren in de lus tussen accolades { } zoals bij klassen en methodes. Wij willen tellen van 1 tot het getal dat werd meegegeven.

For-statement

public void countTo(int number) {
    for(int i = 1; i <= number; i++) {
        
    }
}
  • int i = 1 ⇒ Maakt een nieuwe variabele aan met naam i van het type int met waarde 1.
  • i <= number ⇒ voer de lus uit zolang i kleiner of gelijk is aan de parameter number.
  • i++ ⇒ tel 1 bij i na elke keer de lus uitgevoerd is, dit is een kortere notatie voor i = i + 1

Om nu het getal i te tonen elke keer de lus uitgevoerd wordt, geef je i mee aan een System.out.println statement:

print i

for(int i = 1; i <= number; i++) {
    System.out.println(i);
}

Voer je code nu uit door een nieuwe
TalkingParrot aan te maken en de methode countTo(int number) uit te voeren met een getal als parameter, bijvoorbeeld 10.

2. Een if voorwaarde

Nu moeten we nog een sterretje (*) voor even nummer tonen en een hekje (#) voor de oneven nummers. Daarvoor hebben we een if-statement nodig. Laten we beginnen met het sterretje. Om te weten of een getal even is, kunnen we het getal delen door 2 en kijken naar de rest van de deling. Is de rest 0, dan is het getal even. De rest van een deling verkrijg je met de operator %. Bijvoorbeeld:
  • 5 % 3 = 2, want 5 gedeeld door 3 is 1 met een rest van 2.
  • 4 % 2 = 0, want 4 gedeeld door 2 is 2 met een rest van 0.
Een if voorwaarde schrijf je na de if tussen haakjes. Om te testen of een waarde gelijk is gebruik je de operator == (een dubbele is gelijk aan, geen enkele!). De code die onder voorwaarde moet worden uitgevoerd schrijf je daarachter tussen accolades { } net zoals bij de for-lus.

if-statement

for(int i = 1; i <= number; i++) {
    if(i % 2 == 0) {
        System.out.print("*");
    }
    System.out.println(i);
}

Probeer je code uit. Nu zie je sterretjes voor alle even cijfers.
Nu moeten we nog hekjes tonen voor de oneven cijfers. Alle cijfers die niet even zijn, zijn per definitie oneven. Vandaar kunnen we handig gebruik maken van een else statement. Een else volgt altijd op een if, en heeft zijn eigen blok van code tussen accolades { }. Het codeblok na de else wordt uitgevoerd als de voorwaarde van het if-statement niet waar is. De voorwaarde van het if statement was een even getal, dus het else blok zal uitgevoerd worden voor elk oneven getal.

else-statement

if(i % 2 == 0) {
    System.out.print("*");
} else {
    System.out.print("#");
}
System.out.println(i);

Voeg nu nog een extra spatie toe voor de i: System.out.println(" " + i);
En dan krijg je dit resultaat!

3. Een while-lus

while is een andere, eenvoudigere manier om code te herhalen dan for. Terwijl for code herhaalt en daarbij een variabele aanpast, herhaalt while gewoon zolang een bepaalde conditie waar is. Laten we de papegaai getallen vragen tot het getal 0 is. Daarvoor gebruiken we de java.util.Scanner die we eerder al gebruikt hebben. Importeer de Scanner met een import statement, en maak een nieuwe methode aan die het getal vraagt.

Scanner

import java.util.Scanner;

public class TalkingParrot {

    public void askCount() {
        Scanner scanner = new Scanner(System.in);
        System.out.println("Geef een getal (0 om te stoppen):");
        System.out.print("> ");
        int number = scanner.nextInt();
        
    }
    ...
}

Om te blijven herhalen, test je of het getal niet 0 is. Een while-lus schrijf je net als een if, met een voorwaarde tussen haakjes en met het woord while in plaats van if. Om te testen of het getal verschillend is van 0, gebruik je de operator !=. Binnen de lus vragen we iedere keer om het volgende getal in te geven en kennen we het toe aan de eerder gedefinieerde variabele number, die door de while-voorwaarde wordt getest. Daarom schrijven we binnen de lus geen int meer voor number.

while-lus

Scanner scanner = new Scanner(System.in);
System.out.println("Geef een getal (0 om te stoppen):");
System.out.print("> ");
int number = scanner.nextInt();
while(number != 0) {
    
    System.out.println("Geef het volgende getal (0 om te stoppen):");
    System.out.print("> ");
    number = scanner.nextInt();
}
System.out.println("Gestopt!");

Roep nu de methode countTo(number) aan binnen de while-lus om tot het opgegeven getal te tellen.

roep countTo aan

while(number != 0) {
    countTo(number);
    System.out.println();
    
    System.out.println("Geef het volgende getal (0 om te stoppen):");
    System.out.print("> ");
    number = scanner.nextInt();
}

En voila! De papegaai blijft tellen tot je 0 opgeeft.

Proficiat! Je hebt geleerd hoe je for- en while-lussen schrijft en code onder voorwaarde uitvoert met if en else.



ą
Jens Baetens,
12 mrt. 2014 11:32
ą
Jens Baetens,
13 mrt. 2014 11:39
ą
Jens Baetens,
13 mrt. 2014 13:08
ą
Jens Baetens,
13 mrt. 2014 13:39
ą
Jens Baetens,
13 mrt. 2014 13:43
Comments