Visual C++ Programming: Concepts and Projects Chapter 10B: Recursion (Tutorial)

41
Visual C++ Programming: Concepts and Projects Chapter 10B: Recursion (Tutorial)

description

Problem Analysis Programming with Visual C++3

Transcript of Visual C++ Programming: Concepts and Projects Chapter 10B: Recursion (Tutorial)

Page 1: Visual C++ Programming: Concepts and Projects Chapter 10B: Recursion (Tutorial)

Visual C++ Programming: Concepts and Projects

Chapter 10B: Recursion (Tutorial)

Page 2: Visual C++ Programming: Concepts and Projects Chapter 10B: Recursion (Tutorial)

Tutorial: Generating a Fractal Image

• Problem Analysis– This project uses the recursive DrawBranch()

method– The result will be an interface upon which one

branch, with its recursive subbranches, is drawn– On Your Own tasks will allow more options– The program can easily be developed to have four

central branches

Programming with Visual C++ 2

Page 3: Visual C++ Programming: Concepts and Projects Chapter 10B: Recursion (Tutorial)

Problem Analysis

Programming with Visual C++ 3

Page 4: Visual C++ Programming: Concepts and Projects Chapter 10B: Recursion (Tutorial)

Design

• Interface– Menus are created using the MenuStrip control– Menu items are named after the text they contain– If the text is numeric, the menu item names

default to numbered order– Menus control stopping the program and setting

the maximum levels of recursion

Programming with Visual C++ 4

Page 5: Visual C++ Programming: Concepts and Projects Chapter 10B: Recursion (Tutorial)

Design (continued)

Programming with Visual C++ 5

Page 6: Visual C++ Programming: Concepts and Projects Chapter 10B: Recursion (Tutorial)

Design (continued)

Programming with Visual C++ 6

Page 7: Visual C++ Programming: Concepts and Projects Chapter 10B: Recursion (Tutorial)

Design (continued)

Programming with Visual C++ 7

Page 8: Visual C++ Programming: Concepts and Projects Chapter 10B: Recursion (Tutorial)

Design (continued)

Programming with Visual C++ 8

• Each menuItem requires a Click() event

Page 9: Visual C++ Programming: Concepts and Projects Chapter 10B: Recursion (Tutorial)

Design (continued)

Programming with Visual C++ 9

• Instance variables

Page 10: Visual C++ Programming: Concepts and Projects Chapter 10B: Recursion (Tutorial)

Design (continued)

Programming with Visual C++ 10

• Required Graphics and Drawing objects

Page 11: Visual C++ Programming: Concepts and Projects Chapter 10B: Recursion (Tutorial)

Design (continued)

Programming with Visual C++ 11

• Data table for DrawBranch()

Page 12: Visual C++ Programming: Concepts and Projects Chapter 10B: Recursion (Tutorial)

Design (continued)

Programming with Visual C++ 12

• Algorithms– For menu items that set maxLevels

Page 13: Visual C++ Programming: Concepts and Projects Chapter 10B: Recursion (Tutorial)

Design (continued)

Programming with Visual C++ 13

• Algorithm for DrawFractal()

Page 14: Visual C++ Programming: Concepts and Projects Chapter 10B: Recursion (Tutorial)

Design (continued)

Programming with Visual C++ 14

• Algorithm for method DrawBranch()

Page 15: Visual C++ Programming: Concepts and Projects Chapter 10B: Recursion (Tutorial)

Design (continued)

Programming with Visual C++ 15

Page 16: Visual C++ Programming: Concepts and Projects Chapter 10B: Recursion (Tutorial)

Design (continued)

Programming with Visual C++ 16

Page 17: Visual C++ Programming: Concepts and Projects Chapter 10B: Recursion (Tutorial)

Design (continued)

Programming with Visual C++ 17

Page 18: Visual C++ Programming: Concepts and Projects Chapter 10B: Recursion (Tutorial)

Design (continued)

Programming with Visual C++ 18

Page 19: Visual C++ Programming: Concepts and Projects Chapter 10B: Recursion (Tutorial)

Design (continued)

Programming with Visual C++ 19

Page 20: Visual C++ Programming: Concepts and Projects Chapter 10B: Recursion (Tutorial)

Design (continued)

Programming with Visual C++ 20

Page 21: Visual C++ Programming: Concepts and Projects Chapter 10B: Recursion (Tutorial)

Design (continued)

Programming with Visual C++ 21

Page 22: Visual C++ Programming: Concepts and Projects Chapter 10B: Recursion (Tutorial)

Development

• Create the interface– Menus• The menuStrip control is used to add menuStrip

features to the program• The “Type here” labels indicate where menu headings

and items can be created

Programming with Visual C++ 22

Page 23: Visual C++ Programming: Concepts and Projects Chapter 10B: Recursion (Tutorial)

Development (continued)

Programming with Visual C++ 23

Page 24: Visual C++ Programming: Concepts and Projects Chapter 10B: Recursion (Tutorial)

Development (continued)

• Menus– Menu headings are placed at the top level of each

menu– Menu items are listed below

Programming with Visual C++ 24

Page 25: Visual C++ Programming: Concepts and Projects Chapter 10B: Recursion (Tutorial)

Development (continued)

Programming with Visual C++ 25

Page 26: Visual C++ Programming: Concepts and Projects Chapter 10B: Recursion (Tutorial)

Development (continued)

Programming with Visual C++ 26

Page 27: Visual C++ Programming: Concepts and Projects Chapter 10B: Recursion (Tutorial)

Development (continued)

• Declare instance variables and objects

Programming with Visual C++ 27

Page 28: Visual C++ Programming: Concepts and Projects Chapter 10B: Recursion (Tutorial)

Development (continued)

• Initialization in Form1_Load()

Programming with Visual C++ 28

Page 29: Visual C++ Programming: Concepts and Projects Chapter 10B: Recursion (Tutorial)

Development (continued)

• Coding the Exit menu

Programming with Visual C++ 29

Page 30: Visual C++ Programming: Concepts and Projects Chapter 10B: Recursion (Tutorial)

Development (continued)

• Coding the level menu items

Programming with Visual C++ 30

Page 31: Visual C++ Programming: Concepts and Projects Chapter 10B: Recursion (Tutorial)

Development (continued)

Programming with Visual C++ 31

Page 32: Visual C++ Programming: Concepts and Projects Chapter 10B: Recursion (Tutorial)

Development (continued)

• Coding DrawFractal()

Programming with Visual C++ 32

Page 33: Visual C++ Programming: Concepts and Projects Chapter 10B: Recursion (Tutorial)

Development (continued)

• Calling DrawBranch()

Programming with Visual C++ 33

Page 34: Visual C++ Programming: Concepts and Projects Chapter 10B: Recursion (Tutorial)

Development (continued)

Programming with Visual C++ 34

Page 35: Visual C++ Programming: Concepts and Projects Chapter 10B: Recursion (Tutorial)

Testing

• Demonstrate that each level works correctly• Demonstrate that the Exit menu works

Programming with Visual C++ 35

Page 36: Visual C++ Programming: Concepts and Projects Chapter 10B: Recursion (Tutorial)

Testing (continued)

Programming with Visual C++ 36

Page 37: Visual C++ Programming: Concepts and Projects Chapter 10B: Recursion (Tutorial)

Analysis

• The number of recursive calls is factorial• The number of executions of DrawBranch() is O(3n)– n is maxLevels-1

• This program would demand considerable resources to complete a drawing involving a high number of levels

Programming with Visual C++ 37

Page 38: Visual C++ Programming: Concepts and Projects Chapter 10B: Recursion (Tutorial)

Analysis (continued)

Programming with Visual C++ 38

Page 39: Visual C++ Programming: Concepts and Projects Chapter 10B: Recursion (Tutorial)

On Your Own

• More central branches– Add three more central branches

• Add an angle menu– Varying the angle produces different fractal

images

Programming with Visual C++ 39

Page 40: Visual C++ Programming: Concepts and Projects Chapter 10B: Recursion (Tutorial)

On Your Own (continued)

Programming with Visual C++ 40

Page 41: Visual C++ Programming: Concepts and Projects Chapter 10B: Recursion (Tutorial)

On Your Own (continued)

Programming with Visual C++ 41