====== Coding: When it all Goes Wrong ======
A programming project isn't complete without an error that seems impossible to fix. Glowscript's error messages can be vague. If you find yourself completely lost in a coding project, the best bet is usually to take a step back. Go back to your pseudocode and comments, and compare them to the code you have written. Is each line doing exactly what it should be? Be particularly careful with loops and if statements, and consider the location of each line within a loop.
===== Debugging =====
Often, something you've written isn't doing what you expect it to. The best way to track these issues down in Glowscript is using print() statements. Pick a value, and print it out. Then check if the printed value matches what you expect. Try a few if you're having trouble tracking down an error.
Another good strategy is to comment out code that you suspect is causing an error, then add it back in line-by-line until you find the source of the error.
Sometimes, the issue is with the way your code is written (syntax). These cases can be particularly hard to track down.
==== Math ====
Some common issues show up in math syntax
=== Implicit Multiplication ===
The following does not work in Python:
a = 2
5_times_a = 5a
Instead, you must use an asterisk to signify multiplication:
a = 2
5_times_a = 5*a
=== Exponents ===
The caret (^) symbol is not used for exponents, instead use a double asterisk (%%**%%). This won't cause an error, but it won't do what you want it to.
x**2 # Correct
x^2 # Not what you want
=== Divide by Zero ===
If your code contains division by 0, you may get a confusing error message. Double-check that variables are properly initialized, correctly positioned within loops, and that any counter variables are being incremented in the correct locations.
==== Loops ====
If the conditional initially evaluates to False, the loop will never execute.
Are you resetting a variable that shouldn't be inside the loop?
Are you **not** resetting a variable that **should** be inside the loop?
==== Glowscript ====
The Glowscript version number is specific. You should only have one of these lines at the top of your code:
GlowScript 2.7 VPython
It should match the one provided with your source code for the project.