TinyLogo

© 1999 Timothy Lipetz  

Beginners Guide

Topics on this page: Getting Started with TinyLogo, About Turtle Graphics, Repeating Commands, Extending TinyLogo with Your Own Procedures, Some Useful System Commands

See also: TinyLogo Main, Beginners Guide, Advanced Information, Built-in Procedures, Samples

This page contains a tutorial that should help you get started with TinyLogo. If you are interested in more information, I suggest you visit one of these Logo web sites, or find a Logo book at your library. You will still want to review this document in order to adjust for the handful of differences between TinyLogo and other Logo implementations.

Getting Started with TinyLogo

When you first start TinyLogo, it will take about ten seconds to initialize. You will then see this screen…

Press the "Scroll Up" button and you will see this screen…

This is where you enter your TinyLogo commands. For now try entering

help

and tap the Okay button. A complete listing of the TinyLogo commands will be displayed. These commands (or "Procedures" as they are called in TinyLogo) are also listed in the tables below. Notice that the built-in procedures for TinyLogo are all written with lower case letters.

Also, notice that some commands are followed by a short command in parentheses, these are the "aliases" for those comands and are the short form you can use in place of the full word. For example,

print(p)

means you can enter either "print" or "p" for the same instruction.

Now let’s try a simple command. Enter…

print sum 3 4

TinyLogo responds with

7

This is the basic interactive mode of TinyLogo. You enter a command and it responds with the evaluation of the command. There are other modes where you can store a set of commands and have TinyLogo interpret them all together. We’ll cover that later.

Notice that arithmetic in TinyLogo uses what are called "Prefix" operators. This means the command precedes the numbers or expression it operates on. Instead of the operators (+,-,*,/), we used (sum, difference, product, quotion) or as aliases (sum, dif, prd, quo). So instead of

3 + 4

we write

sum 3 4

Another example, instead of

3 * ( 4 – 2 )

we write

prd 3 dif 4 2

Although this may seem odd at first, you will get used to it quickly.

Let’s try another interactive command, this time working with words instead of numbers. Enter…

print butfirst "Tiny

TinyLogo responds with

iny

Notice that when entering a word to be treated as data (Tiny in this case), you precede it by a quotation mark. There is no terminating quotation mark. Also, notice that the command, butfirst, gives everything in the word except the first letter.

We could have used aliases to shorten our entry, like this…

p bf "Tiny

The same butfirst command can work with sentences (or "Lists" as they are called in TinyLogo) of words. A list is written by surrounding words (or numbers) with square brackets. For example, enter…

print butfirst ["TinyLogo "is "fun]

TinyLogo responds with

is fun

 One more thing to try. Let's make a mistake intentionally. Mistakes are no big deal. If you are experimenting a lot, you can often learn as much from your mistakes. Try entering this…

print

TinyLogo can't complete your command, because you didn't tell it what to print. So you will see an error message…

About Turtle Graphics

Most Logo or TinyLogo beginners like to start with Turtle Graphics. And for good reason. The immediate feedback from your commands really speeds learning and makes your experiments more satisfying.

To make TinyLogo go into Turtle Mode, enter turtle or tu.

To leave Turtle Mode, enter noturtle or ntu.

When you first enter Turtle Mode the screen looks like this…

The triangle is called the "Turtle" and it obeys your commands to move around the screen. The ">>" in the bottom left corner tells you that TinyLogo is ready to receive your next command. So let's press the "Scroll Up" button, which gives us the same command entry box as before. Try entering…

forward 30

Notice that the Turtle moved forward 30 pixels and left a line behind. Now try entering…

right 90 forward 30

The screen now looks like…

The command right 90 told the Turtle to turn 90 degrees to its right. Also, notice that we were able to enter more than one command at a time. In fact, we could turn these two lines into a square with this compound command …

rt 90 fd 30 rt 90 fd 30 rt 90

Experiment with Turtle graphics commands, there are several. A few useful ones are: left(lf), right(rt), forward(fd), backward(bk), clearscreen(cs), home, hideturtle(ht), showturtle(st), penup(pu), pendown(pd).

Repeating Commands

In the above example, we entered the commands for all four sides and corners of the square, but we don't need to enter so much. Programming languages are perfect for doing repeating operations. In TinyLogo one way to repeat things is with the repeat(rep) command. (Another, more advanced way to repeat things is with recursion.) The repeat command is followed by two arguments. The first is the number of times to repeat, and the second is a list of commands to execute each time. Try this…

clearscreen home repeat 4 [ forward 30 right 90 ]

Or with aliases…

cs home rep 4 [ fd 30 rt 90 ]

Aha, we drew a square. Notice how much shorter the command is with the repeat. Experiment with different repeat commands. Try putting one inside the list of another.

Extending TinyLogo with Your Own Procedures

Even though the command to draw a square using the repeat was compact, if we need lots of squares, we might want something even simpler. In fact, what we would really like is for TinyLogo to have a square command in it.

Well we are in luck. We can add procedures to TinyLogo that become as much a part of the language as the built-in procedures. Here is an example with our square…

to square rep 4 [fd 30 rt 90]end

The to command starts a definition of a new procedure and the end command finishes it. So in this example we are telling TinyLogo how to square. Once TinyLogo accepts this procedure definition, we can use it just like a built-in procedures. For example…

cs square

or even…

cs rep 6 [square rt 60] hideturtle

which gives us…

But what if we wanted our squares to be of different sizes, do we have to write a different square procedure for each size? No there is a simpler solution. In the same way that built-in procedures can take arguments (forward takes a distance in pixels, etc.), your procedures can be written to take arguments. For example,

to sq :len rep 4 [fd :len rt 90]end

The first occurrence of :len tells TinyLogo that sq will expect to be followed by one argument called :len. The second occurrence tells TinyLogo what to do with the value of that argument when it is provided, that is, move forward by whatever number of pixels was given as the argument to sq. Try this…

sq 10 sq 20 sq 30

Or even this…

rep 12 [sq sum 10 prd cnt 3 rt 10]

Which produces this...

This concludes the guided introduction for beginners. There is a lot more to discover. Experiment on your own. But first here are some useful commands for working with TinyLogo...

Some Useful System Commands

Stopping a procedure

You can halt a running TinyLogo program by holding down the "Scroll Down" button. It may take a few seconds before TinyLogo detects the button. TinyLogo will then return to the "ready to get input" mode.

Dealing with lengthy output

When you are not in Turtle mode, the output accumulates into a scrollable region of the screen. You may notice that output slows down as the region gets full. It is safe to select the "Clear" button below the scrollable region even while your procedure is still running. This can improve performance when you have lengthy output.

Continuing a long command on several lines

You can continue a long command by ending it with a "+" and then selecting okay on the input. TinyLogo will show you the partially completed command, but will not attempt to execute it. You can do this for several lines. When a line is entered without the terminating "+" the entire set of lines will be executed.

Editing commands

Until you select the "Okay" on the input popup, you can reedit the command line by sweeping text and entering the changes.

To enter a correction or modification to the previous one-line command, enter a "-" and select "Okay." The input dialog will pop up with the previous command as the default value. You can then edit it by sweeping text and entering the changes. Note: you can only back up one command.

After a continued line has been entered (using "+" - see above), you can change it by entering a "-" and selecting "Okay." The input dialog will pop up with the previous line from the continued command as the default value. That line will have been removed from the continued command, so you can correct it and reenter it. Note: you can only back up one line of a continued command.

To reedit a user-defined procedure from within TinyLogo...(Not yet implemented in TinyLogo). For now, either reenter it or save it to a memo and edit it there.

Note: when reentering a procedure that TinyLogo already knows, the new definition completely replaces the old one. If you change the number of arguments when you do this, TinyLogo will give you a warning that this might break any existing TinyLogo code that uses the procedure with the old number of arguments.

Of course, you are not allowed to edit or redefine any of the built-in procedures.

Saving Procedures

To save a procedure definition to a memo, use saveproc or sp

saveproc "myproc "memoname

This example will append the procedure "myproc" to the end of a memo "TL_memoname" (you do not enter the "TL_"). If the memo does not exist it will be created. Be sure to quote the arguments.

Loading Procedures

To load a set of procedures from a memo, use load or ld

load "memoname

This example will load all the procedures defined in the memo "TL_memoname" (you do not enter the "TL_"). Be sure to quote the argument.

Sharing Procedures with Others

When you save a set of procedures using saveproc or sp they are written as a memo in memopad.

The easiest way to share that memo is to HotSync, startup the Palm Desktop, sweep out and copy the memo (Ctrl_A Ctrl_C in Windows), and then paste it into an Email or Text file (Ctrl_V in Windows). Of course, you reverse the steps to load a TinyLogo memo from someone else.

Other Useful System commands.

A complete list of TinyLogo system procedures is listed in TinyLogo Workspace.

See also: TinyLogo Main, Beginners Guide, Advanced Information, Built-in Procedures, Samples