De presentatie wordt gedownload. Even geduld aub

De presentatie wordt gedownload. Even geduld aub

1 HOOFDSTUK 4 CONTROLESTRUCTUREN (DEEL 1) 4.1. INTRODUCTIE Waarom controlestructuren?  principe van gestructureerd programmeren  controlestructuren helpen.

Verwante presentaties


Presentatie over: "1 HOOFDSTUK 4 CONTROLESTRUCTUREN (DEEL 1) 4.1. INTRODUCTIE Waarom controlestructuren?  principe van gestructureerd programmeren  controlestructuren helpen."— Transcript van de presentatie:

1 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 ALGORITMEN Een algoritme 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 Pseudocode is … 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 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 5 FLOWCHART VAN EEN SEQUENTIESTRUCTUUR Fig 4.1 Flowchart van een sequentiestrructuur in Java. add grade to total total = total + grade; add 1 to counter counter = counter + 1; LijnenActiesymbolen Connectiesymbolen

6 6 JAVA SLEUTELWOORDEN

7 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 DE “IF” SELECTIESTRUCTUUR  Het statement wordt alleen uitgevoerd als de voorwaarde WAAR is (true).  Structuur met één ingang en één uitgang. if (voorwaarde) statement

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

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

11 DE “IF/ELSE” SELECTIESTRUCTUUR  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. if (voorwaarde) statement1 else statement2

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

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

14 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 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 16 DE LOGISCHE OPERATOREN Logische operator In Java en && of || niet !

17 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 2de 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 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 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 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 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 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 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 System.out. println(getal3);

24 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 25 if (getal1 > 10) if (getal2 > 20) System.out. println(“getal1 > 10 en getal2 > 20”); else System.out. println(“ ??? ”); getal1 > 10 true getal2 > 20 true print “ ??? ” false print “ getal1 > 10 en getal2 > 20 ” false

26 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 27 if (getal1 > 10) { if (getal2 > 20) System.out. println(“getal1 > 10 en getal2 > 20”); } else System.out. println(“ getal <= 10 ”); getal1 > 10 true getal2 > 20 true print “ getal <= 10 ” false print “ getal1 > 10 en getal2 > 20 ” false

28 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 29 product <= 1000product = 2 * product true false Fig 4.5 Flowchart van de while herhalingsstructuur.  Voorbeeld in pseudocode: Herhaal zolang het product kleiner is of gelijk aan 1000 Verdubbel het product

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

31 ALGORITMEN FORMULEREN: VOORBEELD 1 (HERHALING MET EEN TELLER)  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 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. 4.6 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 33 1 // Fig. 4.7: Average1.java 2 // Programma voor klasgemiddelde met herhaling via teller 3 4 // Java extension packages 5 importjavax.swing.JOptionPane; 6 7 public classAverage1 8 { 9 // De uitvoering van de Java applicatie begint bij de “main” methode 10 public static voidmain( Stringargs[] ) 11 { 12 inttotal,// som van de punten ingevoerd door de gebruiker 13 gradeCounter,// aantal ingevoerde punten 14 gradeValue,// puntenwaarde 15 average;// gemiddelde van alle punten 16 String grade;// punten zoals ingetypt door de gebruiker // Initialisatiefase 19 total =0;// het totaal initialiseren op nul 20 gradeCounter=1;// voorbereiding op herhaling // Verwerkingsfase 23 while(gradeCounter<=10)// herhaal 10 keer 24 { 25 // vraag om input en lees punten van gebruiker 26 grade =JOptionPane.showInputDialog( 27 "Enter integer grade: "); // converteer punten van String naar integer 30 gradeValue= Integer.parseInt( grade ); // voeg de puntenwaarde toe aan het totaal 33 total = total +gradeValue; 34 Declareer variabelen; gradeCounter is de teller Blijf herhalen zolang gradeCounter kleiner dan of gelijk is aan 10 Average1.java

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

35 35 UITVOERING AVERAGE1.JAVA (vervolg)

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

37 37  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. 23 while ( gradeCounter <= 10 ) // herhaal 10 keer 24 { 25 // vraag om input en lees punten van gebruiker 26 grade = JOptionPane.showInputDialog( 27 "Enter integer grade: " ); // converteer punten van String naar integer 30 gradeValue = Integer.parseInt( grade ); // voeg de puntenwaarde toe aan het totaal 33 total = total + gradeValue; // voeg 1 toe aan teller gradeCounter 36 gradeCounter = gradeCounter + 1; } // einde while structuur

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

39 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 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. 4.8 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 41 1 // Fig. 4.9: Average2.java 2 // Klasgemiddelde programma met herhaling met behulp van een “schildwacht” 3 4 // Java core packages 5 importjava.text.DecimalFormat; 6 7 // Java extension packages 8 importjavax.swing.JOptionPane; 9 10 public classAverage2 11 { 12 // De uitvoering van een Java applicatie begint bij de main method 13 public static voidmain( Stringargs[] ) 14 { 15 intgradeCounter,// aantal ingevoerde punten 16 gradeValue,// puntenwaarde 17 total;// som van de punten 18 doubleaverage;// gemiddelde van alle punten 19 String input;// punten zoals ingetypt door de gebruiker // Initialisatiefase 22 total =0;// het totaal initialiseren 23 gradeCounter=0;// voorbereiding van de herhaling // Verwerkingsfase 26 // vraag om input en lees de punten van de gebruiker 27 input =JOptionPane.showInputDialog( 28 "Enter Integer Grade,-1 to Quit:"); // converteer de punten van een String naar een integer 31 gradeValue= Integer.parseInt( input ); 32 Average2.java

42 42 33 while(gradeValue!=-1) 34 { 35 // voeg puntenwaarde toe aan totaal 36 total = total +gradeValue; // voeg 1 toe aan teller gradeCounter 39 gradeCounter= +1; // vraag om input en lees punten van gebruiker 42 input =JOptionPane.showInputDialog( 43 "Enter Integer Grade,-1 to Quit:"); // converteer punten van een String naar een integer 46 gradeValue= Integer.parseInt( input ); 47 } // Eindfase 50 DecimalFormat twoDigits=newDecimalFormat("0.00"); if(gradeCounter!=0) 53 { average = ( double ) total /gradeCounter; // 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); System.exit(0);// beëindig de applicatie 66 Average2.java vervolg herhaal tot gradeCounter gelijk is aan “schildwacht” waarde ( -1 ) Rond getallen af tot op één honderdste

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

44 44  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. 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 // Initialisatiefase 22 total = 0; // het totaal initialiseren 23 gradeCounter = 0; // voorbereiding van de herhaling 24

45 45  Lijn 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. 26 // vraag om input en lees de punten van de gebruiker 27 input = JOptionPane.showInputDialog( 28 "Enter Integer Grade, -1 to Quit:" ); // converteer de punten van een String naar een integer 31 gradeValue = Integer.parseInt( input ); while ( gradeValue != -1 ) 34 {

46 46  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 een nieuw getal wordt aan de gebruiker gevraagd. 33 while ( gradeValue != -1 ) 34 { 35 // voeg puntenwaarde toe aan totaal 36 total = total + gradeValue; // voeg 1 toe aan teller gradeCounter 39 gradeCounter = gradeCounter + 1; // vraag om input en lees punten van gebruiker 42 input = JOptionPane.showInputDialog( 43 "Enter Integer Grade, -1 to Quit:" ); // converteer punten van een String naar een integer 46 gradeValue = Integer.parseInt( input ); 47 }

47 47  Lijn 52 Controleren indien de gebruiker al dan niet direct de waarde –1 heeft ingegeven (lijn 27-28). 50 DecimalFormat twoDigits = new DecimalFormat( "0.00" ); if ( gradeCounter != 0 ) 53 { average = (double) total / gradeCounter; // 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 ); System.exit( 0 ); // beëindig de applicatie } // einde methode main } // einde klasse Average2

48 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 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 4.10 Pseudocode voor examenresultaten probleem.

50 50 1 // Fig. 4.11: Analysis.java 2 // Analyse van examenresultaten. 3 4 // Java extension packages 5 importjavax.swing.JOptionPane; 6 7 public classAnalysis 8 { 9 // De uitvoering van een Java applicatie begint bij de main methode 10 public static voidmain( Stringargs[] ) 11 { 12 // initialiseren van de variablen in declaraties 13 intpasses = 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 // verwerk 10 studenten; herhaling met teller 21 while( student <=10) 22 { 23 // verkrijg resultaat van gebruiker 24 input =JOptionPane.showInputDialog( 25 "Enter result (1=pass,2=fail)"); // converteer resultaat naar int 28 result = Integer.parseInt( input ); // verwerk resultaat 31 if( result ==1) 32 passes = passes +1; 33 else 34 failures = failures +1; Analysis.java Herhaal tot student teller groter is dan 10 Geneste controlestructuur

51 student = student +1; 37 } // eindfase 40 output ="Passed: "+ passes + 41 "\nFailed: "+ failures; if( passes >8) 44 output = output +"\nRaiseTuition"; JOptionPane.showMessageDialog(null, output, 47 "Analysis of Examination Results", 48 JOptionPane.INFORMATION_MESSAGE); System.exit(0);// beëindig applicatie }// einde methode main }// einde klasse Analysis VERVOLG CODE ANALYSIS.JAVA

52 52 UITVOERING ANALYSIS.JAVA 9 keer

53 53  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. 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

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

55 55  Lijn Het aantal geslaagde en het aantal niet geslaagde studenten worden weergegeven op het scherm // eindfase 40 output = "Passed: " + passes + 41 "\nFailed: " + failures; if ( passes > 8 ) 44 output = output + "\nRaise Tuition"; JOptionPane.showMessageDialog( null, output, 47 "Analysis of Examination Results", 48 JOptionPane.INFORMATION_MESSAGE ); System.exit( 0 ); // terminate application } // einde methode main } // einde klasse Analysis

56 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 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 58 REKENKUNDIGE TOEKENNINGSOPERATOREN

59 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 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 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 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 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 64 INCREMENT EN DECREMENT OPERATOREN

65 65 1 // Fig. 4.14: Increment.java 2 // Preincrementing en postincrementing 3 4public class Increment 5 { 6 // De uitvoering van de Java applicatie begint bij de main methode 7 public static void main( String args[] ) 8 { 9 int c; c = 5; 12 System.out.println( c ); // print 5 13 System.out.println( c++ );// print 5 en vermeerder c dan met 1 14 System.out.println( c ); // print System.out.println(); // sla een lijn over c = 5; 19 System.out.println( c ); // print 5 20 System.out.println( ++c );// vermeerder c eerst met 1, print 6 21 System.out.println( c ); // print } // end method main } // end class Increment

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

67 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 68 PRECEDENTIE EN ASSOCIATIVITEIT VAN DE OPERATOREN

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

70 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 72 DE PRIMITIEVE DATATYPES IN JAVA

73 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 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 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:

76 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:

77 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 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 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 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 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 82 Oefeningen Hoofdstuk 4

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

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

85 85 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 ); } Welke output geeft volgende applicatie?

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

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


Download ppt "1 HOOFDSTUK 4 CONTROLESTRUCTUREN (DEEL 1) 4.1. INTRODUCTIE Waarom controlestructuren?  principe van gestructureerd programmeren  controlestructuren helpen."

Verwante presentaties


Ads door Google