# Week3 by huangyuarong

VIEWS: 2 PAGES: 28

• pg 1
```									CS1010: Programming Methodology
http://www.comp.nus.edu.sg/~cs1010/
Week 3: Top Down Design
Objectives:
 Able to analyse, design, and implement a program
 Able to structure a program into various functions
 Understand working with functions

References:
 Chapter 5, Functions (Lessons 5.1 – 5.3)
 Chapter 3, Lesson 3.7: Math Library Functions

CS1010 (AY2010/2011 Semester 1)                              Week3 - 2
Week 3: Outline (1/2)
1. General
 Problem solving process (chart from Week 1)
 Ingredients in getting a program done: step-wise refinement +
structure chart
2. Demo: Week 2 Exercise #3 (Week2_Freezer.c)
 Problem solving
3. Demo: Top-down Design
 Computing the weight of a batch of flat washers
 Incremental Refinement (some hierarchical chart)
 Top-down design (of program) with structure charts
4. Exercise #1: Design a “simple drawing” program
5. Exercise #2: Implement the “simple drawing” program

CS1010 (AY2010/2011 Semester 1)                                              Week3 - 3
Week 3: Outline (2/2)
6. Program as a collection of Functions to transform inputs to
outputs
    Syntax
    Precondition, postcondition
    Actual and Formal parameters
    Flow of control
    Function prototype
    Some math library functions
7. Exercise #3
8. CourseMarker

CS1010 (AY2010/2011 Semester 1)                                     Week3 - 4
1. General
Given a problem, how to proceed to reach a working program?
Review week #2:

Determine problem
features             Analysis

Rethink as
Write algorithm                           appropriate
Design

Produce code
Implementation

Check for correctness        Testing
and efficiency

CS1010 (AY2010/2011 Semester 1)                                  Week3 - 5
1. General
Analysis and Design

stepwise
refinement
NO                         ( hierarchy of )
sub-problems

problem
statement                                  sub-problems can                  YES
be implemented ?              structure chart
Implementation
& Testing

Knowledge in
Knowledge in C
Knowledge in           data structure
and its libraries
algorithms             (mostly CS1020)

CS1010 (AY2010/2011 Semester 1)                                                                  Week3 - 6
2. Demo: Week 2 Exercise #3
1. Decide to have input (two integers), compute, and output
(one float).
2. Input is easy – use scanf
3. Output is easy – use printf with %.2f
4. Compute may also use
library function(s)
5. Put each input, compute,
output in a function

Change the formula to this:

4t 10
T 9      20
t 2

CS1010 (AY2010/2011 Semester 1)                                  Week3 - 7
3. Demo: Top-down Design (1/7)
You work for a hardware company that manufactures flat washers.
To estimate shipping costs, your company needs a program that
computes the weight of a specified quantity of flat washers.

rim area = (d2/2)2 – (d1/2)2

CS1010 (AY2010/2011 Semester 1)                                 Week3 - 8
3. Demo: Top-down Design (2/7)
Analysis:
-         To get the weight of a specified qty of washer, we need to know the
weight of each washer
-         To get the weight of a washer, we need its volume  density
-         To get volume, we need its rim area  thickness
-         To get the rim area, we need d2 and d1
-         qty, density, thickness, d2, d1 should be given as inputs.

qty            weight                         rim area = (d2/2)2 – (d1/2)2

volume        density

rim area           thickness

d2             d1
CS1010 (AY2010/2011 Semester 1)                                                 Week3 - 9
3. Demo: Top-down Design (3/7)
Analysis:
- We define what the inputs and outputs are
- Choose the identifier names and data types
Design:
- Algorithm (view in words):
1. Read in all the necessary inputs (qty, density, thickness, d2, d1)
2. Compute weight of a single washer
2.1    Compute the area of the (small) hole using d1
2.2    Compute the area of the (big) circle using d2
2.3    Subtract the big area from the small area to get the rim_area
2.4    Compute volume = rim_area  thickness
2.5    Compute weight = volume  density
3. Compute the weight of the specified number of washer = weight 
qty
4. Output the calculated weight
CS1010 (AY2010/2011 Semester 1)                                                          Week3 - 10
3. Demo: Top-down Design (4/7)
Design:
- Algorithm (view in some hierarchical chart)
Compute Total
Weight

Ask for all       Compute             Compute       Output total
inputs            Weight            weight x qty     weight

Compute hole
qty?
area (use d1)

Compute big
density?    circle area (use
d2)

Compute rim
thickness?
area

Compute
d1?        volume (use
thickness)

Compute
d2?         weight (use
density)

CS1010 (AY2010/2011 Semester 1)                                                                 Week3 - 11
3. Demo: Top-down Design (5/7)
Design:
- Structure Chart
 a documentation tool that shows the relationship among the sub-
problems

Compute Total
Weight

Input : qty,       Compute Weight
Compute total   Output total
density,           of a single
Weight          weight
thickness, d1, d2         washer

Compute circle
area

CS1010 (AY2010/2011 Semester 1)                                                     Week3 - 12
3. Demo: Implementation (6/7)

To be continued…

CS1010 (AY2010/2011 Semester 1)                      Week3 - 13
3. Demo: Implementation (7/7)

gcc Week3_WashersWeight.c -lm

CS1010 (AY2010/2011 Semester 1)                         Week3 - 14
4. Exercise #1: Design a “simple drawing” program (1/2)
Problem:
- Write a program to draw a rocket ship
(which is a triangle over a rectangle, over
intersecting lines), a male stick figure (a
circle over a rectangle over intersecting
lines), and a female stick figure (a circle
over a triangle over intersecting lines)
rocket   male   female
Analysis:
- No particular input needed, just draw the needed 3 figures
- There are common shapes shared by the 3 figures
Design:
- Algorithm (view in words):
1. Draw Rocket Ship
2. Draw Male stick figure
3. Draw Female stick figure

CS1010 (AY2010/2011 Semester 1)                                     Week3 - 15
4. Exercise #1: Design a “simple drawing” program (2/2)
Design (Structure Chart):

rocket   male   female

Note: Drawing triangle can further be broken down to drawing
intersecting line plus drawing the base. Further subdivision
depends on our need.

CS1010 (AY2010/2011 Semester 1)                                         Week3 - 16
5. Exercise #2: Implement “simple drawing” program
Implementation

   CS1010 (AY2010/2011 Semester 1)                  Week3 - 17
6. Functions (1/6)
      A program is a collection of functions to transform input (if any)
to output (if any)
      In general, each box in a structure chart, which is a sub-problem,
gives rise to a function
      In mathematics, a function maps some input values to a single
(possibly multiple dimensions) output
      In C, a function maps some input values to zero or more output
values
- Zero output through         “void func ( … ) { … };”
- One output through, e.g., “double func ( … } { …; return value; };”
- More outputs through changing input values
•    ‘&’ – ‘address of’ operator
•    ‘*’ – ‘indirection’ operator; go to the address stored in the variable
following the * to get the/put a value at that address
      Return value (if any) from function call can (but need not) be
assigned to a variable.
CS1010 (AY2010/2011 Semester 1)                                                             Week3 - 18
6. Functions (2/6)
Syntax:                                          Example (in Week3_Sample.c):
function interface comment
ftype fname (formal parameter declaration list)
{
local variable declarations
executable statements
// include return statements, if any
}

Notes:
Precondition: describes conditions that should be true before calling function.
Postcondition: describes conditions that should be true after executing function.

CS1010 (AY2010/2011 Semester 1)                                                         Week3 - 19
6. Functions (3/6)
Actual parameters are values passed to function for computation
Formal parameters are placeholder when function is defined.
     Matching of actual and formal parameters from left to right
     Scope of formal parameters, local variables is within the function only

     Arrows indicate flow of control between main and a call to a function
     Provide function prototype as function may be used before (compiler sees)
its definition:

CS1010 (AY2010/2011 Semester 1)                                               Week3 - 20
6. Functions (4/6)
The complete
program of
Week3_Sample.c:

CS1010 (AY2010/2011 Semester 1)   Week3 - 21
6. Functions (5/6)
Some Useful Math Library Functions (compiled with –lm option)
function abs(x) from <stdlib.h>; the rest from <math.h> (see page 131)

CS1010 (AY2010/2011 Semester 1)                                Week3 - 22
6. Functions (6/6)
      Use of functions allow us to manage a complex (abstract) task
with a number of simple (specified) ones.
-    This allows us to switch between abstract and go to specific at ease
to eventually solve the problem.
      Function allows a team of programmers working together on a
large program – each programmer will be responsible for a
particular set of functions.
      Function is good mechanism to allow re-use across different
programs. Programmers use functions like building blocks.
      Function allows incremental implementation and testing (with the
use of driver function to call the function and then to check the
output)
      Acronym NOT summarizes the requirements for argument list
correspondence. (N: number of arguments, O: order, T: type)

CS1010 (AY2010/2011 Semester 1)                                              Week3 - 23
7. Exercise #3
Write a program that calculates the speed of
sound (a) in air of a given temperature T (oF).
Formula to compute the speed a in ft/sec:

5T  297
a  1086
247

 Please spend some time to analyse and design the
program before implementation (and testing).
 Bring your program to class next week.

CS1010 (AY2010/2011 Semester 1)                       Week3 - 24
CourseMarker
    You will use CourseMarker to submit your lab
assignments.
    Refer to “Getting Started” document:
http://www.comp.nus.edu.sg/~cs1010/labs/lab0/gettingStarted.html

    Read the above document, especially section 5
“Submitting Your Programs Using CourseMarker” and
try out before your discussion class this Friday.
    [Important!] Remember to bring along your
Friday.

CS1010 (AY2010/2011 Semester 1)                                           Week3 - 25
Summary for Today
    Today’s most important lessons
    Stepwise refinement to get structure chart
    Deeper understanding on working with functions
    Acquaintance with built-in functions
    Not in focus of this lecture but in book:
    Looping & condition (in other chapters which will be
covered later)

CS1010 (AY2010/2011 Semester 1)                                Week3 - 26
Announcements/Things-to-do
    Discussion classes starting this week (Friday).
    Do Discussion Questions on module
website (“CA”  “Discussion”) before you come for
http://www.comp.nus.edu.sg/~cs1010/3_ca/discussion.html

    Revise Chapter 5: Functions (Lessons 5.1 –
5.3)
    To prepare for next week’s lecture:
    We will do Selection statements (if-else, switch)
    Read Chapter 4 (Lessons 4.1 to 4.6) before you
come for lecture

CS1010 (AY2010/2011 Semester 1)                                           Week3 - 27
End of File

CS1010 (AY2010/2011 Semester 1)                 Week3 - 28

```
To top