Robo David Davenport Computer Eng. Dept., Bilkent University Ankara - Turkey. email:...
-
date post
20-Dec-2015 -
Category
Documents
-
view
218 -
download
2
Transcript of Robo David Davenport Computer Eng. Dept., Bilkent University Ankara - Turkey. email:...
![Page 1: Robo David Davenport Computer Eng. Dept., Bilkent University Ankara - Turkey. email: david@bilkent.edu.tr...a lightning introduction to the engineering.](https://reader034.fdocuments.us/reader034/viewer/2022042702/56649d435503460f94a1ebae/html5/thumbnails/1.jpg)
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.](https://reader034.fdocuments.us/reader034/viewer/2022042702/56649d435503460f94a1ebae/html5/thumbnails/2.jpg)
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.](https://reader034.fdocuments.us/reader034/viewer/2022042702/56649d435503460f94a1ebae/html5/thumbnails/3.jpg)
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.](https://reader034.fdocuments.us/reader034/viewer/2022042702/56649d435503460f94a1ebae/html5/thumbnails/4.jpg)
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.](https://reader034.fdocuments.us/reader034/viewer/2022042702/56649d435503460f94a1ebae/html5/thumbnails/5.jpg)
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.](https://reader034.fdocuments.us/reader034/viewer/2022042702/56649d435503460f94a1ebae/html5/thumbnails/6.jpg)
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.](https://reader034.fdocuments.us/reader034/viewer/2022042702/56649d435503460f94a1ebae/html5/thumbnails/7.jpg)
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.](https://reader034.fdocuments.us/reader034/viewer/2022042702/56649d435503460f94a1ebae/html5/thumbnails/8.jpg)
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.](https://reader034.fdocuments.us/reader034/viewer/2022042702/56649d435503460f94a1ebae/html5/thumbnails/9.jpg)
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.](https://reader034.fdocuments.us/reader034/viewer/2022042702/56649d435503460f94a1ebae/html5/thumbnails/10.jpg)
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.](https://reader034.fdocuments.us/reader034/viewer/2022042702/56649d435503460f94a1ebae/html5/thumbnails/11.jpg)
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.](https://reader034.fdocuments.us/reader034/viewer/2022042702/56649d435503460f94a1ebae/html5/thumbnails/12.jpg)
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.](https://reader034.fdocuments.us/reader034/viewer/2022042702/56649d435503460f94a1ebae/html5/thumbnails/13.jpg)
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.](https://reader034.fdocuments.us/reader034/viewer/2022042702/56649d435503460f94a1ebae/html5/thumbnails/14.jpg)
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.](https://reader034.fdocuments.us/reader034/viewer/2022042702/56649d435503460f94a1ebae/html5/thumbnails/15.jpg)
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.](https://reader034.fdocuments.us/reader034/viewer/2022042702/56649d435503460f94a1ebae/html5/thumbnails/16.jpg)
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.](https://reader034.fdocuments.us/reader034/viewer/2022042702/56649d435503460f94a1ebae/html5/thumbnails/17.jpg)
& 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.](https://reader034.fdocuments.us/reader034/viewer/2022042702/56649d435503460f94a1ebae/html5/thumbnails/18.jpg)
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.](https://reader034.fdocuments.us/reader034/viewer/2022042702/56649d435503460f94a1ebae/html5/thumbnails/19.jpg)
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.](https://reader034.fdocuments.us/reader034/viewer/2022042702/56649d435503460f94a1ebae/html5/thumbnails/20.jpg)
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.](https://reader034.fdocuments.us/reader034/viewer/2022042702/56649d435503460f94a1ebae/html5/thumbnails/21.jpg)
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.](https://reader034.fdocuments.us/reader034/viewer/2022042702/56649d435503460f94a1ebae/html5/thumbnails/22.jpg)
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.](https://reader034.fdocuments.us/reader034/viewer/2022042702/56649d435503460f94a1ebae/html5/thumbnails/23.jpg)
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.](https://reader034.fdocuments.us/reader034/viewer/2022042702/56649d435503460f94a1ebae/html5/thumbnails/24.jpg)
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.](https://reader034.fdocuments.us/reader034/viewer/2022042702/56649d435503460f94a1ebae/html5/thumbnails/25.jpg)
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.](https://reader034.fdocuments.us/reader034/viewer/2022042702/56649d435503460f94a1ebae/html5/thumbnails/26.jpg)
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.](https://reader034.fdocuments.us/reader034/viewer/2022042702/56649d435503460f94a1ebae/html5/thumbnails/27.jpg)
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.](https://reader034.fdocuments.us/reader034/viewer/2022042702/56649d435503460f94a1ebae/html5/thumbnails/28.jpg)
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!