Invitation to Computer Science, Java Version, Second Edition.

39
Invitation to Computer Science, Java Version, Second Edition

Transcript of Invitation to Computer Science, Java Version, Second Edition.

Invitation to Computer Science,Java Version, Second Edition

ObjectivesIn this chapter, you will learn about:

Representing algorithms

Examples of algorithmic problem solving

2

IntroductionThis chapter discusses algorithms and

algorithmic problem solving using three problems:

Searching lists

Finding smallest and largest items in lists

Matching patterns

3

Representing AlgorithmsWhat is an algorithm?

A series of steps to perform a task – that’s it.

A recipe is an algorithm for how to cook chicken enchiladas

Directions are an algorithm for how to get to someone’s house

4

Representing AlgorithmsNatural language

Language spoken and written in everyday lifeEnglish, SpanishProblems with using natural language for

algorithmsImpreciseRelies on context and experience of the

person you are talking to“I saw the man looking through the

telescope”5

Representing AlgorithmsHigh-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

6

PseudocodeEnglish language constructs modeled to

look like statements available in most programming languages

Ex: ADD X + Y

No fixed syntax for most operations is required

Everyone knows what you are talking about 7

Pseudocode (continued)Less ambiguous and more readable than

natural language

Emphasis is on the process, not the specific notation

Can be easily translated into a programming language

8

OperationsTypes of algorithmic operations

Sequential – input / output, assignment, printing, etc.

Conditional – doing one thing or another based on a certain condition

Iterative – looping – doing something more than once

9

Sequential Operations (continued)Computation operations

Example

Set the value of “variable” to “arithmetic expression”

X = 10 (set x equal to 10)

Variable

Named storage location that can hold a data value

X in the above example10

Sequential Operations (continued)Input operations

To receive data values from the outside world

Get a value for r, the radius of the circle

Output operationsTo send results to the outside world for display

Print the value of Area

11

Figure 2.3Algorithm for Computing Average Miles per Gallon

12

6 Go to gas station7 Take out loan

Conditional and Iterative OperationsSequential algorithm

Executes its instructions in a straight line from top to bottom and then stops

Control operations – allow us to get more complex

Conditional operations

IF X=10 THEN … do some stuff

Iterative operations

WHILE X < 100 … do some other stuff13

Conditional and Iterative Operations (continued)Conditional operations

Ask questions and choose alternative actions based on the answers

Example

if x is greater than 25 then

print x

else

print x times 100

Invitation to Computer Science, Java Version, Second Edition 14

Conditional and Iterative Operations (continued)Iterative operations

Perform “looping” behavior; repeating actions until a continuation condition becomes false

Loop

The repetition of a block of instructions

15

Conditional and Iterative Operations (continued)

Examples while j > 0 do

set s to s + aj

set j to j - 1

repeatprint ak

set k to k + 1

until k > n

16

Figure 2.4Second Version of the Average Miles per Gallon Algorithm

17

Conditional and Iterative Operations (continued)Components of a loop

Continuation condition – when do we stop?

Loop body – what we want to repeat

Infinite loop

The continuation condition never becomes false and the loop runs forever

This is usually an errorInvitation to Computer Science, Java Version, Second Edition 18

Figure 2.5Third Version of the Average Miles per Gallon Algorithm

Invitation to Computer Science, Java Version, Second Edition 19

Conditional and Iterative OperationsPretest loop

Continuation condition tested at the beginning of each pass through the loop

It is possible for the loop body to never be executed

Ex: While loop

Invitation to Computer Science, Java Version, Second Edition 20

Conditional and Iterative Operations (continued)Post-test loop

Continuation condition tested at the end of loop body

Loop body must be executed at least once

Ex: Do - While loop

Invitation to Computer Science, Java Version, Second Edition 21

Figure 2.6Summary of Pseudocode Language Instructions

22

One other operation - functionsSomeone (possibly not you) writes a function.

This function performs some action, like averaging three numbers, and returns a result to you.

You call the function, and it returns a result

A function accepts parameters (the numbers to average in this case) and you include these parameters when you call the function.

23

One other operation - functionsAverage (98, 77, 100) then gives me the

average of the 3 numbers

Assuming the function was written correctly

Essential for creating re-usable code, not reinventing the wheel, etc.

Many, many built in functions (methods) in Java.

24

Example 1: Looking, Looking, LookingExamples of algorithmic problem solving

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

25

Example 1: 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

26

Example 1: Looking, Looking, Looking (continued)Correct sequential search algorithm

Uses iteration (loops) to simplify the task

Handles special cases (like a name not found in the collection)

27

Figure 2.9The Sequential Search Algorithm

28

Uses the variable Found to exit the iteration as soon as a match is found

Example 1: Looking, Looking, Looking (continued)

The selection of an algorithm to solve a problem is greatly influenced by the way the data for that problem are organized

29

Example 2: Big, Bigger, BiggestTask

Find the largest value from a list of values

Algorithm outline

Keep track of the largest value seen so far (initialized to be the first in the list)

Compare each value to the largest seen so far, and keep the larger as the new largest

Invitation to Computer Science, Java Version, Second Edition 30

Example 2: Big, Bigger, Biggest (continued)Once an algorithm has been developed, it may

itself be used in the construction of other, more complex algorithms

Library

A collection of useful algorithms – created (usually) by someone else.

Don’t reinvent the wheel – many solutions to common problems are available, particularly in Java

An important tool in algorithm design and development

31

Figure 2.10Algorithm to Find the Largest Value in a List

32

Example 3: Meeting Your MatchTask

Find if and where a pattern string occurs within a longer piece of text

Algorithm outline

Try each possible location of pattern string in turn

At each location, compare pattern characters against string characters

Invitation to Computer Science, Java Version, Second Edition 33

Example 3: Meeting Your Match (continued)Abstraction

Separating high-level view from low-level details

Key concept in computer science – “LAYERS”

Makes difficult problems intellectually manageable

Allows piece-by-piece development of algorithms

34

Example 3: Meeting Your Match (continued)Top-down design

When solving a complex problem:

Create high-level operations in first draft of an algorithm

After drafting the outline of the algorithm, return to the high-level operations and elaborate each one

35

Example 3: Meeting Your Match (continued)Pattern-matching algorithm

Contains a loop within a loop

External loop iterates through possible locations of matches to pattern

Internal loop iterates through corresponding characters of pattern and string to evaluate match

Invitation to Computer Science, Java Version, Second Edition 36

Figure 2.12Final Draft of the Pattern-Matching Algorithm

Invitation to Computer Science, Java Version, Second Edition 37

SummaryAlgorithm design is a first step in

developing an algorithm

Must also:

Ensure the algorithm is correct

Ensure the algorithm is sufficiently efficient

Pseudocode is used to design and represent algorithms

38

SummaryPseudocode is readable, unambiguous,

and analyzable

Algorithm design is a creative process; uses multiple drafts and top-down design to develop the best solution

Abstraction is a key tool for good design

39