1 MODULAR DESIGN AND ABSTRACTION. 2 SPECIFYING THE DETAILS OF A PROBLEM INTO A RELATED SET OF...
-
Upload
erika-gabriella-white -
Category
Documents
-
view
212 -
download
0
Transcript of 1 MODULAR DESIGN AND ABSTRACTION. 2 SPECIFYING THE DETAILS OF A PROBLEM INTO A RELATED SET OF...
1
MODULAR DESIGN
AND ABSTRACTION
2
SPECIFYING THE DETAILS OF A PROBLEM
INTO A RELATED SET OF SMALLER
PROBLEMS.
3
STATE THE PROBLEM
SUBDIVIDE THE PROBLEM INTO MAJOR SUBPROBLEMS
SUBDIVIDE EACH SUBPROBLEM INTO SMALLER TASKS
REPEAT THE PROCESS UNTIL TASKS ARE EASILY
SOLVED.
TOP- DOWN DESIGN
4
THE STRUCTURE CHART
A GRAPHICAL REPRESENTATION OF SYSTEM
COMPONENTS. USED TO IDENTIFY AND DEFINE
RELATIONSHIPS AMONG SUBPROBLEMS.
5
main
module2module1 module3
A STRUCTURE CHART
LEVEL O
LEVEL 1
6
EACH SUBDIVISION IS REFERRED TO AS A
STEPWISE REFINEMENT.
TASKS AT EACH STAGE OF THE SUBDIVISION ARE
REFERRED TO AS MODULES.
STEPWISE REFINEMENT
7
PROBLEM SOLVING WITHTOP- DOWN DESIGN
PROBLEM:
GET THREE INTEGER NUMBERS REPRESENTING
TEST MARKS. COMPUTE AND DISPLAY THEIR AVERAGE.
8
FindAvg
CalculateAverage
GetNumbers
DisplayResults
THE STRUCTURE CHARTFOR PROGRAM FindAvg:
LEVEL 0
LEVEL 1
9
THE ALGORITHM:
1 GET test1, test2, test32 CALCULATE average3 DISPLAY average
10
NEW CONCEPTS
MODULES
11
MODULAR DESIGN ANDFUNCTIONS
MODULES ARE CODED AS SUBPROGRAMS. A C++ FUNCTION
IS A GROUPING OF STATEMENTS INTO A SINGLE UNIT THAT
PERFORMS A TASK.
EACH C++ PROGRAM IS MADE UP OF ONE OR MORE
FUNCTIONS (main() IS A FUNCTION).
12
FUNCTION PROTOTYPE
A FUNCTION MUST BE DECLARED BEFORE IT MAY BE CALLED.
type function_name ();
// FINDS THE AVERAGE OF THREE NUMBERS
void Find_average ();
13
FUNCTION CALLS
A FUNCTION IS CALLED THROUGH THE EXECUTION OF A FUNCTION CALL. LOGIC FLOW IS TRANSFERRED TO function_name.
// A CALL TO FUNCTION Find_average
Find_average ();
function_name ();
14
FUNCTION DEFINITION
A FUNCTION CONSISTS OF 2 PARTS: THE HEADING AND THE BODY.
THE HEADING INCLUDES A TYPE SPECIFICATION, FUNCTION NAME, AND LEFT AND RIGHT PARENTHESES.
THE BODY CONSISTS OF LOCAL DECLARATIONS AND EXECUTABLE STATEMENTS. THE FUNCTION BODY BEGINS WITH A LEFT BRACE AND ENDS WITH A RIGHT BRACE.
15
type function_name ( )
{
local_declarations
executable_statements
}
heading
body
16
void Find_average(){ // Calculates the average const int NUMBER_OF_TESTS = 3; average = (test1 + test2 + test3) / NUMBER_OF_TESTS; return;} // end Find_average
EXAMPLE:
17
FLOW OF CONTROL
FUNCTIONS ARE DEFINED PHYSICALLY AFTER THE MAIN
PROGRAM. EXECUTION STARTS WITH THE
STATEMENTS OF THE MAIN PROGRAM.
THE CALL STATEMENT ACTS AS TRANSFER OF
CONTROL. THE RETURN STATEMENT SENDS THE
CONTROL BACK TO THE CALLING MODULE.
18
EXAMPLE:
...
void main ()
{
...
Get_data ();
Find_average ();
Display_results ();
return;
}
void Find_average (){ // Calculates the average const int NUMBER_OF_TESTS = 3; average = ( test1 + test2 + test3 ) / NUMBER_OF_TESTS; return;} // end Find_average ()
19
// FILE: FindAvg2.cpp// Finds the average of three test scores#include <iostream>using std::cout;using std::cin;using std::endl;// global data:float test1, test2, test3, average;
void main (){ // functions used: void Get_data (); void Find_average (); void Display_results (); // function calls: Get_data (); Find_average (); Display_results (); return;}
THE CODE FOR FindAvg:
20
void Get_data (){ // Gets the grade marks cout << "Enter the three test marks: "; cin >> test1 >> test2 >> test3; return;}
void Find_average(){ // Calculates the average const int NUMBER_OF_TESTS = 3; average = (test1 + test2 + test3) / NUMBER_OF_TESTS; return;}
void Display_results (){ // Displays the average cout << "The average of the 3 test marks is " << average << endl; return;}
21
LOCAL DECLARATIONS
OBJECTS DECLARED LOCALLY WITHIN A FUNCTION CAN BE REFERENCED ONLY WITHIN THAT FUNCTION.
22
GLOBAL DECLARATIONS
OBJECTS DECLARED OUTSIDE OF FUNCTIONS CAN BE REFERENCED FROM WITHIN ANY FUNCTION THAT FOLLOWS THAT DECLARATION.
23
PARAMETERS ARE USED TO COMMUNICATE BETWEEN
MODULES.
THE CALLING MODULE PASSES VALUES TO THE
CALLED MODULE TO USE THEM IN PROCESSING.
THE CALLED MODULE RETURNS THE RESULTS TO THE
CALLING MODULE.
MODULE COMMUNICATION
24
EXAMPLE:
PROBLEM
GIVEN THE RADIUS OF A CIRCLE, COMPUTE AND DISPLAY THE AREA AND THE CIRCUMFERENCE.
25
ANALYSIS AND SPECIFICATIONS
IN ORDER TO COMPUTE THE CIRCLE’S AREA AND CIRCUMFERENCE (PROBLEM’S OUTPUT), WE NEED THE RADIUS (PROBLEM’S INPUT). WE ALSO KNOW THAT THE AREA MAY BE CALCULATED AS: x RADIUS2
AND THE CIRCUMFERENCE MAY BE CALCULATED AS:
2 x πx RADIUS.
DATA REQUIREMENTS
CONSTANT π = 3.14159
INPUT RADIUS (FLOAT)
OUTPUT AREA (FLOAT)
CIRCUMFERENCE (FLOAT)
FORMULAE AREA = π * RADIUS * RADIUS
CIRCUMFERENCE = 2 * π * RADIUS
26
DESIGN
HAVING DEFINED THE PROBLEM’S INPUT AND OUTPUT, WE MAY START IDENTIFYING THE SYSTEM’S COMPONENTS AND STEPS NECESSARY TO SOLVE THE PROBLEM.
27
AreaCircm
ComputeGet radius Display Result
LEVEL 0
LEVEL 1
STRUCTURE CHART
28
AreaCircm
ComputeGet radius Display Result
LEVEL 0
LEVEL 1
area circumLEVEL 2
STRUCTURE CHART
29
1. GET DATA
2. COMPUTE
3. DISPLAY RESULTS
ALGORITHM
30
1. GET DATA
2. COMPUTE
2.1 COMPUTE AREA
2.2 COMPUTE CIRCUMFERENCE
3. DISPLAY RESULTS
ALGORITHM: A Second Level Refinement
31
NEW CONCEPTS
MODULES COMMUNICATION
32
FUNCTION PROTOTYPEUSING PARAMETERS
type function_name (parameter_type_list);
// computes the area of a circle
float Compute_area (float r);
33
FUNCTION CALLS
function_name (parameter_list);
// A call to function Compute_area() Compute_area (radius);
34
FUNCTION DEFINITIONUSING PARAMETERS
type function_name ( parameter_list)
{
local_declarations
executable statements
}
heading
body
35
EXAMPLE:
// computes the area of a circle
float Compute_area (float r)
{
// compute and return the area
return PI * r * r;
} // end Compute_area ()
DEFINITION:
36
CALL:
area = Compute_area (radius);
37
SAME RULES AS WITH IDENTIFIERS.
void Module_name (float first, float second,
float third, float result);
OR
void Calculate_average (float test1, float test2,
float test3, float average);
THE SECOND MODULE NAME IS MORE MEANINGFUL.
NAMING RULES
38
// FILE: AreaCircm.cpp// FINDS AND PRINTS THE AREA AND CIRCUMFERENCE OF A CIRCLE
#include <iostream>#include "CmptArCr.cpp" //Compute_area and Compute_circumusing std::cout;using std::cin;using std::endl;
void main (){ // functions used: // COMPUTES THE AREA OF A CIRCLE float Compute_area (float);
// COMPUTES THE CIRCUMFERENCE OF A CIRCLE float Compute_circum (float);
IMPLEMENTATION FOR AreaCircm
39
// local data: float radius; // radius of circle float area; // area of circle float circum; // circumference of circle
// get radius; cout << "enter the circle radius: "; cin >> radius;
// compute the area of the circle area = Compute_area (radius);
// compute the circumference of the circle circum = Compute_circum (radius);
cout << "the area of the circle is " << area << endl; cout << "the circumference of the circle is " << circum << endl; return;}
40
// FILE: CmptArCr.cpp
// Modules to calculate the area and
// circumference of a circle.
// global data:
const float PI = 3.14159;
// COMPUTES THE AREA OF A CIRCLE
float Compute_area (float r)
{
// compute and return the area
return PI * r * r;
} // end Compute_area ()
41
// COMPUTES THE CIRCUMFERENCE OF A CIRCLE
float Compute_circum (float r)
{
// compute and return the circumference
return 2.0 * PI * r;
} // end Compute_circum ()
42
THE PARAMETERS IN THE CALL STATEMENT ARE
REFERRED TO AS ACTUAL PARAMETERS. THE VALUE
OF AN ACTUAL PARAMETER IS PASSED AND USED BY
THE FUNCTION.
ACTUAL PARAMETERS
43
FORMAL PARAMETERS
THE PARAMETERS IN THE FUNCTION HEADING ARE
REFERRED TO AS FORMAL PARAMETERS. A FORMAL
PARAMETER REPRESENTS THE ACTUAL VALUE PASSED
TO THE FUNCTION EACH TIME IT IS CALLED.
44
LIBRARIES OF FUNCTIONS
PROVIDE ACCESS TO PREVIOUSLY WRITTEN FUNCTIONS THAT PERFORM USEFUL DIAGNOSTICS, MANIPULATIONS, COMPUTATIONS, ETC.
45
EXAMPLES OF SOMEMATHEMATICAL FUNCTIONS
result = sqrt (16) * 10
RETURNS THE VALUE 40.0. THE SQUARE ROOT
OF 16 IS CALCULATED, THEN THE VALUE
IS MULTIPLIED BY 10.
floor (3.8) = 3
RETURNS THE LARGEST INTEGER NOT GREATER THAN THE PARAMETER.
fabs (-3.8) = 3.8
RETURNS THE ABSOLUTE VALUE.