Control Structures in Java I Controlling Java CS



























- Slides: 27
Control Structures in Java I Controlling Java CS 102 -02 Lecture 2 -2 April 8, 1998 CS 102 -02 Lecture 2 -2
Control Structures Control Flow • Program inertia – Java programs start with the first statement – Jump to the next, and the next until. . . • Control structures change the program flow April 8, 1998 CS 102 -02 Lecture 2 -2
Selection Structures • Two kinds of selection – If…then: Only do it if the condition’s true – If. . . then. . . else: Do one thing or the other April 8, 1998 CS 102 -02 Lecture 2 -2
If I Had a Hammer. . . • In Java syntax: if ( Expression ) Statement • Expression MUST be a Boolean expression Statement can be a block of statements • There’s no then in them thar hills April 8, 1998 CS 102 -02 Lecture 2 -2
If I Had an Example. . if (pulse >= 0) System. out. println(“Passed”); if (pulse >= 200) System. out. println(“Slow down!”); April 8, 1998 CS 102 -02 Lecture 2 -2
Compound Statements • If Java expects a statement, you can also use a compound statement if ( Expression ) Statement • Compound statement is a group of statements, enclosed in {} April 8, 1998 CS 102 -02 Lecture 2 -2
Compounding a Statement if (temperature <= 30 && wind. Speed > 10) { me. bundle. Up(); me. complain(“Chicago”, bad. Weather); me. try. To. Graduate(now); me. return. To. Warmer. Climes(“I love L. A. !”); } April 8, 1998 CS 102 -02 Lecture 2 -2
The Declaration of Independence • When is a Compound Statement a Block? When it contains a declaration. • A declaration says to Java: “I’m going to use a variable, and it’s going to be of this type. ” Graphics graphics. Object; • Not a particular Graphics object yet April 8, 1998 CS 102 -02 Lecture 2 -2
A Defining Moment • Declarations are good, but there’s more • Definitions associate an initial value with a name Graphics graphics. Object = new Graphics(); April 8, 1998 CS 102 -02 Lecture 2 -2
Why Do We Care? Block = Compound. Statement+Declaration(s) • Declarations in a block are special because they have block scope { Graphics graphics. Object; // some code goes here // graphics. Object still exists } // now it’s gone April 8, 1998 CS 102 -02 Lecture 2 -2
It’s Minty Fresh • Scope is where a variable is visible • More details on scope when we get to methods • And now, back to our regularly scheduled lecture. . . April 8, 1998 CS 102 -02 Lecture 2 -2
A Little Medical Diagnosis if (pulse >= 200 || pulse <= 0) System. out. println(“Heart beats gang aft agley”); if (respiration > 75) System. out. println(“You don’t look so good”); else System. out. println(“You look a little flush. ”); Pulse 68 Respiration 35 203 78 Heart beats gang aft agley You don’t look so good 205 40 Heart beats gang aft agley You look a little flush. April 8, 1998 What’s printed? You look a little flush. CS 102 -02 Lecture 2 -2
I’d Hammer in the Morning Else I’d. . . • In Java, If. . . Then. . . Else: if ( Expression ) If. Statement else Else. Statement April 8, 1998 CS 102 -02 Lecture 2 -2
Pile on the If Statements if (grade >= 90) System. out. println(“Wow, an A!”); else if (grade >= 80) System. out. println(“Not bad, a B!”); else if (grade >= 70) System. out. println(“Hanging in with a C. ”); else if (grade >= 60) System. out. println(“Oh my, a D. ”); else System. out. println(“It doesn’t look good”); April 8, 1998 CS 102 -02 Lecture 2 -2
While You Were Sleeping • While you were sleeping, I: – Told your family we were engaged – Hit on your brother – Fell in love with him • See what happens when you doze off for a few days. . . April 8, 1998 CS 102 -02 Lecture 2 -2
Variety Might be the Spice of Life. . . • Repetition is the meat and potatoes • Keep going until: – Fixed number of times (count up, count down) – A condition becomes true – A condition becomes false – An exception/error occurs April 8, 1998 CS 102 -02 Lecture 2 -2
While is a Close Cousin to If • In Java, repeat with while is: while ( Expression ) Statement • A brief example int product = 2; // Def’n or declaration? while (product <= 1000) product = 2 * product; // What’s product here? April 8, 1998 CS 102 -02 Lecture 2 -2
Determining a Class Average • The problem from the book: Develop a class-averaging program that will process an arbitrary number of letter grades each time the program is run April 8, 1998 CS 102 -02 Lecture 2 -2
Everything’s a Class • Build a Class. Average class in Java • Create a Class. Average object • Invoke its methods April 8, 1998 CS 102 -02 Lecture 2 -2
Java Applications • Java: It’s not just for applets anymore • Browsers need not apply – Applications are programs which can run on their own. – User interface: console or graphical April 8, 1998 CS 102 -02 Lecture 2 -2
Data Needs? • What information does the program need to work? • What information will be created in running the program? April 8, 1998 CS 102 -02 Lecture 2 -2
Programming with Verbs • What actions need to be performed? • Do we need to break them down into methods? April 8, 1998 CS 102 -02 Lecture 2 -2
The Data We Need import java. io. *; public class Average { public static void main( String args[] ) throws IOException { double average; // number with decimal point counter, grade, total; // initialization phase total = 0; counter = 0; // processing phase System. out. print( "Enter letter grade, Z to end: " ); grade = System. in. read(); April 8, 1998 CS 102 -02 Lecture 2 -2
What We’re Doing With It while ( grade != 'Z' ) { if ( grade == 'A' ) total = total + 4; else if ( grade == 'B' ) total = total + 3; else if ( grade == 'C' ) total = total + 2; else if ( grade == 'D' ) total = total + 1; } System. in. skip( 2 ); counter = counter + 1; System. out. print( "Enter letter grade, Z to end: " ); grade = System. in. read(); April 8, 1998 CS 102 -02 Lecture 2 -2
The End Result // Termination phase if ( counter != 0 ) { average = (double) total / counter; System. out. println( "Class average is " + average ); } else System. out. println( "No grades were entered" ); } } April 8, 1998 CS 102 -02 Lecture 2 -2
The Average Program // Fig. 2. 9: Average. java // Class average application with // sentinel-controlled repetition. import java. io. *; public class Average { public static void main( String args[] ) throws IOException { double average; // number with decimal point counter, grade, total; while ( grade != 'Z' ) { if ( grade == 'A' ) total = total + 4; else if ( grade == 'B' ) total = total + 3; else if ( grade == 'C' ) total = total + 2; else if ( grade == 'D' ) total = total + 1; System. in. skip( 2 ); counter = counter + 1; System. out. print( "Enter letter grade, Z to end: " ); grade = System. in. read(); // initialization phase total = 0; counter = 0; } // processing phase System. out. print( "Enter letter grade, Z to end: " ); grade = System. in. read(); // termination phase if ( counter != 0 ) { average = (double) total / counter; System. out. println( "Class average is " + average ); } else System. out. println( "No grades were entered" ); } } April 8, 1998 CS 102 -02 Lecture 2 -2
That’s It Until Next Time • Choosing one branch or another: use if – Watch out for dangling else’s • Looping with condition: can use while • Other ways to loop & branch – Use the most specific April 8, 1998 CS 102 -02 Lecture 2 -2