GO BACK

REALbasic教室 その2


「基本文法をマスターする」


■変数と型について


 REALbasicの基本的な開発手順がわかったところで、具体的なプログラミングへと進むことにしましょう。

 まず、基本的な文法ということで、四則演算などの計算から説明しましょう。――新規にプロジェクトを作り、ProjectウィンドウからWindow1を開いて下さい。そして、ボタンを作成します。以後は、このボタン(デフォルトではPushButton1という名前になっているはずです)にプログラムを書きながら説明をしていきます。

 では、まず以下のようなプログラムをPushButton1のActionイベントに書いて下さい。


Sub Action ()
	Dim X as Integer
	Dim Y as Integer
	Dim Z as Integer
	Dim str1 as String
	X = 10
	Y = 20
	Z = X + Y
	msgbox "答え:" + Str(Z)
End Sub

 書く時の注意点ですが、まずREALbasicでは、アルファベットは大文字と小文字は同じものとして認識するので違っても大丈夫です。例えば「Dim」は、「dim」でも「DIM」でもちゃんと動きます。ただし、半角文字と全角文字は別の文字として認識します。基本的にソースコードは(文字列として表示する場合以外は)全て半角の英数字で書くようににして下さい。

 最初からいきなりずらずらとプログラムが出ましたが、そう難しくはないので心配はいりません。――記述し終えたら、「Run」メニューでプログラムを実行し、ボタンをクリックしてみましょう。画面に「答え:30」というアラートウィンドウが現れましたか?

 では、プログラムを順番に見ていきましょう。


Dim X as Integer
Dim Y as Integer
Dim Z as Integer
Dim str1 as String
これらは、変数の定義をしているところです。REALbasicでは、変数を使う場合には、まずDimというものを使って変数定義をしなければいけません。これは、


Dim 《変数名》 as 《変数の種類》


このような形で記述します。このDimによる変数の定義を忘れると、変数を使うことはできません。

 asによって指定される変数の種類というのは、その変数に入れられるのがどんな値かを示すものです。これには様々な種類がありますが、まずは以下のものだけ覚えておけばいいでしょう。


Integer ――整数

String ――文字列

Boolean ――真偽値(trueかfalseか)

Single ――単精度の実数

Double ――倍精度の実数


 プログラミングに慣れていない人は、BooleanやSingle/Doubleというのがよくわからないかも知れません。Booleanは「正しいかそうでないか」という二者択一の値を利用するためのものです。またSingle/Doubleは小数を含む数字を使うためのものと考えて下さい。基本的にSingleを使ってみて、「なんか精度が悪いぞ?」と思う場合にDoubleを使う、と考えればいいでしょう。


X = 10
Y = 20
Z = X + Y
これが計算をしている部分です。REALbasicでは、四則演算は+−*/の記号でそのまま行ないます。変数への値の代入は、=を使います。ここではXとYにそれぞれ数字を代入し、その合計を変数Zに代入していたわけですね。まあ、これらは見た通りのものですからすぐにわかりますね。


msgbox "答え:" + Str(Z)
ここでは、2つの見なれない単語が使われています。まず、msgboxというのは、文字列を画面に表示する命令です。これは、


msgbox "《文字列》"


――という具合に使います。まあ、これはとても単純ですね。

 その後にあるStr(Z)というのは、数字を文字列に変換する関数なのです。REALbasicでは、変数の型が厳格に決まっています。そしてそれぞれの命令や関数も、利用できる値の型は決まっているのです。

 例えば、今回使ったmsgboxは、文字列しか扱うことはできません。ですから、計算結果の変数Zはそのままではmsgboxで使うことはできないのです。そこで、数字を文字列に変換するStrを使っているのです。これは、


Str(《数字》)


――このようにすると、数字を文字列として扱うようになります。例えば、「X = Str(10)」というようにすれば、Xには「10」という文字列が代入されるわけです。

 このように、関数や命令などで必要となる値(カッコ内の値のこと)を「パラメータ」と呼びます。パラメータがない場合でも、関数では必ず()をつけないといけません。また、よく間違えるのですが、関数名と()の間は半角のスペースをいれないでください。例えば「Str(Z)」を「Str (Z)」とするとエラーになります。

 この反対に、「文字列を数字に変換する」というものもあります。それは、val()というものです。例えば「val("10")」という具合にすると、「10」という文字を10という数字として得ることができます。もし数字に変換できない文字列をパラメータにしてしまった場合には、関数の結果は「0」となります。

 この「Str()」と「Val()」は文字列と数字の橋渡しをするものとして非常に多用されますから、ここでしっかりと覚えておいて下さい。

 最後に、文字列をつなぐのに+という記号を使っていることに注意して下さい。多くの言語では文字列をつなぐのに&記号を使いますが、REALbasicでは、文字列通しを1つにつなげる場合にも+を使います。


"ABC" + "DEF" → "ABCDEF"


――というわけです。わかりますね?


■条件分岐について


 では、次にプログラムを制御する「制御構文」と呼ばれるものについて説明しましょう。これには、大きく分けて2つのものがあります。いわゆる条件分岐と呼ばれるものと、繰り返しと呼ばれるものです。REALbasicの場合、条件分岐には「IF文」「SELECT文」といったものが、繰り返しには「FOR文」「while文」というものがあります。

 順番に説明していきましょう。まず、IF文からです。これは、式の値をチェックし、その結果が正しいか正しくないかによって異なる命令を実行させるのに使われます。

 これもサンプルを作ってみましょう。Window1にエディトテキストを1つ作成してください(名前はEditField1のまま)。そして、先のPushButton1のプログラムを以下のように書き換えます。


Sub Action ()
	dim x as string
	dim y as integer
	x = editField1.text
	y = val(x)
	if y = 0 then
		msgbox "ゼロだよん。"
	else
		msgbox "ゼロじゃないよん。"
	end if
End Sub

 ではプログラムを実行し、エディトフィールドに適当な数字を入力してボタンをクリックしてみましょう。0か、数字以外の文字を入力すると画面に「ゼロだよん」と表示され、0以外の整数を入力した場合は画面に「ゼロじゃないよん」と表示されます。

 ここでは、エディトフィールドの値を調べ、その結果によって別のmsgbox命令を実行させています。


dim x as string
dim y as integer
まず、文字列と整数の変数を1つずつ宣言します。


x = editField1.text
これは、editField1というオブジェクトのテキストを取り出しているところです。オブジェクトの利用については次回に詳しく取り上げますが、「《オブジェクト》.《プロパティ》」とすることでオブジェクトの値を変数に取り出すことができます。


y = val(x)
取り出した値を、数字に変換して変数yに代入しています。val()というのは、先に説明しましたがstr()と反対の働きをする関数で、文字列を数字に変換するものでしたね。


if y = 0 then
	msgbox "ゼロだよん。"
else
	msgbox "ゼロじゃないよん。"
end if
ここがもっとも重要な部分です。まず「if y = 0 then」という部分で、変数yの値が0かどうかチェックしています。そして0であった場合には、その後の「msgbox "ゼロだよん。"」というのを実行しています。もし0でない場合には、else以降の「msgbox "ゼロじゃないよん。"」を実行します。

 IFの基本形を整理するなら、以下のようになるでしょう。


If《条件》 Then
	……正しい時の命令……
Else
	……正しくない時の命令……
End If

 もし正しくない時は何もしないのであれば、「Else ……正しくない時……」の部分を省いて書くこともできます。


■複数分岐について


 このIFは簡単に条件による命令の切り替えができますが、2つの切り替えしかできないという弱さもあります。例えば3つ4つ、あるいは10もの分岐を必要とした場合、一体いくつのIFを書けばいいんでしょう? 気が遠くなりますね。

 このような場合に重宝するのがselect文というものです。これも例をあげましょう。先のIFで作成したボタンのプログラムを、以下のように書き換えてみてください。


Sub Action ()
	dim x as string
	dim y as integer
	x = editField1.text
	y = val(x)
	select case y
	case 0
		msgbox "0だよん。"
	case 1
		msgbox "1だよん。"
	else
		msgbox "他の数字だよん。"
	end select
End Sub

このようにすると、入力した数字が0か1かそれ以外かによって、3通りの表示がされるようになります。

 ここで使われているselect文というのは、以下のようなフォームをしています。


select case 《変数》
case 《値1》
	……変数が値1の時の命令……
case 《値2》
	……変数が値2の時の命令……

else ……それ以外の場合の命令…… end select
 つまり、caseを増やしてやれば、いくらでも分岐を作っていくことができるというわけです。

 もちろん、selectを使わなくとも、IFを組み合わせれば同様のことが可能です。しかし、それにはたくさんのIFを使わなければならなくなり、プログラムもわかりにくくなるでしょう。3つ以上の分岐というのは意外に必要性が高いものです。そこで、このような構文を用意したのでしょう。


■繰り返し構文について


 最後に、同じ命令を必要なだけ何度も繰り返し実行できる「繰り返し構文」について説明しましょう。これも、先に作ったボタンのプログラムを書き換えて例を示します。


Sub Action ()
	dim x as string
	dim y as integer
	dim z as integer
	dim i as integer
	x = editField1.text
	y = Val(x)
	z = 0
	for i = 1 to y
		z = z + i
	next
	msgbox x + "までの合計:" + Str(z)
End Sub

 エディトフィールドに適当な整数を入力し、ボタンをクリックすると、1からその数字までの合計を計算して画面に表示します。いろいろと数字を変えて試してみましょう。

 ここで使われているのは「For文」と呼ばれる繰り返し構文です。これは、以下のような形をしています。


for 《変数》 = 《初期値》 to 《終了の値》
	……実行する命令……
next

 この構文にくると、まず《変数》に《初期値》を代入し、以下の命令を実行します。そしてnextまでくると、変数の値が《終了の値》になっているかどうかチェックします。もしまだその値になっていなければ、《変数》の値を1増やし、再度forの次行からの命令を繰り返します。

 何度も繰り返していると、いずれ《変数》の値は《終了の値》と同じになるでしょう。そうしたら構文を抜け、nextの先へと進みます。それまでは何度でも繰り返しつづけるのです。


■条件繰り返し文について


 繰り返しには、forの他にもwhileというものがあります。――例えば、forで作成した数字を合計するプログラムを、whileを使って書き直してみましょう。


Sub Action ()
	dim x as string
	dim y as integer
	dim z as integer
	dim i as integer
	x = editField1.text
	y = Val(x)
	z = 0
	i = 1
	while i <= y
		z = z + i
		i = i + 1
	wend
	msgbox x + "までの合計:" + Str(z)
End Sub

 これでも、先ほどのforで作ったプログラムと全く同じ働きをします。では、繰り返しの部分を見てみましょう。


while i <= y
	z = z + i
	i = i + 1
wend

 このような形をしていますね。このwhileというのは、条件を使った繰り返しを行なうためのものです。すなわち、設定した条件が正しい間繰り返しを続け、正しくなくなったら繰り返しを抜ける、というものです。これは、以下のような形をしています。


while 《条件》
	……実行する命令……
wend

 割と単純な形をしていますね。――さて、ここで作成したwhile文を見てみましょう。条件には「i <= y」というものが設定されています。while文に突入すると、まずiの値がyより小さいかどうかチェックします。小さければ、zにiを加算し、そしてiを1増やします。そしてwendまできたら再び最初に戻り、またi <= yが正しいかどうかチェックするのです。そうして繰り返す度に設定された式をチェックし、それが正しい間繰り返しを続けるのです。

 forは設定した変数が確実に1ずつ増えるような場合には便利ですが、それ以外の場合には使えません。そのような場合には、このwhile文が役に立つでしょう。


――以上で、REALbasicの基本的な文法をほぼ覚えたことになります。次回は、作成したオブジェクトを利用したプログラミングへと進むことにしましょう。


GO NEXT


GO HOME