Download Chapter 3 - SIUE Computer Science

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
Chapter 3
Ch 1 – Introduction to
Computers and Java
Flow of Control
Branching
1
Chapter 3
3.1 The if-else Statement
3.2 The Type boolean
3.3 The switch Statement
3.4 Graphics Supplement
2
3.1
The if-else
Statement
3
Flow Chart Deconstructed
Terminator:
Show start/stop
points
Start
Decision:
Make a choice
T
boolean
expression
true
statements
Connector:
Connect lines
F
false
statement
Process:
Statements to
execute
Stop
4
Flow Chart Deconstructed
<Taxes owed>
Start
T
income <=
NO_TAX_AMOUNT
taxesOwed = 0.0
F
taxesOwed = income * TAX_RATE
Stop
5
If else Deconstructed
<Taxes owed>
...
boolean expression
if (income <= NO_TAX_AMOUNT) {
taxesOwed = 0.0;
true statements
}
else {
taxesOwed = income * TAX_RATE;
} //end if
false statements
...
6
Application Deconstructed
<TaxesOwed.java>
package taxesowed;
import java.util.Scanner;
public class TaxesOwed {
public static final double NO_TAX_AMOUNT = 10000.0;
public static final double TAX_RATE = 0.03;
public static void main(String[] args) {
double income;
double taxesOwed;
Scanner keyboard = new Scanner(System.in);
System.out.print("Enter your income amount: $");
income = keyboard.nextDouble();
7
Application Deconstructed
<TaxesOwed.java>
if (income <= NO_TAX_AMOUNT) {
taxesOwed = 0.0;
}
else {
taxesOwed = income * TAX_RATE;
}// end else
System.out.println("You owe $" + taxesOwed +
" on an income of $" + income);
}// end main()
}// end TaxesOwed
8
Boolean expressions may use
the following relational operators
Operation
Operator
Example
equality
==
a == b
inequality
!=
a != b
greater than
>
a > b
greater than or equal
>=
a >= b
less than
<
a < b
less than or equal
<=
a <= b
9
... and the following
logical operators
Operation
Operator
Example
And
&&
(a < b) && (c > d)
Or
||
(a == b) || (c == d)
Not
!
!fileIsOpen
10
Application Deconstructed
<StringEquality.java>
package stringequality;
import java.util.Scanner;
public class StringEquality {
public static void main(String[] args) {
String str1;
String str2;
Scanner keyboard = new Scanner(System.in);
System.out.print("Enter some text: ");
str1 = keyboard.nextLine();
System.out.print("Enter more text: ");
str2 = keyboard.nextLine();
11
Application Deconstructed
<StringEquality.java>
System.out.println();
System.out.println("str1 = \"" + str1 +
"\" : str2 = \"" + str2 + "\"");
System.out.println();
System.out.println("str1 == str2 ? " + (str1 == str2));
System.out.println("str1.equals(str2) ? " +
str1.equals(str2));
System.out.println("str2.equals(str1) ? " +
str2.equals(str1));
== asks: are they the
same object?
The others compare
the text.
12
Application Deconstructed
<StringEquality.java>
str2 = "apples are red";
System.out.println();
System.out.println("str1 = \"" + str1 +
"\" : str2 = \"" + str2 + "\"");
System.out.println();
System.out.println("str1.equals(str2) ? " +
str1.equals(str2));
System.out.println("str1.equalsIgnoreCase(str2) ? " +
str1.equalsIgnoreCase(str2));
}// end main()
}// end StringEquality
13
Application Deconstructed
<StringEquality.java>
14
Application Deconstructed
<MultiBranchIf.java>
package multibranchif;
import java.util.Scanner;
public class MultiBranchIf {
public static final int SUN
public static final int MON
public static final int TUE
public static final int WED
public static final int THU
public static final int FRI
public static final int SAT
=
=
=
=
=
=
=
1;
2;
3;
4;
5;
6;
7;
constants for
the days of
the week
public static void main(String[] args) {
Scanner keyboard = new Scanner(System.in);
int weekDayNumber;
String weekDayName = "";
15
Application Deconstructed
<MultiBranchIf.java>
System.out.print("Enter the day of the week
[1-Sunday...7-Saturday]: ");
weekDayNumber = keyboard.nextInt();
if (weekDayNumber == SUN) {
weekDayName = "Sunday";
}else if (weekDayNumber == MON)
weekDayName = "Monday";
}else if (weekDayNumber == TUE)
weekDayName = "Tuesday";
}else if (weekDayNumber == WED)
weekDayName = "Wednesday";
}else if (weekDayNumber == THU)
weekDayName = "Thursday";
}else if (weekDayNumber == FRI)
weekDayName = "Friday";
}else if (weekDayNumber == SAT)
weekDayName = "Saturday";
}// end if
{
{
{
This is just an if
else, where each
else contains an
if else.
{
{
{
16
Application Deconstructed
<MultiBranchIf.java>
System.out.println("I see you chose " + weekDayName + ".");
}// end main()
}// end MultiBranchIf
17
The conditional operator is
very handy
// The following if-else:
if (minute == 60) {
minute = 0;
}
else {
minute += 1;
}
// can be written with a conditional operator as:
minute = (minute == 60)? 0 : minute + 1;
18
Recap
 Use flowcharts to express algorithms.
 Use the if for decisions.
 Use .equals or .equalsIgnoreCase with strings
19
3.2
The Type
boolean
True or False?
20
Boolean expressions evaluate
to true or false
 number > 0
– True if number > 0, false otherwise
 3 > 4
– False
 3
– True, since not 0
21
Boolean variables simplify
// Testing for leap year.
if ( (year % 100 != 0) &&
(year % 4 == 0) ||
(year % 400 == 0) ) {
// leap year
}
// Testing for leap year.
boolean isLeap = (year % 100 != 0) &&
(year % 4 == 0) ||
(year % 400 == 0);
if (isLeap) {
// leap year
}
The && has higher priority than ||
Be mindful of the order
of evaluation
 Parentheses go first, then
 Arithmetic, then
 Relational, and then
 Logical
Brainteaser time!
int x = 3 * 5 + (4 – 5) / 2 + 6 % 4;
bool goAhead = 5 > 3 || 3 + 5 < 3 * 2;
bool isRaining = true;
bool haveUmbrella = false;
bool gotWet = isRaining && !haveUmbrella;
Booleans use true or false
boolean isOld = true;
System.out.println("isOld = " + isOld);
// displays isOld = true
System.out.print("Answer true or false. This is fun: ";
boolean isOfAge = keyboard.nextBoolean();
// IO
Answer true of false. This is fun: true
25
Recap
 Booleans hold either true or false.
 (), arithmetic, relational, logical, in that order.
 Boolean variables simplify code.
26
3.3
The switch
statement
case 1
True
statements
False
case n
True
statements
False
default
27
Switch Deconstructed
switch (expression) {
case label1: statements;
[break];
sdk 7: label can
be a string
default is optional
case label2:
...
default:
}
statements;
[break];
statements;
[break];
break is optional
Switch Deconstructed
<DayOfTheWeek>
// ... code omitted
switch (dayOfTheWeek) {
case MON: case TUE:
case WED: case THU:
case FRI:
System.out.println("Bah, still a work day!");
break;
case SAT:
default:
case SUN:
System.out.println("Woo hoo, weekend!);
break;
System.out.println("No comprendo!");
break;
}
29
Brainteaser time!
Draw the flow chart for the DayOfTheWeek switch
Application Deconstructed
<DayOfTheWeek.java>
package dayoftheweek;
import java.util.Scanner;
public class DayOfTheWeek {
public static final int
public static final int
public static final int
public static final int
public static final int
public static final int
public static final int
SUN
MON
TUE
WED
THU
FRI
SAT
=
=
=
=
=
=
=
1;
2;
3;
4;
5;
6;
7;
public static void main(String[] args) {
int dayOfTheWeek;
Scanner keyboard = new Scanner(System.in);
31
Application Deconstructed
<DayOfTheWeek.java>
System.out.print("Enter the day of the week
[Sun = 1...Sat = 7]: ");
dayOfTheWeek = keyboard.nextInt();
switch (dayOfTheWeek) {
case MON:
case TUE:
case WED:
case THU:
case FRI:
System.out.println("Bah, still a work day!");
break;
case SAT:
case SUN:
default:
}// end switch
}// end main()
}// end DayOfTheWeek
System.out.println("Woo hoo, weekend!");
break;
System.out.println("No comprendo!");
break;
32
3.4
Graphics
Supplement
33
Applet Deconstructed
< YellowSmileyFace.java >
package yellowsmileyface;
import javax.swing.JApplet;
import java.awt.Color;
import java.awt.Graphics;
public class YellowSmileyFace extends JApplet {
public static final int FACE_DIAMETER = 200;
public static final int X_FACE = 100;
public static final int Y_FACE = 50;
public
public
public
public
public
public
public
public
public
static
static
static
static
static
static
static
static
static
final
final
final
final
final
final
final
final
final
int
int
int
int
int
int
int
int
int
EYE_WIDTH = 10;
EYE_HEIGHT = 20;
X_RIGHT_EYE = 155;
X_LEFT_EYE = 230;
Y_RIGHT_EYE = 100;
Y_LEFT_EYE = Y_RIGHT_EYE;
NOSE_DIAMETER = 10;
X_NOSE = 195;
Y_NOSE = 135;
34
Applet Deconstructed
< YellowSmileyFace.java >
public
public
public
public
public
public
static
static
static
static
static
static
final
final
final
final
final
final
int
int
int
int
int
int
MOUTH_WIDTH = 100;
MOUTH_HEIGHT = 50;
X_MOUTH = 150;
Y_MOUTH = 160;
MOUTH_START_ANGLE = 180;
MOUTH_EXTENT_ANGLE = 180;
@Override
public void paint(Graphics canvas) {
canvas.setColor(Color.YELLOW);
canvas.drawOval(X_FACE, Y_FACE,
FACE_DIAMETER,
FACE_DIAMETER);
canvas.setColor(Color.BLACK);
canvas.drawOval(X_FACE, Y_FACE,
FACE_DIAMETER,
FACE_DIAMETER);
35
Applet Deconstructed
< YellowSmileyFace.java >
canvas.setColor(Color.BLUE);
canvas.fillOval(X_RIGHT_EYE, Y_RIGHT_EYE,
EYE_WIDTH, EYE_HEIGHT);
canvas.fillOval(X_LEFT_EYE, Y_LEFT_EYE,
EYE_WIDTH, EYE_HEIGHT);
canvas.setColor(Color.BLACK);
canvas.fillOval(X_NOSE, Y_NOSE,
NOSE_DIAMETER,
NOSE_DIAMETER);
canvas.setColor(Color.RED);
canvas.drawArc(X_MOUTH, Y_MOUTH,
MOUTH_WIDTH, MOUTH_HEIGHT,
MOUTH_START_ANGLE,
MOUTH_EXTENT_ANGLE);
}// end paint()
}// end HappyFaceAppletConstants
36
Applet Deconstructed
< YellowSmileyFace.java >
37
Application Deconstructed
< NameThatCountry.java >
package namethatcountry;
import
import
import
import
javax.swing.JFrame;
java.awt.Color;
java.awt.Graphics;
javax.swing.JOptionPane;
public class NameThatCountry extends JFrame {
public static final int FRAME_WIDTH = 600;
public static final int FRAME_HEIGHT = 400;
public static final int BAND_WIDTH = 120;
public static final int BAND_HEIGHT = 250;
public static final int X_FLAG = (FRAME_WIDTH - 3 * BAND_WIDTH) / 2;
public static final int Y_FLAG = (FRAME_HEIGHT - BAND_HEIGHT) / 2;
public static final int X_GREEN = X_FLAG;
public static final int Y_GREEN = Y_FLAG;
38
Application Deconstructed
< NameThatCountry.java >
public static final int X_WHITE = X_GREEN + BAND_WIDTH + 1;
public static final int Y_WHITE = Y_FLAG;
public static final int X_ORANGE = X_WHITE + BAND_WIDTH + 1;
public static final int Y_ORANGE = Y_FLAG;
public static void main(String[] args) {
NameThatCountry flagWindow = new NameThatCountry();
flagWindow.setVisible(true);
String countryName = JOptionPane.showInputDialog("Can you name
this country?");
if ( countryName.equalsIgnoreCase("Ireland") ) {
JOptionPane.showMessageDialog(null, "Nice Job.");
}
else {
JOptionPane.showMessageDialog(null, "Sorry, its Ireland");
}// end else
System.exit(0);
}// end main()
39
Application Deconstructed
< NameThatCountry.java >
public NameThatCountry() {
setSize(FRAME_WIDTH, FRAME_HEIGHT);
setTitle("Name that country");
}// end NameThatCountry()
@Override
public void paint(Graphics canvas) {
canvas.setColor(Color.GREEN);
canvas.fillRect(X_GREEN, Y_GREEN, BAND_WIDTH, BAND_HEIGHT);
canvas.setColor(Color.WHITE);
canvas.fillRect(X_WHITE, Y_WHITE, BAND_WIDTH, BAND_HEIGHT);
canvas.setColor(Color.ORANGE);
canvas.fillRect(X_ORANGE, Y_ORANGE, BAND_WIDTH, BAND_HEIGHT);
}
}// end NameThatCountry
40
Application Deconstructed
< NameThatCountry.java >
41
Application Deconstructed
< NameThatCountry.java >
42
Related documents