slide1 l.
Download
Skip this Video
Loading SlideShow in 5 Seconds..
Robo PowerPoint Presentation
Download Presentation
Robo

Loading in 2 Seconds...

play fullscreen
1 / 26

Robo - PowerPoint PPT Presentation


  • 175 Views
  • Uploaded on

Robo . ...a lightning introduction to the engineering of software. David Davenport Computer Eng. Dept., Bilkent University Ankara - Turkey. email: david@bilkent.edu.tr. IMPORTANT…. Students…

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

PowerPoint Slideshow about 'Robo' - lada


An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript
slide1

Robo

...a lightning introduction to the engineering of software

David Davenport

Computer Eng. Dept.,

Bilkent UniversityAnkara - Turkey.

email: david@bilkent.edu.tr

important
IMPORTANT…
  • Students…

This presentation is designed to be used in class as part of a guided discovery sequence. It is not self-explanatory! Please use it only for revision purposes after having taken the class. Simply flicking through the slides will teach you nothing. You must be actively thinking, doing and questioning to learn!

  • Instructors…

You are free to use this presentation in your classes and to make any modifications to it that you wish. All I ask is an email saying where and when it is/was used. I would also appreciate any suggestions you may have for improving it.

thank you,David.

slide3
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 producegiven pattern/picture
slide4
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!

robo examples
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?

robo problem

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)

Robo - problem
  • What is this?

TRACE it

put yourself in position of Robo and follow the commands

No one can IMMEDIATELY say what it is!

How can we find out?

robo solution

It looks like this!

but itshould look like this

Robo - solution
  • After tracing...

BUGS

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

DEBUG the program

robo trace debug

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)

l(90)

r(120)

l(90)

Robo - TRACE & DEBUG
  • Debug it...

To correct...

add, remove & change commands

& check by tracing again!

homework
Homework!
  • Try one of these yourself
    • Star Computer
    • House Robot
    • Tree Cube
  • Important
    • your program should be correcti.e. it should be right-first-timeRobo is asked to do (run/execute) it
    • Motto: Design not experiment.
reflections
Reflections
  • Ok, now Robo programmers
    • earn living by writing them
    • but only if right-first-time!
  • Your observations…?

There must be an easier way to earn a living!

  • & jobs require HUGE pictures

How can we make our lives as programmers easier?

Simple to follow

Difficult to understand

Long & therefore complex to do

Difficult to debug and/or change

Often use same/similar sets of commands

the easy life
The easy life...
  • Ideas to make life easier
    • comments
    • blank space
    • methods
    • parameters
    • repetition
  • Top down structured design
root cause of difficulties

Program to draw a Wishing Well

First draw base

?

then draw pole

finally, draw roof

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)

Problem:

notes would cause syntax errors!

Solution:

modify Robo to ignore such notes.

see some structure

So add notes

see no structure

comments
Comments

// Wishing Well

// Author: David

// Date: Sept. 2002

// draw base

l(90)

f(50)

l(90)

f(100)

l(90)

f(100)

l(90)

f(100)

l(90)

f(50)

r(90)

// draw pole

f(150)

l(90)

// draw roof

f(70)

r(120)

f(140)

r(120)

f(140)

r(120)

f(70)

  • Are natural language notes written in the program
  • Ignored by Robo (i.e. no syntax error)

// any_natural_language_text

syntax:

  • 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.

aids to reading
Aids to Reading
  • Can you read this comfortably?

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.

theinheritanceofthelabourmovementthebritishlabourmovementdrawsitsinspirationfromahistorythatgoesbackovermanycenturiesthismovementarosedirectlyfromthetwinstrugglesbythebritishpeopletocontrolparliamentthroughthepopularvoteandtogaintherighttoorganisefreetradeunionsthebattleagainstthecombinationactsandsimilarlegislationwhichmadetradeunionismillegalwenthandinhandwiththecampaignsforworkingmenandwomentoberepresentedinparliamentbutevenbeforethesehistoricstruggleswhichfirstsawthelightofdayintheindustrialrevolutiontheoriginsofsocialismcanbetracedbackasfarasthetimeofchristhimselfandeventotheoldtestamenttonybenn1979

blank space
Blank Space

// Wishing Well

// Author: David

// Date: Sept. 2002

// draw base

l(90)

f(50)

l(90)

f(100)

l(90)

f(100)

l(90)

f(100)

l(90)

f(50)

r(90)

// draw pole

f(150)

l(90)

// draw roof

f(70)

r(120)

f(140)

r(120)

f(140)

r(120)

f(70)

// Wishing Well

// Author: David

// Date: Sept. 2002

// draw base

l(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 pole

f(150)

l(90)

// draw roof

f( 70)

r( 120)

f( 140)

r( 120)

f( 140)

r( 120)

f( 70)

  • Help visualisation & reading
    • Blank lines, indentation & spaces
  • What does this code do?

First see 3 parts

then comments

then code

Extend Robo to avoid syntax errors!

Combine Comments & Blank space

  • Answers without tracing!
  • Aid debugging & maintenance
methods

Defining method:

Example:

method_name

pole

// Draw …

// Author: …

// Date: …

:

// draw …

:

// Draw pole

f(150)

l(90)

Using method:

d pole

d pole

syntax:

d method_name

d pole

Methods
  • Are named blocks of commands
  • Short, so easier to understand
  • Facilitates reuse, testing & debugging
wishing well using methods

wwell

// Wishing Well

// Author: David

// Date: Sept. 2002

// draw base

d base

// draw pole

f(150)

l(90)

// draw roof

d roof

base

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)

// draw roof of wwell

// Author: David

// Date: Sept. 2002

f(70)

l(120)

f(140)

r(120)

f(140)

r(120)

f(70)

Wishing Well using methods
again

wwell

wwell

// Wishing Well

// Author: David

// Date: Sept. 2002

// draw base

d xyz

// draw pole

f(150)

l(90)

// draw roof

d a123

d xyz

d pole

d a123

xyz

a123

pole

// 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)

// draw roof of wwell

// Author: David

// Date: Sept. 2002

f(70)

r(120)

f(140)

r(120)

f(140)

r(120)

f(70)

// draw pole of wwell

// Author: David

// Date: Sept. 2002

f(150)

l(90)

& again…?
  • Changed method names
  • What does it do now? (remember comments are ignored)

…it looks like a wishing well, but…

MORAL – use meaningful names!

some demo programs
Some demo programs…
  • What is this…
  • It should look like this…
  • Can you debug it?
  • What is this?
  • Can you add a door knob or curtains?

Note: These demos are located in a separate subdirectory and need java to run!

Switch to an MSDOS window, change to the demos directory, (cross fingers) and run manually by typingjava TryRobo filename

generalise methods

window

walls

door

rect( width, height)

f(50)

r(90)

f(50)

r(90)

f(50)

r(90)

f(50)

r(90)

f(250)

r(90)

f(250)

r(90)

f(250)

r(90)

f(250)

r(90)

f(150)

r(90)

f(50)

r(90)

f(150)

r(90)

f(50)

r(90)

f( height)

r(90)

f( width)

r(90)

f( height)

r(90)

f( width)

r(90)

These are known as formal parameters They must be replaced with actual values when the Robo does the method

Generalise methods
  • Looking at specific method instances
    • notice repetition of similar code
    • so, abstract/generalise through parameters

Can you write equtri?

using general methods

door

rect( width, height)

f(150)

r(90)

f(50)

r(90)

f(150)

r(90)

f(50)

r(90)

f( height)

r(90)

f( width)

r(90)

f( height)

r(90)

f( width)

r(90)

rect( 50, 150)

f( 150)

r(90)

f( 50)

r(90)

f( 150)

r(90)

f( 50)

r(90)

Replace formal parameters with actual parameter values

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

Actual parameter values

rewriting the house program

house

house

d roof

d walls

d leftwindow

d rightwindow

d door

d roof

d rect( 250, 250)

d rect( 50, 50)

d rect( 50, 50)

d rect( 50, 150)

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)

Now need comments!

restricted parameter names

rect( width, height)

rect( a, b, c, d )

f( height)

r(90)

f( width)

r(90)

f( height)

r(90)

f( width)

r(90)

f( b)

r(90)

f( a)

r(90)

f( b)

r(90)

f( a)

r(90)

Restricted parameter names!
  • Robo allows only names: a, b, c, d
    • translate rect method for Robo…

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

methods are independent

rect( a, b)

rectturn( a, b, c)

moveturn( a, b)

d moveturn( b, 90)

d moveturn( a, 90)

d moveturn( b, 90)

d moveturn( a, 90)

d rect( a, b)

r( c)

f( a)

r( b)

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

Must understand:a’s, b’s, etc. are differentin each method.

repetition

rect( a, b)

pretty( a, b, c, d)

halfrect( a, b)

pretty( a, b)

rectturn( a, b, c)

moveturn( a, b)

f( a)

r( b)

d moveturn( b, 90)

d moveturn( a, 90)

x c rectturn( a, b, d)

x 2 halfrect( a, b)

x 10 rectturn( a, b, 36)

d rect( a, b)

r( c)

Repetition
  • Automatically repeat method

x number_of_times method_name ( parameter_list )

syntax:

Try doing square & rewriting equtri

summary
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!