【Lua言語講座】5.文とコメント

文とコメント Lua言語講座

こんにちは、ロブスタのハルです!
前回の講座では演算と演算子について説明しました。
今回は文という概念がいねんとプログラムのテストやデバッグ、補足ほそくに使うコメントについて説明していきます!
前回の講座を見ていない方はこちらからご覧ください。

文とは

この講座の第1回目でプログラミングは命令であると説明しました。これはその通りなのですが、例えば次のような状況を考えてみてください。

ロボットに家から学校までの道を案内するとします。
①まずは玄関のドアを開けて
②前に5歩進んで
③左に100m進んで
④右に300m進んで
⑤左に200m進んで
⑥正門をくぐってそのまま昇降口に進んで

今回の例はかなり省略しょうりゃくしていますが上のように命令を出すと思います。この場合①~⑥全体を指して命令と言えますが①だけでも命令と言えますよね。つまり、①~⑥全体はそれぞれ6つの命令が集まったものと考えることができます。

これをプログラミングで考えたとき、それぞれ6つの命令のことを文といいます。また、文の集まりをプログラムといいます。

多くの言語では文の終わりに;をつけて1つの文をわかりやすくしていますが、Lua言語には文の終わりを示す記号がありません。そのため、どれが1つの文なのかを見極みきわめる必要があります。

文の見極め

local num1 = 12
local num2 = 34
local ans = 0
local addNum = 0
local condition = false

ans = num1 + num2
print(ans)
condition = ans > num2 
and num1 < num2
print(condition)
addNum = 1 + 2 + 3 + 4 + 5
         + 6 + 7 + 8 + 9

さて、上のコードを見てどれが文なのかわかりますか?

まず、1~5は変数の宣言せんげん初期化しょきかをしているので宣言文と呼ばれることがあります。
続いて7・8・11行目はそれぞれ代入文とprintプリント文です。
では、9・10行目はどうでしょう?
一見するとどこまでが文かわかりにくいですが、実は9・10行目は合わせて1つの文になっています。これはansアンス > numナム2という条件式とnum1 < num2という条件式をandアンド演算子で繋いだ結果をconditionコンディションに代入しているためです。
同様に12・13行目も1~9までを足した結果をaddNumアドナムに代入しており、合わせて1つの文となっています。

基本的には文は途中とちゅうで改行せずにつなげて書いていきますが、見づらい場合などには今回の例のように改行することもあります。その場合はどこまでが1つの文なのか考えて読みく必要があります。改行のさいには9・10行目の書き方ではなく、12・13行目のようにスペースを空けるようにすると見やすくなります。(Roblox Studioのエディタでは自動でスペースを空けてくれます)

コメントについて

ソースコード中にコメントを書きたい場合は次の2つの方法をとることができます。

-- ここから行末までがコメントです。

--[[
複数行をまとめて
コメントにするときは
このように書きます。
]]--

簡単なデバッグ

print文とコメントを使うことで簡単なデバッグを行なうことができます。
デバッグとはプログラムが予想外の動作をしたときにその原因を調べて修正することです。

-- 例 本当はtrueがでるようにしたい
local a = 1234
local b = 2938
local ans = 0
local flag = false

ans = b - a
flag = ans > a and a + ans > b
print(flag)

この例ではまず、ansの値がどうなっているかprint文を使って調べてみたいと思います。

-- 例 本当はtrueがでるようにしたい
local a = 1234
local b = 2938
local ans = 0
local flag = false

ans = b - a
print("ans = ", ans)
flag = ans > a and a + ans > b
print(flag)

これを実行するとans = 1704であることがわかりました。
flagフラグの値がtrueトゥルーであってほしいのですが、falseフォルスになっていることからflagの計算式に問題があると考えられます。そこで、ans > a と a + ans > b にわけてそれぞれがどうなっているか調べてみましょう。

-- 例 本当はtrueがでるようにしたい
local a = 1234
local b = 2938
local ans = 0
local flag = false

ans = b - a
print("ans = ", ans)
print("ans > a : ", ans > a)
print("a + ans > b : ", a + ans > b)
flag = ans > a and a + ans > b
print(flag)

実行してみるとans > aはtrueでしたが、a + ans > bはfalseでした。and演算子がtrueになるにはどちらの条件式もtrueでなくてはならないのでa + ans > bの条件式が間違っていることになります。例えば、a + ans >= bやa + ans == bのように書き換えるとflagの結果をtrueにすることができます。

今回の例ではprint文を使いましたが、後に出てくる関数などを使う際や実際にコードを試し書きする際にはコメントアウトという手法を使うこともあります。これに関してはまた別の回で紹介したいと思います。

まとめ

  • 文とはプログラムにおける処理の単位
  • 1行だけをコメントにしたい場合 –を先頭につける
  • 複数行をコメントにしたい場合 –[[コメント]]–のようにする
  • デバッグにはprint文やコメントアウトを使う

お疲れ様でした。第5回はここまでです。
次回はオブジェクトとプロパティについて説明します。
次回からいよいよ実践的じっせんてきなプログラムを書いていくので今回までの内容をしっかり復習しておいてくださいね。

コメント

タイトルとURLをコピーしました