Lesson 3 Conditions and Loops Unit 1 The

  • Slides: 64
Download presentation
Lesson 3: Conditions and Loops Unit 1: The if Statement Lecture C Slide 1

Lesson 3: Conditions and Loops Unit 1: The if Statement Lecture C Slide 1 of 64

The if Statement • The Java if statement has the following syntax: if (boolean-condition)

The if Statement • The Java if statement has the following syntax: if (boolean-condition) statement; • If the Boolean condition is true, the statement is executed; if it is false, the statement is skipped • This provides basic decision making capabilities Lecture C Slide 2 of 64

Tempreture class Temperature { static final int THRESHOLD = 65; public static void main(String[]

Tempreture class Temperature { static final int THRESHOLD = 65; public static void main(String[] args) { Input. Requestor input = new Input. Requestor(); int temperature = input. request. Int(“Enter the temperature: ”); System. out. println(“Current temperature “+ temperature); if (temperature < THRESHOLD) System. out. println(“It’s cold in here!”); } } Lecture C Slide 3 of 64

If statement flow diagram if (condition) statement; condition true statement Lecture C Slide 4

If statement flow diagram if (condition) statement; condition true statement Lecture C Slide 4 of 64

Boolean Expressions • The condition of an if statement must evaluate to a true

Boolean Expressions • The condition of an if statement must evaluate to a true or false result • Java has several equality and relational operators: Operator == != < Meaning equal to not equal to less than <= > >= less than or equal to greater than or equal to • More complex Boolean expressions are also possible Lecture C Slide 5 of 64

Block Statements • Several statements can be grouped together into a block statement •

Block Statements • Several statements can be grouped together into a block statement • Blocks are delimited by braces • A block statement can be used wherever a statement is called for in the Java syntax if (boolean-condition){ statement 1; statement 2; … } Lecture C Slide 6 of 64

Example - Temperature 2 class Temperature 2 { static final int THRESHOLD = 65;

Example - Temperature 2 class Temperature 2 { static final int THRESHOLD = 65; public static void main(String[] args) { Input. Requestor input = new Input. Requestor(); int temperature = input. request. Int(“Enter the temperature: ”); System. out. println(“Current temperature “+ temperature); if (temperature < THRESHOLD) { System. out. println(“It’s cold in here!”); System. out. println(“But we’ll survive. ”); } } } Lecture C Slide 7 of 64

If. . Else Statement • An else clause can be added to an if

If. . Else Statement • An else clause can be added to an if statement to make it an if-else statement: if (condition) statement 1; else statement 2; • If the condition is true, statement 1 is executed; if the condition is false, statement 2 is executed Lecture C Slide 8 of 64

Example - Temperature 3 class Temperature 3 { static final int FREEZING_POINT = 32;

Example - Temperature 3 class Temperature 3 { static final int FREEZING_POINT = 32; public static void main(String[] args) { Input. Requestor input = new Input. Requestor(); int temperature = input. request. Int(“Enter temperature: ”); if (temperature <= FREEZING_POINT) System. out. println(“It’s freezing!”); else System. out. println(“Above freezing. ”); } } Lecture C Slide 9 of 64

If/else flow diagram if (condition) statement 1; else statement 2; true statement 1 Lecture

If/else flow diagram if (condition) statement 1; else statement 2; true statement 1 Lecture C condition statement 2 Slide 10 of 64

Nested If statements • Since an “If” statement is a statement, it can appear

Nested If statements • Since an “If” statement is a statement, it can appear inside another if statement. if (condition 1) if (condition 2) statement; • It can also appear in an “else” clause if (condition 1) statement 1; else if (condition 2) statement 2; Lecture C Slide 11 of 64

Nested If Example // Reads 2 integers and compares them class Compare. Example {

Nested If Example // Reads 2 integers and compares them class Compare. Example { public static void main(String[] args) { Input. Requestor input = new Input. Requestor(); int a = input. request. Int(“First number: ”); int b = input. request. Int(“Second number: ”); if (a != b){ if (a > b) System. out. println(a+” is greater”); else System. out. println(b+” is greater”); }else System. out. println(“the numbers are equal”); } } Lecture C Slide 12 of 64

Checking your Input • When requesting input from the user, keep in mind that

Checking your Input • When requesting input from the user, keep in mind that the input may be invalid. • It is good practice to check the validity of user input int number. Of. Items = input. request. Int(“Enter number of items: ”); if (number. Of. Items < 0) { System. out. println( “Number of items must be positive!”); } else { double price = number. Of. Items * ITEM_PRICE; System. out. println(“The total price is: “ +price); } Lecture C Slide 13 of 64

Lesson 3: Conditions and Loops Unit 2: Boolean Expressions Lecture C Slide 14 of

Lesson 3: Conditions and Loops Unit 2: Boolean Expressions Lecture C Slide 14 of 64

Logical Operators • Boolean expressions may be combined using logical operators • There are

Logical Operators • Boolean expressions may be combined using logical operators • There are three logical operators in Java: Operator ! && || Operation Logical NOT Logical AND Logical OR • They all take Boolean operands and produce Boolean results • Logical NOT is unary (one operand), but logical AND and OR are binary (two operands) Lecture C Slide 15 of 64

Logical NOT • The logical NOT is also called logical negation or logical complement

Logical NOT • The logical NOT is also called logical negation or logical complement • If a is true, !a is false; if a is false, then !a is true • Logical expressions can be shown using truth tables a false true Lecture C !a true false Slide 16 of 64

Logical AND • The expression a && b is true if both a and

Logical AND • The expression a && b is true if both a and b are true, and false otherwise • Truth tables show all possible combinations of all terms a false true b false true false a && b false true Lecture C Slide 17 of 64

Logical OR • The expression a || b is true if a or both

Logical OR • The expression a || b is true if a or both are true, and false otherwise a false true b false true false a || b false true true Lecture C Slide 18 of 64

Logical Operators • Logical operators are used to form more complex logical expressions if

Logical Operators • Logical operators are used to form more complex logical expressions if (a<1 || a%2!=0) System. out. println( “The input should be an even number!”); • Logical operators have precedence relationships between themselves and other operators Lecture C Slide 19 of 64

Logical Operators • Full expressions can be evaluated using truth tables a < 1

Logical Operators • Full expressions can be evaluated using truth tables a < 1 false true a%2!=0 false true false a<1 || a%2=0 false true Lecture C Slide 20 of 64

Boolean variables • Boolean expressions can be assigned to Boolean variables boolean b, c;

Boolean variables • Boolean expressions can be assigned to Boolean variables boolean b, c; b = (x > 17); c = (x>17) && (x<60); • Boolean variables are Boolean expressions boolean b, c; b = (x > 17); c = b && (x<60); if (c) System. out. println(“x is in range”); Lecture C Slide 21 of 64

Example - Right. Triangle // Receives the length of the edges of a triangle

Example - Right. Triangle // Receives the length of the edges of a triangle // and determine if this is a right triangle class Right. Triangle { public static void main(String[] args) { Input. Requestor input = new Input. Requestor(); float a = input. request. Int(“Edge 1: ”); float b = input. request. Int(“Edge 2: ”); float c = input. request. Int(“Hypotenuse: ”); boolean test = a*a+b*b == c*c; if (test) System. out. println(“It’s a right triangle”); else System. out. println(“It’s not a right triangle”); } } Lecture C Slide 22 of 64

Lesson 3: conditions and loops Unit C 3: The while Statement Lecture C Slide

Lesson 3: conditions and loops Unit C 3: The while Statement Lecture C Slide 23 of 64

The while statement • A while statement has the following syntax: while (condition) statement;

The while statement • A while statement has the following syntax: while (condition) statement; • If the condition is true, the statement is executed; then the condition is evaluated again • The statement is executed over and over until the condition becomes false • If the condition of a while statement is false initially, the statement is never executed • Therefore, we say that a while statement executes zero or more times Lecture C Slide 24 of 64

While statement flow diagram while (condition) statement; condition true statement Lecture C Slide 25

While statement flow diagram while (condition) statement; condition true statement Lecture C Slide 25 of 64

Example - Counter // Counts from 1 to 5 class Counter { static final

Example - Counter // Counts from 1 to 5 class Counter { static final int LIMIT = 5; public static void main(String[] args) { int count = 1; while (count <= LIMIT) { System. out. println(count); count = count + 1; } System. out. println(“done”); } } Lecture C Slide 26 of 64

Examples - Factors // Gets an integer and prints its factors class Factors. Example

Examples - Factors // Gets an integer and prints its factors class Factors. Example { public static void main(String[] args) { Input. Requestor input = new Input. Requestor(); int a = input. request. Int(“Enter a number: ”); int i = 1; System. out. println(“The divisors of “+a+” are: ”); while (i <= a) { if (a%i == 0) { System. out. println(i); } i = i + 1; } } } Lecture C Slide 27 of 64

Infinite Loops • The body of a while loop must eventually make the condition

Infinite Loops • The body of a while loop must eventually make the condition false • If not, it is an infinite loop, which will execute until the user interrupts the program • This is a common type of logical error -- always double check that your loops will terminate normally Lecture C Slide 28 of 64

Example - Forever // This program contains an infinite loop class Forever { static

Example - Forever // This program contains an infinite loop class Forever { static final int LIMIT = 25; public static void main(String[] args) { int count = 1; while (count <= LIMIT) { System. out. println(count); count = count - 1; } } } Lecture C Slide 29 of 64

Lesson 3: conditions and loops Unit 4: More conditionals Lecture C Slide 30 of

Lesson 3: conditions and loops Unit 4: More conditionals Lecture C Slide 30 of 64

The Conditional Operator • Java has a conditional operator that evaluates a Boolean condition

The Conditional Operator • Java has a conditional operator that evaluates a Boolean condition that determines which of two expressions is evaluated • The result of the chosen expression is the result of the entire conditional operator • Its syntax is: condition ? expression 1 : expression 2 • If the condition is true, expression 1 is evaluated; if it is false, expression 2 is evaluated Lecture C Slide 31 of 64

The Conditional Operator • It is similar to an if-else statement, except that it

The Conditional Operator • It is similar to an if-else statement, except that it is an expression that returns a value • For example: int max = (a > b) ? a : b; • If a is greater that b, then a is assigned to max; otherwise, b is assigned to max • The conditional operator is ternary, meaning it requires three operands Lecture C Slide 32 of 64

The Conditional Operator • Another example: System. out. println ("Your change is " +

The Conditional Operator • Another example: System. out. println ("Your change is " + count + ((count == 1) ? "Dime" : "Dimes”)); • If count equals 1, "Dime" is printed, otherwise "Dimes" is printed Lecture C Slide 33 of 64

Another Selection Statement • The if and the if-else statements are selection statements, allowing

Another Selection Statement • The if and the if-else statements are selection statements, allowing us to select which statement to perform next based on some Boolean condition • Another selection construct, called the switch statement, provides another way to choose the next action • The switch statement evaluates an expression, then attempts to match the result to one of a series of values • Execution transfers to statement list associated with the first value that matches Lecture C Slide 34 of 64

The switch Statement • The syntax of the switch statement is: switch (expression) {

The switch Statement • The syntax of the switch statement is: switch (expression) { case value 1: statement-list 1 case value 2: statement-list 2 case … } Lecture C Slide 35 of 64

The switch Statement • The expression must evaluate to an integral value, such as

The switch Statement • The expression must evaluate to an integral value, such as an integer or character • The break statement is usually used to terminate the statement list of each case, which causes control to jump to the end of the switch statement • A default case can be added to the end of the list of cases, and will execute if no other case matches Lecture C Slide 36 of 64

The switch Statement /** * A client that enables you to connect to the

The switch Statement /** * A client that enables you to connect to the * bank server and make remote banking operations. . . */ public class Bank. Client { public static final int VIEW_BALANCE = 1; public static final int VIEW_SAVINGS = 2; public static final int CASH_TRANSFER = 3; public static final int VIEW_LAST_OPERATIONS = 4; //. . . Lecture C Slide 37 of 64

The switch Statement // Inside the main loop of the client: int option =

The switch Statement // Inside the main loop of the client: int option = Input. Requestor. requent. Int(“Enter your choice: ”); switch(option) { case VIEW_BALANCE: show. Balance(); break; case VIEW_SAVINGS: show. Savings(); break; default: output. show. Message(“No such option!”); } Lecture C Slide 38 of 64

Lesson 3: conditions and loops Unit 5: Shorthand Operators Lecture C Slide 39 of

Lesson 3: conditions and loops Unit 5: Shorthand Operators Lecture C Slide 39 of 64

Shorthand Operators • Many operations are very commonly used x = x + 1;

Shorthand Operators • Many operations are very commonly used x = x + 1; sum = sum + x; • Java has shorthand notations for these increment and decrement operators § assignment operators § Lecture C Slide 40 of 64

The Increment and Decrement Operators • The increment operator (++) adds one to its

The Increment and Decrement Operators • The increment operator (++) adds one to its integer or floating point operand • The decrement operator (--) subtracts one • The statement count++; is essentially equivalent to count = count + 1; Lecture C Slide 41 of 64

The Increment and Decrement Operators • The increment and decrement operators can be applied

The Increment and Decrement Operators • The increment and decrement operators can be applied in prefix (before the variable) or postfix (after the variable) form • When used alone in a statement, the prefix and postfix forms are basically equivalent. That is, count++; is equivalent to ++count; Lecture C Slide 42 of 64

The Increment and Decrement Operators • When used in a larger expression, the prefix

The Increment and Decrement Operators • When used in a larger expression, the prefix and postfix forms have a different effect • In both cases the variable is incremented (decremented( • But the value used in the larger expression depends on the form Expressions count++ ++count-- Operation add 1 subtract 1 Value Of expression old value new value old value --count subtract 1 new value Lecture C Slide 43 of 64

The Increment and Decrement Operators • If count currently contains 45, then total =

The Increment and Decrement Operators • If count currently contains 45, then total = count++; assigns 45 to total and 46 to count • If count currently contains 45, then total = ++count; assigns the value 46 to both total and count Lecture C Slide 44 of 64

The Increment and Decrement Operators • If sum contains 25, what does this statement

The Increment and Decrement Operators • If sum contains 25, what does this statement print? System. out. println (sum++ + " " + ++sum + " " + sum--); • Prints the following result: 25 27 27 27 • sum contains 26 after the line is complete Lecture C Slide 45 of 64

Assignment Operators • Often we perform an operation on a variable, then store the

Assignment Operators • Often we perform an operation on a variable, then store the result back into that variable • Java provides assignment operators that simplify that process • For example, the statement sum += value; is equivalent to sum = sum + value; Lecture C Slide 46 of 64

Assignment Operators • There are many such assignment operators, always written as op= ,

Assignment Operators • There are many such assignment operators, always written as op= , such as: Operator += -= *= Example x+=y x-=y x*=y Equivalent to x = x + y x = x - y x = x * y /= %= x/=y x%=y x = x / y x = x % y Lecture C Slide 47 of 64

Assignment Operators • The right hand side of an assignment operator can be a

Assignment Operators • The right hand side of an assignment operator can be a complete expression • The entire right-hand expression is evaluated first, then combined with the additional operation • Therefore result /= total-MIN; is equivalent to result = result / (total-MIN); Lecture C Slide 48 of 64

Lesson 3: conditions and loops Unit C 6: More Repetition Lecture C Slide 49

Lesson 3: conditions and loops Unit C 6: More Repetition Lecture C Slide 49 of 64

More Repetition Constructs • In addition to while loops, Java has two other constructs

More Repetition Constructs • In addition to while loops, Java has two other constructs used to perform repetition: the do statement § the for statement § • Each loop type has its own unique characteristics • You must choose which loop type to use in each situation Lecture C Slide 50 of 64

The do Statement • The do statement has the following syntax: do statement while

The do Statement • The do statement has the following syntax: do statement while (condition); • The statement is executed until the condition becomes false • It is similar to a while statement, except that its termination condition is evaluated after the loop body Lecture C Slide 51 of 64

The do Statement • The key difference between a do loop and a while

The do Statement • The key difference between a do loop and a while loop is that the body of the do loop will execute at least once • If the condition of a while loop is false initially, the body of the loop is never executed • Another way to put this is that a while loop will execute zero or more times and a do loop will execute one or more times Lecture C Slide 52 of 64

Do Statement Example // Gets an integer and prints its factors class Avg. Example

Do Statement Example // Gets an integer and prints its factors class Avg. Example { public static void main(String[] args){ Input. Requestor input = new Input. Requestor(); double x, sum=0, count=-1; do { x = input. Request. Double(“Next number: ”); sum += x; count++; } while (x != 0); // 0 is a flag indicating end of input System. out. println(“The average is “+sum/count); } } Lecture C Slide 53 of 64

The do Statement flow diagram statement true condition false Lecture C Slide 54 of

The do Statement flow diagram statement true condition false Lecture C Slide 54 of 64

The for Statement • Many loops have a common pattern, captured by the for

The for Statement • Many loops have a common pattern, captured by the for statement • The syntax of the for loop is for (intialization; condition; increment) statement; • This is equivalent to initialization; while (condition) { statement; increment; } Lecture C Slide 55 of 64

The for Statement: examples • Examples: for (int count=1; count < 75; count++) {

The for Statement: examples • Examples: for (int count=1; count < 75; count++) { System. out. println (count); } for (int num=1; num <= max; num = num * 2) { System. out. println (“Next power of 2: “ + num); } Lecture C Slide 56 of 64

The for Statement • The initialization is always performed once • The condition of

The for Statement • The initialization is always performed once • The condition of a for statement is tested prior to executing the loop body (like in the while statement) • Therefore, a for loop will execute zero or more times • For loops are well suited for cases where the number of iterations is known beforehand • The increment is executed after each iteration of the loop Lecture C Slide 57 of 64

Omitting parts in a for Statement • Each expression in the header of a

Omitting parts in a for Statement • Each expression in the header of a for loop is optional If the initialization is left out, no initialization is performed § If the condition is left out, it is always considered to be true, and therefore makes an infinite loop § If the increment is left out, no increment operation is performed § • Both semi-colons are always required for (; ; ) {// an infinite loop System. out. println (“beep”); } // compute a value count for (; count < max ; count ++ ) { System. out. println (count); } Lecture C Slide 58 of 64

The for Statement flow diagram initialization condition false true statement increment Lecture C Slide

The for Statement flow diagram initialization condition false true statement increment Lecture C Slide 59 of 64

Multiplication Table Example class Multiplication. Table { public static void main(String[] args){ for(int j=1

Multiplication Table Example class Multiplication. Table { public static void main(String[] args){ for(int j=1 ; j <= 10 ; j++) { for(int k=1 ; k <= 10 ; k++) System. out. print(j*k); System. out. println(); } } } Lecture C Slide 60 of 64

The break and continue statements • The break statement, which we used with switch

The break and continue statements • The break statement, which we used with switch statements, can also be used inside a loop • When the break statement is executed, control jumps to the statement after the loop (the condition is not evaluated again) • A similar construct, the continue statement, can also be executed in a loop • When the continue statement is executed, control jumps to the end of the loop and the condition is evaluated Lecture C Slide 61 of 64

Break and Continue Example class Avg. Example 2 { public static void main(String[] args){

Break and Continue Example class Avg. Example 2 { public static void main(String[] args){ Input. Requestor in = new Input. Requestor(); double x, sum = 0; count = 0; while(true){ x = in. Request. Double(); if (x == 0) break; if (x < 0) { System. out. println(“Only positive numbers!”); continue; } sum += x ; count ++ ; } // continued on next page Lecture C Slide 62 of 64

Break and Continue Example (2( System. out. println(“The average is “+sum/count); } } Lecture

Break and Continue Example (2( System. out. println(“The average is “+sum/count); } } Lecture C Slide 63 of 64

Why do We Need Indentation? class Mystery { public static void main(String[] args) {

Why do We Need Indentation? class Mystery { public static void main(String[] args) { Input. Requestor in = new Input. Requestor(); int dimension = in. request. Int(“Please enter the dimension”); for (int j = 0; j < dimension; j++) { for (int k = 1; k < dimension - j; k++) { System. out. print(" "); } for (int k = 0; k < j; k++) { System. out. print("*"); } System. out. println(); }}} Lecture C Slide 64 of 64