1 / 43

Chapter 5 - Control Structures - Part 2

Chapter 5 - Control Structures - Part 2. Outline 5.1 Introduction 5.2 Essentials of Counter-Controlled Repetition 5.3 The for Repetition Structure 5.4 Examples Using the for Structure 5.5 The switch Multiple-Selection Structure 5.6 The do / while Repetition Structure

Download Presentation

Chapter 5 - Control Structures - Part 2

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. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Chapter 5 - Control Structures - Part 2 Outline 5.1 Introduction 5.2 Essentials of Counter-Controlled Repetition 5.3 The for Repetition Structure 5.4 Examples Using the for Structure 5.5 The switch Multiple-Selection Structure 5.6 The do/while Repetition Structure 5.7 The break and continue Statements 5.8 The Labeled break and continue Statements 5.9 Logical Operators 5.10 Structured Programming Summary

  2. 5.2 Counter-Controlled Repetition • Example • Counter-controlled repetition

  3. 1// Fig. 5.1: WhileCounter.java 2// Counter-controlled repetition 3import java.awt.Graphics; 4import javax.swing.JApplet; 5 6public class WhileCounter extends JApplet { 7 public void paint( Graphics g ) 8 { 9 int counter = 1; // initialization 10 11 while ( counter <= 10 ) { // repetition condition 12 g.drawLine( 10, 10, 250, counter * 10 ); 13 ++counter; // increment 14 } 15 } 16} 1. import 2. Class WhileCounter 3. paint 3.1 Initialize counter 3.2 Loop 3.3 drawLine 3.4 Increment Program Output

  4. 12 g.drawLine( 10, 10, 250, counter * 10 ); 5.2 Essentials of Counter-Controlled Repetition • Method drawLine( x1, y1, x2, y2 ) • Called using reference to Graphics object • Draws line from (x1, y1) to (x2, y2)

  5. 5.2 Essentials of Counter-Controlled Repetition while ( ++counter <= 10 ) //repetition condition g.drawLine( 10, 10, 250, counter *10 ); • Increment done inside while

  6. 5.3 The for Repetition Structure • Redo previous example • Use for structure

  7. 1// Fig. 5.2: ForCounter.java 2// Counter-controlled repetition with the for structure 3import java.awt.Graphics; 4import javax.swing.JApplet; 5 6public class ForCounter extends JApplet { 7 public void paint( Graphics g ) 8 { 9 // Initialization, repetition condition and incrementing 10 // are all included in the for structure header. 11 for ( int counter = 1; counter <= 10; counter++ ) 12 g.drawLine( 10, 10, 250, counter * 10 ); 13 } 14} Loop using for Program Output

  8. 11 for ( int counter = 1; counter <= 10; counter++ ) 12 g.drawLine( 10, 10, 250, counter * 10 ); 5.3 The for Repetition Structure • for "does it all" : initialization, condition, increment • General format for(initialization;loopContinuationTest;increment )statement • If multiple statements needed, enclose in braces

  9. 5.3 The for Repetition Structure • May use arithmetic expressions in for loops • Let x =2, y=10 for ( int j = x; j <= 4 * x * y; j += y / x ) is equivalent to for ( int j = 2; j <= 80; j += 5 ) • for can usually be written as a while loop: • Exception in section 5.7 initialization; while ( loopContinuationTest ) { statement increment; }

  10. g.drawLine( 10, 10, 250, counter * 10 ); Establish initial value of control variable. Determine if final value of control variable has been reached. true Increment the control variable. false Body of loop (this may be many statements) 11 for ( int counter = 1; counter <= 10; counter++ ) 12 g.drawLine( 10, 10, 250, counter * 10 ); int counter = 1 counter++ counter <= 10 5.3 The for Repetition Structure

  11. 5.4 Examples Using the for Structure • Problem • Calculate the value each year of a $1000 deposit, yielding 5% annually • Calculate the value for 10 years • Use a = p (1 + r ) • p - principal • r - interest rate • n - number of years • a - amount on deposit after nth year • Example program • Use a for loop to calculate interest n

  12. 1// Fig. 5.6: Interest.java 2// Calculating compound interest 3import java.text.DecimalFormat; 4import javax.swing.JOptionPane; 5import javax.swing.JTextArea; 6 7public class Interest { 8 public static void main( String args[] ) 9 { 10 double amount, principal = 1000.0, rate = .05; 11 12 DecimalFormat precisionTwo = new DecimalFormat( "0.00" ); 13 JTextArea outputTextArea = new JTextArea( 11, 20 ); 14 15 outputTextArea.append( "Year\tAmount on deposit\n" ); 16 17 for ( int year = 1; year <= 10; year++ ) { 18 amount = principal * Math.pow( 1.0 + rate, year ); 19 outputTextArea.append( year + "\t" + 20 precisionTwo.format( amount ) + "\n" ); 21 } 22 23 JOptionPane.showMessageDialog( 24 null, outputTextArea, "Compound Interest", 25 JOptionPane.INFORMATION_MESSAGE ); 26 27 System.exit( 0 ); // terminate the application 28 } 29} Use for loop to calculate interest

  13. Program Output

  14. 10 double amount, principal = 1000.0, rate = .05; 12 DecimalFormat precisionTwo = new DecimalFormat( "0.00" ); 13 JTextArea outputTextArea = new JTextArea( 11, 20 ); 5.4 Examples Using the for Structure • Variables used • Class DecimalFormat (package java.text) • Passed format control string "0.00" • Exactly two digits to right of decimal, at least one to left • Method format returns formatted String • Class JTextArea (package javax.swing) • GUI component, can display many lines of text • Initialized to display 11 rows and 20 columns of text

  15. 15 outputTextArea.append( "Year\tAmount on deposit\n" ); 17 for ( int year = 1; year <= 10; year++ ) { 18 amount = principal * Math.pow( 1.0 + rate, year ); 19 outputTextArea.append( year + "\t" + 20 precisionTwo.format( amount ) + "\n" ); 21 } 5.4 Examples Using the for Structure • Method append (of class JTextArea) • Add text to the String already in JTextArea object • Initially contains empty string • for loop executes 10 times • static method pow (class Math) • Math.pow( x, y ) • Raises x to the yth power • Takes two doubles, returns a double

  16. 23 JOptionPane.showMessageDialog( 24 null, outputTextArea, "Compound Interest", 25 JOptionPane.INFORMATION_MESSAGE ); 5.4 Examples Using the for Structure • static method showMessageDialog • Class JOptionPane • Up till now, displayed Strings • showMessageDialog can display a String or GUI component, such as a JTextArea

  17. 1// Fig. 5.6: Interest.java 2// Calculating compound interest Notice the import statements required. 3import java.text.DecimalFormat; New JTextArea object initialized to hold 11 rows and 20 columns of text. new operator used to create new objects. 4import javax.swing.JOptionPane; 5import javax.swing.JTextArea; 6 Notice the format of method Math.pow Use method append to add to the String in the JTextArea object. 7public class Interest { 8 public static void main( String args[] ) 9 { Use method format to output the formatted number as a String. 10 double amount, principal = 1000.0, rate = .05; 11 Use the JTextArea reference as an argument to showMessageDialog 12 DecimalFormat precisionTwo = new DecimalFormat( "0.00" ); 13 JTextArea outputTextArea = new JTextArea( 11, 20 ); 14 15 outputTextArea.append( "Year\tAmount on deposit\n" ); 16 17 for ( int year = 1; year <= 10; year++ ) { 18 amount = principal * Math.pow( 1.0 + rate, year ); 19 outputTextArea.append( year + "\t" + 20 precisionTwo.format( amount ) + "\n" ); 21 } 22 23 JOptionPane.showMessageDialog( 24 null, outputTextArea, "Compound Interest", 25 JOptionPane.INFORMATION_MESSAGE ); 26 27 System.exit( 0 ); // terminate the application 28 } 29} 1. import 2. Class Interest 2.1 Initialize variables 2.2 DecimalFormat 3. for loop 3.1 Math.pow 3.2 append 3.3 format 3.4 showMessageDialog

  18. Program Output

  19. 5.5 The switch Multiple-Selection Structure • switch statements • Useful to test a variable for different values • Different action taken • Format • Series of case labels and an optional default case switch ( value ){ case '1': actions case '2': actions default: actions } • break; causes exit from structure

  20. true false true false . . . true false case z action(s) case a action(s) case b action(s) break break break default action(s) case b case a case z 5.5 The switch Multiple-Selection Structure

  21. 1// Fig. 5.7: SwitchTest.java 2// Counting letter grades 3import java.awt.Graphics; 4import javax.swing.*; 5 6public class SwitchTest extends JApplet { 7 int choice; 8 9 public void init() 10 { 11 String input; 12 13 input = JOptionPane.showInputDialog( 14 "Enter 1 to draw lines\n" + 15 "Enter 2 to draw rectangles\n" + 16 "Enter 3 to draw ovals\n" ); 17 18 choice = Integer.parseInt( input ); 19 } 20 21 public void paint( Graphics g ) 22 { 23 for ( int i = 0; i < 10; i++ ) { 24 switch( choice ) { 25 case 1: 26 g.drawLine( 10, 10, 250, 10 + i * 10 ); 27 break; 28 case 2: 29 g.drawRect( 10 + i * 10, 10 + i * 10, 30 50 + i * 10, 50 + i * 10 ); 31 break; Class SwitchTest

  22. 34 50 + i * 10, 50 + i * 10 ); 35 break; 36 default: 37 JOptionPane.showMessageDialog( 38 null, "Invalid value entered" ); 39 } // end switch 40 } // end for 41 } // end paint() 42} // end class SwitchTest 32 case 3: 33 g.drawOval( 10 + i * 10, 10 + i * 10, Program Output

  23. Program Output

  24. 7 int choice; 9 public void init() 10 { 11 String input; 12 13 input = JOptionPane.showInputDialog( 14 "Enter 1 to draw lines\n" + 15 "Enter 2 to draw rectangles\n" + 16 "Enter 3 to draw ovals\n" ); 17 18 choice = Integer.parseInt( input ); 19 } 5.5 The switch Multiple-Selection Structure • Method init • Get input from user

  25. 36 default: 37 JOptionPane.showMessageDialog( 38 null, "Invalid value entered" ); 24 switch( choice ) { 25 case 1: 26 g.drawLine( 10, 10, 250, 10 + i * 10 ); 27 break; 5.5 The switch Multiple-Selection Structure • switch structure - compare choice to cases • case labels - can be constant integral values of type byte, short, int, long, and char • Use single quotes to represent characters: 'A' • Can have multiple actions per case • break - exits switch structure • default label - optional, actions to take if no cases met

  26. 5.6 The do/while Repetition Structure • The do/while repetition structure • Similar to the while structure • Condition for repetition tested after the body of the loop is performed • Actions are performed at least once • Format • do {statement} while (condition); • Good practice to put brackets in, even if not required

  27. true false action(s) condition 5.6 The do/while Repetition Structure

  28. 1// Fig. 5.9: DoWhileTest.java 2// Using the do/while repetition structure 3import java.awt.Graphics; 4import javax.swing.JApplet; 5 6public class DoWhileTest extends JApplet { 7 public void paint( Graphics g ) 8 { 9 int counter = 1; 10 11 do { 12 g.drawOval( 110 - counter * 10, 110 - counter * 10, 13 counter * 20, counter * 20 ); 14 ++counter; 15 } while ( counter <= 10 ); 16 } 17} 1. Class DoWhileTest 2. paint 3. do/while loop Program Output

  29. 5.7 The break and continue Statements • break • Immediate exit fromwhile, for, do/while or switch • Program continues with the first statement after the structure • Common uses of the break statement • Escape early from a loop • Skip the remainder of a switch structure

  30. 5.7 The break and continue Statements • continue • Skips the remaining statements in body of while, for or do/while • Proceeds with the next iteration of the loop • while and do/while • Loop-continuation test is evaluated immediately after continue • for structure • Increment expression is executed, then the loop-continuation test is evaluated

  31. 1// Fig. 5.11: BreakTest.java 2// Using the break statement in a for structure 3import javax.swing.JOptionPane; break causes an immediate exit from the loop. 4 5public class BreakTest { 6 public static void main( String args[] ) 7 { 8 String output = ""; 9 int count; 10 11 for ( count = 1; count <= 10; count++ ) { 12 if ( count == 5 ) 13 break; // break loop only if count == 5 14 15 output += count + " "; 16 } 17 18 output += "\nBroke out of loop at count = " + count; 19 JOptionPane.showMessageDialog( null, output ); 20 System.exit( 0 ); 21 } 22} 1. Class BreakTest 2. main 2.1 for loop 2.2 break Program Output

  32. 1// Fig. 5.12: ContinueTest.java 2// Using the continue statement in a for structure 3import javax.swing.JOptionPane; 4 5public class ContinueTest { 6 public static void main( String args[] ) continue skips the rest of the body and goes to the next iteration. 7 { 8 String output = ""; 9 10 for ( int count = 1; count <= 10; count++ ) { 11 if ( count == 5 ) 12 continue; // skip remaining code in loop 13 // only if count == 5 14 15 output += count + " "; 16 } 17 18 output += "\nUsed continue to skip printing 5"; 19 JOptionPane.showMessageDialog( null, output ); 20 System.exit( 0 ); 21 } 1. Class ContinueTest 2. main 2.1 for loop 2.2 continue Program Output

  33. 5.8 The Labeled break and continue Statements • Nested set of structures • break statement • Can only break out of immediately enclosing structure • Use labeled break statement • Label - identifier followed by colon, i.e. myLabel: • Breaks out of enclosing statement and any number of repetition structures • Program resumes after enclosing labeled compound statement • Labeled continue statement • Skips statements in enclosing structure • Continues with next iteration of enclosing labeled repetition structure • Repetition structure preceded by a label

  34. 1// Fig. 5.13: BreakLabelTest.java 2// Using the break statement with a label 3import javax.swing.JOptionPane; Begins labeled compound statement stop: 4 Labeled break statement to exit stop block. 5public class BreakLabelTest { 6 public static void main( String args[] ) 7 { 8 String output = ""; 9 10 stop: { // labeled compound statement 11 for ( int row = 1; row <= 10; row++ ) { 12 for ( int column = 1; column <= 5 ; column++ ) { 13 14 if ( row == 5 ) 15 break stop; // jump to end of stop block 16 17 output += "* "; 18 } 19 20 output += "\n"; 21 } 22 23 // the following line is skipped 24 output += "\nLoops terminated normally"; 25 } 26 1. Class BreakLabelTest 2. stop: 2.1 for loop 2.2 Nested for loop 2.3 break stop

  35. 27 JOptionPane.showMessageDialog( 28 null, output,"Testing break with a label", 29 JOptionPane.INFORMATION_MESSAGE ); 30 System.exit( 0 ); 31 } 32} Program Output

  36. 1// Fig. 5.14: ContinueLabelTest.java 2// Using the continue statement with a label This label applies to the following for loop (labeled repetition structure). 3import javax.swing.JOptionPane; 4 5public class ContinueLabelTest { 6 public static void main( String args[] ) 7 { 8 String output = ""; Labeled continue statement skips remaining statements, goes to next iteration of labeled repetition structure. 9 10 nextRow: // target label of continue statement 11 for ( int row = 1; row <= 5; row++ ) { 12 output += "\n"; 13 14 for ( int column = 1; column <= 10; column++ ) { 15 16 if ( column > row ) 17 continue nextRow; // next iteration of 18 // labeled loop 19 20 output += "* "; 21 } 22 } 23 24 JOptionPane.showMessageDialog( 25 null, output,"Testing continue with a label", 26 JOptionPane.INFORMATION_MESSAGE ); 27 System.exit( 0 ); 28 } 29} 1. Class ContinueLabelTest 2. nextRow: 2.1 for loop 2.2 Nested for loop 2.3 continue nextRow

  37. Program Output

  38. 5.9 Logical Operators • Logical Operators • Till now, used <, >, ==, etc to test conditions • Logical operators allow more complex conditions • &&(logical AND) • Returns true if both conditions are true • ||(logical OR) • Returns true if either of its conditions are true • !(logical NOT, logical negation) • Reverses the truth/falsity of its condition • Short circuit evaluation • Evaluate left operand, decide whether to evaluate right operand • If left operand of && is false, will not evaluate right operand

  39. 5.9 Logical Operators • Boolean Logical Operators • ^ (Boolean logical exclusive OR) • true if exactly one condition true • Boolean logical AND (&) and boolean logical inclusive OR (|) • Work identical to regular logical AND and logical OR • Always evaluates both expressions (no short-circuit evaluation) • Useful if right operand has a needed side effect birthday == true | ++age >= 65

  40. 5.9 Logical Operators • Examples Expression Result true && false falsetrue || false true !false truetrue ^ true false

  41. 1// Fig. 5.19: LogicalOperators.java 2// Demonstrating the logical operators JTextArea can display many lines of text. This one can display 17 rows and 20 columns. 3import javax.swing.*; 4 5public class LogicalOperators { This creates a JScrollPane object and initializes it with outputArea. This adds scrolling to outputArea. 6 public static void main( String args[] ) 7 { Use the logical operators. Boolean values converted to Strings. 8 JTextArea outputArea = new JTextArea( 17, 20 ); 9 JScrollPane scroller = new JScrollPane( outputArea ); 10 String output = ""; 11 12 output += "Logical AND (&&)" + 13 "\nfalse && false: " + ( false && false ) + 14 "\nfalse && true: " + ( false && true ) + 15 "\ntrue && false: " + ( true && false ) + 16 "\ntrue && true: " + ( true && true ); 17 18 output += "\n\nLogical OR (||)" + 19 "\nfalse || false: " + ( false || false ) + 20 "\nfalse || true: " + ( false || true ) + 21 "\ntrue || false: " + ( true || false ) + 22 "\ntrue || true: " + ( true || true ); 23 24 output += "\n\nBoolean logical AND (&)" + 25 "\nfalse & false: " + ( false & false ) + 26 "\nfalse & true: " + ( false & true ) + 27 "\ntrue & false: " + ( true & false ) + 28 "\ntrue & true: " + ( true & true ); 29 1. Class LogicalOperators 1.1 JTextArea 1.2 JScrollPane 2. Logical operators

  42. 34 "\ntrue | true: " + ( true | true ); 35 36 output += "\n\nBoolean logical exclusive OR (^)" + 37 "\nfalse ^ false: " + ( false ^ false ) + 38 "\nfalse ^ true: " + ( false ^ true ) + 39 "\ntrue ^ false: " + ( true ^ false ) + Method setText replaces the String in the JTextArea. 40 "\ntrue ^ true: " + ( true ^ true ); 41 42 output += "\n\nLogical NOT (!)" + 43 "\n!false: " + ( !false ) + 44 "\n!true: " + ( !true ); 45 46 outputArea.setText( output ); 47 JOptionPane.showMessageDialog( null, scroller, 48 "Truth Tables", JOptionPane.INFORMATION_MESSAGE ); 49 System.exit( 0 ); 50 } 51 } 30 output += "\n\nBoolean logical inclusive OR (|)" + 31 "\nfalse | false: " + ( false | false ) + 32 "\nfalse | true: " + ( false | true ) + 33 "\ntrue | false: " + ( true | false ) + 3. setText

  43. 5.10 Structured Programming Summary Rule 3 - Replace any rectangle with a control structure Rule 3 Rule 3 Rule 3

More Related