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講座(かり | 更新情報をチェックする

2017年11月16日

LGP講座(かり~第4回 繰り返しについて学ぼう!

yuu_bustup.jpg
優:こ、こんにちは……。柊 優です・・・。

airi_bustup.jpg
愛梨:こんにちはーっ。結城愛梨でーすっ。

haruka_bustup.jpg
陽香:こんにちは。今月も、よろしくお願いします。永乃原 陽香です。

yuu_bustup.jpg
僕たち三人がお届けする、LGP講座(かり、今月もよろしくお願いします……。

airi_bustup.jpg
それで優ちゃん。今日は何するの?

yuu_bustup.jpg
うん……。今回は、繰り返しについて勉強するよ……。

airi_bustup.jpg
はーい。がんばりまーすっ。

haruka_bustup.jpg
それでは、今回もはじめていきましょうか。

~LOOPとENDLOOP

yuu_bustup.jpg
まず、繰り返しの基本となる、LOOPとENDLOOPからはじめていくよ……。
これは、この二つの命令にはさまれた命令を繰り返す命令なんだ……。

airi_bustup.jpg
なるほどー。あれ、それじゃ止めるにはどうしたらいいの?

yuu_bustup.jpg
BREAK命令を使えばいいんだ……。この命令が実行されれば、そこでその繰り返しは終了されるんだよ……。

haruka_bustup.jpg
そこで、このBREAK命令と、条件分岐とを組み合わせればいいんですよ。
例えば、これは変数を1ずつカウントしていき、10になったら停止するプログラムです。
--------------------
A = 0
LOOP
 A = A + 1
 IF A = 10 THEN
  BREAK
 ENDIF
ENDLOOP
--------------------

airi_bustup.jpg
なるほどー。終了させる条件を満たしたら、BREAK命令を実行させればいいんだねっ。

haruka_bustup.jpg
では、ここで愛梨ちゃんに問題です。このプログラムを応用して、1から9までの合計を表示するプログラムを作ってみてください。

airi_bustup.jpg
え?えーとえーと……これでいいかな?

--------------------
S = 0
A = 0
LOOP
 S = S + A
 A = A + 1
 IF A = 9 THEN
  BREAK
 ENDIF
ENDLOOP
SC=G@SETUP(640,480,16,1)
LOOP
 //変数Kの内容を表示
 G@PRINT(SC, 320, 240, STR(S))
 G@FLIP()
 S@SLEEP(1000) //1秒停止
ENDLOOP
--------------------

airi_bustup.jpg
それじゃ、実行させてみるねー。……あれ?

lgp1711-01.JPG
▲ あれ?

airi_bustup.jpg
1~9までの合計は45のはずなのに、どうしてだろ?

haruka_bustup.jpg
プログラムの流れを追ってみてください。8が変数Sに足されたあと、どうなりますか?

airi_bustup.jpg
あ!変数AをSに足した後、Aに1を足して9にして、そのあと条件判断にいってる。そしてそのままA=9の条件が成立して、BREAKを実行してるから、9が足されないで繰り返しから抜けちゃったんだー!

haruka_bustup.jpg
そういうことです。 ここでは、A=A+1をS=S+Aの前に書くか、条件判断の下に書くのが正しいんですよ。

yuu_bustup.jpg
このように、繰り返しでは、繰り返しの中の命令の順番によっては、正しく動作しない可能性があるから、気を付けてね……。

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

~FORとNEXT

yuu_bustup.jpg
さて、続いては、FOR~NEXTについて説明するね。これは、このように書くんだ……

-------------------------------------------------------
FOR 変数=始めの値 TO 終わりの値 STEP 変数に加える値
……
NEXT
-------------------------------------------------------

airi_bustup.jpg
BASICでのFOR~NEXTと同じなんだね。

yuu_bustup.jpg
うん……。 あと、BASICと同じように、『変数に加える値』が1のときは、STEPのところは省略できるんだ。だから……
FOR A = 1 TO 5
これと、
FOR A = 1 TO 5 STEP 1
これは同じ意味になるんだよ……。

airi_bustup.jpg
なるほどー。

haruka_bustup.jpg
動作もBASICと同じですよ。ループ開始じに、指定した変数の値を始めの値にセットして、繰り返すごとに、その変数に、『変数を加える値』を足していき、終わりの値に達したときに、ループを終了させます。
また、このFOR~NEXTでも、BREAKが使えますよ。

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

~ループの入れ子と配列

yuu_bustup.jpg
さて、繰り返しのテクニックについてだけど、繰り返しのループの中には、さらにループを入れることができるんだ……。

airi_bustup.jpg
ループの中にループ?

yuu_bustup.jpg
うん……。この場合、内側のループに入ったら、まずその内側のループの繰り返しを行い、その繰り返しが全部終わってから、外側のループに戻るんだ……。

haruka_bustup.jpg
このテクニックは、ある繰り返し処理の中に、さらに繰り返しの処理があるときに便利ですよ。

airi_bustup.jpg
うん、わかったよー。

yuu_bustup.jpg
そして続いて、配列について……。
配列というのは、一つの変数を、いくつかの部屋に区切ったものなんだ……。

airi_bustup.jpg
それぞれの部屋は、( )の中の、添え字という数で区別するんだよね?
A(5)
という感じで。

yuu_bustup.jpg
そうそう……。さて、LGPでは、配列を定義するには、DIM文を使うんだ……

-------------------------
DIM 変数(添え字のMAX)
例 DIM A(5)
-------------------------

yuu_bustup.jpg
なお、添え字は0から始まることに注意してね……。つまり、上の例だったら、部屋はA(0)からA(5)の6つ作られることになるんだ……。

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

haruka_bustup.jpg
さて、この配列は、繰り返しと組み合わせると便利です。
繰り返しの中で変化する変数を添え字とすることで、いくつもの配列の中身を、ループで扱うことができるんですよ。
例えばこれは、A(0)~A(9)までの配列の中身を合計するプログラムです。

--------------------------------
DIM A(9)
A(0)=4
A(1)=93
A(2)=24
A(3)=85
A(4)=10
A(5)=3
A(6)=35
A(7)=54
A(8)=21
A(9)=43
S = 0
FOR B = 0 TO 9
 S = S + A(B)
NEXT
SC=G@SETUP(640,480,16,1)
LOOP
//変数Kの内容を表示
 G@PRINT(SC, 320, 240, STR(S))
 G@FLIP()
 S@SLEEP(1000) //1秒停止
ENDLOOP
--------------------------------

airi_bustup.jpg
へぇ~。 配列の数が10個でも100個でも、短い繰り返しの処理だけでできるから便利だね。

yuu_bustup.jpg
そうだね……。それじゃ、今回はここまで……。次回は、ユーザー関数について説明するよ……。

haruka_bustup.jpg
それではまた次回。 ごきげんよう。

airi_bustup.jpg
またね~。

※次の更新は、11月20日。レトロゲーレビューの予定です。お楽しみに!
posted by 裏編 at 07:22| LGP講座(かり | 更新情報をチェックする

2017年10月07日

LGP講座(かり~第3回 入力と条件判断だ!

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

airi_bustup.jpg
愛梨:こんにちはー。結城愛梨ですー。今月もがんばるぞーっ。

haruka_bustup.jpg
陽香:永乃原陽香です。今月も、楽しく、DirectX対応BASIC・LGPについて勉強していきましょう。

yuu_bustup.jpg
今月は、入力と、条件判断について勉強していくよ……。頑張ろうね……。

airi_bustup.jpg
おーっ。今月は盛りだくさんだねっ。頑張っていこーっ。

haruka_bustup.jpg
それでは、今月もはじまりです。

~キーボードから入力しよう!KEYBTN2関数

yuu_bustup.jpg
それじゃ、まずはキーボードから入力することからやっていこうか……。それには、KEYBTN2関数を使うんだよ……。

airi_bustup.jpg
KEYBTN2か~。あれ?ということは、KEYBTN関数、というのもあるのかな?

haruka_bustup.jpg
はい、ありますよ。ただ、KEYBTN2関数のほうが便利なので、今回はそちらを使うことにします。

airi_bustup.jpg
はーいっ。それで、どう使えばいいのかな?

yuu_bustup.jpg
うん……。その前に、もう一つ関数を使うんだ。KEYGET2関数だよ……。

haruka_bustup.jpg
KEYGET2関数は、キーボードについての情報(どのキーが押されたかなど)を取得する命令です。KEYBTN2関数は、その情報から、実際に情報を調べる命令です。

yuu_bustup.jpg
まず、KEYGET2関数はこう書くんだよ……。
-----
I@KEYGET2( )
-----

haruka_bustup.jpg
そして、KEYBTN2関数はこう書くんですよ。
-----
変数=I@KEYBTN2(ボタンタイプ)
-----

haruka_bustup.jpg
こうすると、キーについての情報が変数に入るんですよ。

airi_bustup.jpg
このボタンタイプというのは?

yuu_bustup.jpg
うん。それは、どんな情報を取得するか、ということ……。どのキーが押されたかを知るなら、ここに0を入れればいいよ……。

haruka_bustup.jpg
ちなみに、1だと、キーが押されたかどうか、2だと押された時間を知ることができますよ。

yuu_bustup.jpg
それじゃ、これを踏まえたうえで、画面に押されたキーを表示するプログラムを作っていこうか……。なお、今回は数字キーだけについて考えていいよ……。

airi_bustup.jpg
はーいっ。

haruka_bustup.jpg
その前に、今回は次のプログラムを骨格として使います。
-----
SC=G@SETUP(640,480,16,1)
LOOP
G@CHRCLEAR(SC)
xxxxx
G@FLIP()
S@SLEEP(1000) //1秒停止
ENDLOOP
-----

airi_bustup.jpg
xxxxxの部分に、押されたキーを調べる文と、それを表示する文を入れればいいんだね。えーと……KEYBTN2命令は、押されたキーを調べるんだから、ボタンタイプに0を入れればいいんだよね。
そういえば、ボタンタイプに0を指定した場合、何が入るの?

yuu_bustup.jpg
うん。そのキーに対応した番号が入るんだけど、数字キーに限っていえば、押したキーの数字より1大きい数字が入るよ……。ただし、0が押された場合は、11が入るんだ……。

airi_bustup.jpg
ということは、単純に変数の値から1を引くわけにはいかないなぁ……。どうしたらいいんだろ?

haruka_bustup.jpg
よく考えてみてください。0が押されたときには変数に0を入れて、そうでないときには、そのまま1を引けばいいですよね?ということは……。

airi_bustup.jpg
あ!ここで、条件判断が出てくるんじゃないの?

yuu_bustup.jpg
うん、その通りさ……。条件判断については、この後説明するよ……。

~条件判断を入れてみよう~

yuu_bustup.jpg
さて……。条件判断の基本といえば、やっぱりIF文だね……。
IF文は、こう書くんだ……。
-----
IF 条件 THEN
条件が成立したときの処理
ELSE
条件が成立しなかったときの処理
ENDIF
-----

airi_bustup.jpg
へぇ~。VisualBasicなどのIF文と同じなんだね。
ということは、やっぱり、条件が成立したときだけ処理を実行させるときは、ELSE以降は省略してもいいの?

haruka_bustup.jpg
はい、そうですよ。 あと、条件の部分の式の書き方も、他の言語と同じです。

airi_bustup.jpg
よーし、それじゃさっそく、IF文を使って、プログラムを作るぞーっ。変数Kに押したキーの番号が入るんだから……。 Kが11ならKに0を入れ、それ以外なら普通に1を引くように処理を分岐させればいいんだよね。カタカタ……。

airi_bustup.jpg
よしっ。これでどうかな。
-----
SC=G@SETUP(640,480,16,1)
LOOP
G@CHRCLEAR(SC)
//キー入力受付
I@KEYGET2()
//変数Kに押したキーの番号を取得
K=I@KEYBTN2(0)
//Kが11(0キー)かどうかで処理分岐
IF K == 11 THEN
//Kに0を代入
K=0
ELSE
//Kから1を引き、押したキーと同じにする
K=K-1
ENDIF
//変数Kの内容を表示
G@PRINT(SC, 320, 240, STR(K))
G@FLIP()
S@SLEEP(1000) //1秒停止
ENDLOOP
-----

yuu_bustup.jpg
うん、これで大丈夫だと思うよ。 動かしてみて……

airi_bustup.jpg
はーいっ。
……やったぁっ。ちゃんと0を押したら、0って表示されたよっ。

lgp-01.JPG
▲ 0以外を押したとき

lgp-03.JPG
▲ 0を押したとき

haruka_bustup.jpg
よかったですね、愛梨ちゃん。
さて、条件判断の命令には、今回説明したIF文のほかにも、場合によって分岐させるSELECT文とSWITCH文の二つがあります。

airi_bustup.jpg
それってどういうものなの?

yuu_bustup.jpg
うん。まず、SELECT文は、成立した条件に合わせた処理を行うものなんだ……。
-----
SELECT
WHEN 条件1:
条件1が成立したときに実行する処理
WHEN 条件2:
条件2が成立したときに実行する処理
……
OTHER:
すべての条件が成立しなかったときに実行する処理
ENDSELECT

例:
SELECT
WHEN A > 5:
B=3
WHEN A == 5:
B=2
WHEN A < 5:
B=1
OTHER:
B=0
ENDSELECT
→例えば、変数Aが5より小さいときは、B=1が実行される。
-----

haruka_bustup.jpg
一方、SWITCH文は、指定した変数の値に合わせて処理を分岐させる命令なんですよ。
-----
SWITCH 変数
CASE 値1:
変数が値1のときに実行する処理
CASE 値2:
変数が値2のときに実行する処理
・・・
DEFAULT:
変数がいずれの値でもないときに実行する処理
ENDSWITCH

例:
SELECT A
CASE 1:
B=1
CASE 2:
B=3
CASE 3:
B=5
DEFAULT:
B=0
ENDSELECT
→例えば、変数Aが2のときは、B=3が実行される
-----

airi_bustup.jpg
なるほどーっ。うまく使い分けることが大切だねっ。

yuu_bustup.jpg
そ、そうだね……。それじゃ次回は、プログラム言語の、もう一つの大切な機能、繰り返しについて説明するよ。楽しみにしててね……。

airi_bustup.jpg
はーいっ。

haruka_bustup.jpg
それでは、また次回にお会いしましょう。

※次回の更新は、10月9日、『師匠のJava道場』の予定です。お楽しみに!
posted by 裏編 at 09:10| LGP講座(かり | 更新情報をチェックする

2017年09月16日

LGP講座(かり~第2回 変数について学ぼう!

yuu_bustup.jpg
優:こ、こんにちわ・・・柊 優です・・・。
airi_bustup.jpg
愛梨:こんにちわー。 結城愛梨でーすっ。
haruka_bustup.jpg
陽香:永乃原陽香です。 今回もよろしくお願いしますね。
yuu_bustup.jpg
そ、それじゃ、今回もLGPについて勉強していくよ・・・。
よ、よろしくね・・・。
haruka_bustup.jpg
今回は、変数について勉強していきますよ。
airi_bustup.jpg
はーい。 がんばりまーすっ。
それじゃ、さっそくはじめちゃおうーっ。

~まず、変数に値を入れてみようっ。

yuu_bustup.jpg
さ、さて・・・。 さっき陽香ちゃんが言ったとおり、今日は変数について学ぶわけなんだけど、愛梨ちゃん。 変数ってな、何かな・・・?
airi_bustup.jpg
はーいっ。 変数とは値を入れる箱でーすっ。
haruka_bustup.jpg
はい、愛梨ちゃん。 よくできました。
プログラミング言語を少しでかじった人なら、すぐにわかりますよね。
変数へ値を入れる方法も、他の言語と同じですよ。
-----
変数名 = 値 or 式
例:
hensu = 123
hensu = 5 + 3
hensu = kazu * 5
-----
このように書けばいいんですよ。
右辺の値や式の計算結果が、左辺の変数に入るんです。
yuu_bustup.jpg
では、これを踏まえて、変数airiに16を入れるプログラムを作ってみて・・・。
airi_bustup.jpg
はーい。 かたかた・・・。
-----
airi = 16
-----
これでいいんだよね?
yuu_bustup.jpg
うん、正解だよ・・・。
それじゃ、今度はこの変数airiを表示させるプログラムを作ってみようか・・・。
haruka_bustup.jpg
プログラムの骨格はこんな感じです。
-----
CH=G@SETUP(640,480,8,1)
G@FONT(0,0,0,3,"MSゴシック")
LOOP
G@FLIP()
ENDLOOP
-----
G@FONT~と、LOOPの間に、変数を表示させる命令文を書けばいいんですよ。
airi_bustup.jpg
はーい。 それで、表示させるには、どうしたらいいのかな?
yuu_bustup.jpg
G@PRINT命令と、STR関数を使うんだ・・・。
G@PRINTは・・・
-----
G@PRINT(CH,横座標,縦座標,表示させる内容)
-----
このように使うんだ・・・。
そして、STR関数は、
-----
STR(変数名)
-----
このように書くんだよ・・・。
haruka_bustup.jpg
STR関数は、数字を文字列にしてくれる関数ですよ。
関数については、後日解説するので、今は、『数字を文字列に変えてくれる便利な箱』ぐらいに覚えててくださいね。
airi_bustup.jpg
うん、わかった。 それじゃ、G@PRINT命令の表示させる内容のところ、STR関数にすればいいんだよね。
えーと、かたかた・・・
-----
CH=G@SETUP(640,480,8,1)
G@FONT(0,0,0,3,"MSゴシック")
airi=16
G@PRINT(CH,0,0,STR(airi))
LOOP
G@FLIP()
ENDLOOP
-----

lgp01.JPG

airi_bustup.jpg
やったぁ。 ちゃんと16って表示されたよっ。
haruka_bustup.jpg
よくできましたね、愛梨ちゃん。
これで正解ですよ。
airi_bustup.jpg
あ、そうそう。 さっきの骨格の部分って、一体何をしてるの?
haruka_bustup.jpg
それは、もう少し講座が進んでから説明しますね。
楽しみにしててください。
はーいっ。
yuu_bustup.jpg
さて、それじゃ計算式も使ってみようか・・・。
さっきのプログラムを改造して、変数airiに16を入れて、それに3を足して、変数の内容を表示するプログラムを作ってみてね・・・。
airi_bustup.jpg
はーい。 かたかたかた・・・。
-----
CH=G@SETUP(640,480,8,1)
G@FONT(0,0,0,3,"MSゴシック")
airi=16+3
G@PRINT(CH,0,0,STR(airi))
LOOP
G@FLIP()
ENDLOOP
-----

airi_bustup.jpg
これでいいのかな。 実行してみるよっ。

lgp02.JPG

airi_bustup.jpg
うん。 ちゃんと19って表示されたよっ。
yuu_bustup.jpg
正解だね・・・。
それじゃ、変数airiに、16に3を足して2を掛けた答えを入れて、その変数airiを表示させるプログラムを作ってみてね・・・。
airi_bustup.jpg
はーい・・・。 あれ? 掛ける記号はどうしたらいいのかな?
haruka_bustup.jpg
それを説明するのを忘れてましたね。 一部の計算の記号は、このようになってるんですよ。
-----
・x → * ・÷ → /
-----
airi_bustup.jpg
そっかー。 それじゃ、こうすればいいんだねっ。 かたかた・・・。
-----
CH=G@SETUP(640,480,8,1)
G@FONT(0,0,0,3,"MSゴシック")
airi=16+3*2
G@PRINT(CH,0,0,STR(airi))
LOOP
G@FLIP()
ENDLOOP
-----

airi_bustup.jpg
それじゃじっこーうっ。 ・・・あれ?

lgp03.JPG

airi_bustup.jpg
22になってる。 正解は38なのに、どうしてだろ・・・。
haruka_bustup.jpg
引っかかってしまいましたね。 普通の計算と同じように、コンピュータでも、式は掛ける計算と割る計算を先に実行するようになっているから、先に3x2の計算を先にやってしまったんですよ。
あ、かっこの中を優先して計算するのも、普通の計算と同じです。
airi_bustup.jpg
そっかー。 ということは、あの計算式は、このように書かなきゃいけなかったんだね。
-----
airi=(16+3)*2
-----
yuu_bustup.jpg
うん、そのとおり・・・。
ところで愛梨ちゃん。 変数は計算式にも使えるって話したけど、こんな使い方もできるんだよ・・・。
-----
yuu = yuu + 1
-----
airi_bustup.jpg
それって、変数yuuの値に1を足して、その値をまた変数yuuに入れるってこと?
yuu_bustup.jpg
うん、そのとおりだよ・・・。 この使い方は、この先役に立つから、覚えておいてね・・・。
airi_bustup.jpg
はーいっ。
yuu_bustup.jpg
そ、それじゃ、今日はここまで・・・。
次回は、入力について勉強するから、楽しみにしててね・・・。
airi_bustup.jpg
また次回~。
haruka_bustup.jpg
また読者の皆さんに会えるのを、楽しみにしています。
posted by 裏編 at 11:04| LGP講座(かり | 更新情報をチェックする

2017年09月09日

LGP講座(かり~第1回 とりあえず、プログラムを作ってみよう!

※ここで使われている登場人物たちのアイコンは、別の方が本講座のために作ってくださったものを使用しております。

yuu_bustup.jpg
優:こ、こんにちわ・・・。 このLGPの講座を担当させていただくことになった、柊優です。 よ、よろしくね・・・。
airi_bustup.jpg
愛梨:結城愛梨です。 よろしくお願いしますっ。
haruka_bustup.jpg
陽香:永乃原陽香です。 よろしくお願いしますね。
yuu_bustup.jpg
え、えと、この講座は・・・DirectXを手軽に使うことのできるプログラミング言語、Light Game Programming(LGP)の使い方を初歩からレクチャーする講座・・・だそうです・・・。
haruka_bustup.jpg
プログラミングをしたことがない人にも、LGPによるプログラムが作れるようにレクチャーしていこうと思いますので、どうぞよろしくお願いしますね。
airi_bustup.jpg
なお、この講座では、LGPの現行バージョンである、LGP3を対象とするので、よろしくねっ。
yuu_bustup.jpg
そ、それでは、さっそく講座をはじめていこうか・・・。

airi_bustup.jpg
はーいっ。

~LGPを使うのに必要なものは?

yuu_bustup.jpg
さて、LGPについてくるのは、コンパイラとデバッガだけで、統合開発環境(IDE)はついてないんだ。
airi_bustup.jpg
あいでぃーいー?
haruka_bustup.jpg
テキストエディタとコンパイラとデバッガが一緒になった、開発環境のソフトのことですよ、愛梨ちゃん。
airi_bustup.jpg
それがないっていうことは、プログラムを打ち込むためのテキストエディタは、自分で用意しておかなきゃならないのか~。
あたし、そんなの用意してないよーっ。
haruka_bustup.jpg
心配しないでいいですよ。 私が用意しておきましたから。
airi_bustup.jpg
おーっ、さすが陽香ちゃんっ。
yuu_bustup.jpg
さて、LGPでのプログラミングは、テキストエディタでプログラムを書き、それをLGPのコンパイラでコンパイルしてEXEファイルを作る・・・こ、この手順で進んでいくんだよ・・・。
haruka_bustup.jpg
テキストエディタは、普通のメモ帳でもいいけど、秀丸エディタやEMACSのような、プログラム編集向けなテキストエディタのほうが、作りやすいと思いますよ。
ちなみに私たちは、MKEditorを使ってます。
airi_bustup.jpg
さて、次はいよいよ、プログラムを打ち込んで、コンパイルして、実行させてみまーす。

~プログラムを打ち込み、コンパイルさせてみよう!

yuu_bustup.jpg
さ、さて・・・それじゃ、プログラムを作ってみようか・・・。
テキストエディタを動かして、次のプログラムを打ち込んでみてね・・・。
---
ch=G@SETUP(640,480,16,1)
LOOP
G@PRINT(ch,0,0,"hello world")
G@FLIP()
ENDLOOP
---
airi_bustup.jpg
はーいっ。 かたかたかた・・・。 できましたっ。
haruka_bustup.jpg
打ち込み終わったら、保存するのを忘れないでくださいね、愛梨ちゃん。
あと、打ち込みミスがないか、チェックしておくといいですよ。
airi_bustup.jpg
はーい。
・・・
・・・・・・
・・・・・・・・・
airi_bustup.jpg
よしっ。 チェックもしたし、保存もしたよー。
yuu_bustup.jpg
そ、それじゃ、続いてLGP.EXEを実行してみて・・・。
airi_bustup.jpg
なんか、ファイルを選ぶダイアログが出たよっ。
ここで、さっき打ち込んだプログラムのファイルを選択すればいいのかな?
haruka_bustup.jpg
えぇ。 するとコンパイルが始まります。
airi_bustup.jpg
はーいっ。 じゃ、さっそく・・・。
あっ。 何かウィンドウが出て、Hello Worldって文字が出てるよ。

lgp-01.JPG
▲ メッセージが表示されたぞ!
※クリックすると、元の大きさで表示されます

yuu_bustup.jpg
うん・・・。 コンパイルが完了して、実行されたんだ・・・。
続いて、さっきのテキストファイルの最後三文字がEXEになった名前のファイルがあるよね。 それを動かしてみて・・・。
haruka_bustup.jpg
あ、今のウィンドウを閉じるのを忘れないでくださいね。
airi_bustup.jpg
はいはいー。
あっ。 やっぱりウィンドウが開いて、さっきと同じメッセージが出てるよっ。

lgp-01.JPG
▲ EXEファイルを実行させると・・・
※クリックすると、元の大きさで表示されます

yuu_bustup.jpg
うん。 そのファイルが、プログラムをコンパイルしてできたものなんだ・・・。
もしプログラムに間違いがあると、エラーのダイアログが発生するから、修正してからコンパイルしなおしてね・・・。

lgp-03.JPG
▲ 間違いがあると、このようにエラーが出てくるぞ。
airi_bustup.jpg
はーい、わかりましたーっ。
yuu_bustup.jpg
そ、それじゃ、今日はここまでにしようか・・・。
どきどきしたよ・・・。
haruka_bustup.jpg
お疲れ様、優ちゃん。
次回は、いよいよ本格的にプログラミングについて勉強していきます。
まずは変数について学びますので、楽しみにしていてくださいね。
airi_bustup.jpg
また次回~。
posted by 裏編 at 09:33| LGP講座(かり | 更新情報をチェックする