Presentation is loading. Please wait.

Presentation is loading. Please wait.

Chapter 3Java: an Introduction to Computer Science & Programming - Walter Savitch 1 Chapter 3 l Branching l Loops l exit(n) method l Boolean data type.

Similar presentations


Presentation on theme: "Chapter 3Java: an Introduction to Computer Science & Programming - Walter Savitch 1 Chapter 3 l Branching l Loops l exit(n) method l Boolean data type."— Presentation transcript:

1 Chapter 3Java: an Introduction to Computer Science & Programming - Walter Savitch 1 Chapter 3 l Branching l Loops l exit(n) method l Boolean data type and expressions Flow of Control

2 Chapter 3Java: an Introduction to Computer Science & Programming - Walter Savitch 2 What is “Flow of Control”? l Flow of Control is the execution order of instructions in a program l All programs can be written with three control flow elements: 1. Sequence - just go to the next instruction 2. Selection - a choice of at least two –either go to the next instruction –or jump to some other instruction 3. Repetition - a loop (repeat a block of code) at the end of the loop –either go back and repeat the block of code –or continue with the next instruction after the block l Selection and Repetition are called Branching since these are branch points in the flow of control

3 Chapter 3Java: an Introduction to Computer Science & Programming - Walter Savitch 3 Java Flow Control Statements Sequence l the default l Java automatically executes the next instruction unless you use a branching statement Branching: Selection l if l if-else l if-else if-else if- … - else l switch Branching: Repetition l while l do-while l for

4 Chapter 3Java: an Introduction to Computer Science & Programming - Walter Savitch 4 Simple Selection - if Example l Test / comparison / condition is inside ( ) ‘s l If the test evaluates (returns) to true, then the body is executed (otherwise they do not) Statements after the body of the if statement always execute … // some code before this … change = 0; if(amountTendered > amountDue) // change is due (begin body of the if statement) change = amountTendered – amountDue; // (end body of the if statement) System.out.println(“Change to be given back “ + change); // always runs

5 Chapter 3Java: an Introduction to Computer Science & Programming - Walter Savitch 5 Java if statement syntax l Syntax: if (Boolean_Expression) Action if true;//execute only if true next action;//always executed l Note the indentation for readability (not compile or execution correctness)

6 Chapter 3Java: an Introduction to Computer Science & Programming - Walter Savitch 6 Java Statement Blocks: Compound Statements l Action if true can be either a single Java statement or a set of statements enclosed in curly brackets (a compound statement, or block) l For example: if(change > 0) { // determine coins to give back (begin body) quarters = change / 25; int amountLeft = change % 25; dimes = amountLeft / 10; … } // end if System.out.println(“Returning change of “ + change + “\n using “ + quarters + “quarters” … All statements between braces are controlled by if

7 Chapter 3Java: an Introduction to Computer Science & Programming - Walter Savitch 7 Two-way Selection - if-else Example l Select either one of two options, depending on test value … // price is determined; taxability is determined if (taxable == ‘y’) { tax = price * TAXRATE; } else { tax = 0; } total = price + tax; l Curly braces are NOT necessary if only one statement BUT I always use them

8 Chapter 3Java: an Introduction to Computer Science & Programming - Walter Savitch 8 Two-way Selection: if-else Syntax l Syntax: if (Boolean_Expression) { Action1 //execute only if true } else { Action2//execute only if false } Action3//always executed

9 Chapter 3Java: an Introduction to Computer Science & Programming - Walter Savitch 9 OK – Let’s Solve a Problem l Tickets for the Olympic Downhill Ski race are $100 each. If you buy 10 or more, then there is a service charge of $100. If you buy fewer, the service charge is $15 per ticket. Write a program to handle the I/O and calculations – displaying total cost.

10 Chapter 3Java: an Introduction to Computer Science & Programming - Walter Savitch 10 Definition of Boolean Values l With if’s, we have seen that which branch is taken depends on a test condition which evaluates to either true or false l Variables (or expressions) that are either true or false are called boolean variables (or expressions) l Hence the syntax was written as if (Boolean_Expression) The test for the if is a boolean expression – a part of a statement that evaluates to (returns) either true or false boolean is a primitive data type in Java

11 Chapter 3Java: an Introduction to Computer Science & Programming - Walter Savitch 11 Boolean Expressions l Often two values are compared For example: Is amountTendered less than amountDue? Is taxable equal to ‘y’ ? Is numberOfTix greater than or equal to 10? etc. l Values being compared can be any data type (or class), but they should be the same data type (or class)

12 Chapter 3Java: an Introduction to Computer Science & Programming - Walter Savitch 12 Java Comparison Operators

13 Chapter 3Java: an Introduction to Computer Science & Programming - Walter Savitch 13 What about a range? l Sometimes we want to know whether a value is within a range (e.g. is a test score between 80 and 90?) l Knowing mathematics, we’d like to write this as if (80 < testScore < 90) { … l But alas … this is not how things work with computers l Instead if ( ( testScore >80) && (testScore < 90) ) { … l AND (&&) is a logical operator. Something AND somethingelse evaluates to true if both components evaluate to true

14 Chapter 3Java: an Introduction to Computer Science & Programming - Walter Savitch 14 Compound Boolean Expressions Use && to AND two or more conditions Use || to OR two or more conditions – if either component is true then the whole expression is true l For example, if ( (gpa 4.0) ) { … l In this example the parentheses are not required but are added for clarity »See text (and later slides) for Precedence rules »Note the short-circuit, or lazy, evaluation rules in text (and later in slides) »Use a single & for AND and a single | for OR to avoid short-circuit evaluation and force complete evaluation of a boolean expression

15 Chapter 3Java: an Introduction to Computer Science & Programming - Walter Savitch 15 NOT ! l NOT essentially reverses l Indicated with ! if ( ! ( x > 0) ) { … l Usually you can do without NOT

16 Chapter 3Java: an Introduction to Computer Science & Programming - Walter Savitch 16 Java Comparison Methods for String Class l “==“ does not do what you may think for String objects »When “==“ is used to test objects (such as String objects) it tests to see if the storage addresses of the two objects are the same –are they stored in the same location? –more will be said about this later l Use “.equals” method to test if the strings, themselves, are equal String s1 = “What are you doing?”; String s2; s2 = SavitchIn.readLine(); //s1.equals(s2) returns true if the user enters What are you doing?, false otherwise.equals() is case sensitive Use.equalsIgnoreCase() to ignore case

17 Chapter 3Java: an Introduction to Computer Science & Programming - Walter Savitch 17 Nested If’s l An IF-Else statement can have any kind of statement(s) inside the if or inside the else l This includes another IF if (numCredits >= 12) { if (resident == ‘y’) { totalCost = … } else { totalCost = … } else { …

18 Chapter 3Java: an Introduction to Computer Science & Programming - Walter Savitch 18 if-else if-else if-…-else Example l Can have if statements nested inside else too if(score >= 90) grade = ‘A’); else if (score >= 80) grade = ‘B’; else if (score >= 70) grade = ‘C’; else if (score >= 60) grade = ‘D’; else grade = ‘F’;

19 Chapter 3Java: an Introduction to Computer Science & Programming - Walter Savitch 19 Multibranch selection: if-else if-else if-…-else l One way to handle situations with more than two possibilities l Syntax: if(Boolean_Expression_1) Action_1 else if(Boolean_Expression_2) Action_2. else if(Boolean_Expression_n) Action_n else Default_Action

20 Chapter 3Java: an Introduction to Computer Science & Programming - Walter Savitch 20 switch Example l An alternative way of doing a multibranch selection switch(seatLocationCode) { case 1: System.out.println(“Orchestra”); price = 40.00; break; case 2: System.out.println(“Mezzanine”); price = 30.00; break; case 3: System.out.println(“Balcony”); price = 15.00; break; default: System.out.println(“Unknown seat code”); break; }

21 Chapter 3Java: an Introduction to Computer Science & Programming - Walter Savitch 21 Multibranch selection Syntax: switch break may be omitted IF appropriate for your algorithm (it usually is NOT appropriate) switch(Controlling_Expression) { case Case_Label: statements … break; case Case_Label: statements … break; default: statements … break; } Default case is optional. Can be any number of cases like this one.

22 Chapter 3Java: an Introduction to Computer Science & Programming - Walter Savitch 22 Multibranch selection: switch Controlling_Expression must be char, int, short or byte Controlling Expression and Case_Label must be same type When a break statement is encountered, control goes to the first statement after the switch.

23 Chapter 3Java: an Introduction to Computer Science & Programming - Walter Savitch 23 Repetition: Loops l Structure: »Usually some initialization code »body of loop »loop termination condition l Several logical organizations »counting loops »sentinel-controlled loops »infinite loops »minimum of zero or minimum of one iteration l Several programming statement variations »while »do-while »for

24 Chapter 3Java: an Introduction to Computer Science & Programming - Walter Savitch 24 while : a counting loop example l A loop to sum 10 numbers entered by user int next; //Loop initialization int count = 1; int total =0; while(count <= 10) //Loop termination condition { //Body of loop next = SavitchIn.readLineInt(); total = total + next; count++; //Loop termination counter }

25 Chapter 3Java: an Introduction to Computer Science & Programming - Walter Savitch 25 while : a sentinel controlled loop example l A loop to sum positive integers entered by the user next is the sentinel l The loop terminates when the user enters a negative number //Initialization int next = 0; int total = 0; while(next >= 0) //Termination condition { //Body total = total + next; next = SavitchIn.readLineInt(); }

26 Chapter 3Java: an Introduction to Computer Science & Programming - Walter Savitch 26 while Loop l Syntax: while(Boolean_Expression) { //body of loop First_Statement;... Last_Statement; } l Initialization statements usually precede the loop. Boolean_Expression is the loop termination condition. l May be either counting or sentinel loop »Good choice for sentinel loop Something in body of loop should eventually cause Boolean_Expression to be false.

27 Chapter 3Java: an Introduction to Computer Science & Programming - Walter Savitch 27 while : A Minimum of Zero Iterations Because the first input value read and the test precedes the loop, the body the while loop body may not execute at all //Initialization int next; int total = 0; next = SavitchIn.readLineInt(); while(next >= 0)//Termination condition { //Body total = total + next; next = SavitchIn.readLineInt(); } l If the first number the user enters is negative the loop body never executes

28 Chapter 3Java: an Introduction to Computer Science & Programming - Walter Savitch 28 OK – Let’s Solve another Problem l Calculate the GPA for a student – ask continually if there are more classes to consider. For each class, ask for the grade (A,B,C,D, or F) and the number of credits. Display the student’s GPA.

29 Chapter 3Java: an Introduction to Computer Science & Programming - Walter Savitch 29 Do code for GPA? l Pseudocode totalPoints = 0 totalCredits = 0 While more courses ask for and get grade ask for and get # credit hours Figure # points (A – 4, B – 3, C - 2, D – 1, F – 0) current course points = points * credit hours add current course points to totalPoints add one to totalCredits ENDWHILE Gpa = totalPoints / totalCredits Display GPA

30 Chapter 3Java: an Introduction to Computer Science & Programming - Walter Savitch 30 Another Task Involving Loops l Calculate y x (assume x is an integer) … // declare, ask for, and get y and x … int count = 1; double total = y; while (count < x) { total = total * y; count++; } // display result

31 Chapter 3Java: an Introduction to Computer Science & Programming - Walter Savitch 31 Another Task Involving Loops l Ensuring valid inputs (e.g. making sure # hours worked is between 1 and 60) System.out.println(“How many hours?”); double numHours = SavitchIn.readLineDouble(); while ((numHours 60) { System.out.println(“ I’m sorry, you have entered an invalid number of hours ”); System.out.println(“ Please re-enter a number between 1 and 60 ”); numHours = SavitchIn.readLineDouble(); }

32 Chapter 3Java: an Introduction to Computer Science & Programming - Walter Savitch 32 Another Task Involving Loops l Find the average score on a quiz l Pseudocode Initialize total to 0 Initialize counter to 0 Ask for and get how many numbers While counter < number of numbers ask for and get next score add score to total add one to counter If counter > 0 set ave to total / counter print the average

33 Chapter 3Java: an Introduction to Computer Science & Programming - Walter Savitch 33 do-while Example int count = 1; int number = 10; do //Display integers 1 - 10 on one line { System.out.println(count + “ “ ); count++; }while(count <= number); Note System.out.print() is used and not System.out.println() so the numbers will all be on one line

34 Chapter 3Java: an Introduction to Computer Science & Programming - Walter Savitch 34 do-while Loop Syntax do { //body of loop First_Statement;... Last_Statement; } while(Boolean_Expression); l Initialization code may precede loop body l Loop test is after loop body so the body must execute at least once (minimum of at least one iteration) May be l either counting or sentinel loop »One Good choice for sentinel loop Something in body of loop should eventually cause Boolean_Expression to be false. Note Semicolon Compare to While!!

35 Chapter 3Java: an Introduction to Computer Science & Programming - Walter Savitch 35 for Loop l Good choice for counting (counter-controlled) loop l Initialization, loop test, and loop counter change are part of the syntax l Syntax: for(Initialization; Boolean_Expression; Update_Action) loop body;

36 Chapter 3Java: an Introduction to Computer Science & Programming - Walter Savitch 36 for Example l Count up from 1 to 5 for(int count = 1; count <= 5; count++) { System.out.println(count + " "); } l (only need {}’s if more than one statement in body) l Don’t put a semicolon after the ) – you’ll end the loop right there – no body!!

37 Chapter 3Java: an Introduction to Computer Science & Programming - Walter Savitch 37 for Loop for(Initialization; Boolean_Expression; Update_Action) loop body; Execution sequence: 1. Initialization - executes only once, before the loop body is executed the first time 2. Boolean_Expression - the loop test 3. loop body - execute only if loop test is true 4. Update_Action - typically changes the loop counter 5. Boolean_Expression - Repeat the loop test (step 2), etc.

38 Chapter 3Java: an Introduction to Computer Science & Programming - Walter Savitch 38 for Flowchart l

39 Chapter 3Java: an Introduction to Computer Science & Programming - Walter Savitch 39 Any for Could be done with a while Initialization; while (Boolean_Expression) { loop body; Update_Action; } int count = 1; while (count <= 5) { System.out.println(count + " "); count++; }

40 Chapter 3Java: an Introduction to Computer Science & Programming - Walter Savitch 40 for Loop is THE Loop to use for Counter-Controlled Repetition l If you know when writing the program how many times loop will need to go around l If the program will know how many times loop will need to go around by the time we get to the loop the first time

41 Chapter 3Java: an Introduction to Computer Science & Programming - Walter Savitch 41 Example where “program knows…” l Calculate y x (assume x is an integer) … // declare, ask for, and get y and x … double total = y; for (int count = 1; count < x; count++) { total = total * y; } // display result

42 Chapter 3Java: an Introduction to Computer Science & Programming - Walter Savitch 42 BTW l Increment can be down, something more than 1 for (int cnt = 10; cnt > 0; cnt--){ … for (int cnt = 0; cnt < 10; cnt = cnt + 2) { … l Expressions are optional (e.g. no initialization (leaving others off would be weird) int cnt = 0; for ( ; cnt < 10; cnt++) { …

43 Chapter 3Java: an Introduction to Computer Science & Programming - Walter Savitch 43 BTW l Use of control variable inside loop l Displaying – legal and often done l Use in calculation – legal and sometimes done e.g. sq = cnt * cnt; l Changing – legal but generally not a good idea

44 Chapter 3Java: an Introduction to Computer Science & Programming - Walter Savitch 44 Let’s Do A Problem l Calculate n! int total = 1; for (int cnt = 1; cnt < n; cnt++) { total = total * cnt; } System.out.println(n + “! equals: “ + total);

45 Chapter 3Java: an Introduction to Computer Science & Programming - Walter Savitch 45 Nested for l for loops, like while loops and other control structures, can be nested inside each other for (int tens = 1; tens <= 2; tens++) { for (int ones = 0; ones < 10; ones++) { System.out.println(“ “ + tens + ones); }

46 Chapter 3Java: an Introduction to Computer Science & Programming - Walter Savitch 46 Some more about designing for loops l If loop design isn’t coming naturally … »You can write pseudocode without a loop and look for a repeating pattern

47 Chapter 3Java: an Introduction to Computer Science & Programming - Walter Savitch 47 Some Practical Considerations When Using Loops l The most common loop errors are unintended infinite loops and off-by-one errors in counting loops l Sooner or later everyone writes an unintentional infinite loop »To get out of an unintended infinite loop enter ^C (control-C) l Off-by-one – loop goes around one too many or one too few times l Another problem – testing for == or != with double / float l Loops should tested thoroughly, especially at the boundaries of the loop test, to check for off-by-one and other possible errors

48 Chapter 3Java: an Introduction to Computer Science & Programming - Walter Savitch 48 Tracing a Variable in a Loop l Tracing a variable: print out the variable each time through the loop – gathering evidence to capture bug l A common technique to test loop counters and troubleshoot off-by-one and other loop errors l Can insert temporary output statements to print values. l Modern systems provide a built-in tracing system that allows you to trace a variable without having to change your program (We will talk about soon)

49 Chapter 3Java: an Introduction to Computer Science & Programming - Walter Savitch 49 Java Flow Control Statements Sequence l the default l Java automatically executes the next instruction unless you use a branching statement Branching: Selection l if l if-else l if-else if-else if- … - else l switch Branching: Repetition l while l do-while l for

50 Chapter 3Java: an Introduction to Computer Science & Programming - Walter Savitch 50 break Statement l As with in switch, break takes you out of loop l Any kind of loop – while, for, do-while l Example in display 3.13 on p176 l Makes loop harder to understand l Use sparingly

51 Chapter 3Java: an Introduction to Computer Science & Programming - Walter Savitch 51 The exit Method If you have a program situation where it is pointless to continue execution you can terminate the program with the exit(n) method n is often used to identify if the program ended normally or abnormally n is conventionally 0 for normal termination and non-zero for abnormal termination l We did this in our GUI programs System.exit(0); l In that case because the program was really done – to end GUI controls

52 Chapter 3Java: an Introduction to Computer Science & Programming - Walter Savitch 52 exit Method Example System.out.println("Enter e to exit or c to continue"); char userIn = SavitchInReadLineChar(); if(userIn == 'e') System.exit(0); // stupid example else if(userIn == 'c') { //statements to do work } else { System.out.println("Invalid entry"); //statements to something appropriate }

53 Chapter 3Java: an Introduction to Computer Science & Programming - Walter Savitch 53 The Type boolean l A primitive type l Can have expressions, values, constants, and variables just as with any other primitive type Only two values: true and false Can use a boolean variable as the condition in an if statement l Using a boolean variable as the condition can make an if statement easier to read by avoiding a complicated expression. if (classIsFull) System.out.println(“Please Choose Another Class.”); else … // register

54 Chapter 3Java: an Introduction to Computer Science & Programming - Walter Savitch 54 boolean Variables in Assignments A boolean expression evaluates to one of the two values true or false. The value of a boolean expression can be assigned to a boolean variable: … boolean classIsFull; // kind of weird, but legal classIsFull = (numSignedUp >= maxCapacity); if (classIsFull) System.out.println(“please choose another class”); else … // register There are simpler and easier ways to write this small program, but boolean variables are useful in keeping track of conditions that depend on a number of factors. l Can do the same thing with a loop – while (classIsFull) … Parentheses are not necessary here. Parentheses are necessary here.

55 Chapter 3Java: an Introduction to Computer Science & Programming - Walter Savitch 55 Truth Tables for boolean Operators Value of AValue of BA && B truetruetrue truefalsefalse falsetruefalse falsefalsefalse Value of AValue of BA || B truetruetrue truefalsetrue falsetruetrue falsefalsefalse Value of A!A truefalse falsetrue && (and)|| (or) ! (not)

56 Chapter 3Java: an Introduction to Computer Science & Programming - Walter Savitch 56 Precedence An example of using precedence rules to see which operators in following expression should be done first: score 90 l Division operator has highest precedence of all operators used here so treat it as if it were parenthesized: score 90 l Subtraction operator has next highest precedence : score 90 l The operators have equal precedence and are done in left-to- right order : (score 90) l The last expression is a fully parenthesized expression that is equivalent to the original. It shows the order in which the operators in the original will be evaluated.

57 Chapter 3Java: an Introduction to Computer Science & Programming - Walter Savitch 57 Highest Precedence l ( )’s override all precedence rules First: the unary operators: +, -, ++, --, and ! (right to left) Second: the binary arithmetic operators: *, /, % Third: the binary arithmetic operators: +, - Fourth: the boolean operators:, = = Fifth: the boolean operators: ==, != Sixth: the boolean operator & Seventh: the boolean operator | Eighth: the boolean operator && Ninth: the boolean operator || Lowest Precedence Precedence Rules Revisited

58 Chapter 3Java: an Introduction to Computer Science & Programming - Walter Savitch 58 l Short-circuit evaluation—only evaluating as much of a boolean expression as necessary. l Example: If assign > 0 is false, then the complete expression cannot be true because AND is only true if both operands are true. l Java will not evaluate the second part of the expression. Here Short-circuit evaluation prevents a divide-by-zero exception when assign is 0. Revisiting Short-Circuit Evaluation if ((assign > 0) && ((total/assign) > 80)) System.out.println(“Good work”); else System.out.println(“Work harder.”);

59 Chapter 3Java: an Introduction to Computer Science & Programming - Walter Savitch 59 Summary Part 1 Java selection statements: if, if-else, if-else if, and switch Java repetition (loop) statements: while, do-while, and for l Loops can be counter or sentinel controlled l Any loop can be written any of the three loop statements, but »while and do-while are good choices for sentinel loops »for is a good choice for counting loops

60 Chapter 3Java: an Introduction to Computer Science & Programming - Walter Savitch 60 Summary Part 2 Unintended infinite loops can be terminated by entering ^C (control-C) l The most common loop errors are unintended infinite loops and off-by-one errors in counting loops Branching and loops are controlled by boolean expressions »boolean expressions are either true or false »boolean is a primitive data type in Java exit(n) is a method that terminates a program »n = 0 is the conventional value for normal termination


Download ppt "Chapter 3Java: an Introduction to Computer Science & Programming - Walter Savitch 1 Chapter 3 l Branching l Loops l exit(n) method l Boolean data type."

Similar presentations


Ads by Google