Download presentation
Presentation is loading. Please wait.
Published byGloria McKenzie Modified over 9 years ago
1
Developing a Solution How to create the computer-based solution for a real-world problem. 1
2
General Idea of This Lesson Give you methodology Example problems: “Find the optimum nozzle dimensions for …” “Solve for the optimum path for the robot …” “Find the range of temperatures adequate for …” In EGR115, most tasks will be: “Develop a program that ……”
3
General Terms As a programmer, keep in mind there are 2 sides to a software The person who writes the software: the programmer The person who uses the software: the user (aka client) As you (the student) develop software, you will constantly jump back and forth between the two roles. Your goal as a programmer: “The programmer should make the user’s life easy.” 3
4
The 5 step process Follow these steps in order: 1. State the problem clearly 2. Identify the givens vs. the results wanted This will be referred as the I/O diagram 3. Manually solve the problem 4. Computerize the solution 5. Test, test, test!!! 4
5
Step 1. State the problem However easy the problem may seem, it is crucial to fully understand the problem, and clarify details. It can help to put the problem in writing. For example: Write a program that “Computes the area of a triangle” This might bring up questions – like “what do I know about the triangle?” 5
6
Step 2. Identify the I/O What do you know about the problem? How do you want to solve it? 6 height base
7
Step 2. Identify the I/O What do you know about the problem? How do you want to solve it? 7 side 1 side 2 angle height base
8
Step 2. Identify the I/O Remember the Von Neumann architecture? CPU + memory + inputs/outputs devices The I/O diagram determines which input and output devices the software uses, as well as decide which inputs and output variables are used. The I/O diagram is a first step to organizing the brainstorming. 8
9
General frame of an I/O diagram Arrows indicate and names each given and result Purple boxes indicate which devices are used 9 ? ? ? ? ? ? ? ?
10
General frame of an I/O diagram 10 INPUT SIDE ? ? ? ? ? ? ? ?
11
General frame of an I/O diagram 11 OUTPUT SIDE ? ? ? ? ? ? ? ?
12
Applied to the area of triangle 12 COMPUTE THE AREA OF TRIANGLE
13
Applied to the area of triangle 13 COMPUTE THE AREA OF TRIANGLE Sides 1 and 2 Angle Each arrow represents the INPUTS (=GIVENS)
14
Applied to the area of triangle 14 AREA OF TRIANGLE Sides 1 and 2 Angle External interface – What DEVICE is used to enter the values of the givens Keyboard Each arrow represents the INPUTS (=GIVENS)
15
Applied to the area of triangle 15 COMPUTE THE AREA OF TRIANGLE Sides 1 and 2 Angle Keyboard Each arrow represents the INPUTS (=GIVENS) area Each arrow represents the OUTPUTS (=RESULTS)
16
Applied to the area of triangle 16 COMPUTE THE AREA OF TRIANGLE Sides 1 and 2 Angle External interface – What DEVICE is used to see the results Keyboard Each arrow represents the INPUTS (=GIVENS) Screen area Each arrow represents the OUTPUTS (=RESULTS)
17
Applied to the area of triangle Final I/O diagram 17 COMPUTE THE AREA OF TRIANGLE Sides 1 and 2 Angle Keyboard Screen area
18
Same problem: Option 2 18 COMPUTE THE AREA OF TRIANGLE Sides 1 and 2 Angle Printer Different input/output devices area 18 Microphone
19
… or option 3 … 19 COMPUTE THE AREA OF TRIANGLE base height Screen area 19 Keyboard Different Inputs
20
Some Other More Complex Examples (and yet, the I/O is not so complex) 20 ATM MACHINE
21
Some Other More Complex Examples (and yet, the I/O is not so complex) 21 ATM MACHINE Account number Card
22
Some Other More Complex Examples (and yet, the I/O is not so complex) 22 ATM MACHINE pin Deposit/with- draw/transfer… Touch Screen/ pin pad Account number Card
23
Some Other More Complex Examples (and yet, the I/O is not so complex) 23 ATM MACHINE pin Deposit/with- draw/transfer… Touch Screen/ pin pad Account number Card Money Slot money
24
Some Other More Complex Examples (and yet, the I/O is not so complex) 24 ATM MACHINE money Money Slot pin Deposit/with- draw/transfer… Touch Screen/ pin pad Account number Card Money Slot money
25
Some Other More Complex Examples (and yet, the I/O is not so complex) 25 ATM MACHINE money Money Slot pin Deposit/with- draw/transfer… Touch Screen/ pin pad Account number Card receipt Receipt Slot Money Slot money
26
Step3. Manually Solve Problem Solving the area of a triangle is obvious (right?) Height = 3 in Base = 2 in Area = ½ * 2 * 3 = 3 in squared 26
27
Step 4 and Step 5 These steps actually involve owning a computer and starting to type ‘lines of code’. Realize that none of the steps before did this. In short: Step 4 – Computerize the solution Step 5 – Test the software created
28
Remember: “SIMCT” (or: Small iPods Make Copying Tough) 1. SState the problem (clarify it if need be) 2. IIdentify the Inputs and Outputs 3. M Manually solve the problem 4. CComputerize the solution 1. Layout the algorithm 2. Provide the code that implements the algorithm 5. Ttest, Test, TEST!! 28
29
1. SState the problem (clarify it if need be) 2. IIdentify the Inputs and Outputs 3. MManually solve the problem 4. CComputerize the solution 1. Layout the algorithm 2. Provide the code that implements the algorithm 5. TTest, Test, TEST!! Remember: “SIMCT” (or: Small iPods Make Copying Tough) 29 Note: I and M are sometimes reversed. You may need to decide what method you will use to solve the problem before you can determine what inputs are needed and what outputs will be provided. In fact, sometimes the problem being solved gets changed. But we will assume the standard SIMCT model.
30
Developing a Solution Complete Example Development of software which finds the roots of any quadratic equation: ax 2 + bx + c = 0 30
31
1: State the problem The client says: “I want a computer program that will find the roots of any quadratic equation” 31
32
1 (cont.): The programmer wonders: Any quadratic equation? Inputs: What if the coefficient “a” is 0? Outputs: What if the roots are imaginary? And the client re-considers.. 32
33
1 (cont.): Client clarifies his requirements: “I want a computer program that will find the REAL roots of a quadratic equation for all REAL coefficients a, b, and c such that a≠0.” This shows a much more thorough consideration of the problem. 33
34
2: Identify Inputs/Outputs What are the inputs for this problem? In other words, what information is needed FROM OUTSIDE THE PROGRAM for the desired program to solve the problem? In our programs, these inputs typically come from the user – but they don’t have to. Sensors and other programs can provide information, too. 34
35
2 (cont.): Inputs, continued… The only information needed from outside the program are the values of the coefficients: a? b? c? 35
36
2 (cont.): What is expected as output from this program? The roots (x1, and x2) of course. But… - what about error messages – when the user puts in bad information? - what about an “imaginary roots found” message? 36
37
2 (cont.): Outputs, continued: - The roots, if real - Message if roots are imaginary - Error if the user inputs bad values 37
38
2 (cont.): Final I/O diagram: 38 *** magic *** Coefficients a,b and c Roots/ error message screenKeyboard
39
Step 3: Manually solve the problem Not always practical to actually solve the problem… e.g. can you manually launch the shuttle? But… a programmer must be able to solve the problem manually, assuming all the time and resources necessary were available. Otherwise, how could a programmer tell the computer how to do it??? 39
40
3 (cont.): For this problem, manually solve the quadratic equation for various inputs. Pretend you are the program you will be writing. What should YOU do if the user provides: - good data - bad data - data that gives real roots - data that gives imaginary roots 40
41
3 (cont.): 41 Test case #1: enter a valid case ( http://www.algebra1help.com/tut orials/math-worksheets-for-mean- mode-median-6th-grade.html ) http://www.algebra1help.com/tut orials/math-worksheets-for-mean- mode-median-6th-grade.html
42
3 (cont.): 42 Test case #2: enter 0 for a expect an error message Test case #3: enter a=4, b=-2, c=0 expect "imaginary roots" message http://www.videolife.tk/discriminant/
43
4: Computerize 4.1 Algorithm Describe the steps taken when the problem was manually solved. This is more difficult than it seems. Humans perform actions subconsciously – we’re not even aware we are doing them! 43
44
4.1 (cont.): Layout the algorithm in “skeleton” form: % Collect the inputs from the user % Apply the inputs to the quadratic formula % Display the results 44
45
4.1 (cont.): Now, “flesh it out” % Collect the inputs from the user % Print error message if bad inputs % Apply the inputs to the quadratic formula % Compute the discriminant (b 2 -4ac) % If discriminant < 0 % display ‘Imaginary roots’ % Otherwise % compute real roots % Display the results 45
46
4.2: code For each step of the algorithm, write code (in this class, MATLAB code) that will perform the actions you have specified. Avoid proceeding to the next step until you feel certain the step has been accomplished. It is important to test as you go. (Actual coding steps will be learned this semester) 46
47
5: test, Test, TEST!!! It is provably impossible to write a computer program to test another arbitrary computer program for correctness. And it’s usually too time consuming to write a program that specifically tests the program we’re writing – so we resort to manual testing. For complicated programs, it is not possible to test a program too thoroughly because it is not possible to test all inputs. And it may be worth writing that test program after all… Choose inputs to maximize confidence that the solution written will work correctly. 47
48
5 (cont.): For a quadratic solver, each set of input should be tested, which means: 48 a<0, b<0, c<0 a<0, b<0, c=0 a 0 a<0, b=0, c<0 a<0, b=0, c=0 a 0 a 0, c<0 a 0, c=0 a 0, c>0 a=0, b<0, c<0 a=0, b<0, c=0 a=0, b 0 a=0, b=0, c<0 a=0, b=0, c=0 a=0, b=0, c>0 a=0, b>0, c<0 a=0, b>0, c=0 a=0, b>0, c>0 a>0, b<0, c<0 a>0, b<0, c=0 a>0, b 0 a>0, b=0, c<0 a>0, b=0, c=0 a>0, b=0, c>0 a>0, b>0, c<0 a>0, b>0, c=0 a>0, b>0, c>0
49
Step5 (cont.) Of course, with human ingenuity, change the design of the program (i.e. modify the algorithm) to avoid some of these: % If no error condition (such as a equal 0) % then compute the roots % Otherwise, just print the error message With this sort of technique, we can avoid having to test nearly 1/3 of the possibilities! 49
50
Step5 (cont.) For a quadratic solver, each set of input should be tested, which means: 50 a<0, b<0, c<0 a<0, b<0, c=0 a 0 a<0, b=0, c<0 a<0, b=0, c=0 a 0 a 0, c<0 a 0, c=0 a 0, c>0 a=0, b<0, c<0 a=0, b<0, c=0 a=0, b 0 a=0, b=0, c<0 a=0, b=0, c=0 a=0, b=0, c>0 a=0, b>0, c<0 a=0, b>0, c=0 a=0, b>0, c>0 a>0, b<0, c<0 a>0, b<0, c=0 a>0, b 0 a>0, b=0, c<0 a>0, b=0, c=0 a>0, b=0, c>0 a>0, b>0, c<0 a>0, b>0, c=0 a>0, b>0, c>0
51
% Collect the inputs from the user % If no error condition % Compute the discriminant (b 2 -4ac) % If discriminant < 0 % display ‘Imaginary roots’ % Otherwise % compute real roots % Display the results % Otherwise % Print error message 51
52
% Collect the inputs from the user a = input(‘Enter coefficient a: ’); % If no error condition % Compute the discriminant (b 2 -4ac) % If discriminant < 0 % display ‘Imaginary roots’ % Otherwise % compute real roots % Display the results % Otherwise % Print error message 52
53
% Collect the inputs from the user a = input(‘Enter coefficient a: ’); b = input(‘Enter coefficient b: ’); c = input(‘Enter coefficient c: ’); % If no error condition % Compute the discriminant (b 2 -4ac) % If discriminant < 0 % display ‘Imaginary roots’ % Otherwise % compute real roots % Display the results % Otherwise % Print error message 53
54
% Collect the inputs from the user a = input(‘Enter coefficient a: ’); b = input(‘Enter coefficient b: ’); c = input(‘Enter coefficient c: ’); % If no error condition if a~=0 %means a not equal to zero, could have done (a 0) % Compute the discriminant (b 2 -4ac) % If discriminant < 0 % display ‘Imaginary roots’ % Otherwise % compute real roots % Display the results % Otherwise else % Print error message end 54
55
% Collect the inputs from the user a = input(‘Enter coefficient a: ’); b = input(‘Enter coefficient b: ’); c = input(‘Enter coefficient c: ’); % If no error condition if a~=0 %means a not equal to zero, could have done (a 0) % Compute the discriminant (b 2 -4ac) % If discriminant < 0 % display ‘Imaginary roots’ % Otherwise % compute real roots % Display the results % Otherwise else % Print error message disp(‘error: a invalid’) end 55
56
% Collect the inputs from the user a = input(‘Enter coefficient a: ’); b = input(‘Enter coefficient b: ’); c = input(‘Enter coefficient c: ’); % If no error condition if a~=0 %means a not equal to zero, could have done (a 0) % Compute the discriminant (b 2 -4ac) discriminant = b^2-4*a*c; % If discriminant < 0 % display ‘Imaginary roots’ % Otherwise % compute real roots % Display the results % Otherwise else % Print error message disp(‘error: a invalid’) end 56
57
% Collect the inputs from the user a = input(‘Enter coefficient a: ’); b = input(‘Enter coefficient b: ’); c = input(‘Enter coefficient c: ’); % If no error condition if a~=0 %means a not equal to zero, could have done (a 0) % Compute the discriminant (b 2 -4ac) discriminant = b^2-4*a*c; % If discriminant < 0 if discriminant<0 % display ‘Imaginary roots’ % Otherwise else % compute real roots % Display the results end % Otherwise else % Print error message disp(‘error: a invalid’) end 57
58
% Collect the inputs from the user a = input(‘Enter coefficient a: ’); b = input(‘Enter coefficient b: ’); c = input(‘Enter coefficient c: ’); % If no error condition if a~=0 %means a not equal to zero, could have done (a 0) % Compute the discriminant (b 2 -4ac) discriminant = b^2-4*a*c; % If discriminant < 0 if discriminant<0 % display ‘Imaginary roots’ disp(‘Imaginary Roots’) % Otherwise else % compute real roots % Display the results end % Otherwise else % Print error message disp(‘error: a invalid’) end 58
59
% Collect the inputs from the user a = input(‘Enter coefficient a: ’); b = input(‘Enter coefficient b: ’); c = input(‘Enter coefficient c: ’); % If no error condition if a~=0 %means a not equal to zero, could have done (a 0) % Compute the discriminant (b 2 -4ac) discriminant = b^2-4*a*c; % If discriminant < 0 if discriminant<0 % display ‘Imaginary roots’ disp(‘Imaginary Roots’) % Otherwise else % compute real roots x1 = (-b + sqrt(discriminant)) / (2*a); x2 = (-b - sqrt(discriminant)) / (2*a); % Display the results fprintf(‘x1 = %.2f and x2 = %.2f\n’,x1,x2) end % Otherwise else % Print error message disp(‘error: a invalid’) end 59
60
Wrapping Up What are the 5 steps? 1. State the problem Do research if the problem is not clear enough 2. Identify the Inputs/Outputs (Givens/Results) Create an I/O diagram Which devices are used for each side? 3. Manually solve the problem 4. Computerize the solution 4.1 Set up the algorithm 4.2 Code 5. test, Test, TEST!!! 60
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.