HOOFDSTUK 5
This presentation is the property of its rightful owner.
Sponsored Links
1 / 79

HOOFDSTUK 5 CONTROLESTRUCTUREN (DEEL 2) 5.1.     INTRODUCTIE PowerPoint PPT Presentation


  • 81 Views
  • Uploaded on
  • Presentation posted in: General

HOOFDSTUK 5 CONTROLESTRUCTUREN (DEEL 2) 5.1.     INTRODUCTIE. Vervolg discussie omtrent gestructureerd programmeren Introductie van de overblijvende controlestructuren. 5.2.     ESSENTIE VAN DE HERHALING GECONTROLEERD DOOR EEN TELLER. Voor een herhaling met een teller zijn nodig:

Download Presentation

HOOFDSTUK 5 CONTROLESTRUCTUREN (DEEL 2) 5.1.     INTRODUCTIE

An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -

Presentation Transcript


Hoofdstuk 5 controlestructuren deel 2 5 1 introductie

HOOFDSTUK 5

CONTROLESTRUCTUREN (DEEL 2)

5.1.     INTRODUCTIE

  • Vervolg discussie omtrent gestructureerd programmeren

  • Introductie van de overblijvende controlestructuren


Hoofdstuk 5 controlestructuren deel 2 5 1 introductie

5.2.     ESSENTIE VAN DE HERHALING

GECONTROLEERD DOOR EEN TELLER

  • Voor een herhaling met een teller zijn nodig:

    • naam van een controlevariabele (de teller)

    • initiële waarde van de controlevariabele

    • increment/decrement van de controlevariabele

      • elke keer de lus doorlopen wordt

    • conditie, die test op de eindwaarde van de controlevariabele


Hoofdstuk 5 controlestructuren deel 2 5 1 introductie

VOORBEELD

  • WhileCounter.java

    • is een programma (applet), dat een waaier van 10 lijnen gaat tekenen

    • gebruikt een while- herhalingsstructuur

    • gebruikt een teller om de herhaling bij te houden


Hoofdstuk 5 controlestructuren deel 2 5 1 introductie

1 // Fig. 5.1: WhileCounter.java

2 // Herhaling gecontroleerd door een teller

3

4 // Java core packages

5 import java.awt.Graphics;

6

7 // Java extension packages

8 import javax.swing.JApplet;

9

10 public class WhileCounter extends JApplet

11 {

12 // trek lijnen op de achtergrond van de applet lines on applet

13 public void paint( Graphics g )

14 {

15 // roep de overgeërfde versie van de methode paint op

16 super.paint( g );

17

18 int counter = 1;// initialisatie

19

20 while ( counter <= 10 )// conditie van de herhaling

21 {

22 g.drawLine( 10, 10, 250, counter * 10 );

23 ++counter; // increment

24 }// einde while structuur

25

26 } // einde methode paint

27

28 } // einde klasse WhileCounter


Hoofdstuk 5 controlestructuren deel 2 5 1 introductie

18 int counter = 1;// initialisatie

19

20 while ( counter <= 10 )// conditie van de herhaling

21 {

22 g.drawLine( 10, 10, 250, counter * 10 );

23 ++counter;// increment

24 }// einde while structuur

  • Lijn 18

    • Naam van de controlevariabele is counter.

    • Initiële waarde van de controlevariabele is 1.

  • Lijn 20

    • Conditionele test op de eindwaarde van counter.

  • Lijn 23

    • Increment van de controlevariabele counter.


Hoofdstuk 5 controlestructuren deel 2 5 1 introductie

5.3.     DE “FOR” HERHALINGSSTRUCTUUR

  • for (expressie1;expressie2;expressie3 )statement

  • hanteert alle details van de herhalingsstructuur met teller


Hoofdstuk 5 controlestructuren deel 2 5 1 introductie

VOORBEELD

  • ForCounter.java

    • is een programma (applet), dat een waaier van 10 lijnen gaat tekenen.

    • gebruikt een for-herhalingsstructuur.


Hoofdstuk 5 controlestructuren deel 2 5 1 introductie

1 // Fig. 5.2: ForCounter.java

2 // Herhaling gecontroleerd door een teller via een for-structuur

3

4 // Java core packages

5 import java.awt.Graphics;

6

7 // Java extension packages

8 import javax.swing.JApplet;

9

10 public class ForCounter extends JApplet

11 {

12 // teken lijnen op de achtergrond van de applet

13 public void paint( Graphics g )

14 {

15 // roep de overgeërfde versie van de methode paint op

16 super.paint( g );

17

18 // Initialisatie, herhalingsconditie and incrementeren

19 // zijn allemaal inbegrepen in de hoofding van de for structuur.

20 for ( int counter = 1; counter <= 10; counter++ )

21 g.drawLine( 10, 10, 250, counter * 10 );

22

23 } // einde methode paint

24

25 } // einde klasse ForCounter


Hoofdstuk 5 controlestructuren deel 2 5 1 introductie

18 // Initialisatie, herhalingsconditie and incrementeren

19 // zijn allemaal inbegrepen in de hoofding van de for structuur.

20 for ( int counter = 1; counter <= 10; counter++ )

21 g.drawLine( 10, 10, 250, counter * 10 );

  • Lijn 20

    int counter = 1

    • Naam van de controlevariabele is counter.

    • Initiële waarde van de controlevariabele is 1.

  • counter <= 10

    • Conditionele test op de eindwaarde van counter.

  • counter++

    • Increment van de controlevariabele counter.


  • Hoofdstuk 5 controlestructuren deel 2 5 1 introductie

    REGEL 20 UIT FORCOUNTER.JAVA

    Naam van de

    Eindwaarde van de

    for

    controlevariabele

    controlevariabele

    sleutelwoord

    for (

    int

    counter =

    1

    ; counter <=

    10

    ; counter++ )

    Beginwaarde

    Increment

    van de controlevariabele

    van de controlevariabele

    Conditie voor vervolg van de lus

    Fig. 5.3Componenten van een typische hoofding van een “for” structuur.


    Hoofdstuk 5 controlestructuren deel 2 5 1 introductie

    5.3.     DE “FOR” HERHALINGSSTRUCTUUR (VERVOLG)

    for (expressie1;expressie2;expressie3 )statement

    kan herschreven worden als:

    { expressie1; while (expressie2 )

    {statementexpressie3; }

    }


    Hoofdstuk 5 controlestructuren deel 2 5 1 introductie

    FLOWCHART VAN EEN TYPISCHE

    “FOR” HERHALINGSSTRUCTUUR

    Fig. 5.4Flowchart van een typische “for” herhalingsstructuur.

    Stel de

    counter <- 1

    beginwaarde

    van de controle-

    variabele vast

    true

    g.drawLine(

    counter<- counter + 1

    Bepaal of

    counter <= 10

    10, 10, 250,

    de eindwaarde

    counter * 10

    Incrementeer

    van de controle-

    );

    de controle-

    variabele bereikt is.

    false

    “body” van de lus

    variabele.

    (dit kunnen meerdere

    Statements zijn)


    Hoofdstuk 5 controlestructuren deel 2 5 1 introductie

    5.4.     VOORBEELDEN DIE GEBRUIK MAKEN

    VAN DE “FOR” HERHALINGSSTRUCTUUR

    • Variërende controlevariabele in de for structuur

      • De controlevariabele varieert van 1 tot 100,

        • toenemend in stappen van 1

        • for ( int i = 1; i <= 100; i++ )

      • De controlevariabele varieert van 100 tot 1,

        • afnemend in stappen van –1

        • for ( int i = 100; i >= 1; i-- )

      • De controlevariabele varieert van 7 tot 77 in stappen van 7

        • for ( int i = 7; i <= 77; i += 7 )


    Hoofdstuk 5 controlestructuren deel 2 5 1 introductie

    VOORBEELD 1

    • Sum.java

      • de som van de even gehele getallen van 2 t.e.m. 100 wordt weergegeven op het scherm.

      • gebruikt een for-herhalingsstructuur in stappen van 2.


    Hoofdstuk 5 controlestructuren deel 2 5 1 introductie

    1 // Fig. 5.5: Sum.java

    2 // Herhaling gecontroleerd door een teller met de “for” structuur

    3

    4 // Java extension packages

    5 import javax.swing.JOptionPane;

    6

    7 public class Sum

    8 {

    9 // de uitvoering van de Java applicatie begint bij de main method

    10 public static void main( String args[] )

    11 {

    12 int total = 0;

    13

    14 // sommeer de even gehele getallen van 2 tot en met 100

    15 for ( int number = 2; number <= 100; number += 2 )

    16 total += number;

    17

    18 // toon het resultaat

    19 JOptionPane.showMessageDialog( null, "The sum is " + total,

    20"Sum Even Integers from 2 to 100",

    21 JOptionPane.INFORMATION_MESSAGE );

    22

    23 System.exit( 0); // beëindig de applicatie

    24

    25 } // einde methode main

    26

    27 } // einde klasse Sum


    Hoofdstuk 5 controlestructuren deel 2 5 1 introductie

    12 int total = 0;

    13

    14 // sommeer de even gehele getallen van 2 tot en met 100

    15 for ( int number = 2; number <= 100; number += 2 )

    16 total += number;

    17

    18 // toon het resultaat

    19 JOptionPane.showMessageDialog( null, "The sum is " + total,

    20"Sum Even Integers from 2 to 100",

    21 JOptionPane.INFORMATION_MESSAGE );

    • Lijn 15

    • number += 2

      • incrementeer number met 2 bij elke iteratie


    Hoofdstuk 5 controlestructuren deel 2 5 1 introductie

    VOORBEELD 2

    • Interest.java

      • is een programma dat de samengestelde intrest berekent

      • a = p(1 + r)n

      • p = kapitaal (in ons vb. $1000)

      • r= jaarlijkse intrest (in ons vb. 5%)

      • n = aantal jaren

      • a = kapitaalna n jaar

      • Het kapitaal MET de samengestelde intrest wordt voor de eerste 10 jaar weergegeven.

      • gebruikt een for-herhalingsstructuur.


    Hoofdstuk 5 controlestructuren deel 2 5 1 introductie

    1

    // Fig. 5.6: Interest.java

    2

    // Berekening van samengestelde interest

    3

    4

    // Java core packages

    5

    import

    java.text.

    NumberFormat

    ;

    6

    import

    java.util.Locale;

    7

    8

    // Java extension packages

    9

    import

    javax

    .swing.

    JOptionPane

    ;

    Interest.java

    10

    import

    javax

    .swing.

    JTextArea

    ;

    11

    12

    public class

    Interest

    13 {

    14

    // de uitvoering van de Java applicatie begint bij de main methode

    15

    public static void

    main( String

    args

    [] )

    16

    {

    17

    double

    amount, principal =

    1000.0

    , rate =

    0.05

    ;

    18

    19

    // creëer NumberFormat om floating point getallen

    20

    // met twee cijfers rechts van de decimale punt te formatteren

    21

    NumberFormat moneyFormat

    =

    22

    NumberFormat

    .

    getCurrencyInstance

    ( Locale.

    US

    );

    23

    24

    // creëer JtextArea om de uitvoer te laten zien

    25

    JTextArea outputTextArea

    =

    new

    JTextArea

    ();

    26

    27

    // plaats de eerste lijn tekst in outputTextArea

    28

    outputTextArea

    .

    setText

    (

    "Year

    \

    tAmount

    on deposit

    \

    n"

    );

    29

    30

    // bereken het bedrag in deposito voor elk van de tien jaren

    31

    for

    (

    int

    year =

    1

    ; year <=

    10

    ; year++ )

    32{

    33

    // bereken nieuw bedrag voor een specifiek jaar

    34

    amount = principal * Math.

    pow

    (

    1.0

    + rate, year );

    35


    Hoofdstuk 5 controlestructuren deel 2 5 1 introductie

    36

    // voeg één lijn tekst toe aan outputTextArea

    37

    outputTextArea

    .append( year + "

    \

    t" +

    38

    moneyFormat

    .format( amount ) + "

    \

    n" );

    39

    40

    }

    // einde for structuur

    41

    42

    // toon het resultaat

    43

    JOptionPane

    .

    showMessageDialog

    (

    null

    ,

    outputTextArea

    ,

    44

    "Compound Interest"

    ,

    JOptionPane

    .

    INFORMATION_MESSAGE

    );

    45

    46

    System.exit(

    0

    );

    // beëindig de applicatie

    47

    48

    }

    // einde methode main

    49

    50

    }

    // einde klasse Interest

    Interest.java

    vervolg code + uitvoer


    Hoofdstuk 5 controlestructuren deel 2 5 1 introductie

    12 public class Interest

    13 {

    14 // de uitvoering van de Java applicatie begint bij de main methode

    15 public static void main( String args[] )

    16 {

    17 double amount, principal = 1000.0, rate = 0.05;

    18

    • Lijn 17

      • Java stockeert floating-point getallen in variabelen van het type double (of float)


    Hoofdstuk 5 controlestructuren deel 2 5 1 introductie

    19 // creëer NumberFormat om floating point getallen

    20 // met twee cijfers rechts van de decimale punt te formatteren

    21 NumberFormat moneyFormat =

    22 NumberFormat.getCurrencyInstance( Locale.US );

    23

    24 // creëer JtextArea om de uitvoer te laten zien

    25 JTextArea outputTextArea = new JTextArea();

    26

    27 // plaats de eerste lijn tekst in outputTextArea

    28 outputTextArea.setText( "Year\tAmount on deposit\n" );

    29

    • Lijn 21

      • NumberFormat kan numerieke waarden als een valuta formatteren

    • Lijn 22: Locale.US

      • Toont geldbedragen met een dollarteken ($)


    Hoofdstuk 5 controlestructuren deel 2 5 1 introductie

    30 // bereken het bedrag in deposito voor elk van de tien jaren

    31 for ( int year = 1; year <= 10; year++ )

    32 {

    33 // bereken nieuw bedrag voor een specifiek jaar

    34 amount = principal * Math.pow( 1.0 + rate, year );

    35

    36 // voeg één lijn tekst toe aan outputTextArea

    37 outputTextArea.append( year + "\t" +

    38 moneyFormat.format( amount ) + "\n" );

    39

    40 }// einde for structuur

    • Lijn 31-40

      • Bereken amount (kapitaal) met een for structuur

      • amount = a = p(1 + r)n

    • Lijn 34

      • Math.pow(1.0 + rate, year)

      • (1.0 + rate)year


    Hoofdstuk 5 controlestructuren deel 2 5 1 introductie

    41

    42 // toon het resultaat

    43 JOptionPane.showMessageDialog( null, outputTextArea,

    44 "Compound Interest", JOptionPane.INFORMATION_MESSAGE );

    45

    46 System.exit( 0 ); // beëindig de applicatie

    47

    48 } // einde methode main

    49

    50 } // einde klasse Interest


    Hoofdstuk 5 controlestructuren deel 2 5 1 introductie

    5.5.     DE “DO/WHILE” HERHALINGSSTRUCTUUR

    • do statement while (voorwaarde);

    • lijkt op de while structuur, MAAR test of de lus verder doorlopen moet worden

    • NADAT de body van de loop uitgevoerd is

      • dit betekent dat de lus altijd

        MINSTENS EENMAAL doorlopen wordt

  • Het statement wordt herhaald zolang de voorwaarde WAARblijft!

  • Zorg ervoor dat de voorwaarde beïnvloed wordt in het statement, anders oneindige lus!


  • Hoofdstuk 5 controlestructuren deel 2 5 1 introductie

    VOORBEELD

    • DoWhileControle.java

      • Er wordt gevraagd om een positief geheel getal, verschillend van nul in te voeren; de invoer wordt vervolgens gecontroleerd; indien deze niet voldoet, wordt een nieuwe waarde aan de gebruiker gevraagd.

      • Is de invoer in orde, dan wordt dit getal in een dialoogvenster getoond.


    Hoofdstuk 5 controlestructuren deel 2 5 1 introductie

    • // Dit voorbeeld staat niet in het boek!!!

    • 2 // Using the do/while repetition structure.

    • 3

    • 4 // Java core packages

    • 5 import java.awt.Graphics;

    • 6

    • 7 // Java extension packages

    • 8 import javax.swing.*;

    • 9

    • 10 public class DoWhileControle

    • 11 {

    • 12 public static void main( String[] args )

    • 13 {

    • 14 int getal;

    • 15 String input;

    • 16

    • 17 do

    • 18 {

    • 19 input = JOptionPane.showInputDialog(“Geef een positief

    • 20 geheel getal,verschillend van nul in : “);

    • 21 getal = Integer.parseInt(input);

    • 22 }

    • 23 while ( getal <= 0 ); // einde do/while structuur

    • 24 JOptionPane.showMessageDialog(null,”Het ingevoerde getal = “ + getal);

    • System.exit(0);

    • } // einde methode main

    • } // einde klasse DoWhileControle


    Hoofdstuk 5 controlestructuren deel 2 5 1 introductie

    do

    18 {

    19 input = JOptionPane.showInputDialog(“Geef een positief

    20 geheel getal,verschillend van nul in : “);

    21 getal = Integer.parseInt(input);

    22 }

    23 while ( getal <= 0 ); // einde do/while structuur

    • Lijn 19-23

      • Een getal wordt ingevoerd en vervolgens wordt er getest op de waarde van getal.

      • Voldoet de waarde van getal niet, dan krijgt de gebruiker een tweede kans om een getal in te voeren.

      • Enz..., tot het ingevoerde getal voldoet aan de gestelde vraag.

      • Merk op: de lus wordt niet verlaten, zolang het ingevoerde getal niet voldoet!


    Hoofdstuk 5 controlestructuren deel 2 5 1 introductie

    FLOWCHART VAN DE “DO/WHILE”

    HERHALINGSSTRUCTUUR

    actie(s)

    true

    conditie

    false

    Fig. 5.10Flowchart van de do/while herhalingsstructuur.


    Hoofdstuk 5 controlestructuren deel 2 5 1 introductie

    5.6.     DE “SWITCH”

    MEERVOUDIGE SELECTIESTRUCTUUR

    • switchstructuur

      • wordt gebruikt voor meervoudige selecties:

    • switch (var)

    • {

      • case label1: statement1

      • break;

      • case label2: statement2

      • break;

      • default: statement3

      • [ break;]

      • }


    Hoofdstuk 5 controlestructuren deel 2 5 1 introductie

    VOORBEELD

    • SwitchTest.java (= applet)

      • de gebruiker geeft een getal in

        • 1 = een waaier van 10 lijnen tekenen

        • 2 = 10 vierkanten tekenen

        • 3 = 10 cirkels tekenen

        •  1, 2 en 3 = de tekst "Invalid value entered“wordt weergegeven.


    Hoofdstuk 5 controlestructuren deel 2 5 1 introductie

    1 // Fig. 5.7: SwitchTest.java

    2 // Lijnen, rechthoeken of ovalen tekenen op basis van de input van de gebruiker.

    3

    4 // Java core packages

    5 import java.awt.Graphics;

    6

    7 // Java extension packages

    8 import javax.swing.*;

    9

    10 public class SwitchTest extends JApplet

    11 { private int choice;// keuze van de gebruiker welke vorm getekend moet worden

    12

    13 // initialiseeer de applet door de keuze van de gebruiker te verkrijgen

    14 public void init()

    15 {

    16 String input; // input van de gebruiker

    17

    18 // verkrijg de keuze van de gebruiker

    19 input = JOptionPane.showInputDialog(

    20 "Enter 1 to draw lines\n"+

    21 "Enter 2 to draw rectangles\n"+

    22 "Enter 3 to draw ovals\n");

    23

    24 // converteer de input van de gebruiker naar een int

    25 choice = Integer.parseInt( input );

    26 }

    Verkrijg input van de gebruiker


    Hoofdstuk 5 controlestructuren deel 2 5 1 introductie

    28 // teken vormen op de achtergrond van de applet

    29 public void paint( Graphics g )

    30 {

    31 // roep de overgeërfde versie van de methode paint op

    32 super.paint( g );

    33

    34 //bepaal de te tekenen vorm op basis van de keuze van de gebruiker

    35

    36 switch ( choice )

    37 {

    38 case1:

    39 for ( int i = 0; i < 10; i++ )g.drawLine( 10, 10, 250, 10 + i * 10 );

    40 break; // gedaan met dit geval te verwerken

    41

    42 case2:

    43 for ( int i = 0; i < 10; i++ )

    44 g.drawRect( 10 + i * 10, 10 + i * 10, 50 + i * 10, 50 + i * 10 );

    45 break; // gedaan met dit geval te verwerken

    46

    47 case3:

    48 for ( int i = 0; i < 10; i++ )

    49 g.drawOval( 10 + i * 10, 10 + i * 10,50 + i * 10, 50 + i * 10 );

    50 break; // gedaan met dit geval te verwerken

    51

    52 default:

    53 g.drawString( "Invalid value entered",

    54 10, 20 + i * 15 );

    55

    56 }// einde switch structuur

    57

    58 }// einde for structuur

    59

    60 }// einde paint methode

    61

    62 }// einde klasse SwitchTest


    Hoofdstuk 5 controlestructuren deel 2 5 1 introductie

    SWITCHTEST.JAVA: OUTPUT


    Hoofdstuk 5 controlestructuren deel 2 5 1 introductie

    36 switch ( choice )

    37 {

    38 case 1:

    39 for ( int i = 0; i < 10; i++ )g.drawLine( 10, 10, 250, 10 + i * 10 );

    40 break;

    41

    42 case 2:

    43 for ( int i = 0; i < 10; i++ )

    44 g.drawRect( 10 + i * 10, 10 + i * 10,50 + i * 10, 50 + i * 10 );

    45 break; // gedaan met dit geval te verwerken

    46

    47 case 3:

    48 for ( int i = 0; i < 10; i++ )

    49 g.drawOval( 10 + i * 10, 10 + i * 10,50 + i * 10, 50 + i * 10 );

    50 break; // gedaan met dit geval te verwerken

    51

    52 default:

    53 g.drawString( "Invalid value entered",

    54 10, 20 + i * 15 );

    55

    56 }// einde switch structuur

    input van de gebruiker (choice) is de controlerende expressie

    defaultcase voor ongeldige ingaven

    • Lijn 36

      • de switch structuur bepaalt welk case label uitgevoerd moet worden, wat afhangt van de controlerendeexpressie.


    Hoofdstuk 5 controlestructuren deel 2 5 1 introductie

    FLOWCHART VAN DE “SWITCH”

    MEERVOUDIGE SELECTIESTRUCTUUR

    true

    case a actie(s)

    case a

    break

    false

    true

    break

    case b

    case b actie(s)

    false

    true

    case z actie(s)

    case z

    break

    false

    default actie(s)

    Fig. 5.8De switch meervoudige selectiestructuur.


    Hoofdstuk 5 controlestructuren deel 2 5 1 introductie

    Zet de volgende geneste if-structuren om in een switch – case-structuur

    • int i, k;

    • // invoer van een waarde voor i

    • if (i == 1) k = 3;

    • else if (i == 2) k = 6;

    • else if ( i == 3 || i == 4) k = 10;

    • else k = 20;

    • }

    • int x, y = 0;

    • // invoer van een waarde voor x

    • if (x == 100 || x == 150 || x == 170 || x == 199) y++;


    Hoofdstuk 5 controlestructuren deel 2 5 1 introductie

    OPLOSSINGEN

    • int i, k;

    • // invoer van een waarde voor i

    • switch (i)

    • { case 1 : k = 3; break;

    • case 2 : k = 6; break;

    • case 3 : case 4 : k = 10; break;

    • default : k = 20;

    • }


    Hoofdstuk 5 controlestructuren deel 2 5 1 introductie

    OPLOSSINGEN

    • int x, y = 0;

    • // invoer van een waarde voor x

    • switch (x)

    • {

    • case 100 : case 150 : case 170 :

    • case 199 : y++;

    • }


    Hoofdstuk 5 controlestructuren deel 2 5 1 introductie

    5.7.     STATEMENTS “BREAK” EN “CONTINUE”

    • break/continue

      • veranderen de stroom van de controle

    • break statement

      • veroorzaakt een onmiddellijke exit uit de controlestructuur

      • wordt gebruikt in while, for, do/while en switch statements

    • continue statement

      • slaat de resterende statements in de body van de lus over

      • gaat verder naar de volgende iteratie

      • wordt gebruikt in while, for en do/while statements


    Hoofdstuk 5 controlestructuren deel 2 5 1 introductie

    Voorbeeld met break statement

    1

    // Fig. 5.11:

    BreakTest

    .java

    2

    // Gebruik van het break statement in een for structuur

    3

    4

    // Java extension packages

    5

    import

    javax

    .swing.

    JOptionPane

    ;

    6

    BreakTest.java

    7

    public class

    BreakTest

    8 {

    9

    // de uitvoering van de Java applicatie begint bij de main methode

    10

    public static void

    main( String

    args

    [] )

    11

    {

    12

    String output =

    ""

    ;

    13

    int

    count;

    14

    15

    // herhaal 10 keer

    16

    for

    ( count =

    1

    ; count <=

    10

    ; count++ )

    17{

    18

    // als count gelijk is aan 5, beëindig dan de lus

    19

    if

    ( count ==

    5

    )

    20

    break

    ;

    // onderbreek de lus enkel als count == 5

    21

    22

    output += count +

    " "

    ;

    23

    24

    }

    // einde for structuur

    25

    26

    output +=

    "

    \

    nBroke

    out of loop at count = "

    + count;

    27

    JOptionPane

    .

    showMessageDialog

    (

    null

    , output );

    28

    29

    System.exit(

    0

    );

    // beëindig de applicatie

    30

    31

    }

    // einde methode main

    32

    33

    }

    // einde klasse BreakTest


    Hoofdstuk 5 controlestructuren deel 2 5 1 introductie

    16 for ( count = 1; count <= 10; count++ )

    17 {

    18 // als count gelijk is aan 5, beëindig dan de lus

    19 if ( count == 5 )

    20 break;// onderbreek de lus enkel als count == 5

    21

    22 output += count + " ";

    23

    24 } // einde for structuur

    • Lijn 16

      • Herhaal 10 keer

    • Lijn 20

      • ga uit de for structuur (break) wanneer count gelijk is aan 5


    Hoofdstuk 5 controlestructuren deel 2 5 1 introductie

    Voorbeeld met continue statement

    1

    // Fig. 5.12:

    ContinueTest

    .java

    2

    // Gebruik van het continue statement in een for structuur

    3

    4

    // Java extension packages

    5

    import

    javax

    .swing.

    JOptionPane

    ;

    6

    7

    public class

    ContinueTest

    ContinueTest.java

    8{

    9

    // de uitvoering van de Java applicatie begint bij de main methode

    10

    public static void

    main( String

    args

    [] )

    11

    {

    12

    String output =

    ""

    ;

    13

    14

    // herhaal 10 keer

    15

    for

    (

    int

    count =

    1

    ; count <=

    10

    ; count++ )

    16{

    17

    // als count 5 is, ga verder met de volgende iteratie van de lus

    18

    if

    ( count ==

    5

    )

    19

    continue

    ;

    // sla de overblijvende code in de lus over

    20

    // enkel als count == 5

    21

    22

    output += count +

    " "

    ;

    23

    24

    }

    // einde for structuur

    25

    26

    output +=

    "

    \

    nUsed

    continue to skip printing 5"

    ;

    27

    JOptionPane

    .

    showMessageDialog

    (

    null

    , output );

    28

    29

    System.exit(

    0

    );

    // beëindig de applicatie

    30

    31

    }

    // einde methode main

    32

    33

    }

    // einde klasse ContinueTest


    Hoofdstuk 5 controlestructuren deel 2 5 1 introductie

    15 for ( int count = 1; count <= 10; count++ )

    16 {

    17 // als count 5 is, ga verder met de volgende iteratie van de lus

    18 if ( count == 5 )

    19 continue;// sla de overblijvende code

    20 // in de lus over enkel als count == 5

    21

    22 output += count +" ";

    23

    24 } // einde for structuur

    • Lijn 15

      • Herhaal 10 keer

    • Lijn 19

      • Sla lijn 22 over en ga verder naar lijn 15 als count5 is


    Hoofdstuk 5 controlestructuren deel 2 5 1 introductie

    5.8.     LOGISCHE OPERATOREN

    • Logische operatoren

      • zorgen ervoor dat complexere condities gevormd kunnen worden

      • combineren eenvoudige condities

    • Logische operatoren in Java

      • && (conditionele EN)

      • & (logische EN)

      • || (conditionele OF)

      • | (logische inclusieve OF)

      • ^ (logische exclusieve OF)

      • ! (logische NIET)


    Hoofdstuk 5 controlestructuren deel 2 5 1 introductie

    WAARHEIDSTABEL CONDITIONELE EN (&&)


    Hoofdstuk 5 controlestructuren deel 2 5 1 introductie

    WAARHEIDSTABEL CONDITIONELE OF (||)


    Hoofdstuk 5 controlestructuren deel 2 5 1 introductie

    WAARHEIDSTABEL LOGISCHE EXCLUSIEVE OF (^)


    Hoofdstuk 5 controlestructuren deel 2 5 1 introductie

    WAARHEIDSTABEL LOGISCHE EXCLUSIEVE OF (^)

    Deze operator heeft geen short-circuit evaluatie!

    Beide operands worden steeds geëvalueerd!

    Voorbeeld:

    Als x negatief is moet y positief zijn of omgekeerd, als y negatief is moet x positief zijn.

    if (x < 0 ^ y < 0) // (x < 0 en y >= 0) of

    // (y < 0 en x >= 0)


    Hoofdstuk 5 controlestructuren deel 2 5 1 introductie

    WAARHEIDSTABEL LOGISCHE NIET (!)


    Hoofdstuk 5 controlestructuren deel 2 5 1 introductie

    Short-circuit-operatoren

    • De logische AND (&) en de logische inclusieve OR (|) werken op dezelfde manier als de conditionele AND (&&) en de conditionele OF (||), mits één uitzondering: het zijn GEEN short-circuit-operatoren

    • de logische operatoren & en | evalueren steeds de beide operands

    • Voorbeelden:

    • geslacht == 1 & leeftijd >= 65

    • verjaardag == true | ++ leeftijd >= 65


    Hoofdstuk 5 controlestructuren deel 2 5 1 introductie

    Short-circuit-operatoren (vervolg)

    • een expressie met een conditionele AND (&&) of een conditionele OF (||) wordt geëvalueerd totdat geweten is of de volledige expressie true of false oplevert

    • Gevolgen:

    • Zet bij de operator && de conditie die meest kans heeft om vals te zijn links van de operator, bij de operator || de conditie die meest kans heeft om waar te zijn.

    • Zet de conditie die eventueel niet mag geëvalueerd worden rechts!


    Hoofdstuk 5 controlestructuren deel 2 5 1 introductie

    Short-circuit-operatoren (vervolg)

    Voorbeelden:

    n != 0 && q < 1.0 / n

    Als n = 0 dan is n != 0 vals -> volledig vals en GEEN deling door nul!

    n == 0 || q > 1.0 / n

    Als n = 0 dan is n == 0 true -> volledig true en GEEN deling door nul!

    verjaardag == true || ++ leeftijd >= 65

    Als verjaardag = true dan is conditie1 true -> volledig true, MAAR geen aanpassing van de leeftijd!!!


    Hoofdstuk 5 controlestructuren deel 2 5 1 introductie

    1

    // Fig. 5.19:

    LogicalOperators

    .java

    2

    // Demonstratie van de logische operatoren

    3

    4

    // Java extension packages

    5

    import

    javax

    .swing.*;

    6

    7

    public class

    LogicalOperators

    8{

    Logical Operators.java

    9

    // de uitvoering van de Java applicatie begint bij de main methode

    10

    public static void

    main( String

    args

    [] )

    11

    {

    12

    // creëer een JTextArea om de resultaten te laten zien

    13

    JTextArea outputArea

    =

    new

    JTextArea

    (

    17

    ,

    20

    );

    14

    15

    // hang de JTextArea aan een JScrollPane, zodat de gebruiker kan

    16

    // scrollen door de resultaten

    17

    JScrollPane scroller

    =

    new

    JScrollPane

    (

    outputArea

    );

    18

    19

    String output;

    waarheidstabel logische EN

    20

    21

    // creëer de waarheidstabel voor de && operator

    22

    output =

    "Logical AND (&&)"

    +

    23

    "

    \

    nfalse

    && false: "

    + (

    false

    &&

    false

    ) +

    24

    "

    \

    nfalse

    && true: "

    + (

    false

    &&

    true

    ) +

    25

    "

    \

    ntrue

    && false: "

    + (

    true

    &&

    false

    ) +

    26

    "

    \

    ntrue

    && true: "

    + (

    true

    &&

    true

    );

    waarheidstabel logische OF

    27

    28

    // creëer de waarheidstabel voor de || operator

    29

    output +=

    "

    \

    n

    \

    nLogical

    OR (||)"

    +

    30

    "

    \

    nfalse

    || false: "

    + (

    false

    ||

    false

    ) +

    31

    "

    \

    nfalse

    || true: "

    + (

    false

    ||

    true

    ) +

    32

    "

    \

    ntrue

    || false: "

    + (

    true

    ||

    false

    ) +

    33

    "

    \

    ntrue

    || true: "

    + (

    true

    ||

    true

    );

    34


    Hoofdstuk 5 controlestructuren deel 2 5 1 introductie

    35

    // creëer de waarheidstabel voor de & operator

    36

    output +=

    "

    \

    n

    \

    nBoolean

    logical AND (&)" +

    37

    "

    \

    nfalse

    & false: "

    + (

    false

    &

    false

    ) +

    38

    "

    \

    nfalse

    & true: "

    + (

    false

    &

    true

    ) +

    39

    "

    \

    ntrue

    & false: "

    + (

    true

    &

    false

    ) +

    40

    "

    \

    ntrue

    & true: "

    + (

    true

    &

    true

    );

    41

    42

    // creëer de waarheidstabel voor de | operator

    43

    output +=

    "

    \

    n

    \

    nBoolean

    logical inclusive OR (|)"

    +

    44

    "

    \

    nfalse

    | false: "

    + (

    false

    |

    false

    ) +

    45

    "

    \

    nfalse

    | true: "

    + (

    false

    |

    true

    ) +

    46

    "

    \

    ntrue

    | false: "

    + (

    true

    |

    false

    ) +

    47

    "

    \

    ntrue

    | true: "

    + (

    true

    |

    true

    );

    48

    49

    // creëer de waarheidstabel voor de ^ operator

    50

    output +=

    "

    \

    n

    \

    nBoolean

    logical exclusive OR (^)"

    +

    51

    "

    \

    nfalse

    ^ false: "

    + (

    false

    ^

    false

    ) +

    52

    "

    \

    nfalse

    ^ true: "

    + (

    false

    ^

    true

    ) +

    53

    "

    \

    ntrue

    ^ false: "

    + (

    true

    ^

    false

    ) +

    54

    "

    \

    ntrue

    ^ true: "

    + (

    true

    ^

    true

    );

    55

    56

    // creëer de waarheidstabel voor de ! operator

    57

    output +=

    "

    \

    n

    \

    nLogical

    NOT (!)"

    +

    58

    "

    \

    n!false: "

    + ( !

    false

    ) +

    59

    "

    \

    n!true: "

    + ( !

    true

    );

    60

    61

    outputArea

    .

    setText

    ( output );

    // plaats resultaten in JOptionPane

    62

    63

    JOptionPane

    .

    showMessageDialog

    (

    null

    ,

    scroller

    ,

    64

    waarheidstabel voor de booleaanse logische EN

    Logical Operators.java

    vervolg

    waarheidstabel voor de booleaanse logische OF

    Waarheidstabel voor de booleaanse logische exclusieve OF

    Waarheidstabel voor de logische NIET

    "Truth Tables"

    ,

    JOptionPane

    .

    INFORMATION_MESSAGE

    );

    65

    66

    System.exit(

    0

    );

    // beëindig de applicatie


    Hoofdstuk 5 controlestructuren deel 2 5 1 introductie

    67

    68

    }

    // einde methode main

    69

    70

    }

    // einde klasse LogicalOperators

    LogicalOperators.java

    vervolg


    Hoofdstuk 5 controlestructuren deel 2 5 1 introductie

    21 // creëer de waarheidstabel voor de && operator

    22 output = "Logical AND (&&)" +

    23 "\nfalse && false: " + ( false && false ) +

    24 "\nfalse && true: " + ( false && true ) +

    25 "\ntrue && false: " + ( true && false ) +

    26 "\ntrue && true: "+ ( true && true );

    27

    • Lijn 22-26

      • waarheidstabel logische EN


    Hoofdstuk 5 controlestructuren deel 2 5 1 introductie

    28 // creëer de waarheidstabel voor de || operator

    29 output += "\n\nLogical OR (||)"+

    30 "\nfalse || false: " + ( false || false ) +

    31 "\nfalse || true: " + ( false || true ) +

    32 "\ntrue || false: " + ( true || false ) +

    33 "\ntrue || true: "+ ( true || true );

    34

    • Lijn 29-33

      • waarheidstabel logische OF


    Hoofdstuk 5 controlestructuren deel 2 5 1 introductie

    35 // creëer de waarheidstabel voor de & operator

    36 output += "\n\nBoolean logical AND (&)" +

    37 "\nfalse & false: " + ( false & false ) +

    38 "\nfalse & true: "+ ( false & true ) +

    39 "\ntrue & false: " + ( true & false ) +

    40 "\ntrue & true: " + ( true & true );

    41

    • Lijn 36-40

      • waarheidstabel voor de booleaanse logische EN


    Hoofdstuk 5 controlestructuren deel 2 5 1 introductie

    42 // creëer de waarheidstabel voor de | operator

    43 output += "\n\nBoolean logical inclusive OR (|)" +

    44 "\nfalse | false: " + ( false | false ) +

    45 "\nfalse | true: "+ ( false | true ) +

    46 "\ntrue | false: " + ( true | false ) +

    47 "\ntrue | true: " + ( true | true );

    48

    • Lijn 43-47

      • waarheidstabel voor de booleaanse logische OF


    Hoofdstuk 5 controlestructuren deel 2 5 1 introductie

    49 // creëer de waarheidstabel voor de ^ operator

    50 output += "\n\nBoolean logical exclusive OR (^)"+

    51 "\nfalse ^ false: " + ( false ^ false ) +

    52 "\nfalse ^ true: " + ( false ^ true ) +

    53 "\ntrue ^ false: " + ( true ^ false ) +

    54 "\ntrue ^ true: " + ( true ^ true );

    55

    • Lijn 50-54

      • Waarheidstabel voor de booleaanse logische exclusieve OF


    Hoofdstuk 5 controlestructuren deel 2 5 1 introductie

    56 // creëer de waarheidstabel voor de ! operator

    57 output += "\n\nLogical NOT (!)" +

    58 "\n!false: " + ( !false ) +

    59 "\n!true: " + ( !true );

    60

    • Lijn 57-59

      • Waarheidstabel voor de logische NIET


    Hoofdstuk 5 controlestructuren deel 2 5 1 introductie

    PRECEDENTIE EN ASSOCIATIVITEIT

    VAN DE OPERATOREN


    Hoofdstuk 5 controlestructuren deel 2 5 1 introductie

    5.9.     SAMENVATTING

    GESTRUCTUREERD PROGRAMMEREN

    • Sequentiestructuur

      • “ingebouwd” in Java

    • Selectiestructuren

      • if, if/else en switch

    • Herhalingsstructuren

      • while, do/while en for


    Hoofdstuk 5 controlestructuren deel 2 5 1 introductie

    SAMENVATTING HERHALINGSSTRUCTUREN

    • Je gebruikt een ‘for’ of een ‘while’ indien je van tevoren weet om hoeveel herhalingen het gaat.

    • Weet je niet van tevoren om hoeveel herhalingen het gaat, dan dien je een ‘while’ of een ‘do-while’ te gebruiken.

      • Je kiest voor een ‘while’ indien de body van de while misschien nooit mag worden uitgevoerd. De ‘voorwaarde’ wordt eerst getest. De body van de while wordt uitgevoerd zolang de ‘voorwaarde’ waar is.

      • Je kiest voor een ‘do-while’ indien de body van de ‘do-while’ tenminste één keer moet worden uitgevoerd. Eerst wordt de body van de ‘do-while uitgevoerd, vervolgens wordt de voorwaarde gecontroleerd. Zolang de expressie waar is, wordt de body van de ‘do-while’ uitgevoerd.


    Hoofdstuk 5 controlestructuren deel 2 5 1 introductie

    SAMENVATTING HERHALINGSSTRUCTUREN

    de body van de while wordt 0, 1 of meerdere keren uitgevoerd.

    de body van de do-while wordt minstens1 keer uitgevoerd.


    Hoofdstuk 5 controlestructuren deel 2 5 1 introductie

    OEFENINGEN

    Hoofdstuk 5


    Vind de fout en in volgende stukjes code

    Vind de fout(en) in volgende stukjes code:

    • Deze code zou moeten printen of een geheel getal value, even of oneven is

      • switch ( value % 2 )

      • {

      • case 0:

      • System.out.println( “Even getal” );

      • case 1:

      • System.out.println( “Oneven getal” );

      • }


    Vind de fout en in volgende stukjes code1

    Vind de fout(en) in volgende stukjes code:

    • Deze code zou moeten de oneven gehele getallen van 19 tot en met 1 printen

      • for ( x = 19; x >= 1; x += 2 )

      • System.out.println( x );


    Welke output geven volgende statements

    Welke output geven volgende statements?

    • Stel: i = 1, j = 2, k = 3 en m = 2

    • System.out.println( i == 1 );

    • System.out.println( j == 3 );

    • System.out.println( i >= 1 && j < 4 );

    • System.out.println( m <= 99 & k < m );

    • System.out.println( j >= i || k == m );

    • System.out.println( k + m < j | 3 – j >= k );

    • System.out.println( !( k > m ) );


    Schrijf een applicatie die

    Schrijf een applicatie die…

    volgende patronen print, enkel gebruik makend van:

    System.out.print(‘*’), System.out.println()

    en voor (c) en (d) ook nog System.out.print(‘ ’)

    (a)(b)(c)(d)

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

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

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

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

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

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

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

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

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

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


    Hoofdstuk 5 controlestructuren deel 2 5 1 introductie

    OPLOSSINGEN

    Hoofdstuk 5


    Verbeterde code

    Verbeterde code:

    • Deze code zal printen of een geheel getal value, even of oneven is

      • switch ( value % 2 )

      • {

      • case 0:

      • System.out.println( “Even getal” );

      • break;

      • case 1:

      • System.out.println( “Oneven getal” );

      • break;

      • }


    Verbeterde code1

    Verbeterde code:

    • Deze code zal de oneven gehele getallen van 19 tot en met 1 printen

    • int x;

      • for ( x = 19; x >= 1; x -= 2 )

      • System.out.println( x );


    Welke output geven volgende statements1

    Welke output geven volgende statements?

    • Stel: i = 1, j = 2, k = 3 en m = 2

    • System.out.println( i == 1 ); true

    • System.out.println( j == 3 ); false

    • System.out.println( i >= 1 && j < 4 ); true

    • System.out.println( m <= 99 & k < m ); false

    • System.out.println( j >= i || k == m ); true

    • System.out.println( k + m < j | 3 – j >= k ); false

    • System.out.println( !( k > m ) ); false


    Schrijf een applicatie die1

    Schrijf een applicatie die…

    volgende patronen print, enkel gebruik makend van:

    System.out.print(‘*’), System.out.println()

    en voor (c) en (d) ook nog System.out.print(‘ ’)

    (a)(b)(c)(d)

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

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

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

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

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

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

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

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

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

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


    Patroon a

    Patroon a

    public class PatroonA

    {

    public static void main (String args[])

    {

    for (int i=1; i<=10; i++) // 10 rijen

    {

    for (int j=1; j<=i; j++) // #kol = rij-index

    System.out.print (‘*’);

    System.out.println();

    }

    }

    }


    Patroon b

    Patroon b

    public class PatroonB

    {

    public static void main (String args[])

    {

    for (int i=1; i<=10; i++) // 10 rijen

    {

    for (int j1=1; j1<=i-1; j1++)// 0,1,..,9 sp

    System.out.print (‘ ’);

    for (int j2=11-i; j2>=1; j2--)//10,9,..,1 *

    System.out.print (‘*’);

    System.out.println();

    }

    }

    }


    Patroon c

    Patroon c

    public class PatroonC

    {

    public static void main (String args[])

    {

    for (int i=1; i<=10; i++) // 10 rijen

    {

    for (int j=11-i; j>=1; j--) // 10,9,8,..,1 kol

    System.out.print (‘*’);

    System.out.println();

    }

    }

    }


    Patroon d

    Patroon d

    public class PatroonD

    {

    public static void main (String args[])

    {

    for (int i=1; i<=10; i++)// 10 rijen

    {

    for (int j1=10-i; j1>=1; j1--)// 9,8,..,0 sp

    System.out.print (‘ ’);

    for (int j2=1; j2<=i; j2++)//1,2,3,..,10 *

    System.out.print (‘*’);

    System.out.println();

    }

    }

    }


  • Login