April 8, 1998 CS102-02 Lecture 2-2 Control Structures in Java I CS 102-02 Lecture 2-2 Controlling Java
April 8, 1998 CS102-02 Lecture 2-2
Control Structures in Java I
CS 102-02
Lecture 2-2
Controlling Java
April 8, 1998 CS102-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 CS102-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 CS102-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 CS102-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 CS102-02 Lecture 2-2
Compound Statements
• If Java expects a statement, you can also use a compound statementif ( Expression ) Statement
• Compound statement is a group of statements, enclosed in {}
April 8, 1998 CS102-02 Lecture 2-2
Compounding a Statement
if (temperature <= 30 && windSpeed > 10) { me.bundleUp(); me.complain(“Chicago”, badWeather); me.tryToGraduate(now); me.returnToWarmerClimes(“I love L.A.!”);}
April 8, 1998 CS102-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 graphicsObject;
• Not a particular Graphics object yet
April 8, 1998 CS102-02 Lecture 2-2
A Defining Moment
• Declarations are good, but there’s more
• Definitions associate an initial value with a name
Graphics graphicsObject = new Graphics();
April 8, 1998 CS102-02 Lecture 2-2
Why Do We Care?Block = CompoundStatement+Declaration(s)
• Declarations in a block are special because they have block scope
{ Graphics graphicsObject;// some code goes here
// graphicsObject still exists
}// now it’s gone
April 8, 1998 CS102-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 CS102-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 Respiration What’s printed? 68 35 You look a little flush.
203 78 Heart beats gang aft agleyYou don’t look so good
205 40 Heart beats gang aft agleyYou look a little flush.
April 8, 1998 CS102-02 Lecture 2-2
I’d Hammer in the Morning Else I’d...
• In Java, If...Then...Else:
if ( Expression )
IfStatement
else
ElseStatement
April 8, 1998 CS102-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 CS102-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 CS102-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 CS102-02 Lecture 2-2
While is a Close Cousin to If
• In Java, repeat with while is:while ( Expression ) Statement
• A brief exampleint product = 2; // Def’n or declaration?
while (product <= 1000)
product = 2 * product;
// What’s product here?
April 8, 1998 CS102-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 CS102-02 Lecture 2-2
Everything’s a Class
• Build a ClassAverage class in Java
• Create a ClassAverage object
• Invoke its methods
April 8, 1998 CS102-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 CS102-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 CS102-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 CS102-02 Lecture 2-2
The Data We Needimport java.io.*;
public class Average { public static void main( String args[] ) throws IOException { double average; // number with decimal point int 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 CS102-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 CS102-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 CS102-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 int counter, grade, total; // initialization phase total = 0; counter = 0; // processing phase System.out.print( "Enter letter grade, Z to end: " ); grade = System.in.read();
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(); } // 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 CS102-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