JAVA Advanced Control Structures. Objectives Be able to use a switch statement for selective execution. Be able to implement repetition using alternative.

Slides:



Advertisements
Similar presentations
The Towers of Hanoi or Apocalypse When?.
Advertisements

Introduction to Control Statements Presented by: Parminder Singh BCA 5 th Sem. [ Batch] PCTE, Ludhiana 5/12/ Control Statements.
5/17/ Programming Constructs... There are several types of programming constructs in JAVA. - If-else construct or ternary operator - while - do-while.
ITEC200 – Week07 Recursion. 2 Learning Objectives – Week07 Recursion (Ch 07) Students can: Design recursive algorithms to solve.
Recursion. Idea: Some problems can be broken down into smaller versions of the same problem Example: n! 1*2*3*…*(n-1)*n n*factorial of (n-1)
1 More on Decisions Overview l The selection Operator l Grouping of Statements l Multiple branches (if else if) l Switch Statement.
CS102 Algorithms and Programming II1 Recursion Recursion is a technique that solves a problem by solving a smaller problem of the same type. A recursive.
Loops – While Loop Repetition Statements While Reading for this Lecture, L&L, 5.5.
Copyright 2006 by Pearson Education 1 Building Java Programs Chapter 5: Program Logic and Indefinite Loops.
1 CSCD 300 Data Structures Recursion. 2 Proof by Induction Introduction only - topic will be covered in detail in CS 320 Prove: N   i = N ( N + 1.
Outline Relational Operators Boolean Operators Truth Tables Precedence Table Selection and Algorithms The if – else Variations of if The switch.
Sanjay Goel, School of Business, University at Albany, SUNY 1 MSI 692: Special Topics in Information Technology Lecture 2 Sanjay Goel University at Albany,
ELC 310 Day 24. © 2004 Pearson Addison-Wesley. All rights reserved11-2 Agenda Questions? Problem set 5 Parts A Corrected  Good results Problem set 5.
1 Basic control structures Overview l Relational and Logical Operations l Selection structures »if statement »switch statement l Preview:
©The McGraw-Hill Companies, Inc. Permission required for reproduction or display. 4 th Ed Chapter Chapter 6 Repetition Statements.
Recursion A recursive function is a function that calls itself either directly or indirectly through another function. The problems that can be solved.
Unit 7 1 Unit 7: Recursion H Recursion is a fundamental programming technique that can provide an elegant solution to a certain kinds of problems H In.
Control Structures II. Why is Repetition Needed? There are many situations in which the same statements need to be executed several times. Example: Formulas.
Chapter 4: Control Structures II
19-Aug-15 Simple Recursive Algorithms. 2 A short list of categories Algorithm types we will consider include: Simple recursive algorithms Backtracking.
JAVA Control Structures: Repetition. Objectives Be able to use a loop to implement a repetitive algorithm Practice, Practice, Practice... Reinforce the.
© Calvin College, recursion n. See recursion. See also tail recursion. - The Jargon Dictionary, v
1 Recursion Algorithm Analysis Standard Algorithms Chapter 7.
Chapter 14: Recursion J ava P rogramming: From Problem Analysis to Program Design, From Problem Analysis to Program Design, Second Edition Second Edition.
15-1 Chapter-18: Recursive Methods –Introduction to Recursion –Solving Problems with Recursion –Examples of Recursive Methods.
Recursion Self-Referencing Functions. Problem # 1 Write a function that, given n, computes n! n! == (n-1) n n! == 1  2 ...  (n-1)  nExample:
1 7.Algorithm Efficiency What to measure? Space utilization: amount of memory required  Time efficiency: amount of time required to process the data Depends.
Chapter 14 Recursion. Chapter Objectives Learn about recursive definitions Explore the base case and the general case of a recursive definition Learn.
Chapter 8 Recursion Modified.
Hello.java Program Output 1 public class Hello { 2 public static void main( String [] args ) 3 { 4 System.out.println( “Hello!" ); 5 } // end method main.
1 7.Algorithm Efficiency What to measure? Space utilization: amount of memory required  Time efficiency: amount of time required to process the data.
Recursion Recursion Chapter 12. Outline n What is recursion n Recursive algorithms with simple variables n Recursion and the run-time stack n Recursion.
October 28, 2015ICS102: For Loop1 The for-loop and Nested loops.
11-1 Recursive Thinking A recursive definition is one which uses the word or concept being defined in the definition itself When defining an English word,
Chapter 5: Control Structures II J ava P rogramming: From Problem Analysis to Program Design, From Problem Analysis to Program Design,
Java Programming: From Problem Analysis to Program Design, 4e Chapter 13 Recursion.
Liang, Introduction to Java Programming, Tenth Edition, (c) 2013 Pearson Education, Inc. All rights reserved. 1 Chapter 18 Recursion Lecture 6 Dr. Musab.
Chapter 4: Control Structures II
More Selection Executing Statements Selectively Chap. 7 (Read § & Part of Picture: Boolean Logic and Digital Design) 1.
Chapter 5: Control Structures II
J AVA P ROGRAMMING 2 C H 03: C ONTROL STATEMENTS if, for loop (review) switch, while, do while break, continue Fall Java Programming.
1 Recursion Recursion is a powerful programming technique that provides elegant solutions to certain problems. Chapter 11 focuses on explaining the underlying.
CONTROL STATEMENTS LOOPS. WHY IS REPETITION NEEDED?  There are many situations in which the same statements need to be executed several times.  Example:
1 Controlling Behavior Chap.5 Study Sections 5.1 – 5.3 The if and for Statements.
Chapter 6: Repetition Continued. 2 Validity Checks What’s weak about the following code ? do { s1 = JOptionPane.showInputDialog (“Enter a number: ”);
 Control Flow statements ◦ Selection statements ◦ Iteration statements ◦ Jump statements.
Programming With Java ICS201 University Of Ha’il1 Chapter 11 Recursion.
CONTROL STRUCTURE Chapter 3. CONTROL STRUCTURES ONE-WAY SELECTION Syntax: if (expression) statement Expression referred to as decision maker. Statement.
More Selection Executing Statements Selectively Chap. 7 (Read § & Part of Picture: Boolean Logic and Digital Design) 1.
Chapter 2: Fundamental Programming Structures in Java Adapted from MIT AITI Slides Control Structures.
Structured Programming Structured Programming is writing a program in terms of only 3 basic control structures: sequence selection repetition We have already.
Introduction to Programming G50PRO University of Nottingham Unit 6 : Control Flow Statements 2 Paul Tennent
Chapter 7 Control Structures. Java has very flexible three looping mechanisms. You can use one of the following three loops:  while Loop  do...while.
1 CSC 143 Recursion [Reading: Chapter 17]. 2 Recursion  A recursive definition is one which is defined in terms of itself.  Example:  Sum of the first.
Lecture 11 Recursion. A recursive function is a function that calls itself either directly, or indirectly through another function; it is an alternative.
Recursion You may have seen mathematical functions defined using recursion Factorial(x) = 1 if x
COMP 51 Week Fourteen Recursion.
Chapter 5: Control Structures II
Java Software Structures: John Lewis & Joseph Chase
Chapter 5: Control Structures II
Recursive Definitions
Chapter 12 Recursion (methods calling themselves)
The Basics of Recursion
The Hanoi Tower Problem
Recursion Definition: A method that calls itself. Examples
CSC 143 Recursion.
Dr. Sampath Jayarathna Cal Poly Pomona
Self-Referencing Functions
Recursive Thinking.
Presentation transcript:

JAVA Advanced Control Structures

Objectives Be able to use a switch statement for selective execution. Be able to implement repetition using alternative loops: do-while loops Be able to write a recursive method.

3 The switch Statement Multi-alternative selection can be implemented using: The multi-branch if statement The switch statement The multi-branch if statement can always be used. The switch statement is a specialized form that operates more efficiently under certain circumstances.

4 switch : Syntax and Behavior expression StatementList 1 value 1 StatementList 2 value 2 StatementList n switch (expression) { case value 1 : statementList 1 case value 2 : statementList 2 … default: statementList n } Requirements: expression must be integer compatible; values must be constants or literals; Cases check for equality. otherwise

5 switch & if : Examples switch (dayCode) { case 1: System.out.println("Sunday"); break; case 2: System.out.println("Monday"); break; case 3: System.out.println("Tuesday"); break; case 4: System.out.println("Wednesday"); break; case 5: System.out.println("Thursday"); break; case 6: System.out.println("Friday"); break; case 7: System.out.println("Saturday"); break; default: System.out.println("invalid code"); } if (dayCode == 1) { System.out.println("Sunday"); } else if (dayCode == 2) { System.out.println("Monday"); } else if (dayCode == 3) { System.out.println("Tuesday"); } else if (dayCode == 4) { System.out.println("Wednesday"); } else if (dayCode == 5) { System.out.println("Thursday"); } else if (dayCode == 6) { System.out.println("Friday"); } else if (dayCode == 7) { System.out.println("Saturday"); } else { System.out.println("invalid code); }

6 switch : Fall-Through Behavior The switch statement implements fall-through behavior. More than one case can be associated with one statement list. If only one list is to be executed, then that list must explicitly exit the switch using: break return throw exit

7 switch : Examples switch (dayCode) { case 1: System.out.println("Sunday"); break; case 2: System.out.println("Monday"); break; case 3: System.out.println("Tuesday"); break; case 4: System.out.println("Wednesday"); break; case 5: System.out.println("Thursday"); break; case 6: System.out.println("Friday"); break; case 7: System.out.println("Saturday"); break; default: System.out.println("invalid code"); } switch (dayCode) { case 1: case 7: System.out.println("weekend"); break; case 2: case 3: case 4: case 5: case 6: System.out.println("weekday"); break; default: System.out.println("invalid code"); }

Execute! // value of y? x = 3; y = 3; switch (x + 3){ case 6: y = 1; default: y += 1; } Practice //Rewrite using switch if (a == 1){ x += 5; } else if (a == 2) { x += 10; } else if (a == 3) { x += 16; } else if (a == 4) { x += 34; }

9 The while Loop while (condition){ statement } condition False True A while loop executes a statement based on a boolean condition. Statement

10 The do - while Loop do { statement } while (condition); A do - while loop is a post-test version of the while statement. statement condition True False

11 do-while : Example System.out.print("Guess a number from 1-10: "); do { number = keyboard.nextInt(); } while (number != 7); System.out.println("You guessed it!");

Execute! // What is the output? int i = 3; while (i >= 1){ int num = 1; for (int j = 1; j <= i; j++){ System.out.print(num + "xxx"); num *= 2; } System.out.println(); i--; }

Execute! // What is the output? int i = 1; do { int num = 1; for (int j = 1; j <= i; j++){ System.out.print(num + "yyy"); num += 2; } System.out.println(); i++; } while (i <= 3);

14 Introduction Recursion is a way of defining functions self-referentially. Examples: Droste effect; (Parenthetical comments (especially comments within comments), etc.); A chain of phone callers on hold; Inductive Proofs. Image from google.com

15 Example: Factorial Write a function that, given n, computes n! n! == 1 * 2 *... * (n-1) * n Example: 5! == 1 * 2 * 3 * 4 * 5 == 120 Assumptions: Receive n, a non-negative integer. Return n!, a double (to avoid integer overflow).

16 Preliminary Analysis This can be viewed as a counting problem, so we could solve it iteratively: public static int factorial1(int n){ int result = 1; for (int i = 2; i <= n; i++){ result *= i; } return result; }

17 An Alternate Analysis Consider the following alternate analysis: n! == 1 * 2 *... * (n-1) * n (n-1)! == 1 * 2 *... * (n-1) n! == (n-1)! * n Historically, this is how the factorial function was defined.

The Mechanics of Recursion Design recursive functions using a three-step process: 1. Identify a base case - an instance of the problem whose solution is trivial. E.g., The factorial function has two base cases: if n == 0: n! == 1 if n == 1: n! == 1

2. Identify an induction step - a means of solving the non-trivial instances of the problem using one or more “smaller” instances of the problem. E.g., n! == (n-1)!  n Mechanics (cont.)

3. Form an algorithm that includes the base case and induction step, and ensures that each inductive step moves toward the base case. factorial: Receive n. If n > 1 then Return factorial(n-1) * n. Else Return 1. Mechanics (cont.)

public static int factorial(int n){ if (n > 1){ return factorial(n-1) * n; } else { return 1; } } Implementation

● Move disks from a source pin to a target pin, using the third pin as an auxiliary. ● Rules: – move only one disk at a time; – never put a larger disk onto a smaller one. Example: Towers of Hanoi

Today’s problem is to write a program that generates the instructions for the priests to follow in moving the disks. While quite difficult to solve iteratively, this problem has a simple and elegant recursive solution. Design

public static void main (String [] args) { Scanner keyboard = new Scanner(System.in); System.out.println("The Hanoi Towers\n"); System.out.print("number of disks: "); int n = keyboard.nextInt(); move(n, 'A', 'B', 'C'); } Driver Program

Base case: Inductive case: Design (cont.)

We can combine these steps into the following algorithm: 0.Receive n, src, dest, aux. 1.If n > 1: a. move(n-1, src, aux, dest); b. move(1, src, dest, aux); c. move(n-1, aux, dest, src); Else Display “Move the top disk from ” + src + “ to ” + dest. Algorithm

public static void move(int n, char src, char dest, char aux) { if (n > 1) { move(n-1, src, aux, dest); move(1, src, dest, aux); move(n-1, aux, dest, src); } else { System.out.println("Move the top disk from " + src + " to " + dest); } Implementation

How many “moves” does it take to solve this problem as a function of n, the number of disks to be moved. n# of moves required______ i2 i Algorithm Analysis

Given a “super-printer” that can generate and print 1,048,576 (2 20 ) instructions/second, how long would it take to print instructions ? 2 64 /2 20 = 2 44 seconds  2 44 / 2 6 = 2 38 minutes  2 38 / 2 6 = 2 32 hours  2 32 / 2 5 = 2 27 days  2 27 / 2 9 = 2 18 years  2 18 / 2 7 = 2 11 centuries  2 11 / 2 4 = 2 7 = 128 millennia Analysis (cont.)

30 Graphical Examples Sierpinski triangles Tree fractals Koch’s snowflake