22
Copyright © 2005-2011 Curt Hill Problem solving and program development A Problem Solving Strategy

Copyright © 2005-2011 Curt Hill Problem solving and program development A Problem Solving Strategy

Embed Size (px)

Citation preview

Page 1: Copyright © 2005-2011 Curt Hill Problem solving and program development A Problem Solving Strategy

Copyright © 2005-2011 Curt Hill

Problem solving and program development

A Problem Solving Strategy

Page 2: Copyright © 2005-2011 Curt Hill Problem solving and program development A Problem Solving Strategy

Copyright © 2005-2011 Curt Hill

Why do we need this?

• The DJ story• So how do we go about solving

problems or designing programs?• How do we define a problem?

– A program should solve the problem

• First we define the problem

Page 3: Copyright © 2005-2011 Curt Hill Problem solving and program development A Problem Solving Strategy

Copyright © 2005-2011 Curt Hill

Problem definition

• What needs to be done?• What do we have to start with?

– Data and tools

• Is it feasible?– Can a program actually solve this

kind of problem– Consider the registration problem

• Do we have an algorithm that can solve it?

Page 4: Copyright © 2005-2011 Curt Hill Problem solving and program development A Problem Solving Strategy

Copyright © 2005-2011 Curt Hill

What is an algorithm?

• Algorithm: A prescribed set of well defined rules and processes for solving a problem in a finite number of steps

• Prescribed: known in advance• Well defined: unambiguous, clear• Finite: always ends• Not every program implements an

algorithm, but most do

Page 5: Copyright © 2005-2011 Curt Hill Problem solving and program development A Problem Solving Strategy

Copyright © 2005-2011 Curt Hill

Find phone number• 1. Start with whole telephone book• 2. Find middle page of the

candidate pages• Is name on page?• Yes search sequentially• Done

• 3. Is name less than on page• Eliminate last half of book• Go to (2)• Is name larger• Eliminate first half• Go to (2)

Page 6: Copyright © 2005-2011 Curt Hill Problem solving and program development A Problem Solving Strategy

Copyright © 2005-2011 Curt Hill

Example Revisited

• Does this conform to the definition?– Prescribed, well defined, finite?

• What are the assumptions?– Sorted order of names– Bounded size– Does this example conform to the

definition?

• Is this the best algorithm?– No

Page 7: Copyright © 2005-2011 Curt Hill Problem solving and program development A Problem Solving Strategy

Copyright © 2005-2011 Curt Hill

Stepwise refinement

• General engineering technique to solve problems– Frequently used in a variety of

disciplines not just Computer Science

• Also known as Divide and Conquer• Here is an example from another

discipline

Page 8: Copyright © 2005-2011 Curt Hill Problem solving and program development A Problem Solving Strategy

Copyright © 2005-2011 Curt Hill

Architecture Example• A large project will never be done by

one person• A lead architect will cast the vision• This person will subdivide the project

into pieces– Foundation– Exterior– HVAC– Floor layout

• Each is more manageable than whole

Page 9: Copyright © 2005-2011 Curt Hill Problem solving and program development A Problem Solving Strategy

Copyright © 2005-2011 Curt Hill

Course Design

• A teacher may not design a course or write a text book in one session

• Instead they ponder what the outcomes of the student should be

• Then they divide the course/book into sections that accomplish this

• Finally they design the sections/chapters/lessons

Page 10: Copyright © 2005-2011 Curt Hill Problem solving and program development A Problem Solving Strategy

Copyright © 2005-2011 Curt Hill

Program Design

• Four steps with four keywords:– Understand– Code– Test– Refine

• The four keywords need a little more substance

• What is supposed to happen during each step?

Page 11: Copyright © 2005-2011 Curt Hill Problem solving and program development A Problem Solving Strategy

Copyright © 2005-2011 Curt Hill

Understand

• Most important step• No way to solve the problem that is

not understood• If we do not understand the problem

we solve the problem we think exists not the one that really exists

• In programming we must understand the three pieces: input, processing, output

Page 12: Copyright © 2005-2011 Curt Hill Problem solving and program development A Problem Solving Strategy

Copyright © 2005-2011 Curt Hill

Understanding the pieces• Input

– Either from console or edit boxes– May also be from a file

• Output– Display to user– Store in file

• Do processing by hand– If you cannot do it manually you

cannot write the program– PI example

Page 13: Copyright © 2005-2011 Curt Hill Problem solving and program development A Problem Solving Strategy

Copyright © 2005-2011 Curt Hill

Code

• Series of 3 to 12 steps• Steps start as English (or natural

language) statements• Refined into programming

language• Create variables as you need them• Defer types as long as possible• When you do things out of order,

that’s when mistakes are made

Page 14: Copyright © 2005-2011 Curt Hill Problem solving and program development A Problem Solving Strategy

Copyright © 2005-2011 Curt Hill

Why?

• Why 3-12 steps?• Fewer does not really sub-divide

the problem• More is more than we can juggle

without dropping something• Complexity is what causes us to

make errors• The magic number is 7 ± 2

Page 15: Copyright © 2005-2011 Curt Hill Problem solving and program development A Problem Solving Strategy

Copyright © 2005-2011 Curt Hill

Test

• Walk through by hand (tracing exercise)

• Hand testing will give you understanding about refinement

• Also show errors• The earlier an error is discovered

the easier to fix

Page 16: Copyright © 2005-2011 Curt Hill Problem solving and program development A Problem Solving Strategy

Copyright © 2005-2011 Curt Hill

Refine

• If the coding of a statement is obvious – True: code it– False: This is a new problem

• Start at the understand step• This step is the new problem

• As you refine language shifts from English to the programming language desired

Page 17: Copyright © 2005-2011 Curt Hill Problem solving and program development A Problem Solving Strategy

Copyright © 2005-2011 Curt Hill

The Wisdom of Maggie• This story occurred when Maggie was 5• She asked her uncle why he did not bring a

swim suit to the motel• He said he did not know the motel had a pool• She said: You saw it when you came into the

motel. Why didn’t you pack your suit?• This kind of sequence error is very common in

5 year olds, but sometimes we adults to exactly the same thing

• This is part of the ordering our solutions

Page 18: Copyright © 2005-2011 Curt Hill Problem solving and program development A Problem Solving Strategy

Direction• The trip through English must

include a goal of eventual conversion to programming language

• As we refine we are aware of the fundamentals of the target language:– Methods/functions– Decision statements– Loop statements

Copyright © 2005-2011 Curt Hill

Page 19: Copyright © 2005-2011 Curt Hill Problem solving and program development A Problem Solving Strategy

Copyright © 2005-2011 Curt Hill

Coding of a program

• Prepare for failure• Make each run count• Enter debug couts or memo displays

with identified variables• Enter IFs that test your assumptions• Precautionary procedure:

– #define debug true (C/C++)– boolean debug = true;– if (debug) display variables

Page 20: Copyright © 2005-2011 Curt Hill Problem solving and program development A Problem Solving Strategy

Other Hints

• Many steps that started out as an English statement end up being a method/function

• Keep methods short– Magic number is 7 ± 2

• A method should do one thing• Generally should fit on one screen• Many small methods are better

than one long oneCopyright © 2005-2011 Curt Hill

Page 21: Copyright © 2005-2011 Curt Hill Problem solving and program development A Problem Solving Strategy

Copyright © 2005-2011 Curt Hill

Documentation

• Comment at front of program:– Name of author– Purpose of program– How purpose is accomplished– Input data– Output data

• A revision history is also a good idea

Page 22: Copyright © 2005-2011 Curt Hill Problem solving and program development A Problem Solving Strategy

Copyright © 2005-2011 Curt Hill

More documentation

• In declarations– What an identifier does

• Name should give clue

– Comment should be more detailed

• In code– The basic skeleton from stepwise

refinement– Explanation of anything not obvious

• Method/function purpose