240 likes | 594 Views
Algorithms IV: Top-Down Design . Topics more pseudocode problem solving strategies Home-Exercise: The Box Home-Exercise: Drawing a Rectangle Reading None. Pseudocode and Then Some. We can write an algorithm for finding the average of two integers:
E N D
Algorithms IV: Top-Down Design • Topics • more pseudocode • problem solving strategies • Home-Exercise: The Box • Home-Exercise: Drawing a Rectangle • Reading • None
Pseudocode and Then Some • We can write an algorithm for finding the average of two integers: 1. Get an integer, <num1>, from the user 2. Get an integer, <num2>, from the user 3. <Sum> = <num1> + <num2> 4. <average> = <sum> / 2 5. Display “The average of “ <num1> “ and ” <num2> “ is ” <average> • Steps 1, 2 & 5 will make use of code found in the run-time library.
Investigating Steps 1 & 5 Get an integer, <num1>, from the user Display “The average = “ <average>. • Are these really single steps? • Each of them is really a sequence of steps, a subprogram. Two kinds of subprograms: • Functions - an answer is returned to the main program. • Procedures - no answer returned to the main program
Functions and Procedures • In our example, the function that gets a value from the user and the procedure that prints out the answer were already written. • Many times it is necessary for us to write our own procedures or functions.
Problem Solving Strategies • If we look at the problem as a whole; it may seem impossible, because it is so complex. • Complex problems can be solved using a Top-Down approach aka Stepwise refinement • Break the problem into parts • Then break the parts into parts • Soon each of the parts will be easy to do
Advantages of Top-down Design • Breaking the problem down into parts helps us to clarify what needs to be done. • At each step of refinement, the new parts become less complicated and therefore easier to figure out. • What if you’ve broken a problem down as much as you can and you still don’t know? • Missing information • More detail is needed
A Practical Example • Scenario: • We own a home improvement company • We do painting, roofing and basement waterproofing • A section of town has recently had flooding • We want to send out waterproofing pamphlets to our customers in that area
Our Algorithm • Get the customer list from a file • Sort the list according to zipcode • Make a new file of only the customers with the zipcode 21222 from the sorted customer list • Print an envelope for each customer in the new file
Single steps ? • None of our steps are single steps • Employ Top-Down Design • Start with the large idea and break into large parts • Each part will end up being a function or a procedure
Pseudocode for our Main Program • Call <Get Customer List> • Call <Sort on customer list> by zipcode • Call <Make Target List> from customer list using only zipcode 21222 • Call <Print Envelopes> using target list
The Next Step • Write algorithms for each of the functions or procedures. • These may include steps that are really several steps, too. • Give names to these new functions and procedures. • Write algorithms for them. • Continue this process until done.
Structured Programs • Top-down design will be used for all of our programming projects • This is the standard way of writing programs. • Programs produced using this method and using only the 3 kinds of structures, sequential, selection and repetition are called structured programs. • Structured programs are easier to modify later and also easier for other programmers to understand.
Another Example • Problem: Write a program that draws this picture of a house.
The Algorithm • Draw the outline of the house • Draw the chimney • Draw the door and doorknob • Draw the windows
Similarities • All three windows are identical. • They are simply in different positions. • We can write a function called <DrawWindow> that will draw one window at a position we specify and call it 3 times with the three different positions. • Another benefit of Top-down design is reuseability. We are reusing the code for <DrawWindow>.
The Pseudocode • Call <DrawHouseOutline> giving a position • Call <DrawChimney> giving position • Call <DrawDoor> giving position • Call <DrawWindow> giving position #1 • Call <DrawWindow> giving position #2 • Call <DrawWindow> giving position #3
Problem Solving Techniques • We have investigated three problem solving techniques: • Multiple attacks • Working backwards • Top-down design
Writing Algorithms from Scratch • Do the following 2 projects as exercises at home: • Given a problem statement, write the corresponding generic algorithm for the solution. • Use the following procedure: • Determine the algorithm inputs and outputs • Pseudocode a rough algorithm • Complete the pseuodocode
The Box Problem: Write an interactive program to compute and display the volume and surface area of a box. The program must also display the box dimensions. Error checking should be done to be sure that all box dimensions are greater than zero.
Drawing a Rectangle Problem: Write an interactive program that will draw a solid rectangle of asterisks (*). The program must also display the dimensions of the rectangle. Error checking must be done to be sure that the dimensions are greater than zero.