Ge1105 Problem Solving and Python Programming Unit - 1
Ge1105 Problem Solving and Python Programming Unit - 1
Ge1105 Problem Solving and Python Programming Unit - 1
UNIT 1
ALGORITHMIC PROBLEM SOLVING
Algorithms, building blocks of algorithms (statements, state, control flow, functions), notation
(pseudo code, flow chart, programming language), algorithmic problem solving, Basic
algorithms, flowcharts, and pseudocode for sequential, decision processing, and iterative
processing strategies, Illustrative problems: find minimum in a list, insert a card in a list of sorted
cards, guess an integer number in a range, Towers of Hanoi.
PROBLEM-SOLVING
Problem-solving is the systematic approach to defining the problem and creating several solutions.
The problem-solving process starts with the problem specifications and ends with a Correct program.
PROBLEM-SOLVING TECHNIQUES
The problem-solving technique is a set of techniques that helps in providing logic for solving a
problem.
Problem-Solving Techniques:
Problem-solving can be expressed in the form of
1. Algorithms.
2. Flowcharts.
3. Pseudo codes.
4. programs
ALGORITHM
It is defined as a sequence of instructions that describe a method for solving a problem. In other
words, it is a step-by-step procedure for solving a problem.
Properties of Algorithms
• Should be written in simple English
• Each and every instruction should be precise and unambiguous.
• Instructions in an algorithm should not be repeated infinitely.
• An algorithm should conclude after a finite number of steps.
• Should have an endpoint
• Derived results should be obtained only after the algorithm terminates.
P a g e 1 | 33
St. Joseph’s College of Engineering
GE1105 PROBLEM SOLVING AND PYTHON PROGRAMMING UNIT - 1
2. State:
Transitioning from one process to another process under the specified condition within a time is
called a state.
3. Control flow:
The process of executing the individual statements in a given order is called control flow.
The control can be executed in three ways
a) sequence
b) selection
c) iteration
Sequence:
All the instructions are executed one after another is called sequence execution.
P a g e 2 | 33
St. Joseph’s College of Engineering
GE1105 PROBLEM SOLVING AND PYTHON PROGRAMMING UNIT - 1
Example:
Add two numbers:
Step 1: Start
Step 2: get a,b
Step 3: calculate c=a+b
Step 4: Display c
Step 5: Stop
a) Selection:
A selection statement causes the program control to be transferred to a specific part of the program
based on the condition.
If the conditional test is true, one part of the program will be executed, otherwise, it will execute the
other part of the program.
Example
Write an algorithm to check whether he is
eligible to vote?
Step 1: Start
Step 2: Get the age
Step 3: if age >= 18 print “Eligible to vote”
Step 4: else print “Not eligible to vote”
Step 6: Stop
b) Iteration:
In some programs, a certain set of statements are executed again and again based upon the
conditional tests. i.e. executed more than one time. This type of execution is called looping or
iteration.
P a g e 3 | 33
St. Joseph’s College of Engineering
GE1105 PROBLEM SOLVING AND PYTHON PROGRAMMING UNIT - 1
Example
Write an algorithm to print all natural numbers up to n
Step 1: Start
Step 2: get n value.
Step 3: initialize i=1
Step 4: if (i<=n) go to step 5 else go to step 7
Step 5: Print i value and increment i value by 1
Step 6: go to step 4
Step 7: Stop
4. Functions:
A function is a subprogram that consists of a block of code(set of instructions) that performs a
particular task.
For complex problems, the problem is been divided into smaller and simpler tasks during algorithm
design.
Benefits of Using Functions
• Reduction in line of code
• code reuse
• Better readability
• Information hiding
• Easy to debug and test
• Improved maintainability
Example
Algorithm for the addition of two numbers using function
Main function() sub function add()
Step 1: Start Step 1: Function start
Step 2: Call the function add() Step 2: Get a, b Values
Step 3: Stop Step 3: add c=a+b
Step 4: Print c
Step 5: Return
P a g e 4 | 33
St. Joseph’s College of Engineering
GE1105 PROBLEM SOLVING AND PYTHON PROGRAMMING UNIT - 1
NOTATIONS
FLOW CHART
A flow chart is defined as a graphical representation of the logic for problem-solving.
The purpose of the flowchart is to make the logic of the program clear in a visual representation.
P a g e 5 | 33
St. Joseph’s College of Engineering
GE1105 PROBLEM SOLVING AND PYTHON PROGRAMMING UNIT - 1
4. Only one flow line should enter a decision symbol. However, two or three flow lines may leave
the decision symbol.
Advantages of flowchart:
i. Communication: - Flowcharts are a better way of communicating the logic of a system to all
concerned.
ii. Effective analysis: - With the help of a flowchart, the problem can be analyzed more
effectively.
iii. Proper documentation: - Program flowcharts serve as good program documentation, which
is needed for various purposes.
iv. Efficient Coding: - The flowcharts act as a guide or blueprint during the systems analysis
and program development phase.
v. Proper Debugging: - The flowchart helps in debugging process.
vi. Efficient Program Maintenance: - The maintenance of the operating program becomes easy
with the help of a flowchart. It helps the programmer to put efforts more efficiently into that
part.
P a g e 6 | 33
St. Joseph’s College of Engineering
GE1105 PROBLEM SOLVING AND PYTHON PROGRAMMING UNIT - 1
PSEUDO CODE:
i. Pseudocode consists of short, readable, and formally styled English languages used to
explaining an algorithm.
ii. It does not include details like variable declaration, and subroutines.
iii. It is easier to understand for the programmer or nonprogrammer to understand the general
working of the program because it is not based on any programming language.
iv. It gives us a sketch of the program before actual coding.
v. It is not a machine-readable
vi. Pseudocode can’t be compiled and executed.
vii. There is no standard syntax for pseudo code.
Guidelines for writing pseudo code:
• Write one statement per line
• Capitalize the initial keyword
• Indent to the hierarchy
• End multiline structure
• Keep statements language independent
Common keywords used in pseudocode
The following gives common keywords used in pseudocodes.
1. //: This keyword is used to represent a comment.
2. BEGIN, END: Begin is the first statement and end is the last statement.
3. INPUT, GET, READ: The keyword is used to inputting data.
4. COMPUTE, CALCULATE: used for calculation of the result of the given expression.
5. ADD, SUBTRACT, INITIALIZE used for addition, subtraction and initialization.
6. OUTPUT, PRINT, DISPLAY: It is used to display the output of the program.
7. IF, ELSE, ENDIF: used to make a decision.
8. WHILE, ENDWHILE: used for iterative statements.
9. FOR, ENDFOR: Another iterative incremented/decremented tested automatically.
P a g e 7 | 33
St. Joseph’s College of Engineering
GE1105 PROBLEM SOLVING AND PYTHON PROGRAMMING UNIT - 1
Advantages:
• Pseudo is independent of any language; it can be used by most programmers.
• It is easy to translate pseudo code into a programming language.
• It can be easily modified as compared to a flowchart.
• Converting a pseudo code to a programming language is very easy compared with converting
a flowchart to a programming language.
Disadvantages:
• It does not provide a visual representation of the program’s logic.
• There are no accepted standards for writing pseudo codes.
• It cannot be compiled or executed.
• For a beginner, It is more difficult to follow the logic or write pseudo code as compared to a
flowchart.
P a g e 8 | 33
St. Joseph’s College of Engineering
GE1105 PROBLEM SOLVING AND PYTHON PROGRAMMING UNIT - 1
Example:
Addition of two numbers:
BEGIN
GET a,b
ADD c=a+b
PRINT c
END
PROGRAMMING LANGUAGE
A programming language is a set of symbols and rules for instructing a computer to perform specific
tasks. The programmers have to follow all the specified rules before writing a program using a
programming language. The user has to communicate with the computer using language that it can
understand.
Types of programming language
i. Machine language
ii. Assembly language
iii. High-level language
i. Machine language:
The computer can understand only machine language which uses 0’s and 1’s. In machine language,
the different instructions are formed by taking different combinations of 0’s and 1’s.
Advantages:
Translation free:
Machine language is the only language that the computer understands. For executing any program
written in any programming language, the conversion to machine language is necessary. The program
written in machine language can be executed directly on a computer. In this case, any conversion
process is not required.
P a g e 9 | 33
St. Joseph’s College of Engineering
GE1105 PROBLEM SOLVING AND PYTHON PROGRAMMING UNIT - 1
High speed
The machine language program is translation free. Since the conversion time is saved, the execution
of the machine language program is extremely fast.
Disadvantage:
• It is hard to find errors in a program written in machine language.
• Writing programs in machine language is a time-consuming process.
Machine dependent: According to the architecture used, the computer differs from each other. So
machine language differs from computer to computer. So a program developed for a particular type of
computer may not run on other types of computer.
ii. Assembly language: To overcome the issues in programming language and make the
programming process easier, an assembly language is developed which is logically equivalent to
machine language but is easier for people to read, write and understand.
Assembly language is a symbolic representation of machine language. Assembly languages are
symbolic programming language that uses symbolic notation to represent machine language
instructions. They are called low-level languages because they are so closely related to machines.
Assembler
Assembler is the program that translates assembly language instruction into a machine language.
• Easy to understand and use.
• It is easy to locate and correct errors.
Disadvantage
Machine dependent
The assembly language program which can be executed on the machine depends on the architecture
of that computer.
Hard to learn
It is machine-dependent, so the programmer should have the hardware knowledge to create
applications using assembly language.
Less efficient
• Execution time of an assembly language program is more than machine language program.
• Because an assembler is needed to convert from assembly language to machine language.
iii. High-level language
The high-level language contains English words and symbols. The specified rules are to be followed
while writing a program in a high-level language. The interpreter or compilers are used for converting
these programs into machine-readable form.
P a g e 10 | 33
St. Joseph’s College of Engineering
GE1105 PROBLEM SOLVING AND PYTHON PROGRAMMING UNIT - 1
P a g e 11 | 33
St. Joseph’s College of Engineering
GE1105 PROBLEM SOLVING AND PYTHON PROGRAMMING UNIT - 1
P a g e 12 | 33
St. Joseph’s College of Engineering
GE1105 PROBLEM SOLVING AND PYTHON PROGRAMMING UNIT - 1
Analyzing an Algorithm
1. Efficiency.
• Time efficiency, indicating how fast the algorithm runs,
• Space efficiency indicates how much extra memory it uses.
2. simplicity.
• An algorithm should be precisely defined and investigated with mathematical expressions.
• Simpler algorithms are easier to understand and easier to program.
• Simple algorithms usually contain fewer bugs.
Coding an Algorithm
Most algorithms are destined to be ultimately implemented as computer programs. Programming an
algorithm presents both a peril and an opportunity.
A working program provides an additional opportunity in allowing an empirical analysis of the
underlying algorithm. Such an analysis is based on timing the program on several inputs and then
analyzing the results obtained.
1. Iterations
2. Recursions
1. Iterations:
A sequence of statements is executed until a specified condition is true is called iterations.
[1] for loop
[2] While loop
P a g e 14 | 33
St. Joseph’s College of Engineering
GE1105 PROBLEM SOLVING AND PYTHON PROGRAMMING UNIT - 1
Recursions:
A function that calls itself is known as recursion.
Recursion is a process by which a function calls itself repeatedly until some specified condition has
been satisfied.
Algorithm for factorial of n numbers using recursion:
Main function: Sub function factorial(n):
Step1: Start Step1: if(n==1) then fact=1 return fact
Step2: Get n Step2: else fact=n*factorial(n-1) and return fact
Step3: call factorial(n)
Step4: print fact
Step5: Stop
P a g e 15 | 33
St. Joseph’s College of Engineering
GE1105 PROBLEM SOLVING AND PYTHON PROGRAMMING UNIT - 1
P a g e 16 | 33
St. Joseph’s College of Engineering
GE1105 PROBLEM SOLVING AND PYTHON PROGRAMMING UNIT - 1
MORE EXAMPLES
1. Write an algorithm to find area of a rectangle
Step 1: Start BEGIN
Step 2: get l,b values READ l,b
Step 3: Calculate A=l*b CALCULATE A=l*b
Step 4: Display A DISPLAY A
Step 5: Stop END
P a g e 17 | 33
St. Joseph’s College of Engineering
GE1105 PROBLEM SOLVING AND PYTHON PROGRAMMING UNIT - 1
P a g e 18 | 33
St. Joseph’s College of Engineering
GE1105 PROBLEM SOLVING AND PYTHON PROGRAMMING UNIT - 1
P a g e 19 | 33
St. Joseph’s College of Engineering
GE1105 PROBLEM SOLVING AND PYTHON PROGRAMMING UNIT - 1
10. Write an algorithm to check whether given number is +ve, -ve or zero.
P a g e 20 | 33
St. Joseph’s College of Engineering
GE1105 PROBLEM SOLVING AND PYTHON PROGRAMMING UNIT - 1
P a g e 21 | 33
St. Joseph’s College of Engineering
GE1105 PROBLEM SOLVING AND PYTHON PROGRAMMING UNIT - 1
P a g e 22 | 33
St. Joseph’s College of Engineering
GE1105 PROBLEM SOLVING AND PYTHON PROGRAMMING UNIT - 1
P a g e 23 | 33
St. Joseph’s College of Engineering
GE1105 PROBLEM SOLVING AND PYTHON PROGRAMMING UNIT - 1
ILLUSTRATIVE PROBLEMS
1. Guess an integer in a range
Algorithm: Pseudocode:
Step1: Start BEGIN
Step 2: Declare hidden, guess COMPUTE hidden=random value in range
Step 3: Compute hidden= Choose a random READ guess
value in a range
IF guess=hidden, then
Step 4: Read guess
PRINT Guess is hit
Step 5: If guess=hidden, then
ELSE
Print Guess is hit
PRINT Guess not hit
Else
PRINT hidden
Print Guess not hit
END IF-ELSE
Print hidden
END
Step 6: Stop
Flowchart:
P a g e 24 | 33
St. Joseph’s College of Engineering
GE1105 PROBLEM SOLVING AND PYTHON PROGRAMMING UNIT - 1
P a g e 25 | 33
St. Joseph’s College of Engineering
GE1105 PROBLEM SOLVING AND PYTHON PROGRAMMING UNIT - 1
Flowchart:
P a g e 26 | 33
St. Joseph’s College of Engineering
GE1105 PROBLEM SOLVING AND PYTHON PROGRAMMING UNIT - 1
Algorithm: Pseudocode:
Step 1: Start BEGIN
Step 2: Read n READ n
Step 3:Initialize i=0 FOR i=0 to n, then
Step 4: If i<n, then goto step 4.1, 4.2 else goto READ a[i]
step 5
INCREMENT i
Step4.1: Read a[i]
END FOR
Step 4.2: i=i+1 goto step 4
READ item
Step 5: Read item
FOR i=n-1 to 0 and item<a[i], then
Step 6: Calculate i=n-1
CALCULATE a[i+1]=a[i]
Step 7: If i>=0 and item<a[i], then go to step
DECREMENT i
7.1, 7.2 else goto step 8
END FOR
Step 7.1: a[i+1]=a[i]
COMPUTE a[i+1]=a[i]
Step 7.2: i=i-1 goto step 7
COMPUTE n=n+1
Step 8: Compute a[i+1]=item
FOR i=0 to n, then
Step 9: Compute n=n+1
PRINT a[i]
Step 10: If i<n, then goto step 10.1, 10.2 lse
goto st 11 INCREMENT i
Step10.1: Print a[i] END FOR
Step10.2: i=i+1 goto step 10 END
Step 11: Stop
P a g e 27 | 33
St. Joseph’s College of Engineering
GE1105 PROBLEM SOLVING AND PYTHON PROGRAMMING UNIT - 1
Flowchart:
P a g e 28 | 33
St. Joseph’s College of Engineering
GE1105 PROBLEM SOLVING AND PYTHON PROGRAMMING UNIT - 1
4. Tower of Hanoi
Algorithm: Pseudcode:
Step 1: Start BEGIN
Step 2: Read n READ n
Step 3: Calculate move=pow(2,n)-1 CALCULATE move=pow(2,n)-1
Step 4: Function call T(n,Beg,Aux,End) FUNCTION T(n,Beg,Aux,End) Recursiv ly
recursively until n=0 until n=0
Step 4.1: If n=0, then goto PROCEDURE
step 5 else goto step IF n=0 then,
4.2 Step No disk to move
4.2: T(n-1,Beg,End,Aux) T(1,Beg,Aux,End) , Else
Move disk from source to desti ation T(n-
T(n-1,Beg,End,Aux)
1,Aux,Beg,End)
T(1,Beg,Aux,End), move isk from source to
Step 5: Stop
destination
T(n-1,Aux,Beg,En )
END PROCEDURE
END
Flowchart:
P a g e 29 | 33
St. Joseph’s College of Engineering
GE1105 PROBLEM SOLVING AND PYTHON PROGRAMMING UNIT - 1
P a g e 30 | 33
St. Joseph’s College of Engineering
GE1105 PROBLEM SOLVING AND PYTHON PROGRAMMING UNIT - 1
P a g e 31 | 33
St. Joseph’s College of Engineering
GE1105 PROBLEM SOLVING AND PYTHON PROGRAMMING UNIT - 1
P a g e 32 | 33
St. Joseph’s College of Engineering
GE1105 PROBLEM SOLVING AND PYTHON PROGRAMMING UNIT - 1
P a g e 33 | 33
St. Joseph’s College of Engineering