SlideShare a Scribd company logo
1 of 58
Introduction To Computer Science
              (ITC)
                            Lecture 05
                    Introduction to Algorithms
                        24 September 2012


                    Instructor: Adeela Waqar
         adeela.waqar@nu.edu.pk, adeela.abbas@gmail.com

  National University of Computer and Emerging Sciences, Islamabad
                                                                     1
Algorithm
Algorithm is a step by step procedure for solving a
                       problem

 It represents a process that a computer carries
     out, in order to complete a well defined task

  The objective of computer science is to solve
     problems by developing, analyzing, and
       implementing algorithmic solutions


                                                     2
Al-Khwarizmi Principle
•   All complex problems can be broken into
    simpler sub-problems.
•   Solve a complex problem by breaking it down
    into smaller sub-problems and then solve them
    (in a specified order), one at a time.
•   When all the steps are solved, the original
    problem itself has also been solved.
•   This process is called Algorithm.
    (Originating from al-Khwārizmī)

                                                3
Computer Programming
• Computer is a powerful tool
• It is not intelligent!
• In order to use computer to solve our problems,
  we must tell it what we want done and the order
  in which we want it done.
• These instructions are called computer program.
• Writing these instructions is called computer
  programming.
• The person giving these instructions is called a
  computer programmer.
                                                 4
Computer Programming
• Analyze the problem
• Develop a sequence of instructions for
  solving the problem.
• Communicate it to the computer.




                                           5
Phases of the software life cycle

•   Requirement definition
•   Analysis and design
•   Coding
•   Testing
•   Implementation
•   Maintenance


                                6
Problem Solving Techniques
•   Ask questions
•   Look for things that are similar
•   Means-ends analysis
•   Divide and Conquer
•   Merging solutions


                                       7
Ask Questions
• Ask questions until you have developed a clear
  understanding of the problem.
• Who, What, Why, Where, When.
  – What do I have to work with? (my data or input)
  – How much data is there?
  – What should my output look like?
  – How many times is the process going to be
    repeated?
  – What are the exceptions to the main course?
  – What special error condition might come up?
                                                      8
Look for things that are Similar
• Do not reinvent the wheel!
• Draw Analogies




                                      9
Means-Ends analysis
• Starting point and ending state are known.
• You need to devise the transformation
  function.
• Ends are defined – you need to analyze
  your means of getting between them.
• Lahore to Islamabad
  – What are the options?
  – Narrow down the options?
  – Figure out the details?
                                           10
Divide and Conquer
• Same as the Al-khwarizmi Principle.
• Breakup the large problem into smaller
  units and then solve them one at a time.
• Building block approach.




                                             11
Divide and Conquer
                    Hard Problem



Easy Sub-problem   Hard Sub-problem   Easy Sub-problem




     Easy Sub-problem         Easy Sub-problem




                                                  12
Merging Solution
• Sometimes merging two independent
  solutions solves the problem more
  efficiently?
• Calculate Average
  – Count values
  – Sum Values
  – Divide sum by count
• Alternative approach
  – calculate partial sum as you count
                                         13
Problem Solving Techniques
• What is the unknown?
  – What is required?

• What are the data?
  – What is given?

• What is the condition?
  – By what condition the unknown is linked to the
    data?
                                                14
Conversion from Fahrenheit to Celsius

•   Output
    – Temperature in Celsius (C)

•   Inputs
    – Temperature in Fahrenheit (F)

•   Process
              5
           C = (F − 32)
              9

                                        15
Calculate and print the average grade of 3
         tests for the entire class
  •    Input
      –    3 test scores for each student
  •    output
      –    Average of 3 tests for each student
  •    Process
      1.   Get three scores
      2.   Add them together
      3.   Divide by three to get the average
      4.   Print the average
      5.   Repeat step 1 to 4 for next student
      6.   Stop if there are no more students

                                                 16
Flow Charts

 A flowchart is a visual or graphical
  representation of an algorithm.
 The arrows, each of which represents a
       flowchart employs a series of blocks
  and
    particular operation or step in the
    algorithm.
   The arrows represent the sequence in
    which the operations are implemented.
                                            17
Flowcharts – Most Common Symbols
Symbol   Name                 Function
         Terminal       Represents the beginning or end of a
                        program.
         Flow-line      Represents the flow of logic.

         Process        Represents calculations or data
                        manipulation.

         Input/Output   Represents inputs or outputs of data
                        and information.

         Decision       Represents a comparison, question,
                        or decision that determines
                        alternative paths to be followed.


                                                             18
Flowcharts – An Example
Find the solution of a quadratic equation
Ax2+Bx+C=0, given A, B and C.
                                     A
           START


          INPUT                X1 = (-B+R)/(2A)
          A, B, C              X2 = (-B-R)/(2A)


          Calculate                PRINT
      R = SQRT(B2-4AC)         A, B, C, X1, X2


             A
                                    END

                                                  19
Flow Charting
Expresses the flow of processing in a
     structured pictorial format.
                                     Flow
   Input and       Processing         of
  Output Steps        Steps          data




   Decision        Terminator
                                Connectors

                                             20
Begin
                               Flow chart for
                               Converting
     Get temp. in ‘F’
                               Fahrenheit
                               into Celsius
Calculate          5
                C = (F − 32)
                   9

       Print ‘C’



            Stop




                                           21
Flow chart for
          Get three scores
                                        calculating
         Add them together              average of
                                        three scores
      Divide the result by three


        Print the average




Yes                                No
          More students?                  Stop



                                                    22
Comparison of Algorithm representations in Natural
     language, flowchart and Pseudo-code
                                      START


                                     INPUT
Step 1: Begin the calculations         A, B
                                                    BEGIN Adder
Step 2: Input two values A and B                       Input A and B
                                                       C = A + B
                                    Add A to B
Step 3: Add the values                                 PRINT C
                                   and store in C
                                                    END Adder
Step 4: Display the result
                                     OUTPUT
Step 5: End the calculation
                                        C


                                       END
  Natural language                 Flowchart        Pseudo-code
                                                                23
Algorithm Representation
         (Natural Languages)

• English or some other natural language.
• Are not particularly good:
  – too verbose
  – unstructured
  – too rich in interpretation (ambiguous)
  – imprecise

                                         24
Algorithm Representation
         (Using Programming Language)
{
    int I, m, Carry;
    int a[100], b[100], c[100];
    cin >> m;
    for ( int j = 0 ; k <= m-1 ; j++ ) {
        cin >> a[j];
        cin >> b[j];
    }
    Carry = 0;
    i = 0;                                 25

    while ( i < m ) { …
Programming Languages

• Are not particularly good either
  – Too many implementation details to worry
    about
  – Too rigid syntax
• Easy to lose sight of the real task



                                               26
Pseudo-code
• We need a compromise between the two:
   Pseudo-code
• Computer scientists use pseudo-code to
  express algorithms:
  – English like constructs (or other natural
    language), but
  – modeled to look like statements in typical
    programming languages.

                                                 27
Pseudo-code Primitives
Three basic kind of operations:
• Sequential
   – Computation ( Set … )
   – Input/Output ( Get ... / Print ... )
• Conditional
   – If … Else
   – If …
• Iterative / looping
   – Repeat ...
   – While ...
                                            28
Computation
 General format:
    Set the value of <variable> to <expression>

Performs a computation and stores the
result.
 Example:
      Set the value of C to (A + B)
      Set the value of location to 0
      Set the value of GPA to (sum / count)       29
Variables
A variable is a named storage.
 - A value can be stored into it, overwriting
  the previous value
 - Its value can be copied
Examples:
Set the value of A to 3
The variable A holds the value 3 after its
execution
Set the value of A to (A+1)
Same as: add 1 to the value of A ( A is now 4)   30
Not too Strict on Syntax
• Pseudo-code is kind of a programming language
  without a rigid syntax, for example we can write:
  – Set the value of A to (B+C)
• as
  – Set A to (B+C)
• or even:
  • Set the value of sum to 0
  • Set the value of GPA to 0
• as
  • Set sum and GPA to 0

                                                  31
Sequential Operations - Input/Output

                         Input
      Outside world
                         Output

•The Computer needs to communicate with
the outside world:
  INPUT operations allow the computing agent to
  receive from the outside world data values to use in
  subsequent computations.
  OUTPUT operations allow the computing agent to
  communicate results of computations to the outside
  world.
                                                         32
Input
General format:
         Get a value for <variable>

The computing agent (computer) suspends
 executions and waits for an input value.




                                            33
Input - Examples
• Examples:
  – Get value for grade
  – Get values for N, M
• Can write:
  – Get value for N1
  – ...
  – Get value for N100
• as
  – Get value for N1,..., N100


                                 34
Output
General format:
         Print the value of <variable>
         Print the message, "<text>"

The computing agent (computer) displays the value
  of the variable(s).




                                                35
Output - Examples
• Examples:
  – Print the value of grade
  – Print the message, "Hello"
• Can write:
  – Print the value of N1
  – ...
  – Print the value of N100
• as
  – Print the values of N1,..., N100


                                       36
Example
• Write an algorithm to calculate the
  average of three numbers.
Steps   Operations
   1    Get values for N1, N2, and N3
   2    Set the value of Average to (N1+N2+N3)/3
   3    Print the value of Average
   4    Stop


                                                   37
Conditional Operations

   If <condition> then
          operations for the then-part
   Else
          operations for the else-part

1. Evaluate <condition> expression to see
   whether it is true or false.
2. If true, then execute operations in then-part
3. Otherwise, execute operations in else-part.
                                                   38
Conditions, or Boolean Expressions

 • A condition is one whose value is true or
   false, for example:
   3>2         is greater than (true)
    3=2             is equal to       (false)
    A>2        is true if A’s value is greater
                than 2 (at the time this is
                executed), false otherwise.

                                                  39
Conditions may be compounded
E1 or E2
true if at least one of them is true; false
otherwise.
  E.g. 3 > 2 or 2 > 3      is true
E1 and E2
 true if both are true; false otherwise
 E.g.   3 > 2 and 2 > 3      is false
not E
  true if E is false, false if E is true
                                              40
Example
1. Get a value for A
2. If A = 0 then
3.     Print the message, “The input is zero”

     Else
4.   Print the message, “The input is not zero”
1. Get a value for grade
2. If grade < 1 or grade > 9 then
3.     Print the message, “Invalid grade”
     Else
4.     Set the value of total to (grade + total)   41
Iterative Operation - While
While <condition> remains true do steps i to j
            step i:      operation
            step i+1:    operation
            …
            step j:      operation
  1. Evaluate <condition>
  2. If condition is true, execute steps i to j,
     then go back to i.
  3. Otherwise, if condition is false,continue
     execution from step j+1.                      42
Example
1   Get a value for count
2   While count < 10 do
3       Set square to (count * count)
4       Print the values of count and square
5      Add 1 to count
6   Stop




                                               43
While Loops
What happens when it gets executed?
If count starts with 7, we get printout
        7 49
        8 64
        9 81
What if count starts with 11?
 Nothing is printed, loop is executed 0 times.


                                                 44
Exercise
What does the following algorithm do?

Set value of A equal to 1
While A > 0
       Print message, “Enter an integer”
       Get a value for A
End of the loop
Stop



                                           45
Tracing an algorithm

The current values of algorithm variables at
 various points during execution can be
 known by tracing the algorithm with a table
 called Trace Table




                                               46
Trace Table
Problem: Determine the value of the variable x and y
after the following algorithm is executed
Pseudocode:




                                           Ne
x=5




                                              st
Y=7




                                                in
If x = 5 then




                                                  g?
        y= 8




                                                     ? ?
else
        y= 0
if y = 7 then
        x=6
else
        x=3
        if x = y then                                  47
                y=0
… Continued
   Trace table for algorithm

Step        X             y
 No.
1           5             -
2           5             7
3           5             8
4.1         5             8
4.2         3             8
4.3         3             8
                               48
Sequential Search: an Example
Find the phone number of a given Name in an
 (unsorted) list of names and their phone numbers
Names          Phone numbers
  N1             T1
  N2             T2
           …
  N1000           T1000

                                               49
Sequential Search: an Example
                  d:
               fin
          to
      e                    o hn
Nam                   ,J
               it   h
                              1    553614
          Sm
                              2    442563
                              3    521463
                              4    541236
                              5    452361
                              6    442563
                              7    551123
                              8    441155
                              9    521364
                             10    528975
                             11    541258      50
Sequential Search: 1st Attempt
  1.   Get value for Name
  2.   Get values for N1,…,N1000
  3.   Get values for T1,…,T1000
  4.   If Name = N1 then print the value of T1
  5.   If Name = N2 then print the value of T2
  …
1002. If Name = N999 then print the value of T999
1003. If Name = N1000 then print the value of 1000
1005. Stop
                                                 51
Sequential Search: Using a Loop
 Get values for Name, N1,…, N1000, T1,…, T1000
 Set the value i to 1 and the value of Found to 0
 While Found = 0 AND i <= 1000 do
        If Name = Ni then
               Print the value of Ti
               Set the value of Found to 1
        Else
               Add 1 to the value of I
        EndIF
 End of While loop
                                                    52
 Stop
Selection: Find the Largest Number

Given a list of variables A1, A2, …, An, find the
largest value and its (first) location

 Location        A1 A2 A3 A4 A5 A6 A7
 Value           5     2    8     4   8    6    4
 The largest is 8 at location 3
 Idea (sketch): Go through the entire list, at each
 iteration find the largest-so-far and record its
 location
                                                      53
i

Location        A1 A2 A3 A4 A5 A6 A7
Value           5   2    8    4    8      6   4


To begin with,
set largest-so-far to (the value of) A1
set location to 1
set i to 2
                                                  54
i

Location        A1 A2 A3 A4 A5 A6 A7
Value           5    2    8    4    8    6   4


Compare A1 and A2
largest-so-far still holds the value of A1
set i to i+1


                                                 55
i

Location       A1 A2 A3 A4 A5 A6 A7
Value          5   2    8    4   8    6    4


Compare A1 and A3
largest-so-far now holds the value of A3
location is 3
set i to i+1
                                               56
i

Location       A1 A2 A3 A4 A5 A6 A7
Value          5    2   8    4    8    6   4



Continue the similar process until i = 8



                                               57
Selection: Find The Largest Number
Get a value for n, the size of the list
Get values for A1, A2, …, An, the list to be searched
Set largest_so_far to A1 and set location to 1
Set the value of i to 2
While i is less or equal to n do
      If Ai > largest_so_far then
            Set the value of largest_so_far to Ai
            Set the value of location to I
       EndIF
      Add 1 to the value of i
End of While loop
Print the values of largest_so_far and location
                                                        58

More Related Content

What's hot

Mba i ot unit-1.1_linear programming
Mba i ot unit-1.1_linear programmingMba i ot unit-1.1_linear programming
Mba i ot unit-1.1_linear programmingRai University
 
Analysis of algorithms
Analysis of algorithmsAnalysis of algorithms
Analysis of algorithmsGanesh Solanke
 
Duality in Linear Programming Problem
Duality in Linear Programming ProblemDuality in Linear Programming Problem
Duality in Linear Programming ProblemRAVI PRASAD K.J.
 
Sem1 plt xp_02
Sem1 plt xp_02Sem1 plt xp_02
Sem1 plt xp_02Niit Care
 
Bba 3274 qm week 8 linear programming
Bba 3274 qm week 8 linear programmingBba 3274 qm week 8 linear programming
Bba 3274 qm week 8 linear programmingStephen Ong
 
Linear programming 1
Linear programming 1Linear programming 1
Linear programming 1Rezaul Karim
 
LPP, Duality and Game Theory
LPP, Duality and Game TheoryLPP, Duality and Game Theory
LPP, Duality and Game TheoryPurnima Pandit
 
Numerical analysis dual, primal, revised simplex
Numerical analysis  dual, primal, revised simplexNumerical analysis  dual, primal, revised simplex
Numerical analysis dual, primal, revised simplexSHAMJITH KM
 
Numerical analysis m1 l3slides
Numerical analysis  m1 l3slidesNumerical analysis  m1 l3slides
Numerical analysis m1 l3slidesSHAMJITH KM
 
Mcqs linear prog
Mcqs linear progMcqs linear prog
Mcqs linear progHanna Elise
 
Varun Balupuri - Thesis
Varun Balupuri - ThesisVarun Balupuri - Thesis
Varun Balupuri - ThesisVarun Balupuri
 
Operators in C
Operators in COperators in C
Operators in Cyarkhosh
 

What's hot (17)

Mba i ot unit-1.1_linear programming
Mba i ot unit-1.1_linear programmingMba i ot unit-1.1_linear programming
Mba i ot unit-1.1_linear programming
 
Analysis of algorithms
Analysis of algorithmsAnalysis of algorithms
Analysis of algorithms
 
Duality in Linear Programming Problem
Duality in Linear Programming ProblemDuality in Linear Programming Problem
Duality in Linear Programming Problem
 
Linear programming
Linear programmingLinear programming
Linear programming
 
Sem1 plt xp_02
Sem1 plt xp_02Sem1 plt xp_02
Sem1 plt xp_02
 
Bba 3274 qm week 8 linear programming
Bba 3274 qm week 8 linear programmingBba 3274 qm week 8 linear programming
Bba 3274 qm week 8 linear programming
 
Simplex method
Simplex methodSimplex method
Simplex method
 
Linear programming 1
Linear programming 1Linear programming 1
Linear programming 1
 
Linear Programming
Linear ProgrammingLinear Programming
Linear Programming
 
LPP, Duality and Game Theory
LPP, Duality and Game TheoryLPP, Duality and Game Theory
LPP, Duality and Game Theory
 
Chapter one
Chapter oneChapter one
Chapter one
 
Daa chapter 1
Daa chapter 1Daa chapter 1
Daa chapter 1
 
Numerical analysis dual, primal, revised simplex
Numerical analysis  dual, primal, revised simplexNumerical analysis  dual, primal, revised simplex
Numerical analysis dual, primal, revised simplex
 
Numerical analysis m1 l3slides
Numerical analysis  m1 l3slidesNumerical analysis  m1 l3slides
Numerical analysis m1 l3slides
 
Mcqs linear prog
Mcqs linear progMcqs linear prog
Mcqs linear prog
 
Varun Balupuri - Thesis
Varun Balupuri - ThesisVarun Balupuri - Thesis
Varun Balupuri - Thesis
 
Operators in C
Operators in COperators in C
Operators in C
 

Similar to Itc lec5-24+sep+2012

Introduction to problem solving in c++
Introduction to problem solving in c++Introduction to problem solving in c++
Introduction to problem solving in c++Online
 
CSC1100 - Chapter12 - Flow Charts
CSC1100 - Chapter12 - Flow ChartsCSC1100 - Chapter12 - Flow Charts
CSC1100 - Chapter12 - Flow ChartsYhal Htet Aung
 
2. Algorithms Representations (C++).pptx
2. Algorithms Representations (C++).pptx2. Algorithms Representations (C++).pptx
2. Algorithms Representations (C++).pptxssuser4d77b2
 
Lec-ProblemSolving.pptx
Lec-ProblemSolving.pptxLec-ProblemSolving.pptx
Lec-ProblemSolving.pptxmiansaad18
 
Pj01 1-computer and programming fundamentals
Pj01 1-computer and programming fundamentalsPj01 1-computer and programming fundamentals
Pj01 1-computer and programming fundamentalsSasidharaRaoMarrapu
 
AlgorithmAndFlowChart.pdf
AlgorithmAndFlowChart.pdfAlgorithmAndFlowChart.pdf
AlgorithmAndFlowChart.pdfSusieMaestre1
 
Basic Slides on Algorithms and Flowcharts
Basic Slides on Algorithms and FlowchartsBasic Slides on Algorithms and Flowcharts
Basic Slides on Algorithms and Flowchartsmoazwinner
 
Lecture1-Algorithms-and-Flowcharts-ppt.ppt
Lecture1-Algorithms-and-Flowcharts-ppt.pptLecture1-Algorithms-and-Flowcharts-ppt.ppt
Lecture1-Algorithms-and-Flowcharts-ppt.pptReshuReshma8
 
algorithms and flow chart overview.pdf
algorithms and flow chart overview.pdfalgorithms and flow chart overview.pdf
algorithms and flow chart overview.pdfAmanPratik11
 
Algo_Lecture01.pptx
Algo_Lecture01.pptxAlgo_Lecture01.pptx
Algo_Lecture01.pptxShaistaRiaz4
 

Similar to Itc lec5-24+sep+2012 (20)

Introduction to problem solving in c++
Introduction to problem solving in c++Introduction to problem solving in c++
Introduction to problem solving in c++
 
CSC1100 - Chapter12 - Flow Charts
CSC1100 - Chapter12 - Flow ChartsCSC1100 - Chapter12 - Flow Charts
CSC1100 - Chapter12 - Flow Charts
 
2. Algorithms Representations (C++).pptx
2. Algorithms Representations (C++).pptx2. Algorithms Representations (C++).pptx
2. Algorithms Representations (C++).pptx
 
Lec-ProblemSolving.pptx
Lec-ProblemSolving.pptxLec-ProblemSolving.pptx
Lec-ProblemSolving.pptx
 
Flow charts week 5 2020 2021
Flow charts week 5 2020  2021Flow charts week 5 2020  2021
Flow charts week 5 2020 2021
 
PPS_Unit 1.pptx
PPS_Unit 1.pptxPPS_Unit 1.pptx
PPS_Unit 1.pptx
 
Flowcharting week 5 2019 2020
Flowcharting week 5  2019  2020Flowcharting week 5  2019  2020
Flowcharting week 5 2019 2020
 
Lecture6 data structure(algorithms)
Lecture6 data structure(algorithms)Lecture6 data structure(algorithms)
Lecture6 data structure(algorithms)
 
Comp102 lec 1
Comp102   lec 1Comp102   lec 1
Comp102 lec 1
 
Pj01 1-computer and programming fundamentals
Pj01 1-computer and programming fundamentalsPj01 1-computer and programming fundamentals
Pj01 1-computer and programming fundamentals
 
CC-112-Lec.1.ppsx
CC-112-Lec.1.ppsxCC-112-Lec.1.ppsx
CC-112-Lec.1.ppsx
 
AlgorithmAndFlowChart.pdf
AlgorithmAndFlowChart.pdfAlgorithmAndFlowChart.pdf
AlgorithmAndFlowChart.pdf
 
Basic Slides on Algorithms and Flowcharts
Basic Slides on Algorithms and FlowchartsBasic Slides on Algorithms and Flowcharts
Basic Slides on Algorithms and Flowcharts
 
Lecture1-Algorithms-and-Flowcharts-ppt.ppt
Lecture1-Algorithms-and-Flowcharts-ppt.pptLecture1-Algorithms-and-Flowcharts-ppt.ppt
Lecture1-Algorithms-and-Flowcharts-ppt.ppt
 
Proble, Solving & Automation
Proble, Solving & AutomationProble, Solving & Automation
Proble, Solving & Automation
 
UNIT- 3-FOC.ppt
UNIT- 3-FOC.pptUNIT- 3-FOC.ppt
UNIT- 3-FOC.ppt
 
Lecture1
Lecture1Lecture1
Lecture1
 
algorithms and flow chart overview.pdf
algorithms and flow chart overview.pdfalgorithms and flow chart overview.pdf
algorithms and flow chart overview.pdf
 
3 algorithm-and-flowchart
3 algorithm-and-flowchart3 algorithm-and-flowchart
3 algorithm-and-flowchart
 
Algo_Lecture01.pptx
Algo_Lecture01.pptxAlgo_Lecture01.pptx
Algo_Lecture01.pptx
 

Itc lec5-24+sep+2012

  • 1. Introduction To Computer Science (ITC) Lecture 05 Introduction to Algorithms 24 September 2012 Instructor: Adeela Waqar adeela.waqar@nu.edu.pk, adeela.abbas@gmail.com National University of Computer and Emerging Sciences, Islamabad 1
  • 2. Algorithm Algorithm is a step by step procedure for solving a problem It represents a process that a computer carries out, in order to complete a well defined task The objective of computer science is to solve problems by developing, analyzing, and implementing algorithmic solutions 2
  • 3. Al-Khwarizmi Principle • All complex problems can be broken into simpler sub-problems. • Solve a complex problem by breaking it down into smaller sub-problems and then solve them (in a specified order), one at a time. • When all the steps are solved, the original problem itself has also been solved. • This process is called Algorithm. (Originating from al-Khwārizmī) 3
  • 4. Computer Programming • Computer is a powerful tool • It is not intelligent! • In order to use computer to solve our problems, we must tell it what we want done and the order in which we want it done. • These instructions are called computer program. • Writing these instructions is called computer programming. • The person giving these instructions is called a computer programmer. 4
  • 5. Computer Programming • Analyze the problem • Develop a sequence of instructions for solving the problem. • Communicate it to the computer. 5
  • 6. Phases of the software life cycle • Requirement definition • Analysis and design • Coding • Testing • Implementation • Maintenance 6
  • 7. Problem Solving Techniques • Ask questions • Look for things that are similar • Means-ends analysis • Divide and Conquer • Merging solutions 7
  • 8. Ask Questions • Ask questions until you have developed a clear understanding of the problem. • Who, What, Why, Where, When. – What do I have to work with? (my data or input) – How much data is there? – What should my output look like? – How many times is the process going to be repeated? – What are the exceptions to the main course? – What special error condition might come up? 8
  • 9. Look for things that are Similar • Do not reinvent the wheel! • Draw Analogies 9
  • 10. Means-Ends analysis • Starting point and ending state are known. • You need to devise the transformation function. • Ends are defined – you need to analyze your means of getting between them. • Lahore to Islamabad – What are the options? – Narrow down the options? – Figure out the details? 10
  • 11. Divide and Conquer • Same as the Al-khwarizmi Principle. • Breakup the large problem into smaller units and then solve them one at a time. • Building block approach. 11
  • 12. Divide and Conquer Hard Problem Easy Sub-problem Hard Sub-problem Easy Sub-problem Easy Sub-problem Easy Sub-problem 12
  • 13. Merging Solution • Sometimes merging two independent solutions solves the problem more efficiently? • Calculate Average – Count values – Sum Values – Divide sum by count • Alternative approach – calculate partial sum as you count 13
  • 14. Problem Solving Techniques • What is the unknown? – What is required? • What are the data? – What is given? • What is the condition? – By what condition the unknown is linked to the data? 14
  • 15. Conversion from Fahrenheit to Celsius • Output – Temperature in Celsius (C) • Inputs – Temperature in Fahrenheit (F) • Process 5 C = (F − 32) 9 15
  • 16. Calculate and print the average grade of 3 tests for the entire class • Input – 3 test scores for each student • output – Average of 3 tests for each student • Process 1. Get three scores 2. Add them together 3. Divide by three to get the average 4. Print the average 5. Repeat step 1 to 4 for next student 6. Stop if there are no more students 16
  • 17. Flow Charts  A flowchart is a visual or graphical representation of an algorithm.  The arrows, each of which represents a flowchart employs a series of blocks and particular operation or step in the algorithm.  The arrows represent the sequence in which the operations are implemented. 17
  • 18. Flowcharts – Most Common Symbols Symbol Name Function Terminal Represents the beginning or end of a program. Flow-line Represents the flow of logic. Process Represents calculations or data manipulation. Input/Output Represents inputs or outputs of data and information. Decision Represents a comparison, question, or decision that determines alternative paths to be followed. 18
  • 19. Flowcharts – An Example Find the solution of a quadratic equation Ax2+Bx+C=0, given A, B and C. A START INPUT X1 = (-B+R)/(2A) A, B, C X2 = (-B-R)/(2A) Calculate PRINT R = SQRT(B2-4AC) A, B, C, X1, X2 A END 19
  • 20. Flow Charting Expresses the flow of processing in a structured pictorial format. Flow Input and Processing of Output Steps Steps data Decision Terminator Connectors 20
  • 21. Begin Flow chart for Converting Get temp. in ‘F’ Fahrenheit into Celsius Calculate 5 C = (F − 32) 9 Print ‘C’ Stop 21
  • 22. Flow chart for Get three scores calculating Add them together average of three scores Divide the result by three Print the average Yes No More students? Stop 22
  • 23. Comparison of Algorithm representations in Natural language, flowchart and Pseudo-code START INPUT Step 1: Begin the calculations A, B BEGIN Adder Step 2: Input two values A and B Input A and B C = A + B Add A to B Step 3: Add the values PRINT C and store in C END Adder Step 4: Display the result OUTPUT Step 5: End the calculation C END Natural language Flowchart Pseudo-code 23
  • 24. Algorithm Representation (Natural Languages) • English or some other natural language. • Are not particularly good: – too verbose – unstructured – too rich in interpretation (ambiguous) – imprecise 24
  • 25. Algorithm Representation (Using Programming Language) { int I, m, Carry; int a[100], b[100], c[100]; cin >> m; for ( int j = 0 ; k <= m-1 ; j++ ) { cin >> a[j]; cin >> b[j]; } Carry = 0; i = 0; 25 while ( i < m ) { …
  • 26. Programming Languages • Are not particularly good either – Too many implementation details to worry about – Too rigid syntax • Easy to lose sight of the real task 26
  • 27. Pseudo-code • We need a compromise between the two:  Pseudo-code • Computer scientists use pseudo-code to express algorithms: – English like constructs (or other natural language), but – modeled to look like statements in typical programming languages. 27
  • 28. Pseudo-code Primitives Three basic kind of operations: • Sequential – Computation ( Set … ) – Input/Output ( Get ... / Print ... ) • Conditional – If … Else – If … • Iterative / looping – Repeat ... – While ... 28
  • 29. Computation General format: Set the value of <variable> to <expression> Performs a computation and stores the result. Example: Set the value of C to (A + B) Set the value of location to 0 Set the value of GPA to (sum / count) 29
  • 30. Variables A variable is a named storage. - A value can be stored into it, overwriting the previous value - Its value can be copied Examples: Set the value of A to 3 The variable A holds the value 3 after its execution Set the value of A to (A+1) Same as: add 1 to the value of A ( A is now 4) 30
  • 31. Not too Strict on Syntax • Pseudo-code is kind of a programming language without a rigid syntax, for example we can write: – Set the value of A to (B+C) • as – Set A to (B+C) • or even: • Set the value of sum to 0 • Set the value of GPA to 0 • as • Set sum and GPA to 0 31
  • 32. Sequential Operations - Input/Output Input Outside world Output •The Computer needs to communicate with the outside world: INPUT operations allow the computing agent to receive from the outside world data values to use in subsequent computations. OUTPUT operations allow the computing agent to communicate results of computations to the outside world. 32
  • 33. Input General format: Get a value for <variable> The computing agent (computer) suspends executions and waits for an input value. 33
  • 34. Input - Examples • Examples: – Get value for grade – Get values for N, M • Can write: – Get value for N1 – ... – Get value for N100 • as – Get value for N1,..., N100 34
  • 35. Output General format: Print the value of <variable> Print the message, "<text>" The computing agent (computer) displays the value of the variable(s). 35
  • 36. Output - Examples • Examples: – Print the value of grade – Print the message, "Hello" • Can write: – Print the value of N1 – ... – Print the value of N100 • as – Print the values of N1,..., N100 36
  • 37. Example • Write an algorithm to calculate the average of three numbers. Steps Operations 1 Get values for N1, N2, and N3 2 Set the value of Average to (N1+N2+N3)/3 3 Print the value of Average 4 Stop 37
  • 38. Conditional Operations If <condition> then operations for the then-part Else operations for the else-part 1. Evaluate <condition> expression to see whether it is true or false. 2. If true, then execute operations in then-part 3. Otherwise, execute operations in else-part. 38
  • 39. Conditions, or Boolean Expressions • A condition is one whose value is true or false, for example: 3>2 is greater than (true)  3=2 is equal to (false)  A>2 is true if A’s value is greater than 2 (at the time this is executed), false otherwise. 39
  • 40. Conditions may be compounded E1 or E2 true if at least one of them is true; false otherwise. E.g. 3 > 2 or 2 > 3 is true E1 and E2 true if both are true; false otherwise E.g. 3 > 2 and 2 > 3 is false not E true if E is false, false if E is true 40
  • 41. Example 1. Get a value for A 2. If A = 0 then 3. Print the message, “The input is zero” Else 4. Print the message, “The input is not zero” 1. Get a value for grade 2. If grade < 1 or grade > 9 then 3. Print the message, “Invalid grade” Else 4. Set the value of total to (grade + total) 41
  • 42. Iterative Operation - While While <condition> remains true do steps i to j step i: operation step i+1: operation … step j: operation 1. Evaluate <condition> 2. If condition is true, execute steps i to j, then go back to i. 3. Otherwise, if condition is false,continue execution from step j+1. 42
  • 43. Example 1 Get a value for count 2 While count < 10 do 3 Set square to (count * count) 4 Print the values of count and square 5 Add 1 to count 6 Stop 43
  • 44. While Loops What happens when it gets executed? If count starts with 7, we get printout 7 49 8 64 9 81 What if count starts with 11? Nothing is printed, loop is executed 0 times. 44
  • 45. Exercise What does the following algorithm do? Set value of A equal to 1 While A > 0 Print message, “Enter an integer” Get a value for A End of the loop Stop 45
  • 46. Tracing an algorithm The current values of algorithm variables at various points during execution can be known by tracing the algorithm with a table called Trace Table 46
  • 47. Trace Table Problem: Determine the value of the variable x and y after the following algorithm is executed Pseudocode: Ne x=5 st Y=7 in If x = 5 then g? y= 8 ? ? else y= 0 if y = 7 then x=6 else x=3 if x = y then 47 y=0
  • 48. … Continued Trace table for algorithm Step X y No. 1 5 - 2 5 7 3 5 8 4.1 5 8 4.2 3 8 4.3 3 8 48
  • 49. Sequential Search: an Example Find the phone number of a given Name in an (unsorted) list of names and their phone numbers Names Phone numbers N1 T1 N2 T2 … N1000 T1000 49
  • 50. Sequential Search: an Example d: fin to e o hn Nam ,J it h 1 553614 Sm 2 442563 3 521463 4 541236 5 452361 6 442563 7 551123 8 441155 9 521364 10 528975 11 541258 50
  • 51. Sequential Search: 1st Attempt 1. Get value for Name 2. Get values for N1,…,N1000 3. Get values for T1,…,T1000 4. If Name = N1 then print the value of T1 5. If Name = N2 then print the value of T2 … 1002. If Name = N999 then print the value of T999 1003. If Name = N1000 then print the value of 1000 1005. Stop 51
  • 52. Sequential Search: Using a Loop Get values for Name, N1,…, N1000, T1,…, T1000 Set the value i to 1 and the value of Found to 0 While Found = 0 AND i <= 1000 do If Name = Ni then Print the value of Ti Set the value of Found to 1 Else Add 1 to the value of I EndIF End of While loop 52 Stop
  • 53. Selection: Find the Largest Number Given a list of variables A1, A2, …, An, find the largest value and its (first) location Location A1 A2 A3 A4 A5 A6 A7 Value 5 2 8 4 8 6 4 The largest is 8 at location 3 Idea (sketch): Go through the entire list, at each iteration find the largest-so-far and record its location 53
  • 54. i Location A1 A2 A3 A4 A5 A6 A7 Value 5 2 8 4 8 6 4 To begin with, set largest-so-far to (the value of) A1 set location to 1 set i to 2 54
  • 55. i Location A1 A2 A3 A4 A5 A6 A7 Value 5 2 8 4 8 6 4 Compare A1 and A2 largest-so-far still holds the value of A1 set i to i+1 55
  • 56. i Location A1 A2 A3 A4 A5 A6 A7 Value 5 2 8 4 8 6 4 Compare A1 and A3 largest-so-far now holds the value of A3 location is 3 set i to i+1 56
  • 57. i Location A1 A2 A3 A4 A5 A6 A7 Value 5 2 8 4 8 6 4 Continue the similar process until i = 8 57
  • 58. Selection: Find The Largest Number Get a value for n, the size of the list Get values for A1, A2, …, An, the list to be searched Set largest_so_far to A1 and set location to 1 Set the value of i to 2 While i is less or equal to n do If Ai > largest_so_far then Set the value of largest_so_far to Ai Set the value of location to I EndIF Add 1 to the value of i End of While loop Print the values of largest_so_far and location 58

Editor's Notes

  1. .