Logo has some of the basic language features you'd expect - variables, functions, and conditionals.
Define a variable using MAKE name value. Logo normally interprets any word as a procedure call, so to use a literal word you can prefix it with a double quote.
MAKE "A 8
You can use a variable by prefixing the name with a colon:
Variables created with MAKE are global. The only local variables in Logo are procedure arguments.
Logo functions are called procedures, and they're defined like this:
TO specifies the name of the function, the lines after are the function body, and it's all closed out with END. You can call a procedure by typing its name. You can also call a procedure from within another procedure. Logo handles recursion, so a procedure can call itself!
To run it, just type the procedure name:
Procedure arguments are defined by listing them after the procedure name:
TO HEY "NAME
If you want to delete a procedure, use the ERASE command.
IF statement is straightforward:
IF test list1
If test is true, run list1. You can add another list to the end (
IF test list1 list2) and list2 will be run if test is false.
You can break this down a bit using TEST, IFTRUE, and IFFALSE. TEST test will save the result of test and use it for any calls to IFTRUE and IFFALSE.
These are equivalent:
IF :A=8 [PR [A IS 8]] [PR [A IS NOT 8]]
IFTRUE [PR [A IS 8]]
IFFALSE [PR [A IS NOT 8]]
Let's put these together and draw something. First we'll define a square function:
TO SQUARE "LEN
REPEAT 4 [FD :LEN RT 90]
Try it out! SQUARE 50
How about a hexagon?
TO HEXAGON "LEN
REPEAT 6 [FD :LEN RT 60]
Now let's put them together and draw something.
REPEAT 20 [IF RANDOM 2=1 [SQUARE 40] [HEXAGON 30] RT 18]
RANDOM num will output a random number from 0 to num. Here we use it to decide whether to draw a square or a hexagon.
That's a pretty simple example, see what you can do with Logo! There are a lot more features and we can't cover them all here, check out the Logo manuals in Resources for a full reference.