1-3 - People.cs.uchicago.edu

Download Report

Transcript 1-3 - People.cs.uchicago.edu

Control Structures in Java I
Controlling Java
CS 102-02
Lecture 2-2
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 statement
if ( 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.”);
What’s printed?
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
You look a little flush.
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 example
int 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 Need
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();
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;
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
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
April 8, 1998
CS102-02
Lecture 2-2