Download Control Structures

Survey
yes no Was this document useful for you?
   Thank you for your participation!

* Your assessment is very important for improving the work of artificial intelligence, which forms the content of this project

Document related concepts
no text concepts found
Transcript
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