第2章 変数と演算を使ってみよう!


Top > はじめの一歩 > 第2章 変数と演算を使ってみよう!

2章

変数と演算を使ってみよう!


 変数とは
 全角?半角?
 真と偽
 演算とは
 定数とは
 変数の定義とは
 変数を使ってプログラムを組んでみよう
 変数を使ったプログラムの復習

■変数とは
「変数」とは・・・数学でいう「文字」のようなものです。
プログラムでは値を文字に当てはめることを「代入」といい、文字に入っている値を調べることを「参照」といいます。

・代入と参照

a = 3 + 5・・・@
MsgBox(a)・・・A


@では代入を、Aでは参照をそれぞれ行っています。
プログラムでは計算結果を出力するのは左側です!
「3 + 5 = a」と右側に書かないよう、注意してくださいね。
「MsgBox()」はメッセージボックス関数といいます。
()の中に入れた数字や文字をダイアログボックス(下図)として表示してくれます。



変数には数字だけでなく、文字列を当てはめることもできます。
文字列はダブルクォーテーション(")で囲んでください。
ダブルクォーテーションで囲まなかった場合は、変数の名前と認識されてしまい、エラーが出ます。

a = "Hello!World!!"・・・@
MsgBox( a )・・・A

実行結果は以下のようになります。



■全角?半角?
重要なことを説明するのを忘れてました。
全角文字と半角文字です。
「なんだ。携帯で使ってるからわかるよ」という方は、ちょっと優越感にひたりながら読んでください。

わからない方はとにかく見てください。見れば一発で違いがわかると思います。
半角には存在しない文字もあります。
・全角文字
1234567890ABC・・・・あいう・・・・アイウ・・・阿以宇・・・

・半角文字
1234567890ABC・・・abc・・・アイウ・・・

「MS-IME」や「ATOK」などの日本語入力ソフトが作動している時のみ、全角入力ができます。
半角文字は「1バイト文字」ともいいますが、コンピュータの初期の頃は1バイト文字しかありませんでした。
今でもコンピュータ動作の基本の文字となっています。
コンピュータが世界中に広がるにつれて、各国の文字で表現したいという要望から全角文字(=2バイト文字)が登場しました。
日本ではひらがな・カタカナ・漢字ですが、他の言語の国へ行くと、その言語に対応した全角文字が存在します。
最近ではコンピュータも高速・大容量になり、文字情報を格納しておくのも容易になってきたことから、全世界で統一したコードを使おうという動きもあるようです。


さて、コンピュータの基本となる半角文字なのですが、基本的に半角文字を使ってプログラムは組んでください。
半角文字を使わないと、コンピュータは命令を受け付けません!
UWSCはすごいので、変数には全角文字を使用してもいいのですが、他のプログラム言語でこういう仕様は見たことがないので、なるべくなら半角文字のみで済ませたいところです。
もちろん「UWSCだけしか使わない!日本語が断然いい!」という人は日本語の変数を使いまくっちゃってもいいのではないでしょうか。

ただし、変数だけですよ。その他の文では、さすがのUWSCもエラーになってしまいます。


■真と偽
これから先、論理演算子の話をする前に覚えてもらわなければならないことがあります。
真(True)と偽(False)です。
要は「正しいか、間違っているか」なのですが、数値でいうと真が1(正確には0以外)、偽が0になります。これは余談。
中身が入っているときには真、中身が入っていないとき(=0)は偽」という覚え方がよいと思います。
真偽判定という演算を行う場所がプログラムには多々あり、これを行うときには使っている数式中の値に関わらず、式全体が「真か偽か」で判断されるということです。

最初は難しいので、例。
「While」という制御文があります。これはひとつ空けて後ろに書いた部分が真だと永遠に「WEnd」までの命令をくり返し実行し続けます。

While True
  MsgBox("こんにちは")
Wend
これは「こんにちは」が永遠にくり返されます。気持ち悪いです。本当はこういうプログラムを組んではいけません。
(間違って実行させてしまった場合、[Alt]+[F2]の同時押しのあと[OK]を押せば止まります)
どこかで終わるような命令を加えなければ、コンピュータはずっと処理を続けてしまいます。

While False
  MsgBox("こんにちは")
Wend
これは1度もこんにちはしてくれません。最初に真偽の判定をし、条件に合わない場合は一切実行しません。

While 1
  MsgBox("こんにちは")
Wend
これは永遠にくり返されます。Trueの時と同じです。
ちなみに1以外でも、0以外の数値なら同じ結果になります。

While 0
  MsgBox("こんにちは")
Wend
これは1度も実行されません。Falseの時と同じです。

While 3>0
  MsgBox("こんにちは")
Wend
これはTrueの時と同じです。「3>0」の式は正しい(=True)からです。

While 1>2
  MsgBox("こんにちは")
Wend
これはFalseの時と同じです。

真偽判定には、数式中の値は関係ないことの意味がわかっていただけたでしょうか?


■演算とは
プログラムを語る上で欠かせないのが演算です。 何をするにも出てきます。 ただ、プログラムでは算数で習った「加減乗除」の他、比較・真偽の計算を含めたものを「演算」と呼び、計算の記号のことを「演算子」と呼びます。

●数値演算
足し算   5 = 3 + 2
引き算   2 = 7 - 5
かけ算  16 = 2 * 8
割り算   9 = 9 / 1    (※0除算(0で割る)と0になります)
あまり算  2 = 5 mod 3 (5÷3=1・・・2 で、あまりが求まる)

このあたりは簡単ですね。あまり算はよく使うので覚えておきましょう。


●比較演算子
・不等号
不等号には「>, <, =, >=, <=, <>」と6種類あります。
注意するのは「等しくない」の記号くらいでしょうか。
左辺より右辺が小さい>
左辺より右辺が大きい<
左辺と右辺が等しい=
左辺より右辺が小さいか等しい>=
左辺より右辺が大きいか等しい<=
左辺と右辺が等しくない<>
これらは右辺と左辺を含めた式全体で、正しいときにはTrue、間違っているときにはFalseとなります。

●論理演算子
・and
「and」は、日本語では「そして」という接続詞の意味で使われますが、プログラムでは「かつ」と訳されることが多いです。
演算子の前後がどちらも「True」であった場合のみにTrueを返します。
True = True and True
False = True and False
False = False and True
False = False and False

・or
「or」は、プログラム上で「または」という意味で使われます。
演算子の前後、少なくとも片方が「True」であった場合にTrueを返します。
True = True or True
True = True or False
True = False or True
False = False or False

・xor
「xor」は、プログラム上で「どちらかが真(排他的論理和)」という意味で使われます。
演算子の前後で、どちらかのみが「True」であった場合にTrueを返します。
False = True xor True
True = True xor False
True = False xor True
False = False xor False

■定数とは?
「定数」とは、ある決められた数を文字式に置き換えたものです。
数学でいう、πがその代表例ではないかと思います。
「値は決まっているんだけど、いちいち覚えるまでもない」ようなときに使用します。
<使い方>
Const PI = 3.14
<ここまで>
これで、これ以降の「PI」は「3.14」という数字として解釈され、演算されていきます。
変数との最大の違いは、一度決めたら変更がきかないことです。
(一度やってみましたが、「多重定義です」と怒られてしまいました)
UWSCで予め定義されている定数は
True1
False0
NULLヌルポインタ
EMPTY値のない状態
NOTHINGオブジェクトのない状態
の5つがあります。


■変数の宣言とは
UWSCでは、単純な変数であれば宣言の必要はありません。
ですが、複雑なことをしようとすると「宣言」という作業が必要になってきます。
「こういう形の変数を使います」と、コンピュータに教えてあげるのが宣言です。
宣言は「DIM」で行います。

●本当はこう書くべきだった、さっきの例
Dim a
a = 3 + 5
MsgBox(a)
ちゃんとした宣言が必要なものには「グローバル変数」や「配列」などがあるのですが、ここでは割愛します。


■変数を使ってプログラムを組んでみよう
それでは、変数を有効に使ったプログラムを組んでみましょう。
もう、「While」と「MsgBox」の使い方はだいたいわかりますね?
Dim i = 0
 
While i < 5
  MsgBox(i)
  i = i + 1
WEnd
これはいったい何をしようとしているのでしょう?
これだけで何をするプログラムかがわかれば大したものです。

答えは「0から4までを順に表示するプログラム」でした。
代入も参照も行っていますよね?
MsgBoxの部分を別の命令に変えてやると、「同じことを5回くり返すプログラム」に早変わりします。


■変数を使ったプログラムの復習
先ほどのプログラムがピンとこなかった人のために復習をしていきます。
見えない変数の値をイメージしなくてはいけないので、慣れるまでは難しいと思います。
コードが見えないとやりづらいと思うので、先ほどのコードをプリントして手元で照合しながら確認するとやりやすいですよ。

順番コード内容の説明「i」の値
1://変数の宣言処理されません
2:Dim i = 0変数iを定義し、0を代入します0
3:While i < 5iと5を比較します
iは5よりも小さいのでになります
While以下が実行されます
0
4:MsgBox(i)MsgBox関数で、iの値を表示します。0
5:i = i + 1iの値に1を加え、またiに代入します0→1
6:WEndWhileの終了
Whileの行へ強制的に戻されます
1
7:While i < 5iと5を比較します
iは5よりも小さいのでになります
While以下が実行されます
1
8:MsgBox(i)MsgBox関数で、iの値を表示します。1
9:i = i + 11→2
10:WEndWhileの終了
Whileの行へ強制的に戻されます
2
11:While i < 5iと5を比較します
iは5よりも小さいのでになります
While以下が実行されます
2
12:MsgBox(i)MsgBox関数で、iの値を表示します。2
13:i = i + 12→3
14:WEndWhileの終了
Whileの行へ強制的に戻されます
3
15:While i < 5iと5を比較します
iは5よりも小さいのでになります
While以下が実行されます
3
16:MsgBox(i)MsgBox関数で、iの値を表示します。3
17:i = i + 13→4
18:WEndWhileの終了
Whileの行へ強制的に戻されます
4
19:While i < 5iと5を比較します
iは5よりも小さいのでになります
While以下が実行されます
4
20:MsgBox(i)MsgBox関数で、iの値を表示します。4
21:i = i + 14→5
22:WEndWhileの終了
Whileの行へ強制的に戻されます
5
23:While i < 5iと5を比較します
iは5なので、「5より小さい」が成り立たなくなったので偽になります
するとWhileからWEndまでが一気に省略されて終了となります。
5
24:(終了)


制御文を使うと、このような繰り返しを簡単に表すことができるのですが、今回は初めてですし、順に流れを追ってみました。
いちいちこんなのを書いてたら死にます。
通常は脳内でやるか、もっと簡素な書き方をします。
フローチャートというのですが、私は趣味で始めたし、あまり複雑なもの組まないので使ったことはありません。



b-click

かゆいところに手が届くUWSCプログラミング 2006
当サイトの内容を広めていただくのは結構ですが、丸パクリやうみうみ屋さんにご迷惑をおかけするような使い方を禁止します。