Lecture 4: Program Control Flow

Slides:



Advertisements
Similar presentations
BUILDING JAVA PROGRAMS CHAPTER 4 Conditional Execution.
Advertisements

Copyright 2010 by Pearson Education Building Java Programs Chapter 4 Lecture 4-2: Advanced if/else ; Cumulative sum reading: 4.1, 4.3, 4.5; "Procedural.
1 BUILDING JAVA PROGRAMS CHAPTER 4 CONDITIONAL EXECUTION.
Copyright 2008 by Pearson Education 1 Building Java Programs Chapter 2 Lecture 2-2: The for Loop reading: 2.3 self-check: exercises: 2-14 videos:
Copyright 2008 by Pearson Education Building Java Programs Chapter 4 Lecture 4-1: Scanner ; if/else reading: , 4.2, 4.6.
Copyright 2006 by Pearson Education 1 Building Java Programs Chapter 4: Conditional Execution.
1 for Loops Computer Science is a science of abstraction - creating the right model for a problem and devising the appropriate mechanizable techniques.
Building Java Programs Chapter 4 Conditional Execution Copyright (c) Pearson All rights reserved.
Copyright 2009 by Pearson Education Building Java Programs Chapter 2 Lecture 2-2: The for Loop reading: 2.3 self-check: exercises: 2-14 videos: Ch.
Building Java Programs
1 BUILDING JAVA PROGRAMS CHAPTER 2 PRIMITIVE DATA AND DEFINITE LOOPS.
1 The for loop. 2 Repetition with for loops So far, repeating a statement is redundant: System.out.println("Homer says:"); System.out.println("I am so.
ADMIT TICKET WHAT DOES THIS OUTPUT? double y = 2.5; int x = 6 / (int) y; System.out.println(“x = “ + x);
Copyright 2010 by Pearson Education 1 Building Java Programs Chapter 2 Lecture 2-2: The for Loop reading: 2.3 self-check: exercises: 2-14 videos:
Copyright 2008 by Pearson Education 1 Building Java Programs Chapter 2 Lecture 2-2: The for Loop reading: 2.3 self-check: exercises: 2-14 videos:
Building Java Programs Chapter 4 Conditional Execution Copyright (c) Pearson All rights reserved.
Building Java Programs Chapter 2 Primitive Data and Definite Loops Copyright (c) Pearson All rights reserved.
Copyright 2008 by Pearson Education Building Java Programs Chapter 4 Lecture 4-1: if and if/else Statements reading: 4.2 self-check: #4-5, 7, 10, 11 exercises:
Copyright 2008 by Pearson Education 1 The if statement Executes a block of statements only if a test is true if ( test ) { statement ;... statement ; }
Building Java Programs
Building Java Programs
Building Java Programs Chapter 4
Primitive Data, Variables, Loops (Maybe)
Building Java Programs
Lecture 4: Conditionals
Building Java Programs
Building Java Programs
Building Java Programs Chapter 4
Building Java Programs
Building Java Programs
Building Java Programs
Building Java Programs
Building Java Programs
Variables variable: A piece of the computer's memory that is given a name and type, and can store a value. Like preset stations on a car stereo, or cell.
Lecture 5: For Loops Building Java Programs: A Back to Basics Approach
Building Java Programs
Building Java Programs
Building Java Programs
Lecture 8:The For Loop AP Computer Science Principles.
Building Java Programs
Building Java Programs
Building Java Programs
Building Java Programs
Building Java Programs
Building Java Programs
SSEA Computer Science: Track A
Chapter 2 Programming Basics.
Building Java Programs
Building Java Programs
Building Java Programs
Building Java Programs
Building Java Programs
Building Java Programs
Building Java Programs
Building Java Programs
Building Java Programs
Building Java Programs
Building Java Programs
Building Java Programs
Building Java Programs
Building Java Programs
Building Java Programs
Building Java Programs
Building Java Programs
Chapter 2 Lecture 2-2: The for Loop reading: 2.3
Building Java Programs
Chapter 4 Lecture 4-1: Scanner; if/else reading: 3.3 – 3.4, 4.1, 4.5
Building Java Programs Chapter 4
Building Java Programs
Building Java Programs
Presentation transcript:

Lecture 4: Program Control Flow Dr. Kyung Eun Park Summer 2017

Default Control Flow: Top to Bottom Flow Chart start statement 1 statement 2 statement 3 end

Method Invocation From main(), call method1(), return from the method and continue … start main() { int num; num = 10; … method1(); System.out } method1 { … } method2 { … } … end

Conditional Execution : if Statement if Conditional Statement start start main() { int num; … if (num>50) { } statements test test Yes redrawn num>50 Yes_statements Yes_statements … statements end end

The if Statement Executes a block of statements only if a test is true if (test) { statement; ... } Example: double gpa = console.nextDouble(); if (gpa >= 2.0) { System.out.println("Application accepted.");

The if-else Statement Executes one block if a test is true, another if false if (test) { statement(s); } else { } Example: double gpa = console.nextDouble(); if (gpa >= 2.0) { System.out.println("Welcome to Mars University!"); System.out.println("Application denied.");

Conditional Execution: if-else Statement start if-else Conditional Statement start statements test main() { int num; … if (num>50) { } else { } No Yes num>50 test Yes_statements … redrawn No_statements Yes_statements No_statements … statements end end

Nested if-else Statement Chooses between outcomes using many tests if (test1) { statement1; } else if (test2) { statement2; } else { statement3; } Example: if (x > 0) { System.out.println("Positive"); } else if (x < 0) { System.out.println("Negative"); System.out.println("Zero");

Nested if-else-if Statement If it ends with else, exactly one path must be taken. If it ends with if, the code might not execute any path. if (test1) { statement1; } else if (test2) { statement2; } else if (test3) { statement3; } Example: if (place == 1) { System.out.println("Gold medal!"); } else if (place == 2) { System.out.println("Silver medal!"); } else if (place == 3) { System.out.println("Bronze medal.");

Program I – if-else, return statement Write a method quadrant that accepts a pair of real numbers x and y and returns the quadrant for that point: Example: quadrant(-4.2, 17.3) returns 2 If the point falls directly on either axis, return 0 y+ quadrant 2 quadrant 1 x- x+ quadrant 3 quadrant 4 y-

Program I – if-else, return statement quadrant method public static int quadrant(double x, double y) { if (x > 0 && y > 0) { return 1; } else if (x < 0 && y > 0) { return 2; } else if (x < 0 && y < 0) { return 3; } else if (x > 0 && y < 0) { return 4; } else { // at least one coordinate equals 0 return 0; }

Boolean Expressions Tests use relational operators: if statements and for loops both use logical tests. if (i <= 10) { ... for (int i = 1; i <= 10; i++) { ... These are boolean expressions Tests use relational operators: Operator Meaning Example Value == equals 1 + 1 == 2 true != does not equal 3.2 != 2.5 < less than 10 < 5 false > greater than 10 > 5 <= less than or equal to 126 <= 100 >= greater than or equal to 5.0 >= 5.0 Note that == tests equality, not = . The = is used for the assignment operator!

Logical Operators Tests can be combined using logical operators: "Truth tables" for each, used with logical values p and q: Operator Description Example Result && and (2 == 3) && (-1 < 5) false || or (2 == 3) || (-1 < 5) true ! not !(2 == 3) p q p && q p || q true false p !p true false

Evaluating Logic (Boolean) Expressions Relational operators have lower precedence than math. 5 * 7 >= 3 + 5 * (7 - 1) 5 * 7 >= 3 + 5 * 6 35 >= 3 + 30 35 >= 33 true Relational operators cannot be "chained" as in algebra. 2 <= x <= 10 true <= 10 (assume that x is 15) error! Instead, combine multiple tests with && or || 2 <= x && x <= 10 true && false false

Logical Questions What is the result of each of the following expressions? int x = 42; int y = 17; int z = 25; y < x && y <= z x % 2 == y % 2 || x % 2 == z % 2 x <= y + z && x >= y + z !(x < y && x < z) (x + y) % 2 == 0 || !((z - y) % 2 == 0) Answers: true, false, true, true, false

Repetition with for Loops We don’t like repetition, but computer does well. System.out.println("Homer says:"); System.out.println("I am so smart"); System.out.println("S-M-R-T... I mean S-M-A-R-T"); Keeping repeating statements is not efficient!!!  Loop Structure for (int i = 1; i <= 4; i++) { // repeat 4 times }

for loop syntax for (initialization; test; update) { statement; ... } Perform initialization once. Repeat the following: Check if the test is true. If not, stop. Execute the statements. Perform the update loop body loop header

Initialization Tells Java what variable to use in the loop for (int i = 1; i <= 6; i++) { System.out.println("I am so smart"); } Tells Java what variable to use in the loop Performed once as the loop begins The variable, i is called a loop counter can use any name, not just i can start at any value, not just 1 visible only within the for loop : Variable scope

Test Tests the loop counter variable against a limit for (int i = 1; i <= 6; i++) { System.out.println("I am so smart"); } Tests the loop counter variable against a limit Uses comparison operators: < less than <= less than or equal to > greater than >= greater than or equal to

Update: Increment and Decrement shortcuts to increase or decrease a variable's value by 1 Shorthand Equivalent longer version variable++; variable = variable + 1; variable--; variable = variable - 1; int x = 2; x++; // x = x + 1; // x now stores 3 double gpa = 2.5; gpa--; // gpa = gpa - 1; // gpa now stores 1.5

Modify-and-Assign shortcuts to modify a variable's value Shorthand Equivalent longer version variable += value; variable = variable + value; variable -= value; variable = variable - value; variable *= value; variable = variable * value; variable /= value; variable = variable / value; variable %= value; variable = variable % value; x += 3; // x = x + 3; gpa -= 0.5; // gpa = gpa - 0.5; number *= 2; // number = number * 2;

Repetition over a Range System.out.println("1 squared = " + 1 * 1); System.out.println("2 squared = " + 2 * 2); System.out.println("3 squared = " + 3 * 3); System.out.println("4 squared = " + 4 * 4); System.out.println("5 squared = " + 5 * 5); System.out.println("6 squared = " + 6 * 6); Intuition: "I want to print a line for each number from 1 to 6“  The for loop does exactly that!  "For each integer i from 1 through 6, print ...“ for (int i = 1; i <= 6; i++) { System.out.println(i + " squared = " + (i * i)); }

Loop Walkthrough Output: for (int i = 1; i <= 4; i++) { 2 4 for (int i = 1; i <= 4; i++) { System.out.println(i + " squared = " + (i * i)); } System.out.println("Whoo!"); Output: 1 squared = 1 2 squared = 4 3 squared = 9 4 squared = 16 Whoo! 3 5 1 2 3 4 5

Multi-line Loop Body Output: System.out.println("+----+"); for (int i = 1; i <= 3; i++) { System.out.println("\\ /"); System.out.println("/ \\"); } Output: +----+ \ / / \

Degree Conversion: Celsius to Fahrenheit int highTemp = 5; for (int i = -3; i <= highTemp / 2; i++) { System.out.println(i * 1.8 + 32); } Output: 26.6 28.4 30.2 32.0 33.8 35.6

Cumulative Algorithms Find the sum of all integers from 1-1000: // This may require a lot of typing int sum = 1 + 2 + 3 + 4 + ... ; System.out.println("The sum is " + sum); What if we want the sum from 1 - 1,000,000? Or the sum up to any maximum?  How can we generalize the above code?

Cumulative Sum Loop cumulative sum: A variable that keeps a sum in progress and is updated repeatedly until summing is finished. Cumulative sum variable, sum must be declared outside the loop that updates it, so that it will still exist after the loop. int sum = 0; for (int i = 1; i <= 1000; i++) { sum = sum + i; } System.out.println("The sum is " + sum);

Homework I – Cumulative Product Write a method cumProduct that accepts a positive number and returns the cumulative product up to the number starting from 1. Example: cumProduct(10) returns 3628800 If the number in negative, please make it positive and continue…

Homework II – File and Cumulative Sum Write a program which generates the grade statistics including the average grade, the highest, and the lowest grade with the names of student. Given data (student.txt) 10 Kim 90 Eric 86 Stef 79 Joe 50 Lauren 98 John 83 Emily 89 Grace 92 Tim 85 Amy 87 Output (grade.txt) /*Statistics from student data */ Avg. Grade = 83.9 Max. Grade = 98 (Lauren) Min. Grade = 50 (Joe)