3 コンピュータに情報を記憶させてみよう(変数)

3.1 学習目標

3.2 変数

今回新しく"変数"が登場します。家の大きさを変更できる次のプログラムをみてみましょう。

3.2.1 変数と値

次のプログラムを見てみましょう。

ここをクリックすると、以下のプログラムをダウンロードできます。

リスト 3.2.1.1 家_変数.dama
  1: ※プログラム名:家を書くプログラム
  2: ※       変数あり
  3: ※作成者:岡田 健
  4: ※作成日:2009.11.8
  5: 
  6: ※授業に必要なライブラリを取り込む。
  7: TurtleLibraryを参照する。
  8: 
  9: ※環境を初期化する。
 10: ウィンドウを初期化する。
 11: 亀を新規作成して、亀太郎と名付ける。
 12: ウィンドウに亀太郎を追加する。
 13: 
 14: 整数型を新規作成して、xと名付ける。	※変数xを宣言する
 15: xに50を入れる。						※変数xに値50を代入する
 16: 
 17: ※屋根を書く
 18: 亀太郎を右に30度回す。
 19: 亀太郎をxドット進める。
 20: 亀太郎を右に120度回す。
 21: 亀太郎をxドット進める。
 22: 亀太郎を右に120度回す。
 23: 亀太郎をxドット進める。
 24: 
 25: ※本体を書く
 26: 亀太郎を左に90度回す。
 27: 亀太郎をxドット進める。
 28: 亀太郎を左に90度回す。
 29: 亀太郎をxドット進める。
 30: 亀太郎を左に90度回す。
 31: 亀太郎をxドット進める。
 32: 亀太郎を左に90度回す。
 33: 亀太郎をxドット進める。

変数はデータを格納しておく場所のことです。 プログラムでは、「メモリ」の許す限り、データを格納しておくことが出来ます。

格納する場所を一つにつき、一つの名前をつけることが出来ます。

実際に格納されるデータのことを「値」といいます。

図 3.2.1.1 変数と値

3.2.2 変数を使ったプログラムの実行

プログラムの実行過程と変数を見ていきましょう。

3.2.2.1 変数の宣言

図 3.2.2.1.1 変数の宣言

3.2.2.2 変数へ値を代入する

図 3.2.2.2.1 変数へ値を代入する

3.2.2.3 変数を評価して値にする

図 3.2.2.3.1 変数を評価して値にする

3.2.3 複数の変数と変数名

変数はいくつでも使うことが出来ます。

区別するために、変数には異なる名前をつけなければなりません。 異なる名前ならば好きな名前をつけることが出来ます。 空白や特殊記号が使えないのはプログラム名と同じです。

3.2.3.1 複数の変数と変数名

ここをクリックすると、以下のプログラムをダウンロードできます。

リスト 3.2.3.1.1 家_複数の変数.dama
  1: ※プログラム名:家を書くプログラム
  2: ※       (変数は複数作れる)
  3: ※作成者:岡田 健
  4: ※作成日:2009.11.8
  5: 
  6: ※授業に必要なライブラリを取り込む。
  7: TurtleLibraryを参照する。
  8: 
  9: ※環境を初期化する。
 10: ウィンドウを初期化する。
 11: 亀を新規作成して、亀太郎と名付ける。
 12: ウィンドウに亀太郎を追加する。
 13: 
 14: 整数型を新規作成して、長さと名付ける。	※一辺の長さ
 15: 整数型を新規作成して、角と名付ける。  ※角度
 16: 長さに50を入れる。          ※一辺の長さを50に設定する
 17: 角に90を入れる。           ※角度を90度に設定する
 18: 
 19: ※屋根を描く
 20: 亀太郎を右に30度回す。
 21: 亀太郎を長さドット進める。
 22: 亀太郎を右に120度回す。
 23: 亀太郎を長さドット進める。
 24: 亀太郎を右に120度回す。
 25: 亀太郎を長さドット進める。
 26: 
 27: ※本体を描く
 28: 亀太郎を左に角度回す。
 29: 亀太郎を長さドット進める。
 30: 亀太郎を左に角度回す。
 31: 亀太郎を長さドット進める。
 32: 亀太郎を左に角度回す。
 33: 亀太郎を長さドット進める。
 34: 亀太郎を左に角度回す。
 35: 亀太郎を長さドット進める。

3.2.3.2 プログラムの実行過程

プログラムの実行過程を追ってみましょう。

図 3.2.3.2.1 変数の宣言
図 3.2.3.2.2 変数の宣言
図 3.2.3.2.3 変数への値の代入
図 3.2.3.2.4 変数への値の代入
図 3.2.3.2.5 変数を評価して値にする

3.3 コンピュータに計算をさせる

3.3.1 計算式を使ったプログラム

ここをクリックすると、以下のプログラムをダウンロードできます。

リスト 3.3.1.1 家_計算式.dama
  1: ※プログラム名:家を2つ書くプログラム
  2: ※       (プロンプト付き)
  3: ※作成者:岡田 健
  4: ※作成日:2009.11.8
  5: 
  6: ※授業に必要なライブラリを取り込む。
  7: TurtleLibraryを参照する。
  8: 
  9: ※環境を初期化する。
 10: ウィンドウを初期化する。
 11: 亀を新規作成して、亀太郎と名付ける。
 12: ウィンドウに亀太郎を追加する。
 13: 
 14: 整数型を新規作成して、長さと名付ける。   ※一辺の長さ
 15: 整数型を新規作成して、小家長さと名付ける。 ※小さい家の一辺の長さ
 16: 整数型を新規作成して、角と名付ける。    ※角度
 17: 長さに100を入れる。
 18: 角に90を入れる。
 19: 
 20: ※屋根を描く
 21: 亀太郎を右に30度回す。
 22: 亀太郎を長さドット進める。
 23: 亀太郎を右に120度回す。
 24: 亀太郎を長さドット進める。
 25: 亀太郎を右に120度回す。
 26: 亀太郎を長さドット進める。
 27: 
 28: ※本体を描く
 29: 亀太郎を左に角度回す。
 30: 亀太郎を長さドット進める。
 31: 亀太郎を左に角度回す。
 32: 亀太郎を長さドット進める。
 33: 亀太郎を左に角度回す。
 34: 亀太郎を長さドット進める。
 35: 亀太郎を左に角度回す。
 36: 亀太郎を長さドット進める。
 37: 
 38: ※小さい家を書く位置まで移動する
 39: 亀太郎の筆を無効化する。
 40: 亀太郎を左に角×2度回す。
 41: 亀太郎を長さ×2ドット進める。
 42: 亀太郎を左に角度回す。
 43: 亀太郎の筆を有効化する。
 44: 
 45: ※小さい家の長さを設定する
 46: 小家長さに長さ÷2を入れる。
 47: 
 48: ※小さい家の屋根を描く
 49: 亀太郎を右に30度回す。
 50: 亀太郎を小家長さドット進める。
 51: 亀太郎を右に120度回す。
 52: 亀太郎を小家長さドット進める。
 53: 亀太郎を右に120度回す。
 54: 亀太郎を小家長さドット進める。
 55: 
 56: ※小さい家の本体を描く
 57: 亀太郎を左に角度回す。
 58: 亀太郎を小家長さドット進める。
 59: 亀太郎を左に角度回す。
 60: 亀太郎を小家長さドット進める。
 61: 亀太郎を左に角度回す。
 62: 亀太郎を小家長さドット進める。
 63: 亀太郎を左に角度回す。
 64: 亀太郎を小家長さドット進める。

コンピュータは計算機ですから、計算をさせることが出来ます。例えば、次のように書くと

角 × 2

掛け算を行うことが出来ます。

このような、計算を行う書法のことを「式」といいます。

言霊で使うことが出来る基本的な計算命令を以下に示します。

足し算をします。
-
引き算をします。
×
掛け算をします。「かける」と書いて変換すると「×」記号を入力できます。
÷ または /
割り算をします。「わる」と書いて変換すると「÷」記号を入力できます。
割り算の余りを求めます

3.3.2 計算式を使ったプログラムの実行

次のように評価(計算)されて、具体的な値になり、プログラムが動きます。

図 3.3.2.1 変数の宣言

3.3.3 計算式と代入文を使ったプログラムの実行

計算式があっても、代入値から評価されるのは一緒です。

図 3.3.3.1 変数の宣言
考えてみよう

次のようなプログラムが動かない(コンパイルエラーとなる)のは何故ですか?考えてみましょう。

角÷2に小家長さを入れる。

3.4 ユーザと対話する(インタラクティブ)なプログラム

3.4.1 入力を受け付ける

ここをクリックすると、以下のプログラムをダウンロードできます。

リスト 3.4.1.1 家_入力.dama
  1: ※プログラム名:家を書くプログラム
  2: ※       (一辺の長さを入力する)
  3: ※作成者:岡田 健
  4: ※作成日:2009.11.8
  5: 
  6: ※授業に必要なライブラリを取り込む。
  7: TurtleLibraryを参照する。
  8: 
  9: ※環境を初期化する。
 10: ウィンドウを初期化する。
 11: 亀を新規作成して、亀太郎と名付ける。
 12: ウィンドウに亀太郎を追加する。
 13: 
 14: 整数型を新規作成して、長さと名付ける。 ※一辺の長さ
 15: 整数型を新規作成して、角と名付ける。  ※角度
 16: 
 17: コンソールから整数を受け取って、それを長さに入れる。 ※一辺の長さを入力値に設定する
 18: 角に90を入れる。 ※角度を90度に設定する
 19: 
 20: ※屋根を描く
 21: 亀太郎を右に30度回す。
 22: 亀太郎を長さドット進める。
 23: 亀太郎を右に120度回す。
 24: 亀太郎を長さドット進める。
 25: 亀太郎を右に120度回す。
 26: 亀太郎を長さドット進める。
 27: 
 28: ※本体を描く
 29: 亀太郎を左に角度回す。
 30: 亀太郎を長さドット進める。
 31: 亀太郎を左に角度回す。
 32: 亀太郎を長さドット進める。
 33: 亀太郎を左に角度回す。
 34: 亀太郎を長さドット進める。
 35: 亀太郎を左に角度回す。
 36: 亀太郎を長さドット進める。

入力を受け付けるには、

コンソールから整数を受け取って、それを<変数>に入れる。

命令を使います。

評価すると、ユーザが入力した値になります。そして、その値が変数に代入されます。

3.4.2 ユーザにメッセージを出す

ここをクリックすると、以下のプログラムをダウンロードできます。

リスト 3.4.2.1 家_入出力.dama
  1: ※プログラム名:家を書くプログラム
  2: ※       (プロンプト付き)
  3: ※作成者:岡田 健
  4: ※作成日:2009.11.8
  5: 
  6: ※授業に必要なライブラリを取り込む。
  7: TurtleLibraryを参照する。
  8: 
  9: ※環境を初期化する。
 10: ウィンドウを初期化する。
 11: 亀を新規作成して、亀太郎と名付ける。
 12: ウィンドウに亀太郎を追加する。
 13: 
 14: 整数型を新規作成して、長さと名付ける。 ※一辺の長さ
 15: 整数型を新規作成して、角と名付ける。  ※角度
 16: 
 17: コンソールに「一辺の長さを入力して下さい。」を出力する。
 18: コンソールから整数を受け取って、それを長さに入れる。  ※一辺の長さを入力値に設定する
 19: 角に90を入れる。 ※角度を90度に設定する
 20: 
 21: ※屋根を描く
 22: 亀太郎を右に30度回す。
 23: 亀太郎を長さドット進める。
 24: 亀太郎を右に120度回す。
 25: 亀太郎を長さドット進める。
 26: 亀太郎を右に120度回す。
 27: 亀太郎を長さドット進める。
 28: 
 29: ※本体を描く
 30: 亀太郎を左に角度回す。
 31: 亀太郎を長さドット進める。
 32: 亀太郎を左に角度回す。
 33: 亀太郎を長さドット進める。
 34: 亀太郎を左に角度回す。
 35: 亀太郎を長さドット進める。
 36: 亀太郎を左に角度回す。
 37: 亀太郎を長さドット進める。

ユーザにメッセージを出すには

コンソールに「<文字列>」を出力する。

命令を使います。

出したいメッセージを「」で囲んでください。

3.5 おみくじ

3.5.1 乱数

ここをクリックすると、以下のプログラムをダウンロードできます。

リスト 3.5.1.1 家_乱数.dama
  1: ※プログラム名:家を書くプログラム
  2: ※       (ランダムな大きさにする)
  3: ※作成者:岡田 健
  4: ※作成日:2009.11.8
  5: 
  6: ※授業に必要なライブラリを取り込む。
  7: TurtleLibraryを参照する。
  8: 
  9: ※環境を初期化する。
 10: ウィンドウを初期化する。
 11: 亀を新規作成して、亀太郎と名付ける。
 12: ウィンドウに亀太郎を追加する。
 13: 
 14: 整数型を新規作成して、長さと名付ける。 ※一辺の長さ
 15: 整数型を新規作成して、角と名付ける。  ※角度
 16: 
 17: ※一辺の長さを1-99までのランダム値に設定する
 18: 計算機が100でランダム数を生成して、それを長さに入れる。 
 19: ※角度を90に設定する
 20: 角に90を入れる。 
 21: 
 22: ※屋根を描く
 23: 亀太郎を右に30度回す。
 24: 亀太郎を長さドット進める。
 25: 亀太郎を右に120度回す。
 26: 亀太郎を長さドット進める。
 27: 亀太郎を右に120度回す。
 28: 亀太郎を長さドット進める。
 29: 
 30: ※本体を描く
 31: 亀太郎を左に角度回す。
 32: 亀太郎を長さドット進める。
 33: 亀太郎を左に角度回す。
 34: 亀太郎を長さドット進める。
 35: 亀太郎を左に角度回す。
 36: 亀太郎を長さドット進める。
 37: 亀太郎を左に角度回す。
 38: 亀太郎を長さドット進める。

乱数値を(命令毎に毎回変わる値)に取得するには

計算機が<数>でランダム数を生成して、それを<変数名>に入れる。

命令を使います。

実行されるごとに異なる値が自動的に選択されます。

数の所に書いた数が最大値になります。

3.6 練習問題

3.6.1 問題1:五角形や星を描くプログラムの改造

前回作った、五角形や星を描くプログラムを、インタラクティブなプログラムに(拡大、縮小が出来ることが望ましい)してみましょう。 計算も使ってみましょう。 余裕がある人は、大きさの違うものを隣に書いたり、乱数によって形が変化するようなプログラムにも挑戦してみてください。