プログラムの方も複雑になってきます。一連の動作を部品にわけて記述しましょう。以下部品に分かる方法をいくつか紹介します。ちなみに多くのプログラミング言語では、一連の機能をまとめたプログラムの部品をサブルーチンと言ったり、関数と言ったり、メソッドと言ったり、マクロと言ったりしますが、以下で説明するようにNQCの場合には、これらのおのおのについてNQC独自の使い分けが必要なこともあります。以下のような、直進したり左右に曲がるロボットのプログラムを考えましょう。不必要な命令も多少含まれています。Off(OUT_A+OUT_C);}たしかにこの程度の簡単なプログラムであれば、ロボットにさせたい動作を順番に書き下していってもそれほど大変ではありません。複雑なプログラムになってくると、同じ動作を記述する命令を何度も繰り返して記述するのが面倒になってきたり、その一連の動作を少し変更させたいときにも、関連するすべての箇所を書き換えなければいけません。そこでまず登場するのが「サブルーチン」です。プログラムが見やすくなるだけでなく、改良も加えやすくなります。いう名前のサブルーチンを定義したサンプル・プログラムです。サブルーチン名のあとに()をつけます。これまでのプログラムを書き換えなさい。いう名前で定義して書き換えなさい。上の例を、今度は「関数」を使って書き直して見ましょう。この例のように、入力された値に従って何かの動作をするだけで何の値も返さない、そういう関数もあります。このことは他のプログラミング言語でも同様です。関数の名前の前に書きます。いうキーワードを指定します。(グローバル変数を使ったこのような方法は、現在では一般に推奨されない方法ですが)。サブルーチンと違って関数はコンパイル時に展開されてしまうので、何度も関数を呼ぶようなプログラムを書けば、プログラムのサイズがとても大きくなってしまいます。定義した一連の動作はマクロと呼ばれます。右に曲がる}ただし、サブルーチンや関数と違ってマクロは必ず一行で書く必要があります。マクロを実行させる場合にはマクロ名を書くだけでよく、()は必要ありません。関数と同様にマクロは引数を取ることができます。マクロも関数と同様にコンパイル時に展開されるので、その分、プログラムのサイズは大きくなります。わかりやすいプログラムに書き換えなさい。†(作成中)これまでは、変数を定義する位置についてあまり触れませんでした。ここでは、定義する場所によって、変数の働きがまったく違う、ということを説明します。タスクやサブルーチン、関数の内部で定義した変数はローカル変数と呼ばれ、他のタスク、サブルーチン、関数の中では使用(アクセス)できません。タスクやサブルーチン、関数の外部で定義した変数はグローバル変数と呼ばれ、すべてのタスク、サブルーチン、関数から使用できます。グローバル変数は一見便利なように思われますが、タスクやサブルーチンを個々に改良していく際には足枷となってしまうので、一般にはあまり推奨されません。個、グローバル変数が32個使用できます。