robo david davenport computer eng. dept., bilkent university ankara - turkey. email:...

28
Robo David Davenport Computer Eng. Dept., Bilkent University Ankara - Turkey. email: [email protected] ...a lightning introduction to the engineering of software

Post on 20-Dec-2015

218 views

Category:

Documents


2 download

TRANSCRIPT

Page 1: Robo David Davenport Computer Eng. Dept., Bilkent University Ankara - Turkey. email: david@bilkent.edu.tr...a lightning introduction to the engineering

Robo

David Davenport

Computer Eng. Dept.,Bilkent UniversityAnkara - Turkey.

email: [email protected]

...a lightning introduction to the engineering of software

Page 2: Robo David Davenport Computer Eng. Dept., Bilkent University Ankara - Turkey. email: david@bilkent.edu.tr...a lightning introduction to the engineering

Robo Robo is a little robot with a pen

you command him to move around he leaves a trail with the pen as he moves

Robo’s world is infinite flat white surface

Your objective: to have Robo produce

given pattern/picture

Page 3: Robo David Davenport Computer Eng. Dept., Bilkent University Ankara - Turkey. email: david@bilkent.edu.tr...a lightning introduction to the engineering

Robo Commands

f(x) - move forward x units r(x) - turn right x degrees l(x) - turn left x degrees p - pick up/put down the pen

(switch drawing mode on/off)

Initial condition middle of surface facing north in drawing mode

One command at a time please! (i.e. only one per line)

Sorry, but I can’t do any

maths or even fractions!

Page 4: Robo David Davenport Computer Eng. Dept., Bilkent University Ankara - Turkey. email: david@bilkent.edu.tr...a lightning introduction to the engineering

Robo - examples Have Robo draw

a straight line 100 units long a horizontal line 150 units long a 100 by 200 unit rectangle an equilateral triangle with 150 units sides a dashed line, 50 unit spaces, 100 unit dashes

Points to note:• Robo only understands f,r,l & p (not any natural language)• Syntax error when Robo doesn’t understand command• A program is a sequence of commands (instructions)• Multiple correct solutions

Simple isn’t it?

Page 5: Robo David Davenport Computer Eng. Dept., Bilkent University Ankara - Turkey. email: david@bilkent.edu.tr...a lightning introduction to the engineering

Robo - problem What is this?

No one can IMMEDIATELY say what it is!How can we find out?

TRACE itput yourself in position of

Robo and follow the commands

r(180)f(50)l(90)f(100)l(90)f(100)l(90)

f(100)l(100)f(50)r(90)f(150)l(90)f(70)

l(120)f(140)r(120)f(140)r(120)f(70)

Page 6: Robo David Davenport Computer Eng. Dept., Bilkent University Ankara - Turkey. email: david@bilkent.edu.tr...a lightning introduction to the engineering

Robo - solution After tracing...

program has Logical Errors & needs to be corrected...

DEBUG the program

BUGS

but itshould

look like this

It looks like this!

Page 7: Robo David Davenport Computer Eng. Dept., Bilkent University Ankara - Turkey. email: david@bilkent.edu.tr...a lightning introduction to the engineering

Robo - TRACE & DEBUG Debug it...

r(180)f(50)l(90)f(100)l(90)f(100)l(90)

f(100)l(100)f(50)r(90)f(150)l(90)f(70)

l(120)f(140)r(120)f(140)r(120)f(70)

& check by tracing again!

l(90) r(120)

l(90)To correct... add, remove & change commands

Page 8: Robo David Davenport Computer Eng. Dept., Bilkent University Ankara - Turkey. email: david@bilkent.edu.tr...a lightning introduction to the engineering

Homework (Exercises)! Try one of these yourself

Star Computer House Robot Tree Cube

Important your program should be correct

i.e. it should be right-first-time Robo is asked to do (run/execute) it

Design not experiment.

Page 9: Robo David Davenport Computer Eng. Dept., Bilkent University Ankara - Turkey. email: david@bilkent.edu.tr...a lightning introduction to the engineering

Reflections

Your observations…?

There must be an easier way to

earn a living!

How can we make our lives as programmers easier?

Simple to followDifficult to understandLong & therefore complex to doDifficult to debug and/or changeOften use same/similar sets of commands

Ok, now Robo programmers earn living by writing them but only if right-first-time!

& jobs require HUGE pictures

Page 10: Robo David Davenport Computer Eng. Dept., Bilkent University Ankara - Turkey. email: david@bilkent.edu.tr...a lightning introduction to the engineering

The easy life... Ideas to make life easier

comments blank space methods parameters repetition

Top down structured design

Page 11: Robo David Davenport Computer Eng. Dept., Bilkent University Ankara - Turkey. email: david@bilkent.edu.tr...a lightning introduction to the engineering

Root cause of difficulties Lack of mapping btw problem & solution

l(90)f(50)l(90)f(100)l(90)f(100)l(90)f(100)l(90)f(50)r(90)f(150)l(90)f(70)r(120)f(140)r(120)f(140)r(120)f(70)

?see some structure

see no structure

Program to draw a Wishing Well

finally, draw roof

then draw pole

First draw base

So add notes

Problem: notes would cause syntax errors!Solution: modify Robo to ignore such notes.

Page 12: Robo David Davenport Computer Eng. Dept., Bilkent University Ankara - Turkey. email: david@bilkent.edu.tr...a lightning introduction to the engineering

Comments Are natural language notes

written in the program Ignored by Robo

(i.e. no syntax error)

// any_natural_language_textsyntax:

// Wishing Well// Author: David// Date: Sept. 2002// draw basel(90)f(50)l(90)f(100)l(90)f(100)l(90)f(100)l(90)f(50)r(90)// draw polef(150)l(90)// draw rooff(70)r(120)f(140)r(120)f(140)r(120)f(70)

Use comments… to say what each section does, & to tell about the program as a whole

Every program should have a Header,a block of comments at the top that

detail what, where, when & by whom.

Page 13: Robo David Davenport Computer Eng. Dept., Bilkent University Ankara - Turkey. email: david@bilkent.edu.tr...a lightning introduction to the engineering

The Inheritance of the Labour Movement

The British Labour Movement draws its inspiration from a history that goes back over many centuries. This movement arose directly from the twin struggles by the British people to control Parliament through the popular vote and to gain the right to organise free trade unions.

The battle against the Combination Acts and similar legislation which made trade unionism illegal went hand in hand with the campaigns for working men and women to be represented in Parliament. But even before these historic struggles, which first saw the light of day in the industrial revolution, the origins of socialism can be traced back as far as the time of Christ himself and even to the Old Testament.

Tony Benn, 1979.

Aids to Reading Can you read this comfortably?

theinheritanceofthelabourmovementthebritishlabourmovementdrawsitsinspirationfromahistorythatgoesbackovermanycenturiesthismovementarosedirectlyfromthetwinstrugglesbythebritishpeopletocontrolparliamentthroughthepopularvoteandtogaintherighttoorganisefreetradeunionsthebattleagainstthecombinationactsandsimilarlegislationwhichmadetradeunionismillegalwenthandinhandwiththecampaignsforworkingmenandwomentoberepresentedinparliamentbutevenbeforethesehistoricstruggleswhichfirstsawthelightofdayintheindustrialrevolutiontheoriginsofsocialismcanbetracedbackasfarasthetimeofchristhimselfandeventotheoldtestamenttonybenn1979

Page 14: Robo David Davenport Computer Eng. Dept., Bilkent University Ankara - Turkey. email: david@bilkent.edu.tr...a lightning introduction to the engineering

Blank Space Help visualisation & reading

Blank lines, indentation & spaces

// Wishing Well// Author: David// Date: Sept. 2002

// draw basel(90)f(50)l(90)f(100)l(90)f(100)l(90)f(100)l(90)f(50)r(90)

// draw polef(150)l(90)

// draw rooff(70)r(120)f(140)r(120)f(140)r(120)f(70)

First see 3 partsthen comments

then code

Combine Comments & Blank space Answers without tracing! Aid debugging & maintenance

What does this code do?

// Wishing Well// Author: David// Date: Sept. 2002

// draw basel(90)f(50) l(90) // left f(100) l(90) // bottom f(100) l(90) // right f(100)l(90)f(50)r(90)

// draw polef(150)l(90)

// draw rooff( 70)r( 120)f( 140)r( 120)f( 140)r( 120)f( 70)

Page 15: Robo David Davenport Computer Eng. Dept., Bilkent University Ankara - Turkey. email: david@bilkent.edu.tr...a lightning introduction to the engineering

Methods Are named blocks of commands Short, so easier to understand Facilitates reuse, testing & debugging

d method_namesyntax:

Defining method:

// Draw …// Author: …// Date: …:// draw …:

method_name

Using method:

Example:

// Draw pole

f(150)l(90)

pole

d poled poled pole

Page 16: Robo David Davenport Computer Eng. Dept., Bilkent University Ankara - Turkey. email: david@bilkent.edu.tr...a lightning introduction to the engineering

Wishing Well using methods

// draw roof of wwell// Author: David// Date: Sept. 2002

f(70)l(120)f(140)r(120)f(140)r(120)f(70)

roof// draw base of wwell// Author: David// Date: Sept. 2002

l(90)f(50)l(90)f(100)l(90)f(100)l(90)f(100)l(100)f(50)r(90)

base// Wishing Well// Author: David// Date: Sept. 2002

// draw based base

// draw polef(150)l(90)

// draw roofd roof

wwell

Page 17: Robo David Davenport Computer Eng. Dept., Bilkent University Ankara - Turkey. email: david@bilkent.edu.tr...a lightning introduction to the engineering

& again…? Changed method names What does it do now?

(remember comments are ignored)

// draw roof of wwell// Author: David// Date: Sept. 2002

f(70)r(120)f(140)r(120)f(140)r(120)f(70)

a123// draw base of wwell// Author: David// Date: Sept. 2002

l(90)f(50)l(90)f(100)l(90)f(100)l(90)f(100)l(90)f(50)r(90)

xyz// Wishing Well// Author: David// Date: Sept. 2002

// draw based xyz

// draw polef(150)l(90)

// draw roofd a123

wwell

…it looks like a

wishing well, but…

MORAL – use meaningful names!

d xyzd poled a123

wwell

// draw pole of wwell// Author: David// Date: Sept. 2002

f(150)l(90)

pole

Page 18: Robo David Davenport Computer Eng. Dept., Bilkent University Ankara - Turkey. email: david@bilkent.edu.tr...a lightning introduction to the engineering

House

250 x 250 x 250

50 x 50

250 x 250

50 x 100

Page 19: Robo David Davenport Computer Eng. Dept., Bilkent University Ankara - Turkey. email: david@bilkent.edu.tr...a lightning introduction to the engineering

House

f(50)r(90)f(50)r(90)f(50)r(90)f(50)r(90)

windowf(250)r(90)f(250)r(90)f(250)r(90)f(250)r(90)

wallsf(150)r(90)f(50)r(90)f(150)r(90)f(50)r(90)

door housebodyd wallsr(90)f(100)l(90)d doorpf(125)l(90)f(75)r(90)pd windowpr(90)f(150)l(90)pd window

housed housebodypf(125)l(90)f(175)r(120)pd roof

roof

f(250)r(120)f(250)r(120)f(250)

Page 20: Robo David Davenport Computer Eng. Dept., Bilkent University Ankara - Turkey. email: david@bilkent.edu.tr...a lightning introduction to the engineering

Generalize methods Looking at specific method instances

notice repetition of similar code so, abstract/generalize through parameters

f(50)r(90)f(50)r(90)f(50)r(90)f(50)r(90)

windowf(250)r(90)f(250)r(90)f(250)r(90)f(250)r(90)

wallsf(150)r(90)f(50)r(90)f(150)r(90)f(50)r(90)

doorf( height)r(90)f( width)r(90)f( height)r(90)f( width)r(90)

rect( width, height)

These are known as formal

parameters They must be replaced with actual values

when the Robo does the method

Can you write equtri?

Page 21: Robo David Davenport Computer Eng. Dept., Bilkent University Ankara - Turkey. email: david@bilkent.edu.tr...a lightning introduction to the engineering

Using general methods

Example, in place of draw door: d door Need to say “draw rectangle with width=50 & height=150” Use notation d rect( 50, 150)

f(150)r(90)f(50)r(90)f(150)r(90)f(50)r(90)

doorf( height)r(90)f( width)r(90)f( height)r(90)f( width)r(90)

rect( width, height)

Actual parameter values

f( 150)r(90)f( 50)r(90)f( 150)r(90)f( 50)r(90)

rect( 50, 150)

Replace formal

parameters with actual parameter

values

Page 22: Robo David Davenport Computer Eng. Dept., Bilkent University Ankara - Turkey. email: david@bilkent.edu.tr...a lightning introduction to the engineering

Rewriting the house program Using general rectangle method

in place of draw door: d door• say “draw rectangle with width=50 & height=150”

i.e. d rect( 50, 150) in place of draw walls: d walls

• say “draw rectangle with height=250 & width=250”i.e. d rect( 250, 250)

d roofd wallsd leftwindowd rightwindowd door

housed roofd rect( 250, 250)d rect( 50, 50)d rect( 50, 50)d rect( 50, 150)

house

Now need comments!

Page 23: Robo David Davenport Computer Eng. Dept., Bilkent University Ankara - Turkey. email: david@bilkent.edu.tr...a lightning introduction to the engineering

Restricted parameter names!

Robo allows only names: a, b, c, d translate rect method for Robo…

f( height)r(90)f( width)r(90)f( height)r(90)f( width)r(90)

rect( width, height)f( b)r(90)f( a)r(90)f( b)r(90)f( a)r(90)

rect( a, b, c, d )

Robo methods always have these

four formal parameters, even if they are not used.

For this reason, they are not explicitly

written each time.

Now need to include comments to say what a, b, c & d represent…

// Params: a – width, b - height

Page 24: Robo David Davenport Computer Eng. Dept., Bilkent University Ankara - Turkey. email: david@bilkent.edu.tr...a lightning introduction to the engineering

Methods are independent!

Methods can call other methods only connection is parameter list matched one-by-one in order, not by name!

d moveturn( b, 90)d moveturn( a, 90)d moveturn( b, 90)d moveturn( a, 90)

rect( a, b)

d rect( a, b)r( c)

rectturn( a, b, c)

f( a)r( b)

moveturn( a, b)

Must understand: a’s, b’s, etc. are different

in each method.

Page 25: Robo David Davenport Computer Eng. Dept., Bilkent University Ankara - Turkey. email: david@bilkent.edu.tr...a lightning introduction to the engineering

Repetition Automatically repeat method

x 2 halfrect( a, b)rect( a, b)

x c rectturn( a, b, d) pretty( a, b, c, d)

d moveturn( b, 90)d moveturn( a, 90)

halfrect( a, b)

d rect( a, b)r( c)

rectturn( a, b, c)

f( a)r( b)

moveturn( a, b)

x number_of_times method_name ( parameter_list )syntax:

x 10 rectturn( a, b, 36)pretty( a, b)

Try doing square & rewriting equtri

Page 26: Robo David Davenport Computer Eng. Dept., Bilkent University Ankara - Turkey. email: david@bilkent.edu.tr...a lightning introduction to the engineering

Repetition -- HECTOGONAL

EQUTRI

// equilateral // trianglef(a)r(120)f(a)r(120)f(a)

d equtri(a)r(180)

r(30)x 6 sequtri(a)

r(30)x 3 equtri(a)l(60)x 3 equtri(a)

sequtri

hecto1

hecto2

Page 27: Robo David Davenport Computer Eng. Dept., Bilkent University Ankara - Turkey. email: david@bilkent.edu.tr...a lightning introduction to the engineering

Repetition -- CİRCLE

r(a)f(b)

circlepart

x 360 circlepart(1,1)

circle

Page 28: Robo David Davenport Computer Eng. Dept., Bilkent University Ankara - Turkey. email: david@bilkent.edu.tr...a lightning introduction to the engineering

Summary You should have learnt about

& understand the rationale for… Comments White space Meaningfully named methods Method parameters Repetition

Coming next… Top-down structured design!