簡単な計算をしてみよう

では、実際にSmall Basicでプログラミングを試してみよう。

この例を実際にSmall Basicに入力して動かしてみましょう。

TextWindow.WriteLine("1:値を入力してください")
num1=TextWindow.ReadNumber()
TextWindow.WriteLine("2:値を入力してください")
num2=TextWindow.ReadNumber()
num3=num1+num2
TextWindow.Write("合計は")
TextWindow.Write(num3)
TextWindow.WriteLine("です")

これは二つの数値を入力させ、その「和」を計算して表示するプログラムです。

文字を表示する

一つ一つ見ていきましょう。

TextWindow.WriteLine("1:値を入力してください")

この文は、()で囲まれた内容をテキストウィンドーに表示する命令です。「テキストウィンドー」とはこのプログラムを実行した時に現れる背景が黒色のウィンドーのことです。テキストウィンドーは文字を表示したり、キーボードから入力するために使われます。

TextWindow.WriteLine()

はテキストウィンドーに文字や数値を書き込み、最後に改行を行う命令です。例えば、

TextWindow.WriteLine("ABCDEFG")

という命令を実行すると、

ABCDEFG

とテキストウィンドーに表示されます。表示する文字の前後を「"(ダブルコーテーション)」で囲んでいることに注意してください。
例題の6行目と8行目に

TextWindow.Write()

というTextWindow.WriteLine()とよく似た名前の命令が使われていることに気づいたかもしれません。この命令も同じく指定された文字や数値をウィンドーに出力しますが、違いは最後に改行を行うかどうかだけです。

TextWindow.WriteLine("ABCDE")
ABCDEと表示した後改行する。
TextWindow.Write("ABCDE")
ABCDEと表示した後改行しない。

これは次のプログラム例を実行してみればわかると思います。

TextWindow.Write("klmno")
TextWindow.Write("pqrst")
TextWindow.WriteLine("abcde")
TextWindow.WriteLine("fghij")

実行した結果は次のようになると思います。

"klmno"と"pqrst"の間、それに"pqrst"と"abcde"は次の行に改行されないでそのまま続けて表示されるのに、"abcde"の後に次の行に改行されてから"fghij"が表示されます。

キーボードからの入力

2行目と4行目を見てください。

num1=TextWindow.ReadNumber()

TextWindow.ReadNumber()はキーボードから数を入力する命令です。数(0〜9)以外の文字は入力できません(しても無視されます)。数を入力した後は「Enter」キーをたたく必要があります(は「エンターキー」のつもり)。

12345

では、入力された数はどこにいったのでしょうか?TextWindow.ReadNumber()の前に「num1=」というのが着いていますが、これは「TextWindow.ReadNumber()で読み取った数を、変数 num1に代入せよ」という意味になります。

ところで数字だけでなく、他にも文字を入力するには

TextWindow.Read()

という命令を使います。

変数

「変数」は「名前のついた入れ物」のようなものと考えてください。この入れ物には色々なものが入れられます。中学校ではそろそろ「関数」を習い始めていると思うので、そこで使うxやyのようなものと考えてもよいかもしれません。

変数の名前はある程度は自由につけることができますが、規則があります。

  1. 使える文字は(a〜z(A〜Z)のアルファベット、数字と記号「_(アンダースコア)]のみ。アンダースコアは空白の代わりに使われることがよくあります。
  2. アルファベットの大文字と小文字は区別しません。つまり、NumBeR と number は同じものとみなされます
  3. 数字が名前の先頭に来てはいけません。つまりnum1はokですが、1ban はだめ。
  4. Small Basicのキーワードと同じ名前の変数は使えません。


変数へなにかを入れる(代入すると言ったりします)には、記号「=」を使います。例えば、変数"num1"に3.141592という値を代入するには、

mum1=3.14159

とします。

ここでは「=」は数学でいうところの「等号」をあらわしているのではなく、代入を表しています。なので、こういう書き方をすることもあります。

x=3
x=x+5

「=」が等号だと考えると、一行目はともかくとして二行目は妙な感じがすると思います。数学的には二行目が成り立つようなxは存在しませんからね。*1

Small Basicで=が代入だとすると、上の例は次のように解釈できます。

x=3    変数xに3を代入する
x=x+5   変数xの値(この場合3)に5を加えて、xに代入する

代入された値は単に変数の名前を書けば参照できます。上の例では2行目の = 記号の右側にあるxはその値を参照していることを示しています。一行目でxに3を代入しているので、2行目でxを参照する際には3という値を得ることができます。

変数の値を「参照する」といった場合、それは変数の中をみて何が格納されているかを調べているだけなので参照したからと言っても中の値が消えるというわけではありません。最初に変数への代入は名前付きの入れ物になんかを入れるようなものだ、という書き方をしましたが、だからと言って参照するときに中から取り出してしまうというわけではないのです。

ところで、変数を参照するとしてもあらかじめその中になにも入っていなかったらどうなるのでしょうか?試してみましょう。

予めなにも値を代入していない変数 hoge をTextWindow.WriteLineで表示しようとしていますが、「変数'hoge'は使われていますが、それに対する値は指定されていません。正しく値を確認したか確認してください」というエラーが発生してしまいました。

つまり、予めその中になにも入っていない変数は参照することができない、ということなのです。

変数には数値だけではなくて、色々な物を入れることができます。例として文章(文字列と呼んだりします)を入れてみましょう。文字列を指定する場合には文字列の前後を引用符(ダブルコーテーション)で囲んでやる必要があります。ただし、代入された文字列の中にダブルコーテションは含まれません。

num1="Hello World"

数学で習った変数のことを考えると、変数に文章が入るのはなんだか奇妙な感じがするかもしれませんね。でも、変数を「入れ物」と考えると少しわかりやすいかもしれません。

ところで、変数には一度には一つのモノしか入れることができません。新しいモノを入れると、以前から入っていたモノは捨てられてしまいます。

計算をさせる

コンピューターは計算が得意です*2。Small Basicでも四則演算を始めとして様々な計算が可能です。ここではとりあえず四則演算を覚えましょう。

+
足し算を行います。
-
引き算を行います。
*
掛け算を行います。×記号の代わりです。* はアスタリスクと呼びます。
/
割り算を行います。÷記号の代わりです。/ はスラッシュと呼びます。分数記号のようなものと覚えてもいいかも。

この記事の最初の例の5行目では足し算をしていますね。

num3=num1+num2

ここでは変数num1に格納されている値と、変数num2に格納される値の和を計算して、結果をnum3に代入しています。試しに + 記号を他の四則演算の記号と置き換えて実行するとどうなるか見てみてください。

まとめ

変数とは様々なデータを格納できる名前の付いた入れ物のようなものです。今回は変数の使い方を説明しました。また、テキストウィンドーに文字を表示したり、キーボードから文字や数を入力する方法、数に四則演算を行う方法も説明しました。

今日出てきた用語
テキストウィンドー
文字を表示したりキーボードから文字や数を入力するためのウィンドー
変数
様々なデータを格納できる名前がついた入れ物のようなもの

*1:これが気持ち悪い、と感じる人は他にもいたようでPascalというプログラミング言語では代入には「:=」というコロン(:)とイコール(=)を組み合わせた書き方をします、がそれは余談。

*2:試しに家のパソコン(i5-2400)でπを一億桁計算させてみたら4分弱で終わりました。すごいな最近のPCは