Problem Solving with Loops

1 / 53

# Problem Solving with Loops - PowerPoint PPT Presentation

Problem Solving with Loops. Lesson 7. Overview. Flowchart Symbols The Loop Logic Structure Incrementing/ Decrementing Accumulating While/WhileEnd Repeat/Until. Automatic-Counter Loop (For) Nested Loops Indicators Algorithm Instructions Recursion. Flowchart Symbols. Decision

I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.

## PowerPoint Slideshow about 'Problem Solving with Loops' - jerzy

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.

- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript

### Problem Solving with Loops

Lesson 7

COP1006

Overview
• Flowchart Symbols
• The Loop Logic Structure
• Incrementing/Decrementing
• Accumulating
• While/WhileEnd
• Repeat/Until
• Automatic-Counter Loop (For)
• Nested Loops
• Indicators
• Algorithm Instructions
• Recursion

COP1006

Flowchart Symbols
• Decision
• True/False/Else
• Process
• Assign

Decision

Process

Assign

COP1006

Repetition Structure Logic
• Allows the programmer to specify that an action is to be repeated based on the truth or falsity of some condition.

While there are more timecards to be processed

Obtain time from each card and calculate pay

As long as there are items still remaining on the list the loop will continue.

• Otherwise known as iteration.

COP1006

Definite Repetition
• Known as definitebecause the number of iterations to be performed at runtime is known.
• Also known as Counter-controlled Repetition
• Uses a variable called a counter to control the number of times a set of statements should execute.

COP1006

Indefinite Repetition
• Known as indefinite because the number of iterations at runtime is not known before the loop begins executing.
• Uses a sentinel value (signal value, a flag value, or a dummy value to indicate “end of data entry.”
• When using a sentinel
• Choose a sentinel that will not naturally exist within the range of data being used.
• Ex. 999-99-9999 for Social Security Numbers

COP1006

The Looping Logic Structure
• one of the three types of program control structures
• Sequence
• Selection
• Repetition

COP1006

The Looping Process
• Initialization
• Condition (the test)
• Increment (or Decrement)
• The Accumulator, although used in frequently in loops, is NOT part of the generic looping process

COP1006

Looping Process
• The Initialization
• set to an initial value
• usually zero but not all the time
• Examples:
• Count = 0
• Count = 1
• Count = 100

COP1006

Looping Process
• The Test or Condition
• tested before the start of each loop repetition, called the iteration or pass.
• Examples:
• Count < 3 Count = 10
• Count <= 3 Count <> 10
• Count > 5
• Count >= 5

COP1006

Looping Process
• The Increment (or Decrement)
• updates the variable during each iteration
• must be part of the loop body (usually the last line)
• Examples:
• Count = Count + 1
• Count = Count - 1

COP1006

The Accumulator
• Variables used to store values being computed in increments during the execution of a loop.
• Not part of the Looping Process
• But quite often an integral addition to the process
• Very often looks like an increment, which is part of the looping process
• Examples:
• Sum = Sum + 1

COP1006

Common Forms of Loops
• The Three Most Common Loop-control statements:
• the while,
• the for, and
• the repeat
• But there are lots of other loop variations dependent on the language.

COP1006

While/While-End
• The while statement
• The most versatile of the loops
• The loop body contains the instructions to be repeated.
• The loop-repetition condition is the Boolean expression after the reserved word while which is evaluated before each repetition of the loop body.

COP1006

While Structure

Set counter To 0

While counter < final_value

statements

Increment counter by 1

While-end

Init

?

true

Stmt

false

Stmt

COP1006

While Example

x = 3; How many times does the

Count = 0; loop execute?

while Count < 3 do

begin What is displayed?

X = X * 2; 6

Print (X); 12

Count = Count + 1 24

end; {while Count}

Pascal Code

COP1006

Another While Example

x = 3

Count = 0

While Count < 3

X = X * 2

Print X

Count = Count + 1

End While

VB Code

COP1006

Another While Example

int X = 3;

int count = 0;

While (count < 3)

{

X = X * 2

cout << X << endl; Print statement

Count = Count + 1;

}

C++ Code

COP1006

Indefinite Examples
• A Sentinel-Controlled Loop
• Controlled by a sentinel value.
• Examples

end-of-file marker (EOF)

end-of-line marker (EOL)

999999999 for SSN

999999 for date

COP1006

Indefinite Examples
• A Sentinel-Controlled Loop
• Pseudocode Template

Initialize Sum to 0

Read the first value into counter variable

While counter variable is not sentinel do

Read next value into counter value

While-end; {while}

COP1006

Another Indefinite Example
• Boolean Flag-Controlled Loops
• Executes until the event being monitored occurs.
• A program flag, or flag, is a Boolean variable whole value (True or False) signals whether a particular event occurs.
• The flag should initially be set to False and reset to True when the event occurs.

COP1006

Another Indefinite Example
• Boolean Flag-Controlled Loops
• Pseudocode Template

Initialize flag to False

while not flag

statements..

Reset flag to True if the event being monitored occurs

while-end; {while}

COP1006

Do/Until
• Logical Opposite of the While Loop
• Unlike the While/While-End, the Do/Until tests for falsity.
• Should be used when the question being asked is more naturally asked in the negative.

Init

Counter < 5

false

Stmt

true

Stmt

COP1006

Do/Until Example

x = 3

Count = 3

Do Until Count < 1

X = X * 2

Print X

Count = Count - 1

Loop

COP1006

Repeat/Until Structure
• Similar to the While/While-End structure
• In the While Loop
• loop-continuation is tested at the beginning of the loop before the body of the loop is performed.
• In the Repeat Until Loop
• loop-continuation is tested after the loop body is performed, thus executing the loop body at least once.

COP1006

counter = 1

Action

occurs

before

Test

statements

counter

< 5

True

False

Repeat Until Loop
• Pseudocode Template

Repeat

statements

increment counterVariable

Until testCondition

• Notice that the statements are executed before thecondition to end the loop

COP1006

The For Loop
• Combines all of the Loop Process components into one statement.
• Notes on the Counter:
• Can be used non-destructively but must not be modified (destructively) within the loop body.
• Should be a local variable.
• The loop body will not be executed if initial is greater than the final value, unless the increment value is negative.

COP1006

The For Loop
• Pseudocode Example

For counter = initialvalue To finalvalue Step 1

statements… ‘to increment

Next counter

For counter = finalvalue To initialvalue Step -1

statements… ‘to decrement

Next counter

COP1006

For Flowchart
• Note that the “To” is equivalent to “while less than or equal to”

For counter = 1 to 5 Step 1

Print counter

Next counter

counter = 1

(implicit)

counter

<= 5

True

Print counter

counter =

counter + 1

(implicit)

(implicit)

False

COP1006

Nested Loops
• Loops can be nested just as if statements.
• Cannot use the same counter-control variable for the inner loop as is used for the outer loop.

True

True

y

x

False

False

COP1006

Nested Loop Template

Initialize outer loop

While outer loop test {while}

statements...

Initialize inner loop

While inner loop test {while}

Inner loop processing and

Update inner loop variable

while-end {inner while}

statements...

Update outer loop variable

while-end {outer while}

COP1006

Nested Loop Code Example

Dim outercounter As Integer

Dim innercounter As Integer

outercounter = 1

While outercounter <= 3

innercounter = 1

While innercounter <= 3

innercounter = innercounter + 1

Wend ‘innercounter

outercounter = outercounter + 1

Wend ‘outercounter

VB Code

COP1006

Loop Invariants
• Assertions about the characteristics of a loop that always must be true for a loop to execute properly.
• The assertions are true on loop entry, at the start of each loop iteration, and on exit from the loop.
• They are not necessarily true at each point within the body of the loop.

COP1006

Four Special Cases of Loops
• when the loop is skipped entirely (zero iteration loop)
• when the loop body is executed just once
• When the loop executes some normal number of times
• When the loop fails to exit (infinite loop)

COP1006

Loop Testing Strategy
• Verify the Algorithm
• Test the value of the algorithm
• before the loop
• during the loop, and
• after the loop.

COP1006

Watch out for…
• Beware of infinite loops
• Beware of off-by-one Loop Errors
• Executes the loop one too many times
• Executes the loop one too few times

COP1006

### Recursion

Or twisted tails

COP1006

Recursion
• Occurs when a function calls itself from within the body of the function
• Also known as “procedural iteration”
• Classic Examples of Recursion
• Factorial
• Fibonacci

COP1006

Factorial
• How it works:

If X = 3, the chain of recursive calls would be as follows:

Factorial(3)

3 * Factorial(2)

3 * (2 * Factorial(1) )

Precondition x  0

Postcondition

Returns the product 1 * 2 * 3 * …* x for x > 1

Returns 1 when X is 0 or 1.

COP1006

VB Factorial Example

Private Function Factorial(ByRef y As Double) _

As Double ‘2nd double defines Factorial

If y <= 1 Then

Factorial = 1 ' Base case

Else

Factorial = y * Factorial(y - 1) ' Recursive step

End If

End Function

The Base Case is also known as the Stopping Case.

COP1006

The Original Fibonacci Problem
• Investigated (in the year 1202) was about how fast rabbits could breed in ideal circumstances.
• Suppose a newly-born pair of rabbits, one male, one female, are put in a field. Rabbits are able to mate at the age of one month so that at the end of its second month a female can produce another pair of rabbits. Suppose that our rabbits never die and that the female always produces one new pair (one male, one female) every month from the second month on.
• The puzzle that Fibonacci posed was...
• How many pairs will there be in one year?
• At the end of the first month, they mate, but there is still one only 1 pair.
• At the end of the second month the female produces a new pair, so now there are 2 pairs of rabbits in the field.
• At the end of the third month, the original female produces a second pair, making 3 pairs.
• At the end of the fourth month, the original female has produced yet another new pair, the female born two months ago produces her first pair also, making 5 pairs.

COP1006

Fibonacci Tree of Rabbits

Female

Male

COP1006

Fibonacci Shells
• We can make another picture showing the Fibonacci numbers 1,1,2,3,5,8,13,21
• If we start with two small squares of size 1 next to each other.
• On top of both of these draw a square of size 2 (=1+1).

COP1006

The Fibonacci Sequence
• The number of clockwise spirals and the number of counterclockwise spirals formed by the seeds of certain varieties of flowers

COP1006

Fibonacci Sequence
• Fibonacci Numbers

Each Fibonacci number is the sum of the two preceding Fibonacci numbers.

• The Fibonacci series defined recursively:

Fibonacci(0) = 0

Fibonacci(1) = 1

Fibonacci(2) = 1

Fibonacci(n) = Fibonacci(n-1) + Fibonacci(n - 2)

Fib(3) = Fib(2) + Fib(1) = 1 + 1 = 2

Fib(4) = Fib(3) + Fib(2) = 2 + 1 = 3

Fib(5) = Fib(4) + Fib(3) = 3 + 2 = 5

Fib(6) = Fib(5) + Fib(4) = 5 + 3 = 8

A Shortened Form:

Fib (1) = 1 Fib (2) = 1

Fib (n) = Fib (n - 1) + Fib (n - 2)

COP1006

### Problem Solving with Case--Again

Chapter 8

COP1006

Case Usage
• Used for menu-driven programs and event-driven programs
• A list of options that a program based on case logic can perform
• Event-driven
• Order is dictated by the user, not the programmer, by which button is clicked on

COP1006

Extended Case Example
• The Setup

VB Code

COP1006

Extended Case Example

Label3.Text = List1.Text

‘Sets the caption for the Label

‘above the output textbox

‘Next, the appropriate language phrase is displayed in the textbox based on the Country selected.

VB Code

COP1006

Extended Case Example

Select Case List1.ListIndex

Case 0

Label4.Caption = “Hello, programmer”

Case 1

Label4.Caption = “Hallo, programmierer”

Case 2

Case 3

Label4.Caption = “Ciao, programmatori”

End Select

VB Code

COP1006

A more fun example…

Select Case Age

Case 16

LabelAge.Caption = “You can drive now! Parents Beware!”

Case 18

LabelAge.Caption = “You can vote now!”

Case 21

LabelAge.Caption = “You can drink wine with your meals.”

Case 65

LabelAge.Caption = “Time to retire and have fun!”

Case Else

LabelAge.Caption = “You’re a great age! Enjoy it!

End Select

COP1006

Next?

Arrays

COP1006