140 likes | 165 Views
Learn about Logo, a programming language designed to introduce children to programming concepts. This article covers the history of Logo, its syntax and examples, and its areas of application such as graphics, language use, and making music.
E N D
Logo -- A Language for Learning Liping Cai 11/21/2005
Agenda • What is Logo? • History • Syntax and Example • Demo • Reference
What is Logo? • Designed to manipulate language – Words and Sentences. • Designed to introduce children to programming concepts • Intended to be easy to learn, easy to use, easy to read, but also powerful and able to cope with complex problems. • Features: modularity, extensibility, interactivity, and flexibility • Areas of Application: Graphics (Turtle Graphics), Use with Language, Making Music
History • The first version of Logo is created in 1967 by Seymour Papert and his team. • Throughout the 1970s Logo was incubating at MIT and a few other research sites. • Widespread use of Logo began with the advent of personal computers during the late 1970s. • the Logo boom is in the early 1980s but Logo did not become popular among applications programmers. • Over the past few years there has been a flurry of new Logo development accompanied by renewed public awareness and enthusiasm. • MicroWorlds. Released in 1993 by LCSI. MicroWorlds includes many extra-Logo features - drawing tools, a shape editor, a melody maker, the ability to import graphics and sounds - that work along with Logo to support the creation of multimedia projects, games, and simulations. • Logo has also been incorporated into HyperStudio, the widely popular multimedia program for Macintosh and Windows from Roger Wagner Productions.
Get to Know Logo • Turtle: Cursor for Logo -- set position of the logo: Turtle Screen Positions using <Setxy horizontal vertical> • Technical Terms: -- instruction: is what you type to Logo to tell it to do something. Print 17 is an example of an instruction. -- procedure: is a small piece of code that performs a single task ;Procedures are invoked by instructions. Print is a procedure. -- command: is a procedure that does not output a value but instead has some effect such as printing something on the screen, moving a turtle, or making a sound. Print is a command; -- operation: is a procedure that computes a value and outputs it. Sum and product are operations.
Simple Commands • Forward 100 - moves the turtle forward 100 unit • Back 50 - moves the turtle back 50 units • Right 45 - turns the turtle 45 degrees to the right • Left 90 - turns the turtle 90 degrees to the left • Home - Returns the turtle to its origin • ClearSceen - Erases the screen • repeat 4 [FD 100 RT 90] – draw a square • Print “hello – print Hello on the screen
primitive operations • Sum: Print Sum 2 3 – 5 • First: Print first “Hello – H; Print first [How are you?] – How • Butfrist: Print butfirst “hello – ello; Print butfirst [how are you?] – are you? • Item: Print item 3 “ how – w; Print item 3 [How are you] – you • Sentence: print sentence "hello "goodbye -- hello goodbye print sentence [this is] [a test] -- this is a test; print sentence "this [is one too] -- this is one too; print sentence [] [list of words] – list of words; • Word: print word "now "here – nowhere; print word "this [is a test] -- word doesn't like [is a test] as input • List: print list [this is] [a test] -- [this is] [a test]; print list "this [is one too] -- this [is one too]; print list [] [list of words] -- [] [list of words] ;
Define Procedures & Variables: • To define a procedure: To procedure …. Statements End • To define a variable: MAKE "<variableName> <value> eg make "size 10. In this example the variable called "size" will now have a value of ten. make "position {1 2 3 4 5 6 7 8 9} -- make an array • Using variable in Procedure: colon(:) in front of variable name. to numberingmake "size 10label :sizeend
Predicates & Operator: • A predicate is an operation whose output is always either the word true or the word false. Listp -- return true if input is a list, false if not. print wordp "hello – true; print wordp [hello] – false print emptyp []-- true; print emptyp 0 –false print equalp 3 3.0-- true; print equalp "hello [hello]--false • Define custom Predicates: to vowelp :letter output memberp :letter [a e i o u] end print vowelp “e – true; print vowelp “h – false. • Operators: + - * /
Conditional Commands & Iteration • If: if equalp 2 1+1 [print "Yup.] – Yup. • ifelse: ifelse 4 = 2+2 [print "Yup.] [print "Nope.] -- Yup • iftrue and iffalse : make "variable1 27make "variable2 33test :variable1 = :variable2iftrue [print [The values are the same.]]ifffalse [print [The values are different.]] --The values are different. • Until, while : until [condition][action]; while [condition][action] until [:count > 10][print :count make "count :count + 1] -- 1 2 3 4 5 6 7 8 9 10 where [:count < 10][print :count make "count :count + 1] -- 1 2 3 4 5 6 7 8 9 • Do.until, do.while : do.until [action][condition] do.while [action][condition] do.until [print :count make "count :count + 1][:count > 10] --1 2 3 4 5 6 7 8 9 10 do.while [print :count make "count :count + 1][:count < 10]--1 2 3 4 5 6 7 8 9
Conditional Commands & Iteration (Continued) • For: for [variable_name starting_value limit_value, steps] for [number 4 7] [print :number] – 4 5 6 7 for [value 4 11 3] [print :value] -- 4 7 1 0 • Foreach : take each element in the list foreach [chocolate [rum raisin] pumpkin] [print sentence [I like] ?] -- I like chocolate I like rum raisin I like pumpkin • Map : collect the results of doing this for each of those • Macro: Berkeley Logo includes this mechanism, no other version has Macro, Like Lisp.
Recursion(Graphic Example) to tree :size if :size < 5 [forward :size back :size stop] forward :size/3 left 30 tree :size*2/3 right 30 forward :size/6 right 25 tree :size/2 left 25 forward :size/3 right 25 tree :size/2 left 25 forward :size/6 back :size End Tree 100
References • http://www.cs.berkeley.edu/~bh/v1-toc2.html Symbolic Computing, a Logo programming text that concentrates on natural language processing rather than the graphics most people associate with Logo. • http://www.cs.berkeley.edu/~bh/v2-toc2.html Advanced Techniques, in which discussions of more advanced Logo features alternate with sample projects using those features, with commentary on the structure and style of each. • http://www.cs.berkeley.edu/~bh/v3-toc2.html Beyond Programming, brief introductions to six college-level computer science topics.
More References • http://library.advanced.org/18446/eindex.shtml • Star Logo Home Page http://el.www.media.mit.edu/groups/el/projects/starlogo/ • The Logo Foundation http://lcs.www.media.mit.edu/groups/logo-foundation/ • Download a FREE version of MSW Logo http://www.softronix.com • Links to all sorts of Logo Resources http://lcs.www.media.mit.edu/groups/logo-foundation/links.html