chapter 3 ch 1 – introduction to computers and java flow of control branching 1
TRANSCRIPT
1
Chapter 3
Ch 1 – Introduction toComputers and Java
Flow of ControlBranching
2
Chapter 3
3.1 The if-else Statement
3.2 The Type boolean
3.3 The switch Statement
3.4 Graphics Supplement
3
3.1 The if-else Statement
4
Flow Chart Deconstructed
booleanexpression
truestatements
falsestatement
Start
Stop
Terminator: Show start/stop
points
Process: Statements to
execute
Decision: Make a choice
Connector: Connect lines
FT
5
Flow Chart Deconstructed<Taxes owed>
Start
income <= NO_TAX_AMOUNT
Stop
taxesOwed = income * TAX_RATE
F
taxesOwed = 0.0
T
6
If else Deconstructed<Taxes owed>
...
if (income <= NO_TAX_AMOUNT) { taxesOwed = 0.0;}
else { taxesOwed = income * TAX_RATE;} //end if
...
boolean expression
true statements
false statements
7
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();
8
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
9
Boolean expressions may usethe 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
10
... and the followinglogical operators
Operation Operator Example
And && (a < b) && (c > d)
Or || (a == b) || (c == d)
Not ! !fileIsOpen
11
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();
12
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.
13
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
14
Application Deconstructed<StringEquality.java>
15
Application Deconstructed<MultiBranchIf.java>
package multibranchif;import java.util.Scanner;
public class MultiBranchIf { public static final int SUN = 1; public static final int MON = 2; public static final int TUE = 3; public static final int WED = 4; public static final int THU = 5; public static final int FRI = 6; public static final int SAT = 7; public static void main(String[] args) { Scanner keyboard = new Scanner(System.in); int weekDayNumber; String weekDayName = "";
constants for the days of the week
16
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.
17
Application Deconstructed<MultiBranchIf.java>
System.out.println("I see you chose " + weekDayName + "."); }// end main()}// end MultiBranchIf
18
The conditional operator isvery 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;
19
Recap
Use flowcharts to express algorithms.
Use the if for decisions.
Use .equals or .equalsIgnoreCase with strings
20
3.2The Type boolean
True or False?
21
Boolean expressions evaluateto true or false
number > 0– True if number > 0, false otherwise
3 > 4– False
3– True, since not 0
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;
25
Booleans use true or falseboolean isOld = true;
System.out.println("isOld = " + isOld);// displays isOld = true
System.out.print("Answer true or false. This is fun: ";boolean isOfAge = keyboard.nextBoolean();
// IOAnswer true of false. This is fun: true
26
Recap
Booleans hold either true or false.
(), arithmetic, relational, logical, in that order.
Boolean variables simplify code.
27
3.3The switch statement
statementsTrue
False
case 1
statements
False
True
default
case n
Switch Deconstructed
switch (expression) {case label1: statements;
[break];
case label2: statements;[break];
...default: statements;
[break];}
break is optional
default is optional
sdk 7: label canbe a string
29
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: case SUN: System.out.println("Woo hoo, weekend!); break;
default: System.out.println("No comprendo!"); break;}
Brainteaser time!
Draw the flow chart for the DayOfTheWeek switch
31
Application Deconstructed<DayOfTheWeek.java>
package dayoftheweek;
import java.util.Scanner;
public class DayOfTheWeek { public static final int SUN = 1; public static final int MON = 2; public static final int TUE = 3; public static final int WED = 4; public static final int THU = 5; public static final int FRI = 6; public static final int SAT = 7; public static void main(String[] args) { int dayOfTheWeek; Scanner keyboard = new Scanner(System.in);
32
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: System.out.println("Woo hoo, weekend!"); break; default: System.out.println("No comprendo!"); break; }// end switch }// end main()}// end DayOfTheWeek
33
3.4Graphics
Supplement
34
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 static final int EYE_WIDTH = 10; public static final int EYE_HEIGHT = 20; public static final int X_RIGHT_EYE = 155; public static final int X_LEFT_EYE = 230; public static final int Y_RIGHT_EYE = 100; public static final int Y_LEFT_EYE = Y_RIGHT_EYE; public static final int NOSE_DIAMETER = 10; public static final int X_NOSE = 195; public static final int Y_NOSE = 135;
35
Applet Deconstructed< YellowSmileyFace.java >
public static final int MOUTH_WIDTH = 100; public static final int MOUTH_HEIGHT = 50; public static final int X_MOUTH = 150; public static final int Y_MOUTH = 160; public static final int MOUTH_START_ANGLE = 180; public static final int 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);
36
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.RED); canvas.drawArc(X_MOUTH, Y_MOUTH, MOUTH_WIDTH, MOUTH_HEIGHT, MOUTH_START_ANGLE, MOUTH_EXTENT_ANGLE); }// end paint()}// end HappyFaceAppletConstants
canvas.setColor(Color.BLACK); canvas.fillOval(X_NOSE, Y_NOSE, NOSE_DIAMETER, NOSE_DIAMETER);
37
Applet Deconstructed< YellowSmileyFace.java >
38
Application Deconstructed< NameThatCountry.java >
package namethatcountry;
import javax.swing.JFrame;import java.awt.Color;import java.awt.Graphics;import 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;
39
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()
40
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
41
Application Deconstructed< NameThatCountry.java >
42
Application Deconstructed< NameThatCountry.java >