Lauseet
GOTO
GOTO 10 | Hypätään riviin N10 |
Jos ohjelmassa on useita rivejä samalla numerolla, GOTO lause hyppää parametreista riippuen johonkin riviin. Yleisenä käytäntönä voidaankin pitää että kaikki rivinumerot ovat uniikkeja.
GOTO lauseen suorittaminen ei ole välitön. GOTO lausekkeita onkin syytä välttää viimeistelyssä, sillä viive voi aiheuttaa työkalun pysähtymisen. Hyppääminen ohjelmassa taaksepäin aiheuttaa suuremman viiveen kuin hyppääminen eteenpäin.
IF..GOTO, IF..THEN
Operaattori | Nimi | Kuvaus |
EQ | Equal | Yhtäsuuri kuin (=) |
NE | Not Equal | Erisuuri (≠) |
GT | Greater Than | Suurempi (>) |
GE | Greater than or Equal | Suurempi tai yhtäsuuri (≥) |
LT | Less Than | Pienempi (<) |
LE | Less than or Equal | Pienempi tai yhtäsuuri (≤) |
Jos vertailun tulos on tosi, toteutetaan seuraava THEN tai GOTO lause. GOTO lause toimii kuten GOTO. THEN lauseen perässä voi olla vain yksi käsky joka toteutetaan. Esim. #1=5.0 on yksi käsky, G00 X5.0 on kaksi käskyä, joka THEN lauseen jälkeen aiheuttaa virheilmoituksen. Jos vertailun tulos on epätosi, siirrytään seuraavalle riville suorittamatta THEN tai GOTO lauseketta.
IF[#1 EQ 2] THEN #100=#100+1 Jos muuttuja #1 on yhtäsuuri kuin 2, lisätään muuttujaan #100 1 |
IF[[#1/[#7+3]] LT [#100*SIN[#101+30]]] GOTO 75 Jos #1 ÷ (#7 + 3) on vähemmän kuin #100 × sin(#101+30), hypätään riville N75 |
Koska laskennan tarkkuus on rajallinen, joissain tapauksissa käytettäessä vertailua EQ (yhtäsuuri) voi johtaa ongelmiin. Jos muuttujille #1 ja #2 suoritetaan operaatioita jotka johtavat etenkin irrationaalilukuihin, voi tulla tilanne jossa IF[#1 EQ #2] ei toteudu koskaan. Tällöin voidaan määritellä luvulle tarkkuus, jonka sisällä käytännöllisesti katsoen verrattavat arvot ovat yhtäsuuret.
IF[ABS[#1-#2] LT 0.01] Verrataan muuttujaa #1 ja #2. Jos muuttujien erotus on alle 0.01mm, tulkitaan muuttujien olevan sadasosamillimetrin tarkkuudella sama. |
WHILE..DO..END
WHILE on ehdollinen lauseke. WHILE lauseketta seuraa vertailulauseke kuten IF lausekkeessakin. Jos vertailulauseke on tosi, suoritetaan DO..END lauseiden sisällä oleva silmukka (loop). Muuten hypätään suoraan END lauseen jälkeiselle riville. DO ja END lauseisiin lisätään silmukkanumero 1, 2 tai 3.
WHILE[#100 LT 50.0] DO 1 : END 1 Jos muuttuja #100 on pienempi kuin 50.0, suoritetaan simukka joka on DO 1 ja END 1 lauseiden välissä. |
WHILE..DO..END voi olla nopeampi tapa suorittaa ohjelmaa kuin IF..GOTO, etenkin jos joudutaan hyppäämään taaksepäin. DO..END ilman WHILE ehtolauseketta luo loputtoman silmukan. Silmukkanumeroita voi käyttää kuinka monta kertaa tahansa. Silmukat eivät saa olla limittäin, mutta ne voivat olla sisäkkäin. Silmukoista voi hypätä pois, mutta silmukoihin hyppääminen ei ole sallittu.