Date post: | 22-Oct-2014 |
Category: |
Documents |
Upload: | njcumartin |
View: | 103 times |
Download: | 0 times |
Case Studies
Unit Conversion Problem © F.P.Deek, 1999( 1. Formulating the Problem
()1.1 Problem Description
()
Convert a measurement given in feet to the equivalent value of (a) yards, (b) inches, (c) centimeters, and (d) meters.
Note: 1 ft = 12 in, 1 yd = 3 ft, 1 in = 2.54 cm, 1 m = 100 cm
()1.2 VerbalizationWhat is the goal? Convert a measurement given in feet to the equivalent value in other units.
What are the givens? The number of feet to convert The conversion factors What to convert to.
What are the unknowns? The equivalent value in inches. The equivalent value in yards The equivalent value in meters The equivalent value in centimeters.
()1.3 Information ElicitationGoal Convert a measurement --- given in feet --- to the equivalent value --- yards --- inches --- centimeters --- meters.
Givens The number of feet to convert. The conversion factors.
Unknowns The equivalent number of Inches The equivalent number of yards The equivalent numbest of meters The equivalent number of centimeters
Conditions None
2. Planning the Solution
()2.1 Solution StrategyGet a value in feet from the user and then convert that number into equivalent value of yards, inches, centimeters, meters and then display the conversions.
()2.2 Goal DecompositionSub-goal 1 Get measurement in feet from the user.
Sub-goal 2 Convert to equivalent units.
Sub-goal 3 Display results.
()2.3 ResourcesRelevant formulas Yards = feet / 3 Inches = feet * 12 Centimeters = feet * 12 * 2.54 Meters = (feet * 12 * 2.54) / 100
Formula Derivation A foot measures 3 yards. Hence a yard is the measurement in feet divided by 3. 12 Inches make up a foot. Thus to get the number of inches, given the measurement in feet, simply multiply the feet measure by 12. One inch is 2.54 cms. Hence to convert from feet to centimeters, convert it to inches as before and multiply by 2.54. A hundred cms make a meter. Thus to convert from feet to meters we divide the centimeter measure obtained above by 100.
()2.4 Data Organization and DescriptionInput (givens): Name Description Origin Used in Sub-goal #Feet Number of feet to convert User 1 Output (unknowns): Name Description Origin Used in Sub-goal #inches Equivalent number of inches Screen 2yards Equivalent number of yards Screen 2cent Equivalent number of centimeters Screen 2meters Equivalent number of meters Screen 2
3. Designing the Solution
()3.1 Structure ChartFirst Level Decomposition
The first level decomposition shows the broad outline of the whole program. The three main steps in solving this problem are (a) getting the inputs, (b) doing the actual conversions and (c) displaying the results. Goal Refinement Sub-goal 1 Get measurement in feet from the user. Sub-goal 2 Convert to equivalent units. ()()Sub-goal 2.1 ()()Convert into yards ()()Sub-goal 2.2 ()()Convert into Inches ()()Sub-goal 2.3 ()()Convert into feet ()()Sub-goal 2.4 ()()Convert into Centimeters Sub-goal 3 Display results.
Second Level Decomposition
The second level decomposition shows the finer details of the conversion process and the
display process. The conversion process consists of four different conversions and similarly display process is composed of five different processes.
()3.2 Module and Data SpecificationsName: Instruct - Display instructions to the user.Input: None.Output: None.Logic: Display user instructions on the screen. Name: ConvertToYards - Convert from feet to yards.Input: None.Output: None.Logic: Convert from feet to yards (1 yard = 1 foot/3) and store resultant value in yards. Name: ConvertToInches - Convert from feet to inches.Input: None.Output: None.Logic: Convert feet to inches (1 inch = 1 foot * 12) and store in inches.
Name: ConvertToCent - Convert from feet to centimeters.Input: None.Output: None.Logic: Convert feet to centimeters (1 cm = 1 foot * 12 * 2.54) and store in cent. Name: ConvertToMeters - Convert a given number of feet to meters.Input: None.Output: None.Logic: Convert feet to meters (meters = (1 foot * 12 * 2.54) / 100) and store in meters. Name: Main - Convert a given number of feet to other units.Input: None.Output: None.Logic: Converts feet to other units using the given formulae.Data: Name Type Structure
Feet Real number SimpleInches Real number SimpleYards Real number Simplecent Real number Simplemeters Real number Simple
()3.3 Algorithm
Logic 1.0 Display user instructions.2.0 Get value of feet.3.0 Perform conversions.
3.1 Convert feet to inches - inches = feet * 123.2 Convert feet to yards - yards = feet / 3
3.3 Convert feet to centimeters - cent = (feet * 12 * 2.54)3.4 Convert feet to meters - meters = (feet * 12 * 2.54) / 100
4.0 Display results.4.1 Display original number of feet user entered.4.2 Display equivalent number of inches4.3 Display equivalent number of yards.4.4 Display equivalent number of centimeters4.5 Display equivalent number of meters
Algorithm Description The algorithm to convert units is straightforward enough. To put it in a nutshell, we have to get the value in feet, convert it to the required units and print out the result. Additionally, we must inform the user about the program and give general instructions. This is done as the first step. The next step is to get the value in feet from the user through a keyboard entry. The conversions are performed one at a time using the previously discussed formulae and stored in appropriate variables. The final step entails printing the results on the screen. The initial value in feet, followed by each converted unit is printed on the screen.
4. Translation ()4.1 Source Code//=================================================== // Name : // SID : // Course : // Section : // Instructor : // T.A : //=================================================== //=================================================== // Assignment # : // Date : //=================================================== //=================================================== // Description : This program will convert the // given feet into its equivalent yards, inches, // centimeters and meters. //=================================================== #include <iostream.h> // for cin and cout
// function prototypes // function to display the instructions void Instruct();
// function to convert feet to yards float ConvertToYards( float ); // function to convert feet to inches float ConvertToInches( float ); //function to convert feet to centimeters float ConvertToCent( float ); //function to convert feet to meters float ConvertToMeters( float );
//================================================= // Instruct - Provide instructions to the user. // Input - none. // Output - none. //================================================= void Instruct() { cout<< endl << "This program converts a number in"; cout<< "feet to the equivalent"; cout<< endl << "number of inches, yards, meters, "; cout<< "and centimeters.";
return; // return flow of control
}//End Instruct
//================================================= // ConvertToYards - convert a number given in feet // to yards // Input - the number representing feet to convert // Output - return the equivalent number of yards //================================================= float ConvertToYards( float feet ) { // convert feet to yards and return the result return feet/3;
}// End ConvertToYards
//================================================= // ConvertToInches - convert a number given in feet // to inches // Input - the number representing feet to convert // Output - return the equivalent number of inches //=================================================
float ConvertToInches( float feet ) { // convert feet to inches and return the result return feet*12;
}// End ConvertToInches
//================================================= // ConvertToCent - convert a number given in feet to // centimeters // Input - the number representing feet to convert // Output - return the equivalent number of // centimeters //================================================= float ConvertToCent( float feet ) { // convert feet to centimeters and return the result return feet*12*2.54;
}// End ConvertToCent
//================================================= // ConvertToMeters - convert a number given in feet // to meters // Input - the number representing feet to convert // Output - return the equivalent number of meters //================================================= float ConvertToMeters( float feet ) { // convert feet to meters and return the result return ( feet*12*2.54 )/100;
}// End ConvertToMeters
// Main function int main() { // declare local variables float feet, // INPUT: the number of feet to convert yards, // CALCULATED: feet to yards inches, // CALCULATED: feet to inches
cent, // CALCULATED: feet to centimeters meters; // CALCULATED: feet to meters
// Instruct the user Instruct();
// prompt user to enter the number of feet cout << endl<< "Please enter the number of feet to"; cout<< "convert:"; // read in the number entered from the keyboard cin >> feet;
// perform conversions by calling functions yards = ConvertToYards( feet ); inches = ConvertToInches( feet ); cent = ConvertToCent( feet ); meters = ConvertToMeters( feet );
// display results to screen cout << endl << "The number of feet entered ("; cout << feet<< ") equals:"; cout << endl << yards << " yards"; cout << endl << inches << " inches"; cout << endl << cent << " centimeters"; cout << endl << meters << " meters";
// end program and return 0 (successful exit) to OS return 0;
}// End main
()4.2 Program and Module Description Instruct This function prints out the user instructions and returns. ConvertToYards The formula discussed before is used to convert the value of feet into yards. One foot is 3 yards. Hence, we divide the measure of feet by 3 to get the equivalent measure in yards. The result is stored in the variable yards. ConvertToInches The measure in feet is converted into inches using the formula
inches = feet*12 and the result stored in inches. ConvertToCent The measure in feet is converted into centimeters using the formula cent = feet*12*2 and the result stored in cents. ConvertToMeters The measure in feet is converted into meters using the formula (feet*12*2.54)/100 and the result stored in meters. Main The main function first calls the instruct routine to display the objectives of the program. The next objective is to get the input data from the user. The C++ statement cin is used to do this task. The variable feet is populated with the value of feet. Then each function is called to convert the measurement from feet to inches, centimeters, yards and meters, appropriately. The last step is to display the results. The value of each variable is displayed on the screen. The main function ends.
5. Solution Testing Test the program with following data domain: The domain range for the feet is any real number
Test the program with following data: Input: Enter Number of feet: 1 1 ft = 12 in, 1 yd = 3 ft, 1 in = 2.54 cm, 1 m = 100 cm.
Output: Yards= 0.33 Inches= 12 Centimeters= 30.48 Meters= 0.30
6. Testing: Output This program converts a number in feet to the equivalent number of inches, yards, meters, and centimeters. Please enter the number of feet to convert: The number of feet entered (12) equals: 4 yards 144 inches 365.76001 centimeters 3.6576 meters
Textbooks
(Text 1: W. Savitch, "Problem Solving with C++", Second Edition, Addison- Wesley.
(Text 2: J.G. Bookshear, "Computer Science: An Overview", Fifth Edition, Addison- Wesley.
Lecture Readings
Topic 1 The Machine: Hardware and Software
Text 1: Sec. 1.1 Text 2: Ch. 0, Sec. 1.1 - 1.4, 2.1 - 2.4, 3.1 - 3.3
Topic 2 Introduction to Problem Solving and Programming
Text 1: Sec. 1.2 - 1.4 and Sec. 2.1 - 2.3 Text 2: Sec. 4.1 - 4.3, 5.1, 5.2
Topic 3 Modular Design and Abstraction
Text 1: Sec. 3.1 - 3.5 Text 2: Sec. 5.3, 5.4
Topic 4 Control Structures: Sequential, Selective, and Repetitive
Text 1: Sec. 2.4 and Sec. 7.1, 7.2 (nested if) Text 2: Sec. 4.4, 4.5
Topic 5 More on Modular Design: Module Communications
Text 1: Ch. 4
Topic 6 More on Control Structures
Text 1: Sec. 7.2 (switch statement)- 7.4
M I D T E R M (to be announced)
Topic 7 Introduction to Software Engineering
Text 2: Ch. 6
Topic 8 Data Abstraction: User Defined Types and the Class
Text 1: Ch. 6, Sec. 8.1
Topic 9 More on Input and Output: Streams, Files, and Formatting
Text 1: Ch. 5 Text 2: Sec. 8.1 - 8.3
Topic 10 Data Structures: Lists
Text 1: Ch. 9 (except section 3 on searching and sorting) and Ch. 10 Text 2: Sec. 7.1
Topic 11 List Applications: Searching and Sorting
Text 1: Ch. 9 (section 3 on searching and sorting)
Topic 12 Structures and pointers
Text 1: Sec. 6.1 and Sec. 11.1
Topic 13 Dynamic Structures: Linked Lists
Text 1: Sec. 11.2 and Sec. 14.1 Text 2: Sec. 7.2
F I N A L (to be announced)
Rules for Problem Solving and Program Development
All assignments should be submitted in a format consistent with the problems presented and
solved in the class lecture and recitation sessions.The following sections should be included in all of your programs:
1. The program should start with a paragraph of comments. This paragraph must always include:
1. The title and number of the assignment
2. The student name, course/section and ID #
3. The name of the TA
2. Problem Formulation
1. Describe the problem being solved in a few sentences
2. Identify the goals, givens, and unknowns
3. Other information as necessary
3. Planning
1. Describe the strategy used to solve the problem
2. Define data requirements: Input (describe the
data that will be entered and processed by the program).Output (describe the expected output) Intermediate data
3. Refine goals into subgoals and identify tasks to be performed.
4. Provide explanations of all formulae used
4. Design
1. Structure and data flow chart
2. Module specifications
3. Algorithms
5. Translation
1. The problem solution in translated into C++ code
6. Testing
1. Provide comprehensive test run showing both input and output Naming of objects and functions should be meaningful. Declarations of objects that are logically related should be grouped together. All definition and declaration statements should be fully commented.
Modules are to be documented in a similar way like the main program. Describe exactly what each function does, the input to the function, the logic, and the output produced. Define the type and role of each parameter in a separate comment block at the top of each module. All input data must be checked for validity, when appropriate.
Sixty percent of the program grade is given for the problem solving phases and fourty percent is for the implementation and testing. Submit all documentation. Points will be deducted for non-conforming programs. Assignments should be submitted during recitations only. Late programs will be penalized and must be submitted to the TAs or instructor in-person. The penalty is as follows: the total grade that the assignment is marked out of will be reduced by 10% for each day that it is late. For example, after one day the assignment will be marked out of 90%.