+ All Categories
Home > Documents > CS320n –Visual Programming

CS320n –Visual Programming

Date post: 09-Feb-2016
Category:
Upload: howard
View: 48 times
Download: 0 times
Share this document with a friend
Description:
CS320n –Visual Programming. Advanced Recursion (Slides 8-2). Thanks to Wanda Dann, Steve Cooper, and Susan Rodger for slide ideas. What We Will Do Today. Look at using recursion to solve other forms of problems. A second form of recursion. - PowerPoint PPT Presentation
21
CS320n –Visual Programming Advanced Recursion (Slides 8-2) hanks to Wanda Dann, Steve Cooper, and Susan Rodger or slide ideas.
Transcript
Page 1: CS320n –Visual Programming

CS320n –Visual Programming

Advanced Recursion(Slides 8-2)

Thanks to Wanda Dann, Steve Cooper, and Susan Rodger for slide ideas.

Page 2: CS320n –Visual Programming

Visual Programming Advanced Recursion 2

What We Will Do Today• Look at using recursion to solve other

forms of problems

Page 3: CS320n –Visual Programming

Visual Programming Advanced Recursion 3

A second form of recursion• A second form of recursion is used when

the solution to a problem depends on the ability to break a problem down into smaller and smaller sub-problems.

• Example– Files are stored on computers in directories.– Directories can store files and other

directories (sub directories)– How do you find all the files in a directory?

Page 4: CS320n –Visual Programming

Visual Programming Advanced Recursion 4

Directory StructureDirectories

Files How deep can this go?

Page 5: CS320n –Visual Programming

Visual Programming Advanced Recursion 5

Finding all the Files• Break the big problem up into smaller

problems• Find the “immediate” files in this directory• then go to each sub directory and find the

files in it• To solve the big problem (find all the files

in a directory) we solve smaller problems (find all the files in the sub directories)– The smaller problems are solved the same

way as the big problem!

Page 6: CS320n –Visual Programming

Visual Programming Advanced Recursion 6

Another Example• Towers of Hanoi• A classic puzzle

Page 7: CS320n –Visual Programming

Visual Programming Advanced Recursion 7

A Towers Problem

• The challenge is to move all the disks from the source cone to the target cone.

• RULES:– Move 1 disk at a time– A larger disk may never

be on top of a smaller disk

Source Spare Target

(coneFrom) (coneSpare) (coneTo)

Page 8: CS320n –Visual Programming

Visual Programming Advanced Recursion 8

Initial world• The disks are instances of the

Torus class. (A torus is a doughnut shaped object.)

• Each cone is positioned exactly 1 meter from its nearest neighbor.

• Each disk is positioned exactly 0.1 meter above the disk below it.

Page 9: CS320n –Visual Programming

Visual Programming Advanced Recursion 9

Identifying the disks

• To make it easier to describe our solution, we give each disk an id number and a name.

id number name 1 disk1 2 disk2 3

disk3 4 disk4

Page 10: CS320n –Visual Programming

Visual Programming Advanced Recursion 10

Solving the problem• Our solution will use the

– Principle of “wishful thinking” • assume we could solve a smaller version of the

same problem • if we could solve the smaller version, it would

make it easier to solve this problem. – Base case – the simplest possible

version of this problem, one that can obviously be solved.

Page 11: CS320n –Visual Programming

Visual Programming Advanced Recursion 11

Wishful thinking in practice

Assume I could move 3 of the disks to the spare cone.

Then I could move the 4th disk (base case) to the target cone.

Page 12: CS320n –Visual Programming

Visual Programming Advanced Recursion 12

Storyboard• To solve the towers problem, we need to know howmany

disks we have and which cone is the source, the target, and the spare:

World.towers:

Parameters: howmany, source, target, spare

If howmany is equal to 1 move it (the smallest disk) from the source to the target

Else (1) call towers to move howmany-1 disks from source to spare (using target as spare)

(2) move it (disk # howmany) from the source to the target (3) call towers to move howmany-1 disks from the spare to the target (using the source as the spare)

base case – move 1 disk

a smaller problem -- recursively move the rest of the disks

Page 13: CS320n –Visual Programming

Visual Programming Advanced Recursion 13

towers

• The base case occurs when howmany equals 1, just move the disk.

• Two recursive calls are used to solve the smaller problem (moving howmany-1 disks), which helps us solve the bigger problem (moving howmany disks).

Page 14: CS320n –Visual Programming

Visual Programming Advanced Recursion 14

Moving a disk

• A challenge in this animation is how to move a disk from one tower to another.

• In the towers method, we assumed that we had a method named moveIt that would accomplish the task. To write the moveIt method, we need to know:– What are the parameters to send in to our method?– What steps need to occur?

• How high to raise the disk object?• How far (forward/back) to move it?

Page 15: CS320n –Visual Programming

Visual Programming Advanced Recursion 15

moveIt Storyboard• The parameters are:

– whichdisk – the disk id number– fromcone – the source cone– tocone – the target cone

• A storyboard describing the steps is:

moveIt:

Parameters: whichdisk, fromcone, tocone

Do in order Lift the disk up above the top of the fromcone Move it (forward or back) to a location above the tocone Lower the disk down onto the tocone

Page 16: CS320n –Visual Programming

Visual Programming Advanced Recursion 16

Nested Ifs• The disk id number is

used to determine which disk to – move up – move over – move down

• This means that nested Ifs must be used three times!

(The code on this slide is for just one move.)

Page 17: CS320n –Visual Programming

Visual Programming Advanced Recursion 17

Using an expression• We noticed that the distance each disk has

to move up (and then back down) is 0.3 meters more than 0.1 * the id number (whichdisk).

• We could use an expression to compute the distance for the move up and move down instructions.

move the appropriate disk 0.3 + 0.1 *whichdisk

Page 18: CS320n –Visual Programming

Visual Programming Advanced Recursion 18

Problem• The problem with this nifty math

expression is that we need to have the disk's name to write a move instruction.

• For example, disk1 move up …

must be an object, cannot use the id number here

Page 19: CS320n –Visual Programming

Visual Programming Advanced Recursion 19

Using a Function• We decided to write a function to convert the

disk id number (i) to the disk name.

Page 20: CS320n –Visual Programming

Visual Programming Advanced Recursion 20

moveIt

Page 21: CS320n –Visual Programming

Visual Programming Advanced Recursion 21

Demo!


Recommended