Upload
harvey-wilkins
View
231
Download
1
Embed Size (px)
Citation preview
ICT1412 - Introduction to Programming
Chapter 4 – Control Structures I
Prepared by K.T. Ng 2
Control Structures
Three methods of processing a program:1. In sequence
statements are executed one after another in order
2. Branching altering the flow of program execution by
making a selection or choice
3. Looping altering the flow of program execution by
repetition of statement(s)
Prepared by K.T. Ng 3
Flow of Execution
Prepared by K.T. Ng 4
Examples of Conditionals
Note: the following are not actual Java statements
1) if (score is greater than or equal to 90)grade is A
2) if (hours worked are less than or equal to 40)wages = rate * hours
otherwisewages = (rate * 40) + 1.5 * (rate * (hours - 40))
3) if (temperature is greater than 21 degrees and it is not raining)
recommended activity is fishing
Prepared by K.T. Ng 5
Relational Operators
Relational Operator allows you to make comparisons in a
program binary operator
needs two operands
Condition is represented by a logical (Boolean) expression expression that has a value of either true or
false
Prepared by K.T. Ng 6
Relational Operators (Cont.)
Less than < Greater than > Equal to ==
Note: not assignment ‘=‘
Not equal to != Less than or equal to <= Greater than or equal to >=
Prepared by K.T. Ng 7
Comparing Characters
In Java, characters are ordered according to the Unicode / ASCII character set
‘a’ comes before ‘b’ in the character set, so we can say ‘a’ < ‘b’
Order space character (' ') digits (‘0’, ‘1’, …) uppercase lowercase
Application: sort alphabetically
Prepared by K.T. Ng 8
Comparing Characters (Cont.)
'a' > 'A'
'6' < 7
' ' <= 's'
97 > 65 true
54 < 7 false
32 <= 115 true
Prepared by K.T. Ng 9
Comparing Floating-Point
Be careful when using the equality (==) to compare floating point numbers
Every bit in the representation must be equal computer can only store a certain number of
digits after the decimal If the numbers are results of computation,
it’s unlikely that two floating point numbers will be exactly equal
Prepared by K.T. Ng 10
Comparing Floating-Point (Cont.)
3.0 / 7.0
2.0 / 7.0
(3.0 / 7.0) + (2.0 / 7.0) + (2.0 / 7.0) == 1
0.4285714285714285
false
0.2857142857142857
If we did this math with exact arithmetic, this expression would be true
0.9999999999999999
Prepared by K.T. Ng 11
Comparing Strings
Strings are compared on a character-by-character basis first character not in common determines
how the strings compare e.g. : "Airplane" is less than "Airport"
If two strings have different lengths, and one is a substring of the other, the shorter one is evaluated as less e.g. : "Air" is less than "Airplane"
Prepared by K.T. Ng 12
Comparing Strings (Cont.) Don't use relational operators (==, <, >)
for Strings
str1.compareTo (str2)Returns an integer value:< 0 if str1 < str20 if str1 = str2>0 if str1 > str2
str1.equals (str2)Returns a boolean value of true or false
method parameter
Prepared by K.T. Ng 13
Questions
Given String str = "Homer";
str.compareTo("Marge")
str.equals("homer")
str.compareTo("Bart")
negative value
false
positive value
Prepared by K.T. Ng 14
Boolean Expressions Named for George Boole (1815-1864), the
founder of symbolic logic A boolean expression is an expression that can
be evaluated to either true or false Remember that booleans in Java are
true false
Examples of boolean expressions: 2+2 is not equal to 5 a is equal to 0 10 is less than 5
Prepared by K.T. Ng 15
Boolean Operators
NOT ! (unary)!(2+2==5)
AND && (binary)(2+2==5) && (1+1==2)
OR || (binary)(2+2==5) || (1+1==2)
true
false
true
Prepared by K.T. Ng 16
NOT Operator
Prepared by K.T. Ng 17
AND and OR Operators
Prepared by K.T. Ng 18
Boolean ExpressionsExamples
Simple: 2+2 is not equal to 5 2+2 != 5 10 is less than 5 10 < 5 'A' is equal to 7 'A' == 7
Compound: a is equal to 3 and b is equal to 5
(a==3) && (b==5)
x is not equal to 2 or y is less than 4 (x!=2) || (y<4)
s is not equal to b and t is greater than or equal to 3 or t is less than 0
(s!=b) && (t>=3) || (t<0)
Prepared by K.T. Ng 19
Short Circuited Operators
The processing of logical AND (&&) and logical OR (||) is “short-circuited”
A process in which the computer evaluates a logical expression from left to right and stops as soon as the value of the expression is known, the remaining right operand is not evaluated
count != 0 && total/count > MAX
Prepared by K.T. Ng 20
Precedence of Operators
Prepared by K.T. Ng 21
Boolean Expressions Common Error
Logical expression that evaluates to true if the value of num is between 0 and 10
0 <= num <= 10
0 <= num && num <= 10
incorrect syntax
correct syntax
Prepared by K.T. Ng 22
Questions
1. What type of primitive variable can the result of a logical expression be stored in?
2. Under what conditions would the expression (ch >= 'A' && ch <= 'Z') evaluate to false?
3. What method do you use to compare two Strings?
4. Why is 'a' greater than 'A'?
boolean
ch < 'A' or ch > 'Z'
compareTo
Because 'a' comes after 'A' in the ASCII (or Unicode) character table
Prepared by K.T. Ng 23
Questions (Cont.) Given the following declarations, evaluate each
Boolean expression:int count = 0, sum = 54;double x = 4.3, y = 1.2;boolean wrong = true;
1. (wrong && sum > 60)
2. ((x > 5) || !(sum == 55))
3. !((y > 1.0) && (x < 4))
4. ((count != 4) || (sum > 100) && wrong)
false
true
true
true
(false || !(false))
!(true && false)
(true || false && true)
(true && false)
(true || false)
Prepared by K.T. Ng 24
Conditional Statements
Let us choose which statement will be executed next also called selection statements
Java's conditional statements: the if statement the if-else statement the switch statement (next chapter)
Prepared by K.T. Ng 25
One-Way Selection Syntax: if (expression)
statement
Prepared by K.T. Ng 26
The if Statement
if ( condition ) statement;
if is a Javareserved word
The condition must be a boolean expression.It must evaluate to either true or false.
If the condition is true, the statement is executed.If it is false, the statement is skipped.
Prepared by K.T. Ng 27
The if Statement
if (sum > MAX) delta = sum - MAX;System.out.println ("The sum is " + sum);
First, the condition is evaluated. The value of sumis either greater than the value of MAX, or it is not.
If the condition is true, the assignment statement is executed.If it is not, the assignment statement is skipped.
Either way, the call to println is executed next.
Prepared by K.T. Ng 28
Block Statements
Syntax:{
statement1statement2
.
.
.statementn
}
We use curly braces to group a set of individual statements.
This way we can have multiple statements execute based on a decision.
If we don't use curly braces, only a single statement will be executed based on the result of a decision.
Prepared by K.T. Ng 29
The if Statementif (sum > MAX)
delta = sum - MAX;System.out.println ("The sum is " + sum);
A
if (sum > MAX){
delta = sum - MAX;}System.out.println ("The sum is " + sum);
B
if (sum > MAX){
delta = sum - MAX;System.out.println ("The sum is " + sum);
}
C
Prepared by K.T. Ng 30
Curly Braces
int num = 87, max = 25;if (num >= max*2){
System.out.println ("apple");}
System.out.println ("orange");System.out.println ("pear");
int num = 87, max = 25;if (num >= max*2)
System.out.println ("apple");System.out.println ("orange");
System.out.println ("pear");
Prepared by K.T. Ng 31
Watch out!
if (score >= 90);
grade = "A";
No matter the result of the condition,grade will be assigned "A". The semicolonafter the if statement is a semantic error.
Prepared by K.T. Ng 32
Two-Way Selection
Prepared by K.T. Ng 33
The if-else Statement
if ( condition ) statement1;else statement2;
If the condition is true, statement1 is executed; if the condition is false, statement2 is executed
One or the other will be executed, but not both
Prepared by K.T. Ng 34
The if-else Statement (example)
if (height <= MAX)
{
adjustment = 0;
}
else
{
adjustment = MAX-height;
}
Prepared by K.T. Ng 35
Conditional (? :) Operator Ternary operator Syntax
expression1 ? expression2 : expression3 If expression1 = true, then the result of the
condition is expression 2otherwise, the result of the condition is expression3
e.g. max = (a >= b)? a : b; is equivalent to
if (a >= b) max = a;
else max = b;