0% found this document useful (0 votes)
38 views

Lecture - 02 - Problem Solving and Algorithm

This document provides an overview of problem solving and algorithms. It discusses what problem solving is, common problem solving strategies like guess and check, working backward, divide and conquer, and looking for patterns. It also describes how problems are solved using computers through the software development method. This involves requirements specification, analysis, design, implementation, testing, and documentation. The document outlines the basic steps in software development and provides examples of flowcharts and pseudocode for representing algorithms.

Uploaded by

Siti Azzaharah
Copyright
© © All Rights Reserved
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
38 views

Lecture - 02 - Problem Solving and Algorithm

This document provides an overview of problem solving and algorithms. It discusses what problem solving is, common problem solving strategies like guess and check, working backward, divide and conquer, and looking for patterns. It also describes how problems are solved using computers through the software development method. This involves requirements specification, analysis, design, implementation, testing, and documentation. The document outlines the basic steps in software development and provides examples of flowcharts and pseudocode for representing algorithms.

Uploaded by

Siti Azzaharah
Copyright
© © All Rights Reserved
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
You are on page 1/ 77

TMF 1414

Introduction to Programming
Lecture 02: Problem Solving and Algorithms
We will learn about:
 What is Problem Solving?
 How to solve a problem?
 Problem Solving Strategies
 Solving problem with computer
 Software Development Method of Problem
Solving
 Steps in the Software Development Method
 Design & representation of algorithms
 Programming errors & debugging
 Program verification & testing
 Flowchart & Pseudocode
What is Problem Solving?

 Definition:
 Problem solving is the process of transforming the
description of a problem into the solution of that
problem by using our knowledge of the problem
domain and by relying on our ability to select and use
appropriate problem-solving strategies, techniques
and tools.
Problems Faced in Everyday Life

 People make decisions everyday


 Examples:
 Should I wear casual or formal today?
 Should I watch TV or go out to cinema?
 Where is my what c programming lab?
 What is the course code?
 Where to put my bag?
 Everything needs a DECISION AS A SOLUTION TO THE
PROBLEM
Steps to solve a problem

 Step 1: Identify the problem


 Step 2: Determine the problem-solving strategy to apply
 Step 3: Design the solution
 Step 4: Execute the solution
 Step 5: Evaluate the successfulness of the solution
 Many strategies can be use in solving problem.
 Most popular type of strategy is the “Art of War” by Sung Zhi
(Ancient Chinese Philosopher)
Problem  We will learn:

Solving  Guess and Check (Try an Error)


 Start at the end (Work Backward)
Strategies  Divide and Conquer
 Look for a Pattern
Guess and Check (Try and Error)
 Simplest strategy available.
 Just experimenting with the possible solution.
 A bit time consuming if have a lot of possible solution.
 But it is very efficient and practical for solving small or medium problem.
 Example:
 Prince A divided 15 stone games into two piles: games he owns and games his brother
owns.
 He owns 3 more games than his brother.
 How many games does his brother own?
 Solution
 I'll guess his brother owns 8 games.
 That means Prince Carl owns 11 games. That's a total of 19 games.
 My guess is too high.
 I'll guess again. This time I'll guess his brother owns 6 games.
 That means Prince Carl owns 9 games. That's a total of 15 games.
 My guess is right.
 His brother owns 6 games.
Start at The End (Working Backward)

 Sometime to solve some problem, you may need to undo some of the key
actions in the problem.
 Also known as bottom-up approach.
 Example:
The castle kitchen servants brought in 4 pies left over from the feast. 12 pies
were eaten at the feast. Queen Mab took 2 home with her. How many pies did
the servants bring into the feast at the beginning?
 Solution
 First, I'll account for all the pies that were eaten or taken home.
 12 + 2 = 14
 Then I'll add the 4 pies that were left over.
 14 + 4 + 18
 Therefore, there must have been 18 pies at the start of the feast.
Divide and Conquer

 Most popular strategy used in problem solving.


 Used by Napoleon in his quest to conquer the world.
 Often break up large problems into smaller units that are easier to handle.
Look for a pattern
 More advance way to solve a complicated problem.
 Some problem can be solved by recognizing pattern within the domain.
 Example:
Daniel arranged loaves of bread on 6 shelves in the bakery. He put 1 loaf on the top
shelf, 3 loaves on the second shelf, and 5 loaves on the third shelf. If he continues
this pattern, how many loaves did Daniel put on the 6 th shelf?
 Solution

Shelf 1 2 3 4 5 6

Loaves 1 3 5 7 9 11
Other Strategies

TIPS:
 Drawings/modeling
STRATEGY IS ONLY TO HELP YOU TO SOLVE
 Logical Reasoning PROBLEM. MOST IMPORTANT THING IS TO
 Extra Information KEEP YOUR MIND COOL AND TRY TO FIND
WAYS TO OVERCOME THE DIFFICULTIES!!
Computers use algorithmic solutions:

Program – set of instructions that make up


solution to a problem

Solving
Results – outcome of running the program
Problem
with Testing – Are the outcomes what we expected
and correct
Computer
Documentation

Manual documentation – instructions telling


users how to use the program
Clearly define the problem.

Analyse the problem and formulate a method to solve it.

Describe the solution in the form of an algorithm.


Problem
Draw a flowchart of the algorithm.
solving with
computers Write the computer program.
involves
Compile and run the program (debugging).
several steps
Test the program (debugging) – see also verification.

Interpretation of results.
 Thus, we use software development method which consists of the
following steps:
• Requirement specification
• Analysis
• Design
• Implementation
• Testing and verification
• Documentation
Solving a Problem vs Developing a
program
Steps to solve problem Software Development Method
Step 1: Identify the problem Step 1: Requirement specification

Step 2: Identify the possible solution Step 2: Analysis


and determine the best applicable
solution

Step 3: Design the solution Step 3: Design

Step 4: Execute the solution Step 4: Implementation

Step 5: Evaluate the successfulness of Step 5: Testing and verification


the solution

Step 6: Documentation
Requirement
Analysis
Specification

Basic Steps in
Implementation &
Design
Deployment Software/Application
Development

Testing Documentation
Requirement Specification

 A task to determine the needs and conditions


(including scope) to meet in the new system.
 Requirements can be obtained through
several methods:
 Brainstorming session
 Survey
 Interview
 Observation
 Others
Analysis

 After obtaining the requirements, then the


software developer need to study the
approach/ method to solve the problem.
 Using different problem techniques.
 Determine best solution from given options.
Design
 A crucial phase before the actual coding
process.
 Several thing need to be considered during
the design of an application or software:
 Compatibility
 Extensibility
 Reliability
 Reusability
 Robustness
 Usability
Design

 Designing software usually is


designing an Algorithm.
 An Algorithm is a sequence of a
finite number of steps arranged in
a specific logical order, which,
when executed, produce the
solution for a problem.
Design

• An algorithm must satisfy some


requirements:
– Unambiguousness
– It must not be ambiguous.
– Computers cannot cope with
ambiguous.
– Therefore, every step in an algorithm
must be clear as to what it is supposed
to do and how many times it is
expected to be executed.
Design

– Generality
– It must have generality.
– A procedure that prints the message
“One inch is 2.54 cm” is not an
algorithm;
– however, one that converts a supplied
number of inches to centimeters is an
algorithm.
Design

– Correctness
– It must be correct and must solve the
problem for which it is designed.
– Finiteness
 It must execute its steps and terminate
in finite time.
 An algorithm that never terminates is
unacceptable.
 A specific and step-by-step set of
Algorithm instructions for carrying out a procedure or
solving a problem, usually with the
requirement that the procedure terminate at
some point.

 2 types of algorithm representation will be


explained:
 Flowchart
 Pseudocode
 A semiformal, English-like language (or other
language that can be understand by human being)

Pseudocode  Limited vocabulary that can be used to design and


describe algorithms.
 Not executed on computers
 A carefully prepared pseudocode program may be
converted easily to a corresponding C program
 A pseudocode can be used for:
 Designing algorithms
 Communicating algorithms to users
 Implementing algorithms as programs
 Debugging logic errors in program
 Documenting programs for future maintenance
and expansion purposes
Pseudocode
 A pseudocode must meet these requirements:
 Have a limited vocabulary
 Be easy to learn
 Produce simple, English-like narrative notation
 Be capable of describing all algorithms,
regardless of their complexity
An algorithm can be written in pseudocode using six (6)
basic computer operations:
 Receive
How to write  Output
Pseudocode  Arithmetic operation
 Assign
 Compare
 Repeat
 A computer can receive information.

How to write Typical pseudocode instructions to receive


information are:
Pseudocode Read name
Get name
Read number1, number2
 A computer can output (print) information.
Typical pseudocode instructions are:
Print name
Write "The average is", ave
How to write

Pseudocode A computer can perform arithmetic operation
Typical pseudocode instructions:
Add number to total
Total = Total + Number
Ave = sum/total
 A computer can assign a value to a piece of
data:
To assign/give data an initial value:
How to write Initialize total to zero

Pseudocode Set count to 0

To assign a computed value:


Total = Price + Tax
 A computer can compare two pieces of information and
select one of two alternative actions.
Typical pseudocode e.g.

How to write If number < 0 then


Pseudocode add 1 to neg_number
else
add one to pos_number
end-if
A computer can repeat a group of actions
Typical pseudocode e.g.
Repeat until total = 50
read number
write number

How to write add 1 to total


end-repeat
Pseudocode OR
while total < = 50
do:
read number
write number
end-while
Start

Read status

• if
• status is equal to 1
• print “on”
• else if
Another • status is equal to 0
Example of • print “ Off”
• else
Pseudocode • print “Error in status code”
• end if

End
Algorithm in Real-Life

Actually, our daily life/routine can also be written


using a pseudocode

Consider the following real-life case on baking a


cake.

How to write it in a proper pseudocode?


Baking a Cake (pseudocode)

 Start
 Preheat the oven at 180oC
 Prepare a baking pan
 Beat butter with sugar
 Mix them with flour, eggs and
essence vanilla
 Pour the dough into the
baking pan
 Put the pan into the oven
 End
Algorithm in Real-Life

 Let’s see how to write a simple pseudocode on


how to prepare a breakfast
Algorithm in Real-life

Some of you may write this simple answer:

Start
Prepare the breakfast
End
Algorithm in Real-Life

1.Start
2. Prepare a Breakfast
2.1. Prepare a tuna sandwich
OR some of you 2.1.1 Take 2 slices of bread
may write the 2.1.2 Prepare tuna paste
pseudocode in more 2.2. Prepare some chips
detail on preparing a 2.2.1 Cut potatoes into slices
breakfast 2.2.2 Fry the potatoes
2.3. Make a cup of coffee
2.3.1 Boil water
2.3.2 Add water with sugar and coffee
3. End
 Flowchart is another technique
Flowchart used in designing and
representing algorithms.
 It is an alternative to
pseudocode; whereas a
pseudocode description is
verbal while a flowchart is
graphical in nature.
 a graph consisting of geometrical shapes
that are connected by flow lines
Flowchart Symbols
Symbol Representation Symbol Representation

Start/Stop Decision

Process Connector

Input/Output Flow Direction

Sub-module / Function
(Barred Rectangle)
Flowchart Symbols – Start / Stop

 This symbol shows where a program starts Start


and stops (program or module).
 To identify the beginning and end of a whole Stop
program.
 The beginning terminal is labeled with start
and the ending terminal is labeled with end or
stop.
 When the flowchart is for a module, the
beginning terminal is labeled with the module  Start
 

name and the ending terminal is labeled with
return or exit. Stop
Flowchart Symbols – Process

Used to show tasks such as calculations, assignment


statements, incrementing, etc.

Processes are labeled with the statement the task to be performed, for
example:

totalSales = subTotal + pstAmount + gstAmount


Area = Length * Width
firstName = "Sally"
Area = Length * Width
Flowchart Symbols – Input/Output

Used to show an operation that brings data into a program, or


an operation that sends data out of the program.

• For example, getting values from the user or printing something on the
screen.
• Input/output symbols are labeled with the statement that receives the input
or generates the output, which could also include opening files and devices.

Examples
get stdNumber get stdNumber
Flowchart Symbols - Decision

Used to identify a point in the program where a condition is


evaluated. Conditions are used in if statements and looping.

• Decisions are labeled with the condition that they are testing, for example:

numRecords > 10
foundMatch = true
Yes No
numRecords > 10
Sequence structure

statement_1 statement_2 … statement_n

Selection structure
Yes
then-part

condition

else-part
No

-------------------------------------------------------------------
Yes
then-part

condition

No
Repetition structure

Yes
loop-body

condition

No
Used to connect two segments of flowchart that appear on the same
page.

This is done when your flowchart runs to the bottom of the page and we are
out of room: end it with an on-page connector and then place another on-page
connector in a free spot on the page, and continue the flowchart from that
connector.

• On-page connectors are labeled with upper-case letters.


• The connector at the end of a segment of flowchart will match the connector that
identifies the rest of the flowchart.
• For example, when we run out of room, end the flowchart with a connector labeled
"A".
• The flowchart continues at the matching connector also labeled "A".
AA

AA
Used to specify a function/module call or a group of related
statements.

Example Start Submodule

Submodule

Return

End
Communication
• Flowcharts are better way of communicating the logic of a system to all
concerned.

Effective analysis
• With the help of flowchart, problem can be analyzed in more effective way.

Proper documentation
The benefits • Program flowcharts serve as a good program documentation, which is needed
for various purposes.
of Efficient Coding

flowcharts • The flowcharts act as a guide or blueprint during the systems analysis and
program development phase.

Proper Debugging
• The flowchart helps in debugging process.

Efficient Program Maintenance


• The maintenance of operating program becomes easy with the help of flowchart.
It helps the programmer to put efforts more efficiently on that part
Something to ponder

What is the problem-


solving process?
Problem Solving Process

Input Process Output


Example 1
 Calculate and display the price of apple(s).Lets assume the weight in kg and price
per kg are given.

Input Process Output


• Weight
• Price_per_kg Price = Weight * Price_per_kg Price
Flowchart: Calculate Price of Apples
Start

Input
Quantity

Input
Price_per_kg

Price = Quantity * Price_per_kg

Output
Price

End
59
Programming Error
• Another challenge that awaits is program debugging.

Debugging is defined as the process of finding and correcting errors in computer


programs.

• No matter how careful you are as a programmer, most programs you write will contain
errors. Either they won’t compile, or they won’t execute properly.
•This situation is something that happens very frequently to every programmer. You
should take program debugging as a challenge, develop your debugging skills, and enjoy
the process.

There are three types of programming errors:

• Syntax errors
• Logic errors
• Run-time errors
60
Programming Error
 Syntax error:
 is violation of syntax rule, which define how the elements of a
programming language must be written.
 They occur during the implementation phase and are detected
by the compiler during the compilation process.
 Another name for syntax error is compilation error.
 Logic error:
 occur during the analysis, design, and implementation phases.
 We may choose an incorrect method of solution for the problem
to be solved, mistakes in translating an algorithm into a program
or design erroneous data for the program.
 Run-time error:
 are detected by the computer while the program is being
executed.
 They are caused by program instructions that require the
computer to do something illegal, such as attempting to
store inappropriate data or divide a number by zero.
Debug

 To fix the program error, programmer


will do debugging task by using
debugger
 Debugging process can be very
frustrating especially involving huge
amount of coding
 Good to have good programming style
and documentation in coding!
Debug

 Debugger
 is a computer program that is used
to test and debug other programs.
 Usually comes together with
compilers
 Debugger will help programmer by
provide list of error in compiling
the program
 Still depends on programmers to
solve the problem!!
Debug
 Debugging technique
 Probe
 Put an external variable inside the
program and try to force the program to
output result in the middle.
 Good to trace modular logic error or data
error.
 Trace
 Back-tracking or front-tracking.
 Go step-by-step (or line-by-line) to
detect error.
 Good in tracking logic error
Testing and Verification
• In this phase, the main objective is to convince yourself and eventually your clients
that the program will do what it is expected to do. In other words, you will want to
verify that your program is correct.

Program verification is the process of ensuring that a program meets user


requirements.

• One of the techniques that can be used for program verification is program testing.

Program testing is the process of executing a program to demonstrate its


correctness.

• A program must be tested using a sufficiently large sample of carefully designed test
data sets such that every logical path in the program is traversed at least once.
• You must continue to test your program until you are sure that all statements in it are
functioning correctly.

64
Documentation
 Program documentation consists of these
elements:
 A concise requirements specification
 Descriptions of problem inputs, expected
outputs, constraints, and applicable formula
 A pseudocode and flowchart for its algorithm
 A source program listing
 A hardcopy of a sample test run of the
program
 A user’s guide explaining to non-programmer
users how the program should be used.
 Documentation can and should be done within
the coding itself by using comments!!

65
End of Lecture 02
Let’s test your understanding on
ALGORITHM
TEST 1

Write your pseudocode and then


draw a flowchart for making a pot
of coffee.
One of Possible Answers:

Pseudocode:

Start
• Fill a kettle with water
• Boil the water in the kettle
• Put the coffee powder and sugar inside the pot
• Pour boiling water in the pot

End
Flowchart
Start

Fill a kettle with water

Boil the water in the kettle

Put the coffee powder and


sugar inside the pot

Pour boiling water in the pot

End
TEST 2

Design the algorithm (pseudo-code) and


flowchart for calculating the perimeter of a
circle.
One of Possible Answers:

Pseudocode:

Start

• Input Radius
• Calculate perimeter = 44/7 * Radius
• Print Perimeter

End
Flowchart
Start

Input Radius

Perimeter = 44/7 * Radius

Print Perimeter

End
TEST 3

Design the algorithm (use pseudo-code


& flowchart) for summing the two
numbers.
One of Possible Answers:

Pseudocode:

Start
• Input X
• Input Y
• Calculate
• Sum=x+y
• Print Sum

End
Flowchart
Start

Input X

Input Y

Sum = X+Y

Print Sum

End

You might also like