2017年12月21日

LGP講座(かり~第5回 ユーザー関数について学ぼう!

yuu_bustup.jpg
優:こ、こんにちわ。柊優です……。こ、今回もよろしくね……。

airi_bustup.jpg
愛梨:結城愛梨ですっ。今回もよろしくねっ。

haruka_bustup.jpg
陽香:永乃原陽香です。よろしくお願いしますね。

yuu_bustup.jpg
さ、さて、今回は、ユーザー関数について説明するよ。よろしくね……。

~ユーザー関数の書き方

yuu_bustup.jpg
さて、愛梨ちゃん。関数ってわかるかな?

airi_bustup.jpg
うんっ。サブルーチンの親玉みたいなものでしょ?

yuu_bustup.jpg
うん、その通りだよ。ひとまとまりの処理をまとめて、呼び出せるようにしたもので、関数はその中でも、処理の結果を返すもののことを言うんだ。

haruka_bustup.jpg
返さないものは、LGPでは、サブルーチン、または、サブモジュールと言うんですよ。

airi_bustup.jpg
へぇ~。それで、どう使えばいいの?

yuu_bustup.jpg
関数の処理は、FUNCとENDFUNC文ではさまれた間に書くんだ。FUNC文はこう書くんだよ……。

-------------------------------------------------------
FUNC 戻り値を入れる変数名 関数名 (引数名1,引数名2…)
例 FUNC aaa test1(bb1,bb2)
※斜めの文字は、省略できることを表しています
-------------------------------------------------------

airi_bustup.jpg
引数というのは、呼び出し元から、関数に渡す値のことだよね?

yuu_bustup.jpg
うん、そうだよ……。呼び出し元から渡された値は、ここに書かれたのと同じ名前の変数のようなものに格納されるんだ……。なお、引数が必要ないときは、省略してもいいんだ……。

haruka_bustup.jpg
さて、関数の処理は、ENDFUNC文まで進むとそこで終わり、呼び出し元に戻るんですけど、RETURN文を入れると、そこで終わらせて呼び出し元に戻すこともできるんですよ。

airi_bustup.jpg
へぇ、なるほど~。 それで、関数を呼ぶには、どうすればいいのかな?

yuu_bustup.jpg
うん、それには、次の二つの方法があるよ……。

--------------------------------------------------------------
方法1:
 変数名 = 関数名(引数1,引数2…)
 例1 modori1 = test1(5, 3)
  …関数test1を5と3を引数として渡して呼び出す。
   関数の処理の結果は、変数modori1に格納される。
 例2 modori2 = test2()
  …引数を何も渡さず、関数test2を呼び出す。
   処理の結果は、変数modori2に格納される。
方法2:
 関数名(引数1,引数2…)
例 test3(a, b, c)
  …変数a、b、cの内容を引数として渡し、関数test3を呼び出す。
   処理の結果は返されない。
---------------------------------------------------------------

haruka_bustup.jpg
例2のように、引数が必要ない関数の場合は、引数を省略していいんですよ。

airi_bustup.jpg
なるほど~。

yuu_bustup.jpg
このほかにも、関数を使うにはいくつかの制限があるけど、それはマニュアルを読んでみてね……。

airi_bustup.jpg
は~い。

~グローバル変数ってなに?

airi_bustup.jpg
そういえば優ちゃん。今までの説明を聞く限りでは、処理結果は1つしか返せないようだけど、複数の結果を返すにはどうすればいいの?

yuu_bustup.jpg
うん。そんなときには、他に変数を介して返せばいいんだ……。つまり、他の変数に結果を入れて、その変数を呼び出し元で使えばいいわけだね……。

airi_bustup.jpg
なるほど~。よし、それじゃさっそく……。

haruka_bustup.jpg
あ、ちょっと待ってください愛梨ちゃん。ただ変数に結果を入れるだけではダメなんですよ。

airi_bustup.jpg
ほえ? どういうこと?

yuu_bustup.jpg
普通の変数は、ローカル変数といって、その関数などの中のみで有効な関数なんだ。だから、その外からでは使うことはできないんだよ……。

lgp1712-01.JPG

airi_bustup.jpg
え~。そしたら、どうすればいいの?

yuu_bustup.jpg
うん。その変数をグローバル変数にすればいいんだ……。グローバル変数は、どこからでも使うことのできる変数なんだよ……。

haruka_bustup.jpg
グローバル変数は、普通の変数とは違って、事前に宣言していなければなりません。それには、STATIC文を使います。

-----------------------------------------------------
STATIC 変数
例1 STATIC ABC
 …変数ABCをグローバル変数として宣言する。
例2 STATIC DEF$
 …文字列変数DEF$をグローバル変数として宣言する。
例3 STATIC GHI(5,3)
 …5x3の配列変数GHIをグローバル変数として宣言する。
-----------------------------------------------------

haruka_bustup.jpg
このように宣言された変数は、どこからでも使うことができるんですよ。

airi_bustup.jpg
なるほどー。

yuu_bustup.jpg
それじゃ、ここで愛梨ちゃんに問題だよ。
関数を使って、二つの変数の数の足し算と引き算の答えを返すプログラムを作ってみて……。

airi_bustup.jpg
はーい。 カタカタカタ……。

------------------------------------
STATIC WA
STATIC SA

A=6
B=4
TASIHIKI(A,B)

SC=G@SETUP(640,480,16,1)

LOOP
 G@PRINT(SC, 320, 240, STR(WA))
 G@PRINT(SC, 320, 280, STR(SA))
 G@FLIP()
 S@SLEEP(1000) //1秒停止
ENDLOOP

FUNC TASIHIKI(TA,TB)
 WA=TA+TB
 SA=TA-TB
ENDFUNC
------------------------------------

airi_bustup.jpg
できたよー

haruka_bustup.jpg
それじゃ、実行してみてくださいね。

airi_bustup.jpg
はーいっ。

lgp1712-02.JPG
airi_bustup.jpg
やったぁっ、ちゃんとできたよっ。

yuu_bustup.jpg
うん。さて、ここで注意するべきところは、値を返す関数のときは、ちゃんと上の方法1のやり方で、返さない関数の場合は方法2のやり方で関数を呼ぶこと。間違えると、エラーが出ちゃうから注意してね……。

airi_bustup.jpg
はーい、わかりましたーっ。

yuu_bustup.jpg
それじゃ、今月はここまで……。
次回は、いよいよグラフィックの基本を勉強していくよ……。

airi_bustup.jpg
やったぁっ、次回が楽しみだねっ。

haruka_bustup.jpg
次回も楽しんでいきましょうね。
それでは、ごきげんよう。

yuu_bustup.jpg
また次回……。

airi_bustup.jpg
またね~

※次の更新は、12月25日、マルチメディア情報の予定です。お楽しみに!
posted by 裏編 at 09:07| LGP講座(かり | 更新情報をチェックする