lecture 2: developing procedural thinking (how to think like a programmer)

22
Lecture 2: Developing Procedural Thinking (How to think like a programmer) BJ Furman 06FEB2012

Upload: ilyssa

Post on 09-Feb-2016

23 views

Category:

Documents


0 download

DESCRIPTION

Lecture 2: Developing Procedural Thinking (How to think like a programmer). BJ Furman 06FEB2012. The Plan for Today. Program design process Algorithms, decomposition, and step-wise refinement Example Program design example. Learning Objectives. - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Lecture 2: Developing Procedural Thinking (How to think like a programmer)

Lecture 2: Developing Procedural Thinking(How to think like a programmer)

BJ Furman06FEB2012

Page 2: Lecture 2: Developing Procedural Thinking (How to think like a programmer)

The Plan for Today Program design process Algorithms, decomposition, and step-wise

refinement Example

Program design example

Page 3: Lecture 2: Developing Procedural Thinking (How to think like a programmer)

Learning Objectives List and describe the steps in designing a

computational solution (computer program) to a problem

Articulate what is meant by an algorithm Apply the steps to a particular problem

Page 4: Lecture 2: Developing Procedural Thinking (How to think like a programmer)

Program Design ProcessDefine the problem

List the inputs and outputs

Design the solution algorithm

Check the algorithm by hand

Write the program code

Test the program code

Page 5: Lecture 2: Developing Procedural Thinking (How to think like a programmer)

Program Design Process – step 1Define the problem

List the inputs and outputs

Design the solution algorithm

Check the algorithm by hand

Write the program code

Test the program code

State the problem in aclear and concise manner

ExampleWrite a program to find the

distance between two points

P1 P2or

P1 P2 P1

P2or

Better

Write a program to find the straight line distance between two points

Is the problem statement okay?

Page 6: Lecture 2: Developing Procedural Thinking (How to think like a programmer)

Program Design Process – step 2Define the problem

List the inputs and outputs

Design the solution algorithm

Check the algorithm by hand

Write the program code

Test the program code

Write a program to find the straight line distance between two points

Inputs• •

Outputs• •

Page 7: Lecture 2: Developing Procedural Thinking (How to think like a programmer)

Program Design Process – step 3Define the problem

List the inputs and outputs

Design the solution algorithm

Check the algorithm by hand

Write the program code

Test the program code

Decompose Refine

Write a program to find the straight line distance between two points

Page 8: Lecture 2: Developing Procedural Thinking (How to think like a programmer)

Definition of an Algorithm An algorithm is a well-ordered collection of

unambiguous and effectively computable operations, that when executed, produces a result and halts in a finite amount of time. Well-ordered means the steps are in a clear order Unambiguous means the operations described are understood

by a computing agent without further simplification A computing agent is the thing that is supposed to carry out the

algorithm Effectively computable means the computing agent can actually

carry out the operation

This definition comes from, An Invitation to Computer Science (Gersting/Schneider) viahttp://www.cs.xu.edu/csci170/08f/sect01/Overheads/WhatIsAnAlgorithm.html (visited 19JUN2009)

Page 9: Lecture 2: Developing Procedural Thinking (How to think like a programmer)

Program Design Process – step 3,cont.

Define the problem

List the inputs and outputs

Design the solution algorithm

Check the algorithm by hand

Write the program code

Test the program code

Two approaches are often used to help think through the steps to be carried out by the program code:

1. Pseudocode

2. Flow Charts

We’ll use the pseudocode method first.

Page 10: Lecture 2: Developing Procedural Thinking (How to think like a programmer)

Pseudocode Pseudocode (also called Program Design Language,

PDL) is English-like statements that precisely describe specific operations1: Action statements Focuses on the logic of the program Avoids language-specific elements Written at a level so that code can be

generated almost automatically. Will likely need to refine in more and more detail

1This definition comes from, McConnel, S. (1993). Code Complete, Microsoft Press, Redmond, WA, p. 54.

Page 11: Lecture 2: Developing Procedural Thinking (How to think like a programmer)

Pseudocode – First Pass

1. Prompt user to enter points2. Get points from user3. Calculate the straight line distance4. Display distance to the monitor

Write a program to find the straight line distance between two points

Comments1.High level – just the major steps2.Focus on the logic

Page 12: Lecture 2: Developing Procedural Thinking (How to think like a programmer)

Pseudocode - Refinement

1. Start2. Declare variables: X1, Y1, X2, Y2, D3. Prompt user to enter X1 and Y14. Display X1 and Y1 to the monitor5. Prompt user to enter X2 and Y26. Display X2 and Y2 to the monitor7. Calculate the straight line distance, D8. Display D to the monitor9. Stop

Write a program to find the straight line distance between two points

Comments1.Refine high level ideas down to computable actionsWhat could still be refined?

Page 13: Lecture 2: Developing Procedural Thinking (How to think like a programmer)

Calculating the Distance, DDefine the problem

List the inputs and outputs

Design the solution algorithm

Check the algorithm by hand

Write the program code

Test the program code

Write a program to find the straight line distance between two points

P1

P2

X1 X2

Y1

Y2 D

How do you find D?

P1

P2D

X

Y22 YXD

1212

YYYXXX

22 1212 YYXXD

Page 14: Lecture 2: Developing Procedural Thinking (How to think like a programmer)

Program Design Process – step 4Define the problem

List the inputs and outputs

Design the solution algorithm

Check the algorithm by hand

Write the program code

Test the program code

Write a program to find the straight line distance between two points

What values of Xi, Yi (where i=1, 2) would be good to test the algorithm with?

Page 15: Lecture 2: Developing Procedural Thinking (How to think like a programmer)

Program Design Process – step 5Define the problem

List the inputs and outputs

Design the solution algorithm

Check the algorithm by hand

Write the program code

Test the program code

If you have refined your algorithm sufficiently, writing the code should proceed straightforwardly from it.

If not, continue refining the algorithm until you can write the code directly from it.

Your pseudocode can be turned into the comments for your code.

Page 16: Lecture 2: Developing Procedural Thinking (How to think like a programmer)

Program Code Note the structure of the program

Page 17: Lecture 2: Developing Procedural Thinking (How to think like a programmer)

Program Design Process – step 6Define the problem

List the inputs and outputs

Design the solution algorithm

Check the algorithm by hand

Write the program code

Test the program code

Test your code with cases that you know the answer to.

Try the ‘boundary’ cases to make sure your code works for them too.

Page 18: Lecture 2: Developing Procedural Thinking (How to think like a programmer)

Algorithm Practice Find the midpoint between two points

Page 19: Lecture 2: Developing Procedural Thinking (How to think like a programmer)

Algorithm – Items to Consider Is the problem statement clear and concise?

Could be better: “Find the midpoint on a line between two points

What are the inputs? X and Y coordinates of the two points:

x1, y1 and x2, y2 What are the outputs?

The midpoint between the points: Xm, Ym

Page 20: Lecture 2: Developing Procedural Thinking (How to think like a programmer)

Algorithm – Items to Consider, cont.

Solution algorithm Point must be on the line Midpoint means ‘halfway’

between the points Halfway in x and halfway in y

This should suggest a solution strategy

P1

P2

X1 X2

Y1

Y2

M

Page 21: Lecture 2: Developing Procedural Thinking (How to think like a programmer)

Review

Page 22: Lecture 2: Developing Procedural Thinking (How to think like a programmer)

References