「変数を使おう!」
一応、テストでちょっと複雑な操作はできるようになりました。が、なんといっても「ある設定や命令を扱うだけ」では、やれることにも限界が出てきてしまいます。もうちょっと複雑なことをさせるためには、もっといろいろ計算ができないといけません。そのために必要となるのが「変数」です。
変数は、さまざまな値の「入れ物」です。これに必要な値を一時的に保管し、必要に応じて取り出しながら動かしていけば、より複雑な計算もできるようになるわけです。——Squeakの部品では、「インスタンス変数」と呼ばれるものが作成できるようになっています。これを使い、必要な値を常に保ち続けることができるのです。
では、ちょっとやってみましょう。とりあえず、サンプルとして「星」の部品を1つ作成しましょう。そして、そのビューワを開きます。このビューワのパネルの一番上にあるメニュー表示のアイコンをプレスし、現れたメニューから「新しいインスタンス変数の追加」を選んで下さい。すると、変数名を尋ねてくるので、とりあえず「A」と入力しておきます。すると、ビューワに「インスタンス変数」という新たなカテゴリが現れ、そこで変数「A」に関するパネルを利用できるようになります。
この「インスタンス変数」っていうのは、「インスタンスで使う変数」ってものです。インスタンスっていうのは、平たくいえば、デスクトップに配置して使っているそれぞれの部品のことと考えればいいでしょう。
Squeakでは、部品はいくらでも作れますね。もし「星の部品に変数を用意する」というようになったら、デスクトップに置いた2つも3つもある星ですべて同じ値しか使えなくなってしまいます。インスタンス変数ってのは、「配置したそれぞれの星ごとに用意される変数」ということです。つまり、3つの星が配置されていても、それぞれに異なる変数を置いて使えるわけですね。
このインスタンス変数の値は、部品を廃棄しない限りずっと保ち続けられます。作製したスクリプトの実行が終わっても、値は消えたりしません。ずっとずっと値は残っていて、次にスクリプトを動かした時にはちゃんと前回の値が取り出せるのです。この点はよく覚えておきましょう。特に、多少プログラミングなんかをかじっていると、「変数はプログラムの終了時に破棄される」と思ってしまったりします。
現在のインスタンス変数の値は、「インスタンス変数」カテゴリにある変数のパネルの値を変更することで、その場で変えられます。
もし、「もうこのインスタンス変数はいらない」となったら、「インスタンス変数」カテゴリにある変数のパネルで、左端のメニュー表示用のアイコンをクリックし、現れたメニューから「さくじょする」を選んで下さい。これで作成したインスタンス変数は削除されます。
これでインスタンス変数の作成と削除はできるようになりました。とりあえず、これで安心ですね。
いわゆる「デバッグ」という作業が、こうなると必要になってきますね。プログラムのバグ(間違い)を探す作業です。こういうときには、スクリプトを動かしながら、今、変数の中身がどんな値になっているのか確認していくのが一番です。
「インスタンス変数」カテゴリにある変数のパネルの一番左端に、メニューを表示するマークがありますね? これをプレスし、現れたメニューから「ちょっと見張る」か「じっくり見張る」を選んでみましょう。その変数の値を表示するパネルが現れます。これを適当なところにおいてスクリプトを実行すれば、リアルタイムに変数の中身を確認できます。
また、「動くスピードが速すぎて値がよくわからない」というときは、「チクタク」の速度を遅くしましょう。スクリプトの時計マークの部分をマウスでずっと押し続けていると、「刻み値」というメニューが現れます。これは、1秒間に何回、このスクリプトを実行するかを示すものです。これで「1」にすれば1秒に1回しか実行されなくなりますし、「その他」を選んで「0.1」と入力すれば、10秒に1回しか動かなくなります。また、実行速度を速くすることもできますから、完成したらスピードアップして動くようにしておくこともできます。
1.まず、使用する部品として「テキスト」と「ボタン」を1つずつ配置します。テキストは、テキスト表示関係のハロを使ってフォントサイズなどを変更しておきましょう。また、「色」のハロで背景色なども調整しておくとよいでしょう。
![]()
2.ボタンのビューワを開き、まずインスタンス変数を作ります。「goukei」と「n」の2つのインスタンス変数を作って下さい。
3.スクリプトを作成します。今回は、「初期化」「繰り返し」「終了処理」の3つのスクリプトを作ります。スクリプトはわかりやすいよう、それぞれ「keisan」「loop」「owari」という名前に変更しておきました。そして、以下の図のように作成をします。「loop」は、刻み値を1000ぐらいにして速く動くようにしておくとよいでしょう。
![]()
4.これで完成です。——テキストに適当に数字を入力し、ボタンをクリックしてみましょう。1から入力した数字までの合計を計算し、テキストに表示しますよ。
![]()