Background
jLogo Programming
 Commanding a Turtle
 Pseudocode
 Adding New Commands
 Iteration & Animation
 Hierarchical Structure
 Procedure Inputs
 Operators & Expressions
 Defining Operators
 Words & Sentences
 User Interface Events
 What If? (Predicates)
 Recursion
 Local Variables
 Global Variables
 Word/Sentence Iteration
 Mastermind Project
 Turtles As Actors
 Arrays
 File Input/Output
Java
 A Java Program
 What's a Class?
 Extending Existing Classes
 Types
 Turtle Graphics
 Control Flow
 User Interface Events
Appendices
 Jargon
 What Is TG?
 TG Directives
 jLogo Primitives
 TG Editor
 Java Tables
 Example Programs
 Installation Notes
Updates
 December 13, 2008
 March 7, 2009
 January 6, 2012
 March 15, 2013
 January 20, 2014
 February 13, 2014
 July 29, 2014
 January 18, 2016
 January 29, 2016
Lastly
New TG v.9.38, v.9.38.1 Features  January 18, 2016
Introduction
Version .0.9.38 of TG has support for the symbolic operators: *, +, , /, <, =, and >. They may be used in both an infix and prefix manner.
Version .0.9.38.1 improves graphics support. New commands (ARC, SETLINECAP, SETPENPATTERN) provide additional capabilities. Line drawing, area fill, and pixel manipulation are much faster. Lines drawn look a bit better.
Symbolic Operators
The most annoying restriction in TG's Logo interpreter has been that its math operations have only been available as named procedures: DIFFERENCE, PRODUCT, QUOTIENT, and SUM. I've wanted to use the symbolic characters '', '*', '/', and '+' for a long time, but was afraid to because I thought they should be reserved for future use as infix operators, if I ever gave in and implemented them. Basically, I wanted BFOIT students to learn about prefix notation  they would learn infix notation in a future programming language, Python, Java, C++, ...
TG's editor has no horizontal scroll bar. Only a few years ago, it had no line continuation character (tilde, '~'). I did this to try to force students to write lots of small procedures. It can be challenging to get students to break their programs into lots of little procedures. What I found students doing was editing multiline Logo commands and when complete, joining the lines together. But this sometimes interfered with highlighting stuff when displaying error messages. The stuff to highlight was off the display. So, I gave in and added the line continuation character.
Now I've given in and added support for symbolic operators. I've added them in such a way that they can be used in either a prefix or infix manner. In version .9.38 of TG, a few single character symbols can be used instead of their equivilent named operators.
*  PRODUCT 
+  SUM 
  DIFFERENCE 
/  QUOTIENT 
<  LESS? 
=  EQUAL? 
>  GREATER? 
To use these symbolic operators in a prefix manner, place the complete operation in parenthesis. As an example:

is equivilent to 


is equivilent to 


is equivilent to 

Infix Operators
Expressions of the form "100 + 2 * C6" are common in computer software. You could enter this expression as a legal formula into a cell in a spreadsheet. Infix arithmetic operators and numerical conditionals have been included in Logo since its start. So, version .9.38 of TG supports infix expressions involving a few single character symbols. Here are the supported infix operators and their precedence.
Symbol  Precedence 
*  
/  
+  
  
<  
=  
> 
The precedence determines when operations get evaluated. As this table shows, multiplication and division have a higher precedence than addition and subtraction. So in an expression like
3 * 4  24 / 2
the multiplication and division operations will be evaluated before the subtraction operation.
3 * 4  24 / 2 12  12 0
Numerical comparisons have a lower precedence than the arithmetic operations.
6 + 4 = 24 / 2 6 + 4 = 12 12 = 12 true
Parenthesis can be used to override precedence.
(10 + 10) * 2
outputs 40 instead of 30.
(10 + 10) * 2 20 * 2 40
Infix Operator Gotchas
There are a couple of things that you should be aware of when using infix symbolic operators.

The collection of procedure inputs has a lower precedence than any infix operator. Parenthesis should be used to resolve any issues.
Take for example that you want to pick a random word in a sentence. In the simple case of a sentence with two words, you want to provide the ITEM operator with either 1 or 2. The following image shows what happens if you use the infix '+' operator, thinking you are adding 1 to the value output by random 2.
What has happened here is that "2 + 1" is evaluated first, outputing 3 and this becomes the input to random. So, it outputs a value of 0, 1, or 2. This is not what was intended. The correct expression is: item ((random 2) + 1).

When using '+' (plus) and '' (minus) symbols as operators you must make sure they are not interpreted to be a sign being applied to a literal number. In these cases, follow them with at least one space.
New Commands

The ARC command draws an arc of a circle, with the turtle at the center, with the specified radius, starting at the turtle's heading and extending clockwise through the specified angle. The turtle does not move.

The SETLINECAP command determines the appearance of the ends of
lines drawn when the turtle moves with the pen down.
Input
ValueType Description 0 BUTT Lines end where the turtle stops. This is the default. 1 ROUND Line endpoints are rounded with a semicircle. 2 SQUARE Line endpoints are extended one half of the pensize. 
The SETPENPATTERN command provides the ability for the turtle to
draw dashed lines. It takes either a number or a sentence of numbers as
its input.
With an input of zero ('0') or an empty sentence ('[ ]'), the turtle draws a solid line. Otherwise the turtle draws some amount then picks up the pen for some amount, repeating this sequence until it gets where it's going. An input of [10 5] means ten turtle steps with the pen down followed by five steps with it up  this pattern repeated. If the input is a nonzero number, it is treated as identical up/down amounts.
New Operators
Two new operators (shortcuts) are available: GREATEREQUAL? an LESSEQUAL?. And the new PI operator outputs the ratio of a circle's circumference to its diameter.
Name  Input(s)  Description 
GREATEREQUAL? GREATEREQUALP 
value1 value2 
If value1 is greater than or equal to value2, GREATEREQUAL? outputs true. If not, false is output. 
LESSEQUAL? LESSEQUALP 
value1 value2 
If value1 is less than or equal to value2, LESSEQUAL? outputs true. If not, false is output. 
PI  Outputs the value 3.141592653589793. 
Finally...
Error messages associated with Arrays, Lists, and Words have been improved. The source code associated with an error is now highlighted where previously it was not.
ARCTAN with two inputs, surrounded with parenthesis, e.g., (ARCTAN x y), outputs the arctangent of y/x, if x is nonzero, or 90 or –90 depending on the sign of y, if x is zero.
A few bugs have been fixed, including when a tilde ends a comment  it is now just part of the comment.
Checkout details at:
 TG_VersionHistory.txt
 More information about all TG directives are here (Appendix C).
 More information about all jLogo primitive procedures are here (Appendix D).
 More information about TG editor commands are here (Appendix E).