Programming -1 (Algorithmic problem solving).pdf · How to solve a problem? • Programming is a...
Transcript of Programming -1 (Algorithmic problem solving).pdf · How to solve a problem? • Programming is a...
Programming -1
Atheer Aldwighri
Algorithmic problem solving
Objective
In this chapter you’ll:
• Learn about problem solving skills
• Explore the algorithmic approach for problem solving
• Problem Solving and Programming Strategy
• Flowchart
• General exercisers on algorithms
Problem Solving
• Programming is a process of problem solving
• Problem solving techniques
• Analyze the problem
• Outline the problem requirements
• Design steps (algorithm) to solve the problem
• Algorithm:
• Step-by-step problem-solving process
• Solution achieved in finite amount of time
How to solve a problem?
• Programming is a problem-solving activity.
• If you are a good problem solver, you could become a good programmer.
• Problem-solving methods are covered in many subject areas:
• Business students learn to solve problems with a systems approach
• Engineering and Science students use the engineering and science methods
• Programmers use the Software Development Method
Important Problem Types
• Sorting
• Searching
• String processing (e.g. string matching)
• Graph problems (e.g. graph coloring problem)
• Combinatorial problems (e.g. maximizes a cost)
• Geometric problems (e.g. convex hull problem)
• Numerical problems (e.g. solving equations )
What is an algorithm?
• Before a computer can perform a task, it musthave an algorithm that tells it what to do.
• Informally: “An algorithm is a set of steps that define how a task is performed.”
• Formally: “An algorithm is an ordered set of unambiguous executable steps, defining a terminating process.”
Every algorithm should have the following 5 feature:1. Input
2. Output
3. Definiteness
4. Effectiveness
5. Termination
Algorithms vs. programs
• When an algorithm is coded using any programming language (e.g. Java), then it is called a program.
• The program is a set of instructions that can run by the computer.
“computer program”
problem
algorithm
input
(or instance)
output
Characteristics of Algorithms
It should be accurate:
- It shouldn’t be ambiguous (each step in the
algorithm should exactly determine the action to be
done).
It should be effective:
- It shouldn’t include a step which is difficult to follow
by a person (or the computer) in order to perform it.
The algorithm should be finite:
- the algorithm has to end up in a point at which the task is complete
Representation of Algorithms
• A single algorithm can be represented in many ways:
• Formulas:
F = (9/5)C + 32
• Words: Multiply the Celsius by 9/5 and add 32.
• Flow Charts.
• In each case, the algorithm stays the same; the implementation differs!
Representation of Algorithms (Cont’d)
• A program is a representation of an algorithm
designed for computer applications.
• Process: Activity of executing a program, or execute the algorithm
represented by the program
• Process: Activity of executing an algorithm.
Problem Solving and Programming Strategy
• Programming is a process of problem solving.
• The problem is solved according to the problem domain (e.g. students, money).
• To be a good problem solver and hence a good programmer, you must follow good problem-solving technique.
One problem solving technique to solve the problem includes:
- Analyzing the problem & outlining the problem’s requirements,
- Designing steps (writing an algorithm)
- Implementing the algorithm in a programming language (e.g. Java) and
verify that the algorithm works,
- Maintaining the program by using and modifying it if the problem domain
changes.
(a) Problem Analysis
1- Thoroughly understand the problem
2- Understand the problem specifications.
3- If the problem is complex, you need to divide it into sub-problems and repeat steps
(1& 2).
That is, you need to analyze each sub-problem and understand its requirements.
Specifications can include the following:
- Does the problem require interaction with the
user?
- Does the problem manipulate data?
-What is the input data & how it is represented?
- Does the problem produce output? How the results should be generated and formatted.
- What are the required formula for solution?
- Is there any constraints on problem solution?
• An Example for Problem Specifications:
Problem Statement:
Determine the total cost of apples given the number of kilos of applespurchased and the cost per kilo of apples.
We can summarize the information contained in the problem statement as follows:
• Problem Input:
- Quantity of apples purchased (in kilos)
- Cost per kilo of apples (in dinars per kilo)
• Problem Output:
- Total cost of apples (in dinars)
• Formula:
Total cost = Number of kilos of apples × Cost per kilo
(b) Algorithm Design and Testing
• The algorithm would consist of at least the
following tasks:
1- Input (Read the data)
2- Processing (Perform the computation)
3- Output (Display the results)
Structured Design:
Dividing the problem into smaller sub-problems is called “structured design”, “top-down design”,
Structured Programming:
In the structured design
- The problem is divided into smaller sub-problems
- Each sub-problem is analyzed
- A solution is obtained to solve the sub-problem
- The solutions of all sub-problems are combined
to solve the overall problem.
This process of implementing a structured design is called “structured programming”
• Testing the Algorithm:
- You need to check the algorithm for correctness
- Use sample data for algorithm testing
(c) Coding
• Coding:
- After verifying that the algorithm is correct,
you can code it in any high-level programming
language
- The algorithm is now converted into a program
(d) Executing the Program
• Compile the program (to check for syntax error)
• Run the program. If the execution doesn’t go well, then reexamine
the code, the algorithm, or even the problem analysis.
Advantages of Structured Programming
• Easy to discover errors in a program that is well
analyzed and well designed.
• Easy to modify a program that is thoroughly
analyzed and carefully deigned.
Programs Flowchart
• It is another way to display the algorithm.
• It is composed of special geometric symbols connected by lines and contain the instructions.
• You can follow the lines from one symbol to another, executing the instructions inside it.
Flowchart
What is a Flowchart?
• The flowchart is a means of visually presenting the flow of control through an information processing systems, the operations performed within the system and the sequence in which they are performed.
• It is a graphic representation of how a process works, showing, at a minimum, the sequence of steps.
• Flowcharts are generally drawn in the early stages of formulating computer solutions.
Flowchart Symbols
• Start / End symbol
• Input/Output symbol
• Processing symbol
• Condition & decision symbol
• Continuation (connection symbol)
• Links
Flowchart Symbols
Guideline for drawing
a flowchart:Flowcharts are usually
drawn using some standard
symbols
Rules for writing flowcharts
• It should be drawn from top to bottom.
• A flowchart always begins with start symbol and ends with stop symbol.
• Flow lines are used to join the symbols
• Decision box should have one entry point and two exit points.
• For lengthy flowcharts, connectors are used to join them.
Advantages of using flowcharts:
• Communication: Flowcharts are better way of communicating the logic of a system
• Effective analysis: Problem can be analyzed in more effective way.
• Proper documentation: Flowcharts serve as a good program documentation
• Efficient Coding: Flowcharts act as a guide or blueprint during the systems analysis and program development phase.
Advantages of using flowcharts(cont…):
• Proper Debugging: Flowchart helps in debugging process.
• Efficient Program Maintenance: The maintenance of operating program becomes easy with the help of flowchart.
Limitations of using flowcharts:
• Complex logic: Sometimes, the program logic is quite complicated. In that case, flowchart becomes complex and clumsy.
• Alterations and Modifications: If alterations are required the flowchart may require re-drawing completely.
• Reproduction: As the flowchart symbols cannot be typed, reproduction of flowchart becomes a problem.
Programs Flowchart types
• Simple sequential (Sequence) Flowchart
• Branched Flowchart
• Loop Flowchart
Programs Flowchart types
• The algorithm and flowchart include following three types of control structures.
1. Sequence: In the sequence structure, statements are placed one after the other and the execution takes place starting from up to down.
2. Branching (Selection): In branch control, there is a condition and according to a condition, a decision of either TRUE or FALSE is achieved. In the case of TRUE, one of the two branches is explored; but in the case of FALSE condition, the other alternative is taken. Generally, the ‘IF-THEN’ is used to represent branch control.
3. Loop (Repetition): The Loop or Repetition allows a statement(s) to be executed repeatedly based on certain loop condition e.g. WHILE, FOR loops.
.
Example – Sequential (Sequence)
Develop an algorithm that will calculate an hourly employee’s
weekly pay
Step 1 : Understand the problem
Input : pay rate and number of hours
Process: pay = rate * hours
Output: pay
.
Algorithm – Calculate pay
Plain English
Ask for the pay rate and the number of hours worked. Multiply the pay
rate by the number of hours. The result is the pay
- looks like code, but not a real language1. Variables: hours, rate, pay
2. Display “Number of hours worked: ”
3. Get hours
4. Display “Amount paid per hour: ”
5. Get rate
6. pay = hours * rate
7. Display “The pay is $” , pay
Notice the importance of order and lack of ambiguity
Example - Flowchart
Start
End
Display “Number
of hours
worked: ”
Get hours
Display
“Amount paid
per hour: ”
Get rate
pay = hours * rate
Display “The
pay is $”, pay
.
Example – Decision Making
Develop an algorithm that will figure out if a number is
positive
Step 1 : Understand the problem
Input : The number
Process: Is it greater than zero?
Output: Message that number is positive or non-positive
.
Algorithm
Plain English
Ask for the number. Check if it is greater than zero. If it is, it is a
positive number. If not (i.e. else), it is not positive1. Variable: num
2. Display “Enter the number: ”
3. Get num
4. if num > 0
5. Display “It is positive”
6. Else
7. Display “It is not positive”
Flowcharts-Decision Making Example
num >0?
Display
“positive”
Display “Not
positive”
True False
If num > 0 display “Positive”
Else (that means 0 or negative) display “Not Positive”
Looping
Develop an algorithm that will add the numbers from 1 to 10. That is
1 + 2 + 3 + …+ 10 = 55
Step 1 : Understand the problem
Input : None needed
Process: Add 0 to 1 to get a new sum. Add 2 to the old sum to get a new sum. Add
3 to the old sum to get a new sum……Add 10 to the old sum to get a new sum
Output: The new sum after 10 iterations
.
Algorithm
Plain English
Start count at 1. Add to the sum (originally zero) to get a new sum.
Increment the count. Repeat the last two steps 10 times
While_Example1. Numeric Variables: counter = 1, sum = 0
2. While counter <= 10:
3. sum = sum + counter
4. counter = counter + 1
5. EndWhile
6. Display “ The sum is”, sum
General Exercisers
Example 1:
1- Write the algorithm and then draw flowchart that
purchase a book from the bookstore??
43
Example 1:
44
Start
Order book
Receive bill
Bay bill
Stop
1. Start
2. Order book
3. Receive bill
4. Bay bill
5. Stop
Example 2:
2-Write the algorithm and then draw flowchart to find the area of circle
A, and the circumference of circle C, radius known R ??
Note:
that the area of the circle = PI × R 2
Circumference = R × PI × 2
PI = 3.14
45
Example 2:
1. Start
2. Read R from user
3. Store the value of PI = 3.14
4. Calculate the area of the circle from the equation PI × A = R 2
5. Calculate the circumference of the circle from equation R × PI × 2C
6. print A and C
7. Stop
46
Example 1:
T. Atheer Aldwighri
Start
Let PI=3.14
Let A=PI*R2
Let C=2PI*R
Read R
Print A,C
Stop
Example 3:
3- write the algorithm and then draw flowchart to find the maximum
value as the following formula:
M = max( A , B)
48
Example 3:
49
1. Start
2. Read A and B.
3. If A> B go to step 4, else go to step 5.
4. M=A, then go to step 6
5. M=B
6. Print M
7. Stop
Example 3:
50
Start
Let M =B
Read A,B
A > B
Let M=A
Print M
Stop
YesNo
Example 4:
4-Draw flowchart to find the following value:
51
x + 1 , x > 0
W(x) = sin(x) + 5 , x = 0
2 x +1 , x < 0
T. Atheer Aldwighri
Example 4:Start
W= 2X-1
Read X
X ?
X+1=W
Print X & W(x)
End
Sin(X)+5=W
X>0X<0
X=0
Example 5:
5- write the algorithm and then draw flow chart For the tank self-fills
with water, when it becomes high 1m?
53
Example 5:
54
• 1: Start
• 2: Is the water level less than a meter?
• If yes go to step 3, else go to 5
• 3: Open the feeding tap
• 4: Fill the tank
• 5: Close the tap
• 6: go to 2 to check the water level
Start
Level<1m?
No
Open feeding Tap
yes
Fill tank
Keep Tap closed
Example 6:
6- Write the algorithm and then draw flowchart that prints numbers
from 1 to 100 and its squares?
55
Example 6:
56
1. Start
2. I=0
3. I=I+1
4. J=I*I
5. Print I , J
6. Is I=100? if the answer is yes then go to step 7
else go to step 3.
7. Stop
Example 6:
57
start
I <=100
No
yes
Let I=0
Let I = I + 1
Let J = I * I
stop
Print I , J
Summary
• Learn about problem solving skills
• Become aware of problem-solving process
• Explore the algorithmic approach for problem solving
• Flowchart
• Problem Solving and Programming Strategy
• General exercisers on algorithms