visual c++ programming: concepts and projects chapter 10b: recursion (tutorial)
DESCRIPTION
Problem Analysis Programming with Visual C++3TRANSCRIPT
![Page 1: Visual C++ Programming: Concepts and Projects Chapter 10B: Recursion (Tutorial)](https://reader035.vdocuments.net/reader035/viewer/2022062317/5a4d1bbf7f8b9ab0599d2751/html5/thumbnails/1.jpg)
Visual C++ Programming: Concepts and Projects
Chapter 10B: Recursion (Tutorial)
![Page 2: Visual C++ Programming: Concepts and Projects Chapter 10B: Recursion (Tutorial)](https://reader035.vdocuments.net/reader035/viewer/2022062317/5a4d1bbf7f8b9ab0599d2751/html5/thumbnails/2.jpg)
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)](https://reader035.vdocuments.net/reader035/viewer/2022062317/5a4d1bbf7f8b9ab0599d2751/html5/thumbnails/3.jpg)
Problem Analysis
Programming with Visual C++ 3
![Page 4: Visual C++ Programming: Concepts and Projects Chapter 10B: Recursion (Tutorial)](https://reader035.vdocuments.net/reader035/viewer/2022062317/5a4d1bbf7f8b9ab0599d2751/html5/thumbnails/4.jpg)
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)](https://reader035.vdocuments.net/reader035/viewer/2022062317/5a4d1bbf7f8b9ab0599d2751/html5/thumbnails/5.jpg)
Design (continued)
Programming with Visual C++ 5
![Page 6: Visual C++ Programming: Concepts and Projects Chapter 10B: Recursion (Tutorial)](https://reader035.vdocuments.net/reader035/viewer/2022062317/5a4d1bbf7f8b9ab0599d2751/html5/thumbnails/6.jpg)
Design (continued)
Programming with Visual C++ 6
![Page 7: Visual C++ Programming: Concepts and Projects Chapter 10B: Recursion (Tutorial)](https://reader035.vdocuments.net/reader035/viewer/2022062317/5a4d1bbf7f8b9ab0599d2751/html5/thumbnails/7.jpg)
Design (continued)
Programming with Visual C++ 7
![Page 8: Visual C++ Programming: Concepts and Projects Chapter 10B: Recursion (Tutorial)](https://reader035.vdocuments.net/reader035/viewer/2022062317/5a4d1bbf7f8b9ab0599d2751/html5/thumbnails/8.jpg)
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)](https://reader035.vdocuments.net/reader035/viewer/2022062317/5a4d1bbf7f8b9ab0599d2751/html5/thumbnails/9.jpg)
Design (continued)
Programming with Visual C++ 9
• Instance variables
![Page 10: Visual C++ Programming: Concepts and Projects Chapter 10B: Recursion (Tutorial)](https://reader035.vdocuments.net/reader035/viewer/2022062317/5a4d1bbf7f8b9ab0599d2751/html5/thumbnails/10.jpg)
Design (continued)
Programming with Visual C++ 10
• Required Graphics and Drawing objects
![Page 11: Visual C++ Programming: Concepts and Projects Chapter 10B: Recursion (Tutorial)](https://reader035.vdocuments.net/reader035/viewer/2022062317/5a4d1bbf7f8b9ab0599d2751/html5/thumbnails/11.jpg)
Design (continued)
Programming with Visual C++ 11
• Data table for DrawBranch()
![Page 12: Visual C++ Programming: Concepts and Projects Chapter 10B: Recursion (Tutorial)](https://reader035.vdocuments.net/reader035/viewer/2022062317/5a4d1bbf7f8b9ab0599d2751/html5/thumbnails/12.jpg)
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)](https://reader035.vdocuments.net/reader035/viewer/2022062317/5a4d1bbf7f8b9ab0599d2751/html5/thumbnails/13.jpg)
Design (continued)
Programming with Visual C++ 13
• Algorithm for DrawFractal()
![Page 14: Visual C++ Programming: Concepts and Projects Chapter 10B: Recursion (Tutorial)](https://reader035.vdocuments.net/reader035/viewer/2022062317/5a4d1bbf7f8b9ab0599d2751/html5/thumbnails/14.jpg)
Design (continued)
Programming with Visual C++ 14
• Algorithm for method DrawBranch()
![Page 15: Visual C++ Programming: Concepts and Projects Chapter 10B: Recursion (Tutorial)](https://reader035.vdocuments.net/reader035/viewer/2022062317/5a4d1bbf7f8b9ab0599d2751/html5/thumbnails/15.jpg)
Design (continued)
Programming with Visual C++ 15
![Page 16: Visual C++ Programming: Concepts and Projects Chapter 10B: Recursion (Tutorial)](https://reader035.vdocuments.net/reader035/viewer/2022062317/5a4d1bbf7f8b9ab0599d2751/html5/thumbnails/16.jpg)
Design (continued)
Programming with Visual C++ 16
![Page 17: Visual C++ Programming: Concepts and Projects Chapter 10B: Recursion (Tutorial)](https://reader035.vdocuments.net/reader035/viewer/2022062317/5a4d1bbf7f8b9ab0599d2751/html5/thumbnails/17.jpg)
Design (continued)
Programming with Visual C++ 17
![Page 18: Visual C++ Programming: Concepts and Projects Chapter 10B: Recursion (Tutorial)](https://reader035.vdocuments.net/reader035/viewer/2022062317/5a4d1bbf7f8b9ab0599d2751/html5/thumbnails/18.jpg)
Design (continued)
Programming with Visual C++ 18
![Page 19: Visual C++ Programming: Concepts and Projects Chapter 10B: Recursion (Tutorial)](https://reader035.vdocuments.net/reader035/viewer/2022062317/5a4d1bbf7f8b9ab0599d2751/html5/thumbnails/19.jpg)
Design (continued)
Programming with Visual C++ 19
![Page 20: Visual C++ Programming: Concepts and Projects Chapter 10B: Recursion (Tutorial)](https://reader035.vdocuments.net/reader035/viewer/2022062317/5a4d1bbf7f8b9ab0599d2751/html5/thumbnails/20.jpg)
Design (continued)
Programming with Visual C++ 20
![Page 21: Visual C++ Programming: Concepts and Projects Chapter 10B: Recursion (Tutorial)](https://reader035.vdocuments.net/reader035/viewer/2022062317/5a4d1bbf7f8b9ab0599d2751/html5/thumbnails/21.jpg)
Design (continued)
Programming with Visual C++ 21
![Page 22: Visual C++ Programming: Concepts and Projects Chapter 10B: Recursion (Tutorial)](https://reader035.vdocuments.net/reader035/viewer/2022062317/5a4d1bbf7f8b9ab0599d2751/html5/thumbnails/22.jpg)
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)](https://reader035.vdocuments.net/reader035/viewer/2022062317/5a4d1bbf7f8b9ab0599d2751/html5/thumbnails/23.jpg)
Development (continued)
Programming with Visual C++ 23
![Page 24: Visual C++ Programming: Concepts and Projects Chapter 10B: Recursion (Tutorial)](https://reader035.vdocuments.net/reader035/viewer/2022062317/5a4d1bbf7f8b9ab0599d2751/html5/thumbnails/24.jpg)
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)](https://reader035.vdocuments.net/reader035/viewer/2022062317/5a4d1bbf7f8b9ab0599d2751/html5/thumbnails/25.jpg)
Development (continued)
Programming with Visual C++ 25
![Page 26: Visual C++ Programming: Concepts and Projects Chapter 10B: Recursion (Tutorial)](https://reader035.vdocuments.net/reader035/viewer/2022062317/5a4d1bbf7f8b9ab0599d2751/html5/thumbnails/26.jpg)
Development (continued)
Programming with Visual C++ 26
![Page 27: Visual C++ Programming: Concepts and Projects Chapter 10B: Recursion (Tutorial)](https://reader035.vdocuments.net/reader035/viewer/2022062317/5a4d1bbf7f8b9ab0599d2751/html5/thumbnails/27.jpg)
Development (continued)
• Declare instance variables and objects
Programming with Visual C++ 27
![Page 28: Visual C++ Programming: Concepts and Projects Chapter 10B: Recursion (Tutorial)](https://reader035.vdocuments.net/reader035/viewer/2022062317/5a4d1bbf7f8b9ab0599d2751/html5/thumbnails/28.jpg)
Development (continued)
• Initialization in Form1_Load()
Programming with Visual C++ 28
![Page 29: Visual C++ Programming: Concepts and Projects Chapter 10B: Recursion (Tutorial)](https://reader035.vdocuments.net/reader035/viewer/2022062317/5a4d1bbf7f8b9ab0599d2751/html5/thumbnails/29.jpg)
Development (continued)
• Coding the Exit menu
Programming with Visual C++ 29
![Page 30: Visual C++ Programming: Concepts and Projects Chapter 10B: Recursion (Tutorial)](https://reader035.vdocuments.net/reader035/viewer/2022062317/5a4d1bbf7f8b9ab0599d2751/html5/thumbnails/30.jpg)
Development (continued)
• Coding the level menu items
Programming with Visual C++ 30
![Page 31: Visual C++ Programming: Concepts and Projects Chapter 10B: Recursion (Tutorial)](https://reader035.vdocuments.net/reader035/viewer/2022062317/5a4d1bbf7f8b9ab0599d2751/html5/thumbnails/31.jpg)
Development (continued)
Programming with Visual C++ 31
![Page 32: Visual C++ Programming: Concepts and Projects Chapter 10B: Recursion (Tutorial)](https://reader035.vdocuments.net/reader035/viewer/2022062317/5a4d1bbf7f8b9ab0599d2751/html5/thumbnails/32.jpg)
Development (continued)
• Coding DrawFractal()
Programming with Visual C++ 32
![Page 33: Visual C++ Programming: Concepts and Projects Chapter 10B: Recursion (Tutorial)](https://reader035.vdocuments.net/reader035/viewer/2022062317/5a4d1bbf7f8b9ab0599d2751/html5/thumbnails/33.jpg)
Development (continued)
• Calling DrawBranch()
Programming with Visual C++ 33
![Page 34: Visual C++ Programming: Concepts and Projects Chapter 10B: Recursion (Tutorial)](https://reader035.vdocuments.net/reader035/viewer/2022062317/5a4d1bbf7f8b9ab0599d2751/html5/thumbnails/34.jpg)
Development (continued)
Programming with Visual C++ 34
![Page 35: Visual C++ Programming: Concepts and Projects Chapter 10B: Recursion (Tutorial)](https://reader035.vdocuments.net/reader035/viewer/2022062317/5a4d1bbf7f8b9ab0599d2751/html5/thumbnails/35.jpg)
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)](https://reader035.vdocuments.net/reader035/viewer/2022062317/5a4d1bbf7f8b9ab0599d2751/html5/thumbnails/36.jpg)
Testing (continued)
Programming with Visual C++ 36
![Page 37: Visual C++ Programming: Concepts and Projects Chapter 10B: Recursion (Tutorial)](https://reader035.vdocuments.net/reader035/viewer/2022062317/5a4d1bbf7f8b9ab0599d2751/html5/thumbnails/37.jpg)
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)](https://reader035.vdocuments.net/reader035/viewer/2022062317/5a4d1bbf7f8b9ab0599d2751/html5/thumbnails/38.jpg)
Analysis (continued)
Programming with Visual C++ 38
![Page 39: Visual C++ Programming: Concepts and Projects Chapter 10B: Recursion (Tutorial)](https://reader035.vdocuments.net/reader035/viewer/2022062317/5a4d1bbf7f8b9ab0599d2751/html5/thumbnails/39.jpg)
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)](https://reader035.vdocuments.net/reader035/viewer/2022062317/5a4d1bbf7f8b9ab0599d2751/html5/thumbnails/40.jpg)
On Your Own (continued)
Programming with Visual C++ 40
![Page 41: Visual C++ Programming: Concepts and Projects Chapter 10B: Recursion (Tutorial)](https://reader035.vdocuments.net/reader035/viewer/2022062317/5a4d1bbf7f8b9ab0599d2751/html5/thumbnails/41.jpg)
On Your Own (continued)
Programming with Visual C++ 41