Az NXT-G programozási nyelv

Utasítások, vezérlési szerkezetek

1. Programkockák, programblokkok

Az NXT-G blokkjai tulajdonképpen alprogramok, de ezeknél alacsonyabb szint nincs, így ezek minősülnek az utasításkészletnek is.

2. Értékadás, üres utasítás

Értékadást a Változó blokk segítségével tudunk elkövetni.
Üres utasítást nem tartalmaz a nyelv, de mi magunk készíthetünk egy ilyen blokkot, csak nincs értelme.

3. Szekvencia

Az NXT-G programok blokkjai alapértelmezetten szekvenciálisan hajtódnak végre, ezt egyes blokkok beállítható paraméterei sem befolyásolják, mert azok a paraméterek a hardveres kölcsönhatásra vonatkoznak. Például: ha egy hanglejátszó blokkot végtelen játszásra állítunk be, attól ez még nem befolyásolja a programunk működését.

4. Elágazás (Switch)

Az NXT-G elágazása szintén grafikus blokkot ad a programozó kezébe. A C stílusú nyelvekhez képest előnye, hogy itt a Switch-ben nem kell kiírnunk a "break"-et. :)
sw01

  1. Ez az ikon mutatja, hogy milyen feltétel szerint történik az elágazás. A minta egy érintésszenzort használ.
  2. A felső blokk az érintésszenzor lenyomásakor fut le,
  3. az alsó blokk egyébként.

sw02

  1. Ha az érték szerinti elágazás lett kiválasztva, megjelenik a Switch blokkk elején egy bemenő csatlakozó, ahol dinamikusan kell megadnunk az elágazásnál használt értéket.

sw02a

  1. Ha kikapcsoljuk a "Display Flat View" opciót, az elágazás blokk másik nézetét kapjuk, ahol igaz és hamis szerinti lapokra van bontva a két eset. Akkor érdemes használni, ha az elágazás mindkét ága sok, bonyolult kódot tartalmaz.

sw03
sw03a
sokagu
Ha kiszedjük a pipát a "Display Flat View" opciótól, akkor lehetőségünk van több feltétel megadására is.

sw07
Beállíthatunk bemenő értéknek szenzort is, ekkor a szenzoroknál megszokott beállításokkal találkozunk.

5. Ciklus

Az NXT-G ciklusai lehetnek végtelenek, szenzorértékhez, vagy egyéb értékhez kötöttek.

loop01
loop02
Végtelen, vagy nem végtelen ciklus. Szenzorérték helyett logikai értéket is megadhatunk terminálófeltételnek, melyet akár a cikluson kívülről (egy másik szálból) is hozhatunk.

loopcount
Ha bepipáljuk a "Counter" opciót a ciklus tulajdonságainál, akkor megjelenik egy kimenő csatlakozó a ciklus elején. A példa itt felhasználja a ciklusszámlálót arra, hogy egy Text-té alakítás után kirajzolja a kijelzőre. A követhető futás kedvéért került bele egy 2 másodperces várakoztatás is.

6. Várakoztatás

A várakoztató blokk (Wait Block) képes szenzorérték szerint várakoztatni az adott programszálat, míg az Időzítő blokk (Timer) megadott időre várakoztatja meg a programunkat.
wait01
timer01