53
Lesson 7 McManus COP1006 1

Lesson 7 McManus COP1006 1. Flowchart Symbols The Loop Logic Structure Incrementing/ Decrementing Accumulating While/WhileEnd Repeat/Until

Embed Size (px)

Citation preview

Page 1: Lesson 7 McManus COP1006 1.  Flowchart Symbols  The Loop Logic Structure  Incrementing/ Decrementing  Accumulating  While/WhileEnd  Repeat/Until

Lesson 7

McManusCOP1006 1

Page 2: Lesson 7 McManus COP1006 1.  Flowchart Symbols  The Loop Logic Structure  Incrementing/ Decrementing  Accumulating  While/WhileEnd  Repeat/Until

Flowchart Symbols

The Loop Logic Structure

Incrementing/Decrementing

Accumulating While/WhileEnd Repeat/Until

Automatic-Counter Loop (For)

Nested Loops Indicators Algorithm

Instructions Recursion

McManusCOP1006 2

Page 3: Lesson 7 McManus COP1006 1.  Flowchart Symbols  The Loop Logic Structure  Incrementing/ Decrementing  Accumulating  While/WhileEnd  Repeat/Until

Decision◦ True/False/Else

Process Assign

McManusCOP1006 3

Assign

Process

Decision

Page 4: Lesson 7 McManus COP1006 1.  Flowchart Symbols  The Loop Logic Structure  Incrementing/ Decrementing  Accumulating  While/WhileEnd  Repeat/Until

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 payAs long as there are items still remaining on the

list the loop will continue.◦ Otherwise known as iteration.

McManusCOP1006 4

Page 5: Lesson 7 McManus COP1006 1.  Flowchart Symbols  The Loop Logic Structure  Incrementing/ Decrementing  Accumulating  While/WhileEnd  Repeat/Until

Known as definite because 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.

McManusCOP1006 5

Page 6: Lesson 7 McManus COP1006 1.  Flowchart Symbols  The Loop Logic Structure  Incrementing/ Decrementing  Accumulating  While/WhileEnd  Repeat/Until

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

McManusCOP1006 6

Page 7: Lesson 7 McManus COP1006 1.  Flowchart Symbols  The Loop Logic Structure  Incrementing/ Decrementing  Accumulating  While/WhileEnd  Repeat/Until

one of the three types of program control structures ◦ Sequence◦ Selection ◦ Repetition

McManusCOP1006 7

Page 8: Lesson 7 McManus COP1006 1.  Flowchart Symbols  The Loop Logic Structure  Incrementing/ Decrementing  Accumulating  While/WhileEnd  Repeat/Until

Initialization Condition (the test) Increment (or Decrement)

The Accumulator, although used in frequently in loops, is NOT part of the generic looping process

McManusCOP1006 8

Page 9: Lesson 7 McManus COP1006 1.  Flowchart Symbols  The Loop Logic Structure  Incrementing/ Decrementing  Accumulating  While/WhileEnd  Repeat/Until

The Initialization set to an initial value

◦ usually zero but not all the time Examples:

◦ Count = 0 ◦ Count = 1◦ Count = 100

McManusCOP1006 9

Page 10: Lesson 7 McManus COP1006 1.  Flowchart Symbols  The Loop Logic Structure  Incrementing/ Decrementing  Accumulating  While/WhileEnd  Repeat/Until

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

McManusCOP1006 10

Page 11: Lesson 7 McManus COP1006 1.  Flowchart Symbols  The Loop Logic Structure  Incrementing/ Decrementing  Accumulating  While/WhileEnd  Repeat/Until

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

McManusCOP1006 11

Page 12: Lesson 7 McManus COP1006 1.  Flowchart Symbols  The Loop Logic Structure  Incrementing/ Decrementing  Accumulating  While/WhileEnd  Repeat/Until

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◦ TotalGrade = TotalGrade + CurrentGrade

McManusCOP1006 12

Page 13: Lesson 7 McManus COP1006 1.  Flowchart Symbols  The Loop Logic Structure  Incrementing/ Decrementing  Accumulating  While/WhileEnd  Repeat/Until

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.

McManusCOP1006 13

Page 14: Lesson 7 McManus COP1006 1.  Flowchart Symbols  The Loop Logic Structure  Incrementing/ Decrementing  Accumulating  While/WhileEnd  Repeat/Until

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.

McManusCOP1006 14

Page 15: Lesson 7 McManus COP1006 1.  Flowchart Symbols  The Loop Logic Structure  Incrementing/ Decrementing  Accumulating  While/WhileEnd  Repeat/Until

Set counter To 0While counter < final_value

statementsIncrement counter by 1

While-end

McManusCOP1006 15

?

Init

Stmt

true

false

Stmt

Page 16: Lesson 7 McManus COP1006 1.  Flowchart Symbols  The Loop Logic Structure  Incrementing/ Decrementing  Accumulating  While/WhileEnd  Repeat/Until

x = 3; How many times does theCount = 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

McManusCOP1006 16

Page 17: Lesson 7 McManus COP1006 1.  Flowchart Symbols  The Loop Logic Structure  Incrementing/ Decrementing  Accumulating  While/WhileEnd  Repeat/Until

x = 3Count = 0While Count < 3 X = X * 2 Print X Count = Count + 1 End While

VB Code

McManusCOP1006 17

Page 18: Lesson 7 McManus COP1006 1.  Flowchart Symbols  The Loop Logic Structure  Incrementing/ Decrementing  Accumulating  While/WhileEnd  Repeat/Until

int X = 3;int count = 0;While (count < 3)

{ X = X * 2 cout << X << endl; Print statement Count = Count + 1;}

C++ Code

McManusCOP1006 18

Page 19: Lesson 7 McManus COP1006 1.  Flowchart Symbols  The Loop Logic Structure  Incrementing/ Decrementing  Accumulating  While/WhileEnd  Repeat/Until

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

McManusCOP1006 19

Page 20: Lesson 7 McManus COP1006 1.  Flowchart Symbols  The Loop Logic Structure  Incrementing/ Decrementing  Accumulating  While/WhileEnd  Repeat/Until

A Sentinel-Controlled Loop ◦ Pseudocode Template

Initialize Sum to 0 Read the first value into counter variable While counter variable is not sentinel do

Add counter value to SumRead next value into counter value

While-end; {while}

McManusCOP1006 20

Page 21: Lesson 7 McManus COP1006 1.  Flowchart Symbols  The Loop Logic Structure  Incrementing/ Decrementing  Accumulating  While/WhileEnd  Repeat/Until

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.

McManusCOP1006 21

Page 22: Lesson 7 McManus COP1006 1.  Flowchart Symbols  The Loop Logic Structure  Incrementing/ Decrementing  Accumulating  While/WhileEnd  Repeat/Until

Boolean Flag-Controlled Loops◦Pseudocode TemplateInitialize flag to Falsewhile not flag

statements.. Reset flag to True if the event being monitored

occurs while-end; {while}

McManusCOP1006 22

Page 23: Lesson 7 McManus COP1006 1.  Flowchart Symbols  The Loop Logic Structure  Incrementing/ Decrementing  Accumulating  While/WhileEnd  Repeat/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.

McManusCOP1006 23

Counter < 5

Init

Stmt

false

true

Stmt

Page 24: Lesson 7 McManus COP1006 1.  Flowchart Symbols  The Loop Logic Structure  Incrementing/ Decrementing  Accumulating  While/WhileEnd  Repeat/Until

x = 3Count = 3Do Until Count < 1 X = X * 2 Print X Count = Count - 1Loop

McManusCOP1006 24

Page 25: Lesson 7 McManus COP1006 1.  Flowchart Symbols  The Loop Logic Structure  Incrementing/ Decrementing  Accumulating  While/WhileEnd  Repeat/Until

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.

McManusCOP1006 25

Page 26: Lesson 7 McManus COP1006 1.  Flowchart Symbols  The Loop Logic Structure  Incrementing/ Decrementing  Accumulating  While/WhileEnd  Repeat/Until

Pseudocode TemplateRepeat

statementsincrement counterVariable

Until testCondition Notice that the

statements are executed before thecondition to end the loop

McManusCOP1006 26

counter = 1

counter < 5

True

False

statements

ActionoccursbeforeTest

Page 27: Lesson 7 McManus COP1006 1.  Flowchart Symbols  The Loop Logic Structure  Incrementing/ Decrementing  Accumulating  While/WhileEnd  Repeat/Until

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.

McManusCOP1006 27

Page 28: Lesson 7 McManus COP1006 1.  Flowchart Symbols  The Loop Logic Structure  Incrementing/ Decrementing  Accumulating  While/WhileEnd  Repeat/Until

Pseudocode ExampleFor counter = initialvalue To finalvalue Step 1

statements… ‘to incrementNext counter

For counter = finalvalue To initialvalue Step -1statements… ‘to decrement

Next counter

McManusCOP1006 28

Page 29: Lesson 7 McManus COP1006 1.  Flowchart Symbols  The Loop Logic Structure  Incrementing/ Decrementing  Accumulating  While/WhileEnd  Repeat/Until

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

McManusCOP1006 29

counter = 1

Print countercounter =

counter + 1counter

<= 5

True

False

(implicit) (implicit)

(implicit)

For counter = 1 to 5 Step 1

Print counter

Next counter

Page 30: Lesson 7 McManus COP1006 1.  Flowchart Symbols  The Loop Logic Structure  Incrementing/ Decrementing  Accumulating  While/WhileEnd  Repeat/Until

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.

McManusCOP1006 30

x yTrue

False False

True

Page 31: Lesson 7 McManus COP1006 1.  Flowchart Symbols  The Loop Logic Structure  Incrementing/ Decrementing  Accumulating  While/WhileEnd  Repeat/Until

Initialize outer loopWhile 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}

McManusCOP1006 31

Page 32: Lesson 7 McManus COP1006 1.  Flowchart Symbols  The Loop Logic Structure  Incrementing/ Decrementing  Accumulating  While/WhileEnd  Repeat/Until

Dim outercounter As IntegerDim innercounter As Integeroutercounter = 1 While outercounter <= 3

innercounter = 1While innercounter <= 3 innercounter = innercounter + 1Wend ‘innercounteroutercounter = outercounter + 1

Wend ‘outercounterVB Code

McManusCOP1006 32

Page 33: Lesson 7 McManus COP1006 1.  Flowchart Symbols  The Loop Logic Structure  Incrementing/ Decrementing  Accumulating  While/WhileEnd  Repeat/Until

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.

McManusCOP1006 33

Page 34: Lesson 7 McManus COP1006 1.  Flowchart Symbols  The Loop Logic Structure  Incrementing/ Decrementing  Accumulating  While/WhileEnd  Repeat/Until

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)

McManusCOP1006 34

Page 35: Lesson 7 McManus COP1006 1.  Flowchart Symbols  The Loop Logic Structure  Incrementing/ Decrementing  Accumulating  While/WhileEnd  Repeat/Until

Verify the Algorithm◦ Test the value of the algorithm

before the loop during the loop, and after the loop.

McManusCOP1006 35

Page 36: Lesson 7 McManus COP1006 1.  Flowchart Symbols  The Loop Logic Structure  Incrementing/ Decrementing  Accumulating  While/WhileEnd  Repeat/Until

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

McManusCOP1006 36

Page 37: Lesson 7 McManus COP1006 1.  Flowchart Symbols  The Loop Logic Structure  Incrementing/ Decrementing  Accumulating  While/WhileEnd  Repeat/Until

Or twisted tails

McManusCOP1006 37

Page 38: Lesson 7 McManus COP1006 1.  Flowchart Symbols  The Loop Logic Structure  Incrementing/ Decrementing  Accumulating  While/WhileEnd  Repeat/Until

Occurs when a function calls itself from within the body of the function

Also known as “procedural iteration” Classic Examples of Recursion

◦ Factorial◦ Fibonacci

McManusCOP1006 38

Page 39: Lesson 7 McManus COP1006 1.  Flowchart Symbols  The Loop Logic Structure  Incrementing/ Decrementing  Accumulating  While/WhileEnd  Repeat/Until

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 0Postcondition

Returns the product 1 * 2 * 3 * …* x for x > 1Returns 1 when X is 0 or 1.

McManusCOP1006 39

Page 40: Lesson 7 McManus COP1006 1.  Flowchart Symbols  The Loop Logic Structure  Incrementing/ Decrementing  Accumulating  While/WhileEnd  Repeat/Until

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 IfEnd FunctionThe Base Case is also known as the Stopping Case.

McManusCOP1006 40

Page 41: Lesson 7 McManus COP1006 1.  Flowchart Symbols  The Loop Logic Structure  Incrementing/ Decrementing  Accumulating  While/WhileEnd  Repeat/Until

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.

McManusCOP1006 41

Page 42: Lesson 7 McManus COP1006 1.  Flowchart Symbols  The Loop Logic Structure  Incrementing/ Decrementing  Accumulating  While/WhileEnd  Repeat/Until

McManusCOP1006 42

FemaleMale

Page 43: Lesson 7 McManus COP1006 1.  Flowchart Symbols  The Loop Logic Structure  Incrementing/ Decrementing  Accumulating  While/WhileEnd  Repeat/Until

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).

McManusCOP1006 43

Page 44: Lesson 7 McManus COP1006 1.  Flowchart Symbols  The Loop Logic Structure  Incrementing/ Decrementing  Accumulating  While/WhileEnd  Repeat/Until

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

McManusCOP1006 44

Page 45: Lesson 7 McManus COP1006 1.  Flowchart Symbols  The Loop Logic Structure  Incrementing/ Decrementing  Accumulating  While/WhileEnd  Repeat/Until

McManusCOP1006 45

Page 46: Lesson 7 McManus COP1006 1.  Flowchart Symbols  The Loop Logic Structure  Incrementing/ Decrementing  Accumulating  While/WhileEnd  Repeat/Until

Fibonacci NumbersEach 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)

McManusCOP1006 46

A Shortened Form:Fib (1) = 1 Fib (2) = 1Fib (n) = Fib (n - 1) + Fib (n - 2)

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

Page 47: Lesson 7 McManus COP1006 1.  Flowchart Symbols  The Loop Logic Structure  Incrementing/ Decrementing  Accumulating  While/WhileEnd  Repeat/Until

Chapter 8

McManusCOP1006 47

Page 48: Lesson 7 McManus COP1006 1.  Flowchart Symbols  The Loop Logic Structure  Incrementing/ Decrementing  Accumulating  While/WhileEnd  Repeat/Until

Used for menu-driven programs and event-driven programs

Menu ◦ 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

McManusCOP1006 48

Page 49: Lesson 7 McManus COP1006 1.  Flowchart Symbols  The Loop Logic Structure  Incrementing/ Decrementing  Accumulating  While/WhileEnd  Repeat/Until

The SetupList1.AddItem “England” ‘adds items to aList1.AddItem “Germany” ‘Windows list boxList1.AddItem “Spain”List1.AddItem “Italy”

McManusCOP1006 49

VB Code

Page 50: Lesson 7 McManus COP1006 1.  Flowchart Symbols  The Loop Logic Structure  Incrementing/ Decrementing  Accumulating  While/WhileEnd  Repeat/Until

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.

McManusCOP1006 50

VB Code

Page 51: Lesson 7 McManus COP1006 1.  Flowchart Symbols  The Loop Logic Structure  Incrementing/ Decrementing  Accumulating  While/WhileEnd  Repeat/Until

Select Case List1.ListIndexCase 0

Label4.Caption = “Hello, programmer”Case 1

Label4.Caption = “Hallo, programmierer”Case 2

Label4.Caption = “Hola, programador”Case 3

Label4.Caption = “Ciao, programmatori”End Select

McManusCOP1006 51

VB Code

Page 52: Lesson 7 McManus COP1006 1.  Flowchart Symbols  The Loop Logic Structure  Incrementing/ Decrementing  Accumulating  While/WhileEnd  Repeat/Until

Select Case AgeCase 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

McManusCOP1006 52

Page 53: Lesson 7 McManus COP1006 1.  Flowchart Symbols  The Loop Logic Structure  Incrementing/ Decrementing  Accumulating  While/WhileEnd  Repeat/Until

McManusCOP1006 53