24
CS 7: Introduction to Computer Programming Algorithms

CS 7: Introduction to Computer Programming Algorithms

Embed Size (px)

Citation preview

Page 1: CS 7: Introduction to Computer Programming Algorithms

CS 7: Introduction to Computer Programming

Algorithms

Page 2: CS 7: Introduction to Computer Programming Algorithms

Review What are the 5 generation

languages (“GL”)? 1 GL – machine language 2 GL – assembly language 3 GL – high level language 4 GL – “non-procedural, specification

language” 5 GL – “constraint-based, Artificial

Intelligence language”

Page 3: CS 7: Introduction to Computer Programming Algorithms

Trade-offs among the 5 G’s Productivity

Time to write, debug, maintain code Portability

Ease of taking program written on 1 computer and moving it to another

Efficiency Time it takes code to run Amount of space it takes to run

Task Dependent Is the language developed for a specific

task?

Page 4: CS 7: Introduction to Computer Programming Algorithms

1 GL Example

000000 00001 00010 00110 00000 100000 Add registers 1 and 2, place result in register 6

Low productivity Lots of instructions needed for simple tasks

Low portability Different machine languages for different architectures

High efficiency can take advantage of architecture dependent features can write more quick and compact code

Not task dependent Everything ultimately must be in machine code!

Page 5: CS 7: Introduction to Computer Programming Algorithms

2 GL - MIPS Example

add $1, $2, $6 Add registers 1 and 2, place result in register 6

Low productivity Lots of instructions needed for simple tasks

Usually 1-to-1 correspondence with machine language Easier to read

Low portability Different machine languages for different architectures

High efficiency can take advantage of architecture dependent features can write more quick and compact code

Not task dependent

Page 6: CS 7: Introduction to Computer Programming Algorithms

3 GL – Java, C++, BASIC, FORTRAN Example

d = e + f; Add the values in e and f, place result in d

High productivity 1 instruction can be 100, 1000 lines of machine code Much more like human language

Highly portable Run on any machine with necessary compiler,

interpreter Efficiency

Not as good as machine code Not task dependent

Page 7: CS 7: Introduction to Computer Programming Algorithms

4 GL – SQL, Visual Basic’s GUI Creator Example

FIND ALL RECORDS WHERE NAME IS “HOFFMANN” High productivity

Easy than 3 GL Highly portable

Run on any machine with necessary compiler, interpreter

Efficiency Not as good as machine code or high level language

Task dependent SQL used for database queries Visual Basic’s GUI Creator is for designing Graphical

User Interfaces (GUIs)

Page 8: CS 7: Introduction to Computer Programming Algorithms

5 GL – Prolog, Neural Networks Example

Specify neural network architecture for learning to map written character to ASCII equivalent

High productivity Highly portable Efficiency

Not as good as machine code or high level language

Task dependent Used to solve problems with specific

constraints

Page 9: CS 7: Introduction to Computer Programming Algorithms

Some Notes

Syllabus Typo (5 not 6 projects) Make sure to read all of the relevant

sections of book for the week before the first lecture of that week

Labs start today

Page 10: CS 7: Introduction to Computer Programming Algorithms

Algorithms

Page 11: CS 7: Introduction to Computer Programming Algorithms

Algorithms - Definition

Set of instructions used to complete a task

Can be represented as Pseudocode – list of steps, is precise

but not implemented in programming language

Flowchart – graphical representation

Page 12: CS 7: Introduction to Computer Programming Algorithms

Algorithms - Representation

How do you… Make a peanut butter sandwich? Calculative a derivative? Find a job? Do the hokey pokey?

Page 13: CS 7: Introduction to Computer Programming Algorithms

Hokey Pokey – List of Steps Representation

Volunteers? Anything unclear in the steps the

song gives?

Page 14: CS 7: Introduction to Computer Programming Algorithms

Flowchart symbols

Action Symbol Instructions changing a state

Decision Symbol Instructions testing a state

Flowline Instructions transferring to next step

Start/End Symbol

Page 15: CS 7: Introduction to Computer Programming Algorithms

Control Structures

Bohm & Jacopini showed all programs could be written in terms of 3 structures: Sequence – which instruction should

be done next? Selection – select between options Repetition – repeat an action while a

given condition stays true

Page 16: CS 7: Introduction to Computer Programming Algorithms

Sequence

1) Open the jar 2) Scoop out the peanut butter 3) Spread the peanut butter on the

bread

Page 17: CS 7: Introduction to Computer Programming Algorithms

Selection Single Selection (if)

If you’ve won the lottery: raise your hand

Double Selection (if-else) If you’re happy: smile else: frown

Won lottery?

Raise Hand

True

False

Happy? SmileTrueFalse

Frown

Page 18: CS 7: Introduction to Computer Programming Algorithms

Selection (continued)

Multiple Selection (switch)If the light is ... red -> stop green -> go yellow -> slow down

LightRed?

Stop

True

False

LightGreen?

Go

False

LightYellow?

SlowDown

False

True

True

Page 19: CS 7: Introduction to Computer Programming Algorithms

Repetition

While

Do-while

MixtureClumpy?

StirTrue

False

Parent say“Yes”?

True

False

Must I eatVeggies?

ask parents if must eat

vegetables

while parents say “Yes”

while it’s still clumpy

Stir the mixture

Page 20: CS 7: Introduction to Computer Programming Algorithms

Repetition (continued)

For

Counter ≤ 10?

Print counter

True

False

Counter = 1

Add 1to counter

Teaching a baby to count from 1 to 10:

counter = 1

if counter <= 10:

increment counter

print counter number

Page 21: CS 7: Introduction to Computer Programming Algorithms

Hokey Pokey - Flowchart

Page 22: CS 7: Introduction to Computer Programming Algorithms

Pseudocode Pseudocode - Algorithm written in way that resembles code: Example (from BlackJack)method computeScore(cards): for each card in hand: if card is ace: add 1 to score add 1 to numAces else if card is face card: add 10 to score otherwise: add face value to score while numAces > 0 and count < 21: add 10 to counter return counter value

Page 23: CS 7: Introduction to Computer Programming Algorithms

Algorithms - characteristics

What kinds of things are we seeing in these tasks? They have an input, an output, and do

some processing That processing needs to terminate,

be unambiguous, and simple to perform (we want to be able to easily implement it from the algorithm)

Page 24: CS 7: Introduction to Computer Programming Algorithms

References

Deitel, H.M., and Deitel, P.J. Java: How to Program, 3rd edition. Chapter 4,5

Wikipedia. http://www.soi.city.ac.uk/~tony/db

ms/4ges.html