De presentatie wordt gedownload. Even geduld aub

De presentatie wordt gedownload. Even geduld aub

CONTROLESTRUCTUREN (DEEL 1)

Verwante presentaties


Presentatie over: "CONTROLESTRUCTUREN (DEEL 1)"— Transcript van de presentatie:

1 CONTROLESTRUCTUREN (DEEL 1)
HOOFDSTUK 4 CONTROLESTRUCTUREN (DEEL 1) 4.1.     INTRODUCTIE Waarom controlestructuren? principe van gestructureerd programmeren controlestructuren helpen om objecten op te bouwen en ze te manipuleren (zie hoofdstuk 8)

2 Een algoritme Programmacontrole 4.2. ALGORITMEN
is een procedure om problemen op te lossen in termen van de opdrachten die uitgevoerd moeten worden de volgorde waarin ze moeten uitgevoerd worden Programmacontrole is de volgorde specifiëren in dewelke de acties uitgevoerd moeten worden in een programma  controlestructuren helpen hierbij

3 Pseudocode is … 4.3. PSEUDOCODE
een informele taal om algoritmen te ontwikkelen GEEN taal die uitgevoerd wordt door computers een taal die softwareontwikkelaars helpt bij het “uitdenken” van algoritmen meestal beperkt tot de uitvoerbare statements, geen declaraties

4 Sequentiële uitvoering
4.4.     CONTROLESTRUCTUREN Sequentiële uitvoering De statements in een programma worden één voor één uitgevoerd in de volgorde waarin ze geschreven zijn. Overdracht van de controle Drie controleopdrachten kunnen de volgorde specifiëren: sequentiestructuur selectiestructuur herhalingsstructuur Flowchart Grafische representatie van een algoritme Lijnen geven de volgorde aan waarin de acties worden uitgevoerd.

5 FLOWCHART VAN EEN SEQUENTIESTRUCTUUR
Lijnen Actiesymbolen Connectiesymbolen add grade to total total = total + grade; add 1 to counter counter = counter + 1 ; Fig 4.1 Flowchart van een sequentiestrructuur in Java.

6     JAVA SLEUTELWOORDEN

7 CONTROLESTRUCTUREN IN JAVA
Java heeft een “ingebouwde” sequentiestructuur Java voorziet drie selectiestructuren if if/else switch-case Java voorziet drie herhalingsstructuren while do/while for Elk van deze woorden is een Java-sleutelwoord

8 4.5. DE “IF” SELECTIESTRUCTUUR
if (voorwaarde) statement Het statement wordt alleen uitgevoerd als de voorwaarde WAAR is (true). Structuur met één ingang en één uitgang.

9 Voorbeeld in pseudocode: Als de student 60/100 of meer behaalt
dan druk "Geslaagd!" Decisiesymbool true grade >= 60 print “Geslaagd” false Fig 4.3 Flowchart van de enkelvoudige selectiestructuur if

10 Voorbeeld in pseudocode:
Als de student 60/100 of meer behaalt dan druk "Geslaagd!" JAVA: if ( punten >= 60 ) System.out.println("Geslaagd");

11 4.6. DE “IF/ELSE” SELECTIESTRUCTUUR
if (voorwaarde) statement1 else statement2 Het statement1 wordt enkel uitgevoerd wanneer de voorwaarde WAAR (true) is. Het alternatieve statement, namelijk statement2 wordt enkel uitgevoerd wanneer de voorwaarde VALS (false) is.

12 Voorbeeld in pseudocode: Als de student 60/100 of meer behaalt
dan druk "Geslaagd!" anders druk "Niet geslaagd!" false true grade >= 60 print “niet geslaagd” print “geslaagd” Fig 4.4 Flowchart van de dubbele selectiestructuur if/else.

13 Voorbeeld in pseudocode:
Als de student 60/100 of meer behaalt dan druk "Geslaagd!" anders druk "Niet geslaagd!" JAVA: if ( punten >= 60 ) System.out.println("Geslaagd"); else System.out.println("Niet geslaagd");

14 DE RELATIONELE OPERATOREN
Operator In Java > > groter dan < < kleiner dan  >= groter dan of gelijk aan  <= kleiner dan of gelijk aan = = = exact gelijk  != verschillend

15 WAAROM LOGISCHE OPERATOREN?
In sommige situaties hebben we meer nodig dan alleen maar relationele operatoren. Denk maar aan volgende situatie: als de variabele temp gelegen is tussen 22 en 25 dan hebben we een ideale zomertemperatuur. We doen dit met volgende test: temp >= 22 en temp <= 25 Om deze test te kunnen uitschrijven hebben we de logische en-operator nodig. In JAVA schrijven we de gecombineerde voorwaarde als volgt : (temp >= 22 && temp <= 25)

16 DE LOGISCHE OPERATOREN
Logische operator In Java en && of || niet !

17 DE LOGISCHE EN-OPERATOR
De logische en-operator werkt met twee operanden die false of true kunnen zijn. (temp >= 22 && temp <= 25) 1ste operand de operand Een voorwaarde met de en-operator && heeft als resultaat true als beide operanden true leveren. Als één van beide operanden false levert, of beide leveren false, dan levert de en-operator && ook false op.

18 DE LOGISCHE OF-OPERATOR
De logische of-operator werkt ook met twee operanden die false of true kunnen zijn. (temp == 20 || temp == 30) Als temp de waarde 20 heeft dan levert de gecombineerde voorwaarde true op. Als temp de waarde 30 heeft dan levert de gecombineerde voorwaarde true op. Maar als temp bv. de waarde 25 heeft, dan levert de voorwaarde false op, omdat beide operanden nu de waarde false hebben.

19 DE LOGISCHE NIET-OPERATOR
De logische niet-operator werkt met één operand die false of true kan zijn. (!(temp == 20 || temp == 30)) De niet-operator keert de waarheidswaarde om: true wordt false en false wordt true. Als temp de waarde 20 of de waarde 30 heeft, dan levert de voorwaarde false op. In de andere gevallen levert de voorwaarde true op.

20 DE CONDITIONELE OPERATOR
In de conditionele operator komt altijd een vraagteken (?) en een dubbel punt (:) voor. voorwaarde ? expressie1 : expressie2  Indien de voorwaarde waar is wordt expressie1 uitgevoerd.  Indien de voorwaarde niet waar is wordt expressie2 uitgevoerd.

21 DE CONDITIONELE OPERATOR
Voorbeeld: if (a < b) z = a + 1; else z = b – 1; is equivalent met z = ( a < b ? a + 1 : b - 1);

22 DE CONDITIONELE OPERATOR
Voorbeeld: if (a < b) System.out.println(a); else System.out.println(b); is equivalent met System.out.println(a < b? a : b);

23 GENESTE IF/ELSE SELECTIESTRUCTUREN
Voorbeeld: Drie getallen worden ingegeven. Het grootste getal wordt op het scherm weergegeven. if (getal1 > getal2) if (getal1 > getal3) System.out. println(getal1); else // getal1 <= getal3 System.out. println(getal3); else // getal1 <= getal2 if (getal2 > getal3) System.out. println(getal2); else // getal2 <= getal3

24 GENESTE IF/ELSE SELECTIESTRUCTUREN
if (getal1 > 10) if (getal2 > 20) System.out. println(“getal1 > 10 en getal2 > 20”); else System.out. println(“ ??? ”); Behoort de else bij “if (getal1 > 10)” of bij “if (getal2 > 20)”?

25 false true getal1 > 10 false true getal2 > 20 print “???”
if (getal1 > 10) if (getal2 > 20) System.out. println(“getal1 > 10 en getal2 > 20”); else System.out. println(“ ??? ”); false true getal1 > 10 false true getal2 > 20 print “getal1 > 10 en getal2 > 20” print “???”

26 GENESTE IF/ELSE SELECTIESTRUCTUREN
We wensen de else bij “if (getal1 > 10)” en niet bij “if (getal2 > 20)”: if (getal1 > 10) { if (getal2 > 20) System.out. println(“getal1 > 10 en getal2 > 20”); } else System.out. println(“ getal <= 10 ”);

27 false true getal1 > 10 true getal2 > 20 false
if (getal1 > 10) { if (getal2 > 20) System.out. println(“getal1 > 10 en getal2 > 20”); } else System.out. println(“ getal <= 10 ”); false true getal1 > 10 print “getal <= 10” true getal2 > 20 print “getal1 > 10 en getal2 > 20” false

28 4.7. DE HERHALINGSSTRUCTUUR “WHILE”
while (voorwaarde) statement Het statement wordt herhaald zolang de voorwaarde WAAR blijft! Zorg ervoor dat de voorwaarde beïnvloed wordt in het statement, anders oneindige lus!

29 Voorbeeld in pseudocode:
Herhaal zolang het product kleiner is of gelijk aan 1000 Verdubbel het product true product <= 1000 product = 2 * product false Fig 4.5 Flowchart van de while herhalingsstructuur.

30 Voorbeeld in pseudocode:
Herhaal zolang het product kleiner is of gelijk aan 1000 Verdubbel het product JAVA: int product = 2; while ( product <= 1000 ) product = 2 * product;

31 4.8. ALGORITMEN FORMULEREN: VOORBEELD 1 (HERHALING MET EEN TELLER)
variabele die het aantal keer dat een reeks statements wordt uitgevoerd, bijhoudt en controleert Average1.java is een programma dat het gemiddelde van de punten berekent gebruikt een teller om de herhaling bij te houden

32 ALGORITMEN FORMULEREN: VOORBEELD 1
PSEUDOCODE Zet totaal op nul Zet puntenteller op nul Herhaal zolang puntenteller kleiner dan of gelijk is aan tien Voer volgende punten in Tel deze op bij het totaal Verhoog de puntenteller met één Zet het klasgemiddelde gelijk aan het totaal gedeeld door tien Druk het klasgemiddelde af Fig Pseudocode van het algoritme dat herhaling door middel van een teller gebruikt om het probleem van het bepalen van het gemiddelde van een klas op te lossen

33 Declareer variabelen; gradeCounter is de teller
1 // Fig. 4.7: Average1.java 2 // Programma voor klasgemiddelde met herhaling via teller 3 Declareer variabelen; gradeCounter is de teller 4 // Java extension packages 5 import javax .swing. JOptionPane ; 6 7 public class Average1 8 { 9 Average1.java // De uitvoering van de Java applicatie begint bij de “main” methode 10 public static void main( String args [] ) 11 { 12 int total, // som van de punten ingevoerd door de gebruiker Blijf herhalen zolang gradeCounter kleiner dan of gelijk is aan 10 13 gradeCounter , // aantal ingevoerde punten 14 gradeValue , // puntenwaarde 15 average; // gemiddelde van alle punten 16 String grade; // punten zoals ingetypt door de gebruiker 17 18 // Initialisatiefase 19 total = ; // het totaal initialiseren op nul 20 gradeCounter = 1 ; // voorbereiding op herhaling 21 22 // Verwerkingsfase 23 while ( gradeCounter <= 10 ) // herhaal 10 keer { 25 // vraag om input en lees punten van gebruiker 26 grade = JOptionPane . showInputDialog ( 27 "Enter integer grade: " ); 28 29 // converteer punten van String naar integer 30 gradeValue = Integer. parseInt ( grade ); 31 32 // voeg de puntenwaarde toe aan het totaal 33 total = total + gradeValue ; 34

34 Average1.java vervolg 35 // voeg 1 toe aan teller gradeCounter 36
= gradeCounter + 1 ; 37 38 } // einde while structuur 39 40 // Eindfase 41 average = total / 10 ; // voer een gehele deling uit 42 43 Average1.java vervolg // laat het gemiddelde van de examenpunten zien 44 JOptionPane . showMessageDialog ( null , 45 "Class average is " + average, "Class Average" , 46 JOptionPane . INFORMATION_MESSAGE ); 47 48 System.exit( ); // beëindig het programma 49 50 } // einde methode main 51 52 } // einde klasse Average1

35 UITVOERING AVERAGE1.JAVA (vervolg)

36 declaratie van de teller “gradeCounter”.
12 int total, // som van de punten ingevoerd door de gebruiker gradeCounter, // aantal ingevoerde punten gradeValue, // puntenwaarde average; // gemiddelde van alle punten 16 String grade; // punten zoals ingetypt door de gebruiker 17 18 // Initialisatiefase 19 total = 0; // het totaal initialiseren op nul 20 gradeCounter = 1; // voorbereiding op herhaling Lijn 12 declaratie van de teller “gradeCounter”. Lijn 20 de teller “gradeCounter” wordt op 1 geïnitialiseerd.

37 de teller “gradeCounter” wordt met één verhoogd.
23 while ( gradeCounter <= 10 ) // herhaal 10 keer 24 { // vraag om input en lees punten van gebruiker grade = JOptionPane.showInputDialog( "Enter integer grade: " ); 28 // converteer punten van String naar integer gradeValue = Integer.parseInt( grade ); 31 // voeg de puntenwaarde toe aan het totaal total = total + gradeValue; 34 // voeg 1 toe aan teller gradeCounter gradeCounter = gradeCounter + 1; 37 38 } // einde while structuur Lijn 23 zolang de voorwaarde “gradeCounter <= 10” waar is, wordt de body van de while-statement (lijn 24 t.e.m. 38) uitgevoerd. Lijn 36 de teller “gradeCounter” wordt met één verhoogd.

38 de gemiddelde waarde van de 10 ingegeven getallen wordt weergegeven.
39 40 // Eindfase 41 average = total / 10; // perform integer division 42 43 // laat het gemiddelde van de examenpunten zien 44 JOptionPane.showMessageDialog( null, "Class average is " + average, "Class Average", JOptionPane.INFORMATION_MESSAGE ); 47 48 System.exit( 0 ); // beëindig het programma 49 50 } // einde methode main 51 52} // einde klasse Average1 Lijn 44-46 de gemiddelde waarde van de 10 ingegeven getallen wordt weergegeven.

39 4.9. ALGORITMEN FORMULEREN:
TOP-DOWN EN MET STAPSGEWIJZE VERFIJNING VOORBEELD 2 (HERHALING MET “SCHILDWACHT”) Sentinel of “schildwacht” waarde die het einde van de invoer van data aangeeft Average2.java is een programma dat een herhaling voor onbepaalde tijd bevat gebruikt de “schildwacht” waarde –1 om de herhaling te beëindigen

40 ALGORITMEN FORMULEREN: VOORBEELD 2
PSEUDOCODE Initialiseer totaal op nul Initialiseer de puntenteller op nul Voer de eerste punten in (mogelijk de “schildwacht”) Herhaal zolang de gebruiker de schildwacht niet ingevoerd heeft Tel de punten op bij het lopende totaal Verhoog de puntenteller met één Voer volgende punten in (mogelijk de “schildwacht”) Als de puntenteller niet gelijk is aan nul Zet het klasgemiddelde gelijk aan het totaal gedeeld door de puntenteller Druk het klasgemiddelde af anders Druk “Er werden geen punten ingevoerd” Fig Pseudocode van het algoritme dat een herhaling met gebruik van een “sentinel” of “schildwacht” bevat om het probleem van het gemiddelde van een klas op te lossen.

41 Average2.java 1 // Fig. 4.9: Average2.java 2
// Klasgemiddelde programma met herhaling met behulp van een “schildwacht” 3 4 // Java core packages 5 import java.text. DecimalFormat ; 6 7 // Java extension packages 8 import javax .swing. JOptionPane ; 9 Average2.java 10 public class Average2 11 { 12 // De uitvoering van een Java applicatie begint bij de main method 13 public static void main( String args [] ) 14 { 15 int gradeCounter , // aantal ingevoerde punten 16 gradeValue , // puntenwaarde 17 total; // som van de punten 18 double average; // gemiddelde van alle punten 19 String input; // punten zoals ingetypt door de gebruiker 20 21 // Initialisatiefase 22 total = ; // het totaal initialiseren 23 gradeCounter = ; // voorbereiding van de herhaling 24 25 // Verwerkingsfase 26 // vraag om input en lees de punten van de gebruiker 27 input = JOptionPane . showInputDialog ( 28 "Enter Integer Grade, - 1 to Quit:" ); 29 30 // converteer de punten van een String naar een integer 31 gradeValue = Integer. parseInt ( input ); 32

42 herhaal tot gradeCounter gelijk is aan “schildwacht” waarde (-1)
33 while ( gradeValue != - 1 ) { herhaal tot gradeCounter gelijk is aan “schildwacht” waarde (-1) 35 // voeg puntenwaarde toe aan totaal 36 total = total + gradeValue ; 37 38 // voeg 1 toe aan teller gradeCounter 39 gradeCounter = gradeCounter + 1 ; 40 41 // vraag om input en lees punten van gebruiker Average2.java vervolg 42 input = JOptionPane . showInputDialog ( 43 "Enter Integer Grade, - 1 to Quit:" Rond getallen af tot op één honderdste ); 44 45 // converteer punten van een String naar een integer 46 gradeValue = Integer. parseInt ( input ); 47 } 48 49 // Eindfase 50 DecimalFormat twoDigits = new DecimalFormat ( "0.00" ); 51 52 if ( gradeCounter != ) 53 { average = ( double ) total / gradeCounter ; 54 55 // laat gemiddelde van de examenpunten zien 56 JOptionPane . showMessageDialog ( null , 57 "Class average is " + twoDigits .format( average ), 58 "Class Average" , JOptionPane . INFORMATION_MESSAGE ); 59 } 60 else 61 JOptionPane . showMessageDialog ( null , 62 "No grades were entered" , "Class Average" , 63 JOptionPane . INFORMATION_MESSAGE ); 64 65 System.exit( ); // beëindig de applicatie 66

43 VERVOLG CODE + UITVOERING AVERAGE2.JAVA
67 } // einde methode main 68 69 } // einde klasse Average2

44 15 int gradeCounter, // aantal ingevoerde punten
gradeValue, // puntenwaarde total; // som van de punten 18 double average; // gemiddelde van alle punten String input; // punten zoals ingetypt door de gebruiker 20 21 // Initialisatiefase 22 total = 0; // het totaal initialiseren 23 gradeCounter = 0; // voorbereiding van de herhaling 24 Lijn 22 “total” wordt op 0 geïnitialiseerd. De som van de ingegeven getallen zullen in “total” bijhouden worden. Lijn 23 “gradeCounter” wordt op 0 geïnitialiseerd. Deze variabele zal bijhouden hoeveel getallen de gebruiker heeft ingegeven.

45 Een eerste getal wordt aan de gebruiker gevraagd.
// vraag om input en lees de punten van de gebruiker input = JOptionPane.showInputDialog( "Enter Integer Grade, -1 to Quit:" ); 29 // converteer de punten van een String naar een integer gradeValue = Integer.parseInt( input ); 32 while ( gradeValue != -1 ) { Lijn 27-28 Een eerste getal wordt aan de gebruiker gevraagd. Lijn 33 Indien de gebruiker de waarde –1 heeft ingegeven (lijn 27-28), dan wordt de body van de while-statement niet uitgevoerd.

46 een nieuw getal wordt aan de gebruiker gevraagd.
while ( gradeValue != -1 ) { // voeg puntenwaarde toe aan totaal total = total + gradeValue; 37 // voeg 1 toe aan teller gradeCounter gradeCounter = gradeCounter + 1; 40 // vraag om input en lees punten van gebruiker input = JOptionPane.showInputDialog( "Enter Integer Grade, -1 to Quit:" ); 44 // converteer punten van een String naar een integer gradeValue = Integer.parseInt( input ); 47 } Lijn 33 zolang de gebruiker de waarde –1 niet heeft ingegeven, wordt de body van de while-statement (lijn 34 t.e.m. 47) uitgevoerd. Lijn 42-43 een nieuw getal wordt aan de gebruiker gevraagd.

47 50 DecimalFormat twoDigits = new DecimalFormat( "0.00" );
51 52 if ( gradeCounter != 0 ) { average = (double) total / gradeCounter; 54 // laat gemiddelde van de examenpunten zien JOptionPane.showMessageDialog( null, "Class average is " + twoDigits.format( average ), "Class Average", JOptionPane.INFORMATION_MESSAGE ); 59 } 60 else JOptionPane.showMessageDialog( null, "No grades were entered", "Class Average", JOptionPane.INFORMATION_MESSAGE ); 64 65 System.exit( 0 ); // beëindig de applicatie 66 67 } // einde methode main 68 69} // einde klasse Average2 Lijn 52 Controleren indien de gebruiker al dan niet direct de waarde –1 heeft ingegeven (lijn 27-28).

48 4.10. ALGORITMEN FORMULEREN:
TOP-DOWN EN MET STAPSGEWIJZE VERFIJNING VOORBEELD 3 (GENESTE CONTROLESTRUCTUREN) Nesting van controlestructuren Analysis.java een if-else-statement in een while-statement gebruiken.

49 ALGORITMEN FORMULEREN: VOORBEELD 3
PSEUDOCODE Initialiseer geslaagden op nul Initialiseer niet-geslaagden op nul Initialiseer aantal-studenten op één Zolang het aantal-studenten kleiner is dan tien Voer het volgende examenresultaat in Als de student geslaagd is Tel één op bij geslaagden anders Tel één op bij niet-geslaagden   Tel één op bij aantal-studenten Druk het aantal geslaagden af Druk het aantal niet-geslaagden af Als er meer dan acht studenten geslaagd zijn Druk“Raise tuition” Fig Pseudocode voor examenresultaten probleem.

50 Herhaal tot student teller groter is dan 10
// Fig. 4.11: Analysis.java 2 // Analyse van examenresultaten. 3 4 // Java extension packages 5 import javax .swing. JOptionPane Herhaal tot student teller groter is dan 10 ; 6 7 public class Analysis 8 { 9 // De uitvoering van een Java applicatie begint bij de main methode Analysis.java 10 public static void main( String args [] ) 11 { 12 // initialiseren van de variablen in declaraties 13 int passes = 0, // aantal geslaagden 14 failures = 0, // aantal niet geslaagden 15 student = 1, // studententeller 16 result; // één examenresultaat 17 String input, // door de gebruiker ingetikte waarde 18 output; // uitvoerstring 19 20 // verwerk 10 studenten; herhaling met teller 21 while ( student <= 10 Geneste controlestructuur ) { 23 // verkrijg resultaat van gebruiker 24 input = JOptionPane . showInputDialog ( 25 "Enter result (1=pass,2=fail)" ); 26 27 // converteer resultaat naar int 28 result = Integer. parseInt ( input ); 29 30 // verwerk resultaat 31 if ( result == 1 ) 32 passes = passes + 1 ; 33 else 34 failures = failures + 1 ;

51 VERVOLG CODE ANALYSIS.JAVA
35 36 student = student + 1 ; 37 } 38 39 // eindfase 40 output = "Passed: " + passes + 41 " \ nFailed : " + failures; 42 43 if ( passes > 8 ) 44 output = output + " \ nRaise Tuition" ; 45 46 JOptionPane . showMessageDialog ( null , output, 47 "Analysis of Examination Results", 48 JOptionPane . INFORMATION_MESSAGE ); 49 50 System.exit( ); // beëindig applicatie 51 52 } // einde methode main 53 54 } // einde klasse Analysis

52 UITVOERING ANALYSIS.JAVA
9 keer

53 De teller “passes” zal het aantal geslaagde studenten bijhouden.
12 // initialiseren van de variablen in declaraties 13 int passes = 0, // aantal geslaagden failures = 0, // aantal niet geslaagden student = 1, // studententeller result; // één examenresultaat 17 String input, // door de gebruiker ingetikte waarde output; // uitvoerstring 19 Lijn 13 De teller “passes” zal het aantal geslaagde studenten bijhouden. Lijn 14 De teller “failures” zal het aantal niet geslaagde studenten bijhouden. Lijn 15 De teller “student” wordt op 1 geïnitialiseerd. Deze teller zullen we in de while-voorwaarde gebruiken.

54 De body van het while-statement zal 10 keer uitgevoerd worden.
20 // verwerk 10 studenten; herhaling met teller 21 while ( student <= 10 ) { // verkrijg resultaat van gebruiker input = JOptionPane.showInputDialog( "Enter result (1=pass,2=fail)" ); 26 // converteer resultaat naar int result = Integer.parseInt( input ); 29 // verwerk resultaat if ( result == 1 ) passes = passes + 1; else failures = failures + 1; 35 student = student + 1; 37 } Lijn 22-37 De body van het while-statement zal 10 keer uitgevoerd worden. Lijn 31-34 if-statement in de body van het while-statement.

55 38 // eindfase output = "Passed: " + passes + "\nFailed: " + failures; 42 if ( passes > 8 ) output = output + "\nRaise Tuition"; 45 JOptionPane.showMessageDialog( null, output, "Analysis of Examination Results", JOptionPane.INFORMATION_MESSAGE ); 49 System.exit( 0 ); // terminate application 51 } // einde methode main 53 54 } // einde klasse Analysis Lijn 46-48 Het aantal geslaagde en het aantal niet geslaagde studenten worden weergegeven op het scherm.

56 4.11. TOEKENNINGSOPERATOREN
Uitdrukkingen voor toekenningen afkorten Heel vaak willen we iets bij een variabele optellen. int teller = 1; teller = teller + 1; teller = teller + 3; In JAVA bestaat er een kortere en meer efficiënte vorm teller += 1; teller += 3;

57 4.11. TOEKENNINGSOPERATOREN
Algemeen : x = x + a kunnen we schrijven als x += a; De volgende expressies spreken nu voor zichzelf: x -= a; x *= a; x /= a; x %= a;

58 REKENKUNDIGE TOEKENNINGSOPERATOREN

59 4.12. INCREMENT- EN DECREMENT- OPERATOREN
In het bijzonder komt het vaak voor, dat een telvariabele (bijvoorbeeld teller) met 1 moet verhoogd of verlaagd worden. In plaats van teller += 1; teller -= 1; kunnen we dit nog korter schrijven: teller++; teller--; of ++teller; --teller;

60 4.12. INCREMENT- EN DECREMENT- OPERATOREN
Unaire increment operator (++) vermeerdert de waarde van de variabele met 1 Unaire decrement operator (--) vermindert de waarde van de variabele met 1

61 Wat is nu het verschil tussen teller++ en ++teller?
int teller1, resul1, teller2, resul2; teller1 = 0; teller2 = 0; resul1 = (teller1++); resul2 = (++teller2); System.out.println("teller1 : " + teller1); System.out.println(" resul1 : " + resul1); System.out.println(" teller2  : " + teller2); System.out.println(" resul2 : " + resul2); De uitvoer van dit programma is: teller1 : 1 resul1 : 0 teller2 : 1 resul2 : 1

62 4.12. INCREMENT- EN DECREMENT- OPERATOREN
resul1 = (teller1++); resul2 = (++teller2); Het statement “resul1 = (teller1++);” betekent, dat eerst de waarde van teller1 (=0) wordt toegekend aan de variabele resul1. Daarna wordt de waarde van variabele “teller1” met één verhoogd. Het statement “resul2 = (++teller2);” betekent, dat eerst de waarde van de variabele “teller2” met één wordt verhoogd (dus teller2 = 0 +1). Vervolgens wordt de waarde van teller2 (=1) toegekend aan de variabele resul2.

63 4.12. INCREMENT- EN DECREMENT- OPERATOREN
teller++;  ++ is een post-increment operator ++teller;  ++ is een pre-increment operator teller--;  -- is een post-decrement operator --teller;  -- is een pre-decrement operator

64 INCREMENT EN DECREMENT OPERATOREN

65 1 // Fig. 4.14: Increment.java 2 // Preincrementing en postincrementing 3 public class Increment 5 { // De uitvoering van de Java applicatie begint bij de main methode public static void main( String args[] ) { int c; 10 c = 5; System.out.println( c ); // print 5 System.out.println( c++ );//print 5 en vermeerder c dan met 1 System.out.println( c ); // print 6 15 System.out.println(); // sla een lijn over 17 c = 5; System.out.println( c ); // print 5 System.out.println( ++c );//vermeerder c eerst met 1, print 6 System.out.println( c ); // print 6 22 } // end method main 24 25 } // end class Increment

66 Lijn 13 voert een postincrement uit op c
System.out.println( c ); // print 5 System.out.println( c++ );//print 5 en vermeerder c dan met 1 System.out.println( c ); // print 6 15 System.out.println(); // sla een lijn over 17 c = 5; System.out.println( c ); // print 5 System.out.println( ++c );//vermeerder c eerst met 1, print 6 System.out.println( c ); // print 6 Lijn 13 voert een postincrement uit op c Lijn 20 voert een preincrement uit op c 5 5 6 5 6 6

67 PRECEDENTIE EN ASSOCIATIVITEIT
VAN DE OPERATOREN We kennen nu wiskundige-, relationele-, logische-, conditionele-, increment- en decrement-operatoren. We zijn in staat om complexe voorwaarden samen te stellen. Veronderstel volgende complexe conditie: 5+25/12 > 6 && 33%11+1 < 2 Deze expressie bevat zowel wiskundige, relationele als logische operatoren. Mogen we gewoon de expressies evalueren van links naar rechts? Neen, bepaalde operatoren hebben voorrang op andere.

68 PRECEDENTIE EN ASSOCIATIVITEIT
VAN DE OPERATOREN

69 PRECEDENTIE EN ASSOCIATIVITEIT
VAN DE OPERATOREN Voorbeeld: 5+25/12 > 6 && 33%11+1 < 2 > 6 && 33% < 2 > 6 && < 2 > 6 && < 2 > 6 && < 2 (true) && < 2 (true) && (true) (true)

70 PRECEDENTIE EN ASSOCIATIVITEIT
VAN DE OPERATOREN Haakjes kunnen gebruikt worden om de prioriteiten te negeren. Alles wat tussen de haakjes staat wordt altijd het eerst uitgewerkt. Bij complexe voorwaarden is het soms aangewezen haakjes te gebruiken, om de lezer zonder meer duidelijk te maken hoe de expressie wordt uitgewerkt. Een belangrijke stelregel is: bij twijfel, gebruik altijd haakjes.

71      PRIMITIEVE DATATYPES Primitieve types “bouwblokken” voor ingewikkeldere types Java is sterk getypeerd alle variabelen in een Java programma MOETEN een type hebben Primitieve types in Java zijn overdraagbaar over computerplatformen die Java ondersteunen

72 DE PRIMITIEVE DATATYPES IN JAVA

73 HET PRIMITIEVE DATATYPE : boolean
Variabelen van het type boolean kunnen slechts twee waarden bevatten: true of false Voorbeeld: boolean gevonden; int teZoekenGetal, getal; String getalS; gevonden = false; teZoekenGetal = 20; while (!(gevonden)) { getalS = JOptionPane.showInputDialog( null, "Geef een getal"); getal = Integer.parseInt( getalS ); if (getal == teZoekenGetal) gevonden = true; }

74 HET PRIMITIEVE DATATYPE : char
In variabelen van het type char kun je één letter of één ander teken opslaan. Nooit meer dan één. Zo’n teken moet je in het programma tussen apostrofs zetten, bijvoorbeeld de letter a als ‘a’, een punt als ‘.’, etc. De reden dat je apostrofs moet gebruiken is dat we de compiler duidelijk willen maken dat het om een letter gaat, en niet om bijvoorbeeld een variabele die de naam a heeft. Voorbeeld: char letter1, letter2; letter1 = 'a'; letter2 = '*';

75 HET PRIMITIEVE DATATYPE : byte
In een variabele van het type byte kun je gehele getallen van –128 t.e.m. 127 bewaren. Voorbeeld: byte getal1, getal2, getal3; getal1 = 50; getal2 = -128; getal3 = 127; System.out.println(--getal2); System.out.println(++getal3); Uitvoer: 127 -128

76 HET PRIMITIEVE DATATYPE : short
In een variabele van het type short kun je gehele getallen van t.e.m bewaren. Voorbeeld: short getal1, getal2; getal1 = ; getal2 = 32767; System.out.println(--getal1); System.out.println(++getal2); Uitvoer: 32767 -32768

77 HET PRIMITIEVE DATATYPE : int
In een variabele van het type int kun je gehele getallen van – tot opbergen. Voorbeeld: int getal1, getal2; getal1 = 20; getal2 = -450;

78 HET PRIMITIEVE DATATYPE : long
In een variabele van het type long kun je gehele getallen van – tot opbergen. Voorbeeld: long getal1, getal2; getal1 = ; //bovengrens van int getal2 = getal1 * 10; System.out.println(getal2); uitvoer:

79 DE PRIMITIEVE DATATYPEN : float en double
In veel gevallen waarin gerekend wordt, heb je reële getallen nodig, zoals bijvoorbeeld Voor reële getallen kent het Engels de term floating-point getallen. Java heeft voor reële getallen twee verschillende primitieve typen: float (storing single-precision floating-point) en double (double-precision floating-point).

80 DE PRIMITIEVE DATATYPEN : float en double
De nauwkeurigheid van getallen van het type float is 6 tot 7 cijfers. Dat lijkt misschien veel, maar leidt in de praktijk al gauw tot grote onnauwkeurigheden door afrondfouten. Getallen van het type double nemen meer geheugen in beslag dan float, maar hebben een nauwkeurigheid van 15 cijfers.

81 DE PRIMITIEVE DATATYPEN : float en double
Voorbeeld: float float_getal; double double_getal; float_getal = 10; double_getal = float_getal; float_getal *= ; double_getal *= ; System.out.println("float : " + float_getal); System.out.println("double : " + double_getal); Uitvoer: float : double :

82 Oefeningen Hoofdstuk 4

83 Verbeter volgende stukjes code:
     Verbeter volgende stukjes code: if ( age >= 65 ); System.out.println ( “Age greater than or equal to 65” ); else System.out.println ( “Age is less than 65 )”; int x = 1, total; while ( x <= 10 ) { total += x; ++x; }

84 Verbeter volgende stukjes code:
     Verbeter volgende stukjes code: while ( x <= 100 ) total += x; ++x; while ( y > 0 ) { System.out.println( y ); ++y;

85 Welke output geeft volgende applicatie?
     Welke output geeft volgende applicatie? public class Mystery { public static void main ( String args[] ) int y, x = 1, total = 0; while ( x <= 10 ) y = x * x; System.out.println( y ); total += y; ++x; } System.out.println ( “Total is “ + total );

86 Welke output geeft volgende applicatie?
     Welke output geeft volgende applicatie? public class Mystery2 { public static void main ( String args[] ) int count = 1; while ( count <= 10 ) System.out.println( count % 2 == 1 ? “****” : “ ” ); ++count; }

87 Schrijf een applicatie die…
     Schrijf een applicatie die… via een lus volgende tabel met waarden afdrukt N 10*N 100*N 1000*N drie gehele getallen, verschillend van 0, inleest, en bepaalt of deze de zijden van een rechthoekige driehoek zouden kunnen voorstellen


Download ppt "CONTROLESTRUCTUREN (DEEL 1)"

Verwante presentaties


Ads door Google