Chapter06 - Chapter 6 Problem Solving and Chapter Algorithm...

Info iconThis preview shows page 1. Sign up to view the full content.

View Full Document Right Arrow Icon
This is the end of the preview. Sign up to access the rest of the document.

Unformatted text preview: Chapter 6: Problem Solving and Chapter Algorithm Design In general, how are problems solved on a In computer? computer? Chapter 6 Problem Problem Solving and Algorithm Design Design Page 1 Page Algorithms Algorithms An algorithm is an ordered set of unambiguous, executable An algorithm steps that ultimately terminate if followed. steps Ambiguou s: Not Not executable: executable: No No termination: termination: • Lather • Rinse • Repeat Chapter 6 Problem Problem Solving and Algorithm Design Design Page 2 Page Computer Algorithms Computer In computer programming, an algorithm is the sequence of In steps (i.e., the “recipe”) for accomplishing a task. steps Every step in an algorithm has two basic components: 1. Semantics: The meaning of the step 2. Syntax: The format of the step Chapter 6 Problem Problem Solving and Algorithm Design Design Page 3 Page Pseudocode Pseudocode Pseudocode is an informal notation for expressing an Pseudocode Procedure Sat1231A algorithm. algorithm. Set year to 2001 year Example: Which Which Set month to January month years in 2001-2020 Set day to first Saturday in January 2001 day have New Year’s While (year < 2021) Do While { Eve on Saturday? Eve Increment day by 7 Increment If date is New Year’s Eve If Then display year as having a Saturday New Year’s Eve year If day > (number of days in month) day month Then Then { Adjust day by subtracting the number of days in day month month If month is December month Then Then { Increment year by 1 year Set month to January month } Else Else Increment month by one month } Chapter 6 Problem Problem Solving and Algorithm Design Design Page 4 Page Algorithm Alternatives Algorithm It’s possible to devise many algorithms to solve the same It’s problem. problem. Procedure Sat1231B Set day_of_week to 12/31/2000 day_of_week Alternative Alternative Set year to 2001 year pseudocode to While (year < 2021) Do While determine which { If year is a leap year year years in 2001-2020 Then increment day_of_week by 2 have New Year’s Eve day_of_week Else increment day_of_week by 1 day_of_week on Saturday. on If day_of_week is Saturday day_of_week Then display year as having a Saturday New year Year’s Eve Year’s Increment year by 1 year } Both algorithms work, but which is better? better Which is easier to code? Which runs more efficiently? Chapter 6 Problem Problem Solving and Algorithm Design Design Page 5 Page Program Modularity Program The software development process The usually involves a team of developers, so the software is often designed as a hierarchical system of modules, which can be viewed as easily modified interdependent entities. interdependent Chapter 6 Problem Problem Solving and Algorithm Design Design Page 6 Page Advantages of Modular Programming Programming Chapter 6 Problem Problem Solving and Algorithm Design Design Page 7 Page Computer Graphics Modularity Example Example Initially, set the program up to Initially, calculate the scene with simple lighting. lighting. main Replace the simple lighting with Replace more sophisticated reflective surfaces. surfaces. main Add a module to smooth out the Add silhouettes of objects. silhouettes main generate polygons draw polygons generate polygons draw polygons generate polygons generate torus shade polygon generate torus blend polygons generate torus generate cube generate teapot draw pixels generate cube generate teapot generate sphere generate sphere generate cone generate cone compute reflect draw pixels generate cube generate teapot generate sphere generate cone compute curved surfaces draw polygons blend polygons compute reflect draw pixels Chapter 6 Problem Problem Solving and Algorithm Design Design Page 8 Page Top-Down Design Top-Down One common approach for designing programs is the topOne topdown methodology. 1. Design a highlevel solution to level the programming problem. problem. This approach This lends itself to modularity. modularity. 2. Consider each Consider complicated subproblem as a separate programming problem. problem. 3. Return to step Return #1 with each subproblem. subproblem. However, it may impose an artificial However, hierarchy on the tasks being performed. performed. Chapter 6 Problem Problem Solving and Algorithm Design Design Page 9 Page Bottom-Up Design Bottom-Up A newer approach for designing programs is the bottom-up newer bottom-up methodology. methodology. 1. Separate each major task Separate in the overall problem into an individual programming problem. problem. 2. Develop cooperative Develop programming solutions to the separate problems. problems. This approach This produces reusable However, those modules may prove However, modules. modules. difficult to cobble together to solve bigger problems. bigger Chapter 6 Problem Problem Solving and Algorithm Design Design Page 10 Page 10 ...
View Full Document

Ask a homework question - tutors are online