; Week3
Documents
Resources
Learning Center
Upload
Plans & pricing Sign in
Sign Out
Your Federal Quarterly Tax Payments are due April 15th Get Help Now >>

Week3

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.

                Answer

         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
         CourseMarker password to your discussion class this
         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).
               Bring along your CourseMarker password
               Do Discussion Questions on module
                website (“CA”  “Discussion”) before you come for
                your discussion session:
                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