Download presentation
1
Invitation to Computer Science 6th Edition
Chapter 2 The Algorithmic Foundations of Computer Science
2
Objectives In this chapter, you will learn about:
Representing algorithms Examples of algorithmic problem solving Algorithm: clear, precise, unambiguous Searching lists Finding maxima Minima Matching patterns Invitation to Computer Science, 6th Edition
3
Introduction Chapter 1 This chapter
Introduced algorithms and algorithmic problem solving This chapter Develops more fully the notions of algorithm and algorithmic problem solving In chapter1, we introduced algorithms and algorithmic problem solving. Develops more fully the notions of algorithms and algorithmic problem solving and applies these ideas to problems that are of interest to computer scientists Searching lists Finding maxima Minima Matching patterns Invitation to Computer Science, 6th Edition
4
Representing Algorithms
Pseudocode Natural language: used to express algorithms Problems using natural language to represent algorithms Natural language can be extremely verbose Lack of structure makes it difficult to locate specific sections of the algorithm Natural language is too “rich” in interpretation and meaning 3 explicit problem Invitation to Computer Science, 6th Edition
5
P45 When you are finished with that operation At the end of Row 7 Confuse High level langauge Figure 2.1 The Addition Algorithm of Figure 1.2 Expressed in Natural Language Invitation to Computer Science, 6th Edition
6
Representing Algorithms(continued)
High-level programming language Examples: C++, Java Problem with using a high-level programming language for algorithms During the initial phases of design, we are forced to deal with detailed language issues Invitation to Computer Science, 6th Edition
7
High-Level Programming Language
API Application programming interface is a protocol intended to be used as an interface by software components to communicate with each other. Figure 2.2 The Beginning of the Addition Algorithm of Figure 1.2 Expressed in a High-Level Programming Language Invitation to Computer Science, 6th Edition
8
Pseudocode (continued)
Natural languages Not sufficiently precise to represent algorithms High-level programming language During the initial phases of design, we are forced to deal with detailed language issues Invitation to Computer Science, 6th Edition
9
Pseudocode Pseudocode Used to design and represent algorithms
A compromise between the two extremes of natural and formal languages a program code unrelated to the hardware of a particular computer and requiring conversion to the code used by the computer before the program can be used. Pseudo code represents a compromise between the two extremes of natural and formal languages. Invitation to Computer Science, 6th Edition
10
Figure 1.2 Algorithm for Adding Two m-digit Numbers
Before talking about the detail of this algorithm, another concept need to explain Mathematic formation need variable The problem here is that one variable is only range from 0 to 10. but two digits add up, it sum may larger then 10. we use the another variable named carry to store this information. The valve of carry can be adjusted during the algorithm. Figure 1.2 Algorithm for Adding Two m-digit Numbers Invitation to Computer Science, 6th Edition
11
Pseudocode(continued)
English language constructs modeled to look like statements available in most programming languages Steps presented in a structured manner (numbered, indented, and so on) No fixed syntax for most operations is required This is a set of english language constructs designed to resemble statements in a programming language but that do not actually run on a computer Invitation to Computer Science, 6th Edition
12
Pseudocode(continued)
Less ambiguous and more readable than natural language Emphasis is on process, not notation Well-understood forms allow logical reasoning about algorithm behavior Can be easily translated into a programming language Invitation to Computer Science, 6th Edition
13
Sequential Operations
Basic sequential operations Computation, input, and output Instruction for performing a computation and saving the result Set the value of “variable” to “arithmetic expression” Variable Storage location that can hold a data value Invitation to Computer Science, 6th Edition
14
Sequential Operations (continued)
Pseudocode Not a precise set of notational rules to be memorized and rigidly followed Input operations Submit to the computing agent data values from the outside world that it may then use in later instructions Output operations Send results from the computing agent to the outside world Add a and b to get c Set the value of c to (a+b) Invitation to Computer Science, 6th Edition
15
Figure 2.3 Algorithm for Computing Average Miles per Gallon
Variable in computation Variable in input Invitation to Computer Science, 6th Edition
16
Invitation to Computer Science, 6th Edition
17
Conditional and Iterative Operations
Sequential algorithm Sometimes called a straight-line algorithm Executes its instructions in a straight line from top to bottom and then stops Control operations Conditional and iterative Allow us to alter the normal sequential flow of control in an algorithm It can not solve all the problem in our real life. It can not select among alternative operations or perform a block of instructions more than once. Virtually all real-world problems are not straight-line in nature. They involve non-sequential operations such as branching and repetition Invitation to Computer Science, 6th Edition
18
Conditional and Iterative Operations (continued)
Conditional statements Ask questions and choose alternative actions based on the answers If then else Example if x is greater than 25 then print x else print x times 100 Invitation to Computer Science, 6th Edition
19
Figure 2.4 The If/Then/Else Pseudocode Statement
Flow chart Diamond to represent condition Rectangle to represent process Arrow to represent the order of these operations. Figure 2.4 The If/Then/Else Pseudocode Statement Invitation to Computer Science, 6th Edition
20
Figure 2.5 Second Version of the Average Miles per Gallon Algorithm
Extends Figure 2.5 Second Version of the Average Miles per Gallon Algorithm Invitation to Computer Science, 6th Edition
21
Conditional and Iterative Operations (continued)
Loop The repetition of a block of instructions While statement Continuation condition Determines if statement is true or false Infinite loop Continuation condition never becomes false The real power of a computers comes not from doing a calculation once but from doing it many, many times. Invitation to Computer Science, 6th Edition
22
Conditional and Iterative Operations (continued)
Examples while j > 0 do set s to s + aj set j to j – 1 do print ak set k to k + 1 while k < n Invitation to Computer Science, 6th Edition
23
Figure 2.6 Execution of the While Loop
Invitation to Computer Science, 6th Edition
24
Conditional and Iterative Operations (continued)
Loop example Step Operation 1 Set the value of count to 1 2 While (count ≤ 100) do step 3 to step 5 3 Set square to (count x count) 4 Print the values of count and square 5 Add 1 to count the start position of the loop body lines farther from the edge of the page than the line of while Set space or set back It is clear to reader of the algorithm which operations belong inside the loop Invitation to Computer Science, 6th Edition
25
Conditional and Iterative Operations (continued)
Pretest loop Continuation condition is tested at the beginning of each pass through the loop Posttest loop Continuation condition is tested at the end of the loop body, not the beginning Primitives Instructions that computing agent understands and is capable of executing without further explanation Invitation to Computer Science, 6th Edition
26
Figure 2.7 Third Version of the Average Miles per Gallon Algorithm
Invitation to Computer Science, 6th Edition
27
Figure 2.8 Execution of the Do/While Posttest Loop
Invitation to Computer Science, 6th Edition
28
Invitation to Computer Science, 6th Edition
29
Figure 2.9 Summary of Pseudocode Language Instructions
Invitation to Computer Science, 6th Edition
30
Examples of Algorithmic Problem Solving
Go Forth and Multiply: Multiply two numbers using repeated addition Sequential search: Find a particular value in an unordered collection Find maximum: Find the largest value in a collection of data Pattern matching: Determine if and where a particular pattern occurs in a piece of text Invitation to Computer Science, 6th Edition
31
Examples of Algorithmic Problem Solving
Example 1: Go Forth and Multiply Given 2 nonnegative integer values, a ≥ 0, b ≥ 0, compute and output the product (a 3 b) using the technique of repeated addition. That is, determine the value of the sum a + a + a a (b times) Invitation to Computer Science, 6th Edition
32
Examples of Algorithmic Problem Solving((continued))
Algorithm outline Create a loop that executes exactly b times, with each execution of the loop adding the value of a to a running total Invitation to Computer Science, 6th Edition
33
Set the values of count to 0 Set the value of product to 0
Get values for a and b Set the values of count to 0 Set the value of product to 0 While (count < b) do Set the value of product to (product + a) Set the value of count to (count + 1) End of loop Print the value of product Remember of Chapter 1 that one of the fundamental characteristics of an algorithm is that it produces an observable result. In chapter 1, we stated that it is not only algorithmic correctness we are after but efficiency and elegance as well. Invitation to Computer Science, 6th Edition
34
More to say the algorithmic efficiency and elegance in Chapter 3
Figure 2.10 Algorithm for Multiplication of Nonnegative Values via Repeated Addition Invitation to Computer Science, 6th Edition
35
Invitation to Computer Science, 6th Edition
36
Invitation to Computer Science, 6th Edition
37
Modified version of Multiply
Devise an algorithm that uses a loop to take in a positive integer n and a real number x as the input and computes and print xn . Assume that the computing agent knows how to multiply but do not know how to calculate exponential. Hint: x0 = 1; x1 = x; x2 = x*x; x3= x*x*x; etc. Make sure you stop the algorithm at some point. Most interesting computational problems deal not with a few numbers but with huge collections of data, such as lists of names, sequences of characters, or sets of experimental data. Invitation to Computer Science, 6th Edition
38
Example 2: Looking, Looking, Looking
Algorithm discovery Finding a solution to a given problem Sequential search Standard algorithm for searching an unordered list of values Binary Search (extended example) In computer science, a binary search or half-interval search algorithm finds the position of a specified value (the input “key”) within a sorted array. It is the most challenging and creative part of the problem-solving process. Studying these examples, together with lots of practice, is by far the best way to learn creative problem solving. Invitation to Computer Science, 6th Edition
39
Example 2: Looking, Looking, Looking (Continued)
Task Find a particular person’s name from an unordered list of telephone subscribers Algorithm outline Start with the first entry and check its name, then repeat the process for all entries Assume that we have a list of names that we define as N1, N2, N3, …, N10,000, along with the 10,000 telephone numbers of those individuals, denoted as T1, T2, T3, …, T10,000 Invitation to Computer Science, 6th Edition
40
Figure 2.11 First Attempt at Designing a Sequential Search Algorithm
Invitation to Computer Science, 6th Edition
41
Example 2: Looking, Looking, Looking (continued))
For each entry, write a separate section of the algorithm that checks for a match Problems of naïve sequential search algorithm Only works for collections of exactly one size Duplicates the same operations over and over It does not use the powerful algorithmic concept of iteration. Invitation to Computer Science, 6th Edition
42
Example 2: Looking, Looking, Looking (continued)
Correct sequential search algorithm Uses iteration to simplify the task Refers to a value in the list using an index (or pointer) Handles special cases (such as a name not found in the collection) Uses the variable Found to exit the iteration as soon as a match is found Invitation to Computer Science, 6th Edition
43
Figure 2.12 Second Attempt at Designing a Sequential Search Algorithm
Invitation to Computer Science, 6th Edition
44
Figure 2.13 The Sequential Search Algorithm
Invitation to Computer Science, 6th Edition
45
Invitation to Computer Science, 6th Edition
46
Example 2: Looking, Looking, Looking (continued)
The selection of an algorithm to solve a problem is greatly influenced by the way the data for that problem is organized Invitation to Computer Science, 6th Edition
47
Example 3: Big, Bigger, Biggest
Library Collection of useful algorithms Problem Given a value n ≥ 1 and a list containing exactly n unique numbers called A1, A2, , An, find and print out both the largest value in the list and the position in the list where that largest value occurred Invitation to Computer Science, 6th Edition
48
Figure 2.14 Algorithm to Find the Largest Value in a List
Invitation to Computer Science, 6th Edition
49
Invitation to Computer Science, 6th Edition
50
Invitation to Computer Science, 6th Edition
51
Example 4: Meeting Your Match
Pattern matching Process of searching for a special pattern of symbols within a larger collection of information Is assisting microbiologists and geneticists studying and mapping the human genome Invitation to Computer Science, 6th Edition
52
Example 4: Meeting Your Match (continued)
Pattern-matching problem You will be given some text composed of n characters that will be referred to as T1 T Tn. You will also be given a pattern of m characters, m ≤ n, that will be represented as P1 P Pm. The algorithm must locate every occurrence of the pattern within the text. The output of the algorithm is the location in the text where each match occurred. For this problem, the location of a match is defined to be the index position in the text where the match begins Invitation to Computer Science, 6th Edition
53
Example 4: Meeting Your Match (continued)
STEP 1 The matching process: T1 T2 T3 T4 T5 … P1 P2 P3 STEP 2 The slide forward: T1 T2 T3 T4 T5 … 1-character slide -> P1 P2 P3 Invitation to Computer Science, 6th Edition
54
Figure 2.15 First Draft of the Pattern-Matching Algorithm
Invitation to Computer Science, 6th Edition
55
Figure 2.16 Final Draft of the Pattern-Matching Algorithm
Invitation to Computer Science, 6th Edition
56
Invitation to Computer Science, 6th Edition
57
Example 4: Meeting Your Match (continued)
Examples of higher-level constructs Sort the entire list into ascending order Attempt to match the entire pattern against the text Find a root of the equation Abstraction Use of high-level instructions during the design process Top-down design Viewing an operation at a high level of abstraction Invitation to Computer Science, 6th Edition
58
Summary Algorithm design Algorithm design must: Pseudocode
A first step in developing an algorithm Algorithm design must: Ensure the algorithm is correct Ensure the algorithm is sufficiently efficient Pseudocode Used to design and represent algorithms Invitation to Computer Science, 6th Edition
59
Summary (continued) Pseudocode Algorithm design Abstraction
Readable, unambiguous, and able to be analyzed Algorithm design Uses multiple drafts and top-down design to develop the best solution Abstraction A key tool for good design Invitation to Computer Science, 6th Edition
60
Test 1 4 types questions (11) Close notes & Close books Panther Card
Concept: computer science, algorithm, Von Neumann architecture Design: using Pseudocode code Correction: verify the given algorithms Discussion: be creative & comprehensive Close notes & Close books Panther Card Feb 4th: 3:00-4:15pm Assignment 1 due on Feb 4th before 4:15pm Invitation to Computer Science, 6th Edition
Similar presentations
© 2024 SlidePlayer.com Inc.
All rights reserved.