You are on page 1of 26

Ga alvast naar https://kahoot.it en neem deel met pincode …………..

oktober 2020

Ir. Karel J. van der Lelij

METHODEN 2 (RETURN TYPE)


Programming les 6
Online etiquette
• Professioneel – Voor lessen in een online omgeving wordt hetzelfde gedrag van de student gevraagd als
in een fysiek klaslokaal (professioneel, zakelijk en respectvol).
• Functioneel – De chat wordt functioneel gebruikt. Er worden dus geen onnodige en privé-berichten door
studenten geplaatst.
• Taalgebruik – Tijdens de les wordt net, correct en zakelijk taalgebruik gehanteerd (zowel via chat als
microfoon).
• Instructies – De docent leidt de online les en geeft de nodige instructie. Aan deze instructies wordt
gehoor gegeven door de studenten.
• Microfoon – De microfoon staat standaard op gedempt / mute. Als de docent een reactie vraagt van de
student, wordt de microfoon aangezet.
• Webcam – De webcam staat in principe uit tenzij de docent vraagt deze aan te zetten. Zorg voor een
professionele, zakelijke uitstraling van jezelf en zorg voor een rustige en gepaste omgeving en
achtergrond.
• Privacy – Het is niet toegestaan online lessen op te nemen of screenshots te nemen zonder toestemming
van de docent. Ook is het niet toegestaan om dit voor ongepaste en privédoeleinden te gebruiken
Introductie
• We negeren negatief gedrag
• We stimuleren en bevestigen positief gedrag
• Tim en ik concentreren ons dus op de inhoud

3
Terugblik

public static void main (String [] args) { De code wordt herhaald


zolang de conditie waar is
Het keyword Scanner scanner = new Scanner (System.in); (soms dus niet eens één
while geeft aan String woord = scanner.nextLine (); keer)
dat alles tussen
de accolades
herhaald wordt while (woord.equals ("herhaling")) {
System.out.println (“Dit is herhaling! Probeer het nog eens");
Zodra de conditie woord = scanner.nextLine ();
Het is belangrijk dat er
niet waar is gaat } minimaal één regel binnen
het programma
de loop is waarin een
verder op de
System.out.println (“Finish!"); variabele aangepast wordt
regel na de
die in de conditie staat
sluitaccolade }

4
Methoden met een resultaat
• Een methode doet een bepaalde subtaak voor een andere methode
• Zoals we weten geef je soms informatie aan een methode mee (parameters)
• Het is ook mogelijk informatie terug te geven
− Dat gebeurt met het keyword return
• De waarde die terugkomt kan je opslaan / afdrukken / mee doorrekenen etc.

5
Het aanroepen van een
methode is eigenlijk hetzelfde:
• De naam
• Gevolgd door (); met
Methode gebruik: interpreteren eventuele parameters

public static void main (String[] args) {


In de aanroepende methode
int beginbedrag = 9900000;
mag je vervolgens de aanroep
int rente = 2;
‘vervangen’ door het ‘resultaat’
int jaar = 5;
Hier gebruiken we dat de methode teruggeeft.
String naam = "Willem-Alexander";
het resultaat (een
int eindbedrag = berekenBedrag (beginbedrag, rente, jaar);
boolean) als conditie
if (checkVermogen (eindbedrag)) {
Hier slaan we het resultaat (een int) op
System.out.println (welkomstboodschap (naam, eindbedrag));
Uiteraard moeten de
}
types met elkaar
}
kloppen (je kan
bijvoorbeeld geen
boolean resultaat in
een int opslaan etc.) Hier drukken we het resultaat
(een String) af op het scherm
6
Methode gebruik: interpreteren

public static void main (String[] args) {


int beginbedrag = 9900000;
int rente = 2;
int jaar = 5;
String naam = "Willem-Alexander";
int eindbedrag = berekenBedrag (beginbedrag, rente, jaar);

if (checkVermogen (eindbedrag)) {
String boodschap = welkomstboodschap (naam, eindbedrag);
System.out.println (boodschap);
}
}

7
Je kunt het
resultaat van een
methode meteen
als parameter
Methode gebruik: interpreteren gebruiken
(NB: alleen een
parameter
helemaal aan het
public static void main(String[] args) { einde)
checkVermogen (berekenBedrag (1000, 1, 10));
}
=

public static void main(String[] args) {


Is dit teveel in één
keer? Neem dan
int vermogen = berekenBedrag (1000, 1, 10);
de tussenstap en checkVermogen (vermogen);
sla het resultaat
van de methode op
}
in een variabele
Een methode kan zelfs
parameter zijn bij zichzelf.
Hier wordt de binnenste (zie
Methode gebruik: interpreteren pijl) het eerst geëvalueerd.

public static void main (String[] args) {


int bedrag = berekenBedrag (
berekenBedrag(1000, 2, 4),
3, Teveel ineens?
Sla het resultaat op in een
5); variabele
} =

public static void main (String[] args) {


int subtotaal = berekenBedrag (1000, 2, 4);
int bedrag = berekenBedrag (subtotaal, 3, 5);
}
… of je kunt twee
uitkomsten van
dezelfde methode met
Methode gebruik: interpreteren elkaar vergelijken.

public static void main(String[] args) {


if (berekenBedrag(500, 3, 5) < berekenBedrag(500, 2, 6)){
// doe iets
} =
}

public static void main(String[] args) {


int bedrag1 = berekenBedrag (500, 3, 5);
NB: een methode int bedrag2 = berekenBedrag (500, 2, 6);
met return-type
heeft precies één if (bedrag1 < bedrag2){
resultaat. Helaas // doe iets
niet meer
}
}
Return types
• Een methode herken je aan public static gevolgd door het return-type de
naam en de parameters tussen haakjes:
public static <return type> <naam>(<parameters>)
• Mogelijke return-types zijn:
− void: de methode heeft geen resultaat
− Variabele types: het resultaat dat wordt opgeleverd heeft dat type
− int
− boolean
− String
− Etc.

11
Methode definitie: dicteren &
interpreteren

public static int berekenBedrag (int beginbedrag, int rente, int jaar) {
int eindbedrag = beginbedrag;
int teller = 1;

while (teller <= jaar) {


eindbedrag = eindbedrag + ((eindbedrag * rente) / 100);
• Public static boolean checkVermogen ‘haakje
teller++; • Public static int berekenBedrag
String ‘haakje ‘haakje
welkomstboodschap
openen’ … ‘haakje sluiten’ ‘accolade openen’
}
openen’ … ‘haakje sluiten’ ‘accolade openen’
• Deze methode heeft een boolean als return-
• Deze methode heeft een int als return-type
String als return-type
return eindbedrag; type
}

public static boolean checkVermogen(int vermogen){


return vermogen >=10000000;
}

public static String welkomstboodschap(String naam, int vermogen){


return "Welkom beste " + naam + "! Uw vermogen van " + vermogen +
" is ruim genoeg";
12 }
• Het keyword return eindigt de methode
• Achter return staat hetgeen dat
gereturned wordt
Methode definitie:
• Dit moet matchen met het
dicteren & interpreteren aangegeven return-type

public static int berekenBedrag (int beginbedrag, int rente, int jaar) {
int eindbedrag = beginbedrag;
int teller = 1;

while (teller <= jaar) { Hier geven we het


eindbedrag = eindbedrag + ((eindbedrag * rente) / 100); resultaat van de
teller++; vergelijking (een
Hier returnen we de inhoud van de
} boolean) terug
variabele eindbedrag
return eindbedrag;
}

public static boolean checkVermogen (int vermogen) {


return vermogen >=10000000;
Hier geven we }
het resultaat van
een public static String welkomstboodschap (String naam, int vermogen){
return "Welkom beste " + naam + "! Uw vermogen van " + vermogen +
stringmanipulatie " is ruim genoeg";
terug13 }
Methode: relateren

• Requirement: Het programma speelt het spelletje waarbij een speler 1, 2 of 3 lucifers van
een stapel mag pakken. Schrijf een methode die checkt of het gekozen aantal lucifers
toegestaan (1, 2 of 3 lucifers) en mogelijk is (er zijn nog voldoende lucifers over).

• Programma:
public static boolean checkToegestaan (int aantal, int nogOver) {
boolean checkAantal = aantal >= 1 && aantal <= 3;
boolean checkGenoeg = aantal <= nogOver;
return checkAantal && checkGenoeg;
}

14
Methode: relateren

• Requirement: Het programma speelt het spelletje waarbij een speler 1, 2 of 3 lucifers
van een stapel mag pakken. Schrijf een methode die op basis van het nummer van
een speler en het gekozen aantal een boodschap teruggeeft die zegt dat de zet niet
mag en dat er opnieuw gekozen moet worden.

• Programma:
public static String foutmelding (int speler, int aantal) {
String boodschap = "Speler " + speler + ", " + aantal + " lucifers is onjuist.";
boodschap += " Probeer het opnieuw.";
return boodschap;
}

15
Methode: relateren

• Requirement: Het programma speelt het spelletje waarbij een speler 1, 2 of 3 lucifers van een stapel mag
pakken. Schrijf een methode die de meegegeven speler vraagt een zet te doen totdat een geldige zet is
gekozen. Die zet wordt teruggegeven.

• Programma: NB: deze methode


public static int vraagZet (int speler, int huidigeAantal) { hebben we nog niet
Scanner scanner = new Scanner (System.in);
geschreven
int zet = leesZet (speler);

NB: de twee
while (!checkToegestaan (zet, huidigeAantal)) {
methodes
foutmelding (speler, zet);
checkToegestaan
zet = leesZet (speler);
en foutmelding
}
hebben we zojuist
geschreven
16 return zet;
}
Methode: relateren

• Requirement: Het programma speelt het spelletje waarbij een speler 1, 2 of 3 lucifers van een stapel mag pakken. De speler die de laatste pakt
verliest. Speler 1 begint. Steeds wordt een zet gevraagd. Als de zet goed is wordt deze gedaan. Er wordt bekeken of het spel is afgelopen. Als dat
zo is wordt een winstboodschap afgedrukt. Anders wisselt de speler. Schrijf een methode die dit spel speelt voor een meegegeven aantal lucifers.

• Programma:
public static void lucifers (int aantal) {
int huidigeAantal = aantal;
int huidigeSpeler = 1;
int zet = vraagZet (huidigeSpeler, huidigeAantal); Welke return-types
huidigeAantal = doeZet (zet, huidigeAantal);
hebben de methoden?
while (!afgelopen (huidigeAantal)) {
huidigeSpeler = wisselSpeler (huidigeSpeler);
zet = vraagZet (huidigeSpeler, huidigeAantal);
huidigeAantal = doeZet (zet, huidigeAantal);
}

winstBoodschap (wisselSpeler (huidigeSpeler));


17 }
Opdracht (in tweetallen)

• Requirement: Schrijf de methode uit het vorige voorbeeld die tussen


speler 1 en 2 wisselt. Dit was de aanroep:
huidigeSpeler = wisselSpeler (huidigeSpeler);

18
Return-types: wat is er aan de hand?

public static int delen (int teller, int noemer) {


if (noemer != 0) {
return teller / noemer;
} Als de conditie niet waar was
(noemer == 0) komt het
}
programma hier. Wat wordt er dan
terug gegeven?

Elk pad in de methode


moet een return
statement
19
bereiken!!
Interpreteer
Dicteer
Opdracht
public static String vraagWachtwoord () {
Scanner scanner = new Scanner (System.in);
System.out.println ("Kies een wachtwoord:"); Relateer
String poging1 = scanner.nextLine ();
System.out.println ("Bevestig het wachtwoord:");
String poging2 = scanner.nextLine ();

Traceer
while (!poging1.equals (poging2)) {
System.out.println ("Kies een wachtwoord:"); Schrijf een programma dat
poging1 = scanner.nextLine (); a) Wimpie, test, test
vraagt om een
System.out.println ("Bevestig het wachtwoord:"); b) Wubbo, test, nee,
poging2 = scanner.nextLine (); gebruikersnaam en tweemaal test, test
}
een wachtwoord. Als de
return poging1;
} wachtwoorden niet
public static String vraagLogin () { overeenkomen worden de
Scanner scanner = new Scanner (System.in);
System.out.println ("Kies een gebruikersnaam:");
wachtwoorden nogmaals
return scanner.nextLine (); gevraagd. De gebruiker wordt
}
daarna welkom geheten.
public static void registreer () {
String login = vraagLogin ();
String wachtwoord = vraagWachtwoord ();
20
System.out.println ("Welkom " + login + ". uw wachtwoord is: " + wachtwoord);
Opdracht door docent

• Requirement: Schrijf een methode die steeds getallen inleest tot 0


wordt ingevoerd. De methode geeft terug of meer dan de helft van de
getallen positief was.

21
Opdracht door docent

• Requirement: Schrijf een methode die de oppervlakte van een vorm


berekent op basis van een hoogte, een breedte en een boolean die
aangeeft of de vorm een rechthoek is (anders wordt de oppervlakte
niet berekend).

22
Opdracht door docent

• Requirement: Schrijf een methode die op basis van een getal een
‘piramide’ oplevert. Getal staat voor het aantal lagen. Bij 5 lagen is het
de bedoeling dat de volgende piramide wordt getoond:

*
***
*****
*******
*********

23
Opdracht (in tweetallen)

• Requirement: Schrijf een methode die 4 cijfers inleest. Het gemiddelde


van de cijfers wordt teruggegeven.

24
Opdracht (in tweetallen)

• Requirement: Schrijf een methode die 4 cijfers inleest. De methode


geeft terug of deze student geslaagd is (gemiddelde is meer dan 5)

25
Opdracht (in tweetallen)

• Requirement: Schrijf een methode die de gebruiker vraagt een voor- en


achternaam in te voeren. De volledige naam wordt teruggegeven.

26

You might also like