Problem Solving
There are 3 basic steps for solving any problem using computer/computer program
1. Analyse / Define problem
2. Design Solution (developing an algorithm, coding, testing and debugging)
3. Implement solution
1. Analyse / Define problem
The process of understanding the problem and then defining it on the basis of
following:
• Data requirement of the given problem
• Type of input variable required
• Type of output variable required is called problem definition
2. Design Solution
Design is a process to transform user requirements into some suitable form, which
helps the programmer in software coding and implementation. Programming tools,
program design tools are the tools used to develop a program. following are some of
them
• Algorithm
Flowchart
Pseudo-code
Designing an algorithm:
An algorithm is a plan, a logical step-by-step process for solving a problem.
Algorithms are normally written as a flowchart or in pseudo-code as it’s next level.
When designing an algorithm there are two main areas to look at:
• the big picture- What is the final goal?
• the individual stages– What hurdles need to be overcome on the way to the goal?
An algorithm to Find largest of two numbers
Step 1: Start
Step 2: Declare variables a,b
Step 3: Read variables a,b
Step 4: If a>b
If a>b
Display a is the largest number.
Else
Display b is the largest number
A flowchart is simply a graphical representation of steps. It shows steps in a
sequential order, and is widely used in presenting flow of algorithms, workflow or
processes. Typically, flowchart shows the steps as boxes of various kinds, and their
order by connecting them with arrows.
Flowchart Symbols
Different flowchart shapes have different conventional meanings. The meanings of
some of the more commonshapes are asfollows:
1. Terminator
The terminator symbol represents the starting or ending point of the system.
2. Process
A box indicates some particular operation.
3. Document
This represents a printout, such as a document or a report
4. Decision
A diamond represents a decision or branching point. Lines coming out from the
diamond indicates different possible situations, leading to different sub-processes.
5. Data
It represents information entering or leaving the system. An input might be an order
from a customer. An output can be a product to be delivered.
6. Flow
Lines represent flow of the sequence and direction of a process
Representation of algorithm using flowchart
E.g. Flowchart for addition of two numbers
Example- Flowchart for finding largest of two numbers
Pseudo-code
Pseudocode is not a programming language, it is a simple way of describing a set of
instructions that does not have to use specific syntax. There is no strict set of
standard notations for pseudocode, but some of the most widely recognised are:
INPUT/READ– indicates a user will be inputting something
OUTPUT/WRITE– indicates that an output will appear on the screen
WHILE–a loop (iteration that has a condition at the beginning)
FOR–a counting loop (iteration)
REPEAT– UNTIL – a loop (iteration) that has a condition at the end
IF – THEN – ELSE – a decision (selection) in which a choice is made any
instructions that occur inside a selection or iteration are usually indented
Example- Pseudocode to find out largest of two numbers
Write "please enter 2 numbers"
Read n1,n2
If(n1 > n2)
Set max to n1
Else
Set max to n2
Difference between algorithm and pseudo-code
An algorithm is a well defined sequence of steps that provides a solution for a given
problem, while a pseudocode is one of the methods that can be used to represent an
algorithm.
While algorithms can be written in natural language, pseudocode is written in a
format that is closely related to high level programming language structures.
Pseudocode does not use specific programming language syntax and therefore could
be understood by programmers who are familiar with different programming
language.
Transforming an algorithm presented in pseudocode to programming code could be
much easier than converting an algorithm written in natural language
Coding :
Coding is basically implementing logic/algorithm/pseudocode (derived from
requirement analysis/problem definition) in one of the preferred programming
language(C,C++ Java, Javascript, python etc) as per the protocols/rules/syntactic
grammar of the choosen language by following the design decisions.
Testing :
Software Testing is a method to check whether the actual software product matches
expected requirements and to ensure that software product is Defect free. Testing is
Important because if there are any bugs or errors in the software, it can be identified
early and can be solved before delivery of the software product. Properly tested
software product ensures reliability, security and high performance which further
results in time saving, cost effectiveness and customer satisfaction
Types of Software Testing
• Functional Testing
• Non-Functional Testing or Performance Testing
• Maintenance (Regression and Maintenance)
Debugging Software programs goes through testing, updating, troubleshooting, and
maintenance during the development process. Usually, software contains errors and
bugs, which are removed routinely. Debugging is the process of fixing a bug in the
software. Debugging Steps->
3. Implementation
Implementation refers to the process of adopting and integrating a software
application into a real environment.Implementation of new tools and software into
an enterprise can be complex, depending on the size of the organization and the
software.
Implementation Methods
Parallel- When the new system is used at the same time as the old system the two
systems are said to be running in parallel.
Phased-When small parts of the new system gradually replace small parts of the old
system, the implementation method is said to be phased.
Pilot-When a small group of users within an organization uses a new system prior to
wider use, the system is said to be piloted.
Direct-When a new system is implemented without any phased or pilot
implementation
Decomposition
Decomposition also known as factoring, is breaking a complex problem or system
into parts that are easier to conceive, understand, program, and maintain.
Need for decomposing a problem: It involves breaking down a complex problem or
system into smaller parts that are more manageable and easier to understand. The
smaller parts can then be examined and solved, or designed individually, as they are
simpler to work with.
Example of Decomposition
1. Banking Transaction System
2. Library Management System
3. Payroll System