今回新しく"変数"が登場します。家の大きさを変更できる次のプログラムをみてみましょう。
次のプログラムを見てみましょう。
1: /* 2: * 家を書くプログラム (変数あり) 3: * 2003/05/08 Yoshiaki Matsuzawa 4: * 2012/10/16 改訂 Yoshiaki Matsuzawa 5: */ 6: public class VariableHouse extends Turtle { 7: 8: // 起動処理 9: public static void main(String[] args) { 10: Turtle.startTurtle(new VariableHouse()); 11: } 12: 13: // タートルを動かす処理 14: public void start() { 15: 16: int x;// 変数xを宣言する 17: x = 50;// 変数xに値50を代入する 18: 19: {// 屋根を書く 20: rt(30); // 30度右に回る 21: fd(x); // x歩前に進む 22: rt(120); 23: fd(x); 24: rt(120); 25: fd(x); 26: } 27: 28: {// 本体を書く 29: lt(90); 30: fd(x); 31: lt(90); 32: fd(x); 33: lt(90); 34: fd(x); 35: lt(90); 36: fd(x); 37: } 38: } 39: 40: }
ここ をクリックすると、プログラムをダウンロードできます。
下のボタンを押すと、VariableHouseプログラムが実行できます。
変数はデータを格納しておく場所のことです。 プログラムでは、「メモリ」の許す限り、データを格納しておくことが出来ます。
格納する場所を一つにつき、一つの名前をつけることが出来ます。
実際に格納されるデータのことを「値」といいます。
プログラムの実行過程と変数を見ていきましょう。
変数はいくつでも使うことが出来ます。
区別するために、変数には異なる名前をつけなければなりません。 異なる名前ならば好きな名前をつけることが出来ます。 空白や特殊記号が使えないのはクラス名と同じです。
1: /* 2: * 家を書くプログラム (変数は複数作れる) 3: * 2003/05/08 Yoshiaki Matsuzawa 4: * 2012/10/16 改訂 Yoshiaki Matsuzawa 5: */ 6: public class MultiVariableHouse extends Turtle { 7: 8: // 起動処理 9: public static void main(String[] args) { 10: Turtle.startTurtle(new MultiVariableHouse()); 11: } 12: 13: // タートルを動かす処理 14: public void start() { 15: 16: int length;// 1辺の長さ 17: int rightAngle;// 直角 18: 19: length = 50;// 1辺の長さを50に設定する 20: rightAngle = 90;// 直角を90度に設定する 21: 22: {// 屋根を書く 23: rt(30); // 30度右に回る 24: fd(length); // x歩前に進む 25: rt(120); 26: fd(length); 27: rt(120); 28: fd(length); 29: } 30: 31: {// 本体を書く 32: lt(rightAngle); 33: fd(length); 34: lt(rightAngle); 35: fd(length); 36: lt(rightAngle); 37: fd(length); 38: lt(rightAngle); 39: fd(length); 40: } 41: } 42: 43: }
ここ をクリックすると、プログラムをダウンロードできます。
下のボタンを押すと、MultiVariableHouseプログラムが実行できます。
プログラムの実行過程を追ってみましょう。
1: /* 2: * 家を2つ書くプログラム (計算させるプログラムの例) 3: * 2003/05/08 Yoshiaki Matsuzawa 4: * 2012/10/16 改訂 Yoshiaki Matsuzawa 5: */ 6: public class DoubleHouse extends Turtle { 7: 8: // 起動処理 9: public static void main(String[] args) { 10: Turtle.startTurtle(new DoubleHouse()); 11: } 12: 13: // タートルを動かす処理 14: public void start() { 15: 16: int length = 100;// 1辺の長さ 17: int smallHouseLength;// 小さい家の1辺の長さ 18: int rightAngle = 90;// 直角 19: smallHouseLength = length / 2; 20: 21: {// 屋根を書く 22: rt(30); // 30度右に回る 23: fd(length); // x歩前に進む 24: rt(120); 25: fd(length); 26: rt(120); 27: fd(length); 28: } 29: 30: {// 本体を書く 31: lt(rightAngle); 32: fd(length); 33: lt(rightAngle); 34: fd(length); 35: lt(rightAngle); 36: fd(length); 37: lt(rightAngle); 38: fd(length); 39: } 40: 41: {// 小さい家を書く位置まで移動する 42: up(); 43: lt(rightAngle * 2); 44: fd(length * 2); 45: lt(rightAngle); 46: down(); 47: } 48: 49: {// 小さい家の屋根を書く 50: rt(30); 51: fd(smallHouseLength); 52: rt(120); 53: fd(smallHouseLength); 54: rt(120); 55: fd(smallHouseLength); 56: } 57: 58: { // 小さい家の本体を書く 59: lt(rightAngle); 60: fd(smallHouseLength); 61: lt(rightAngle); 62: fd(smallHouseLength); 63: lt(rightAngle); 64: fd(smallHouseLength); 65: lt(rightAngle); 66: fd(smallHouseLength); 67: } 68: } 69: 70: }
ここ をクリックすると、プログラムをダウンロードできます。
下のボタンを押すと、DoubleHouseプログラムが実行できます。
コンピュータは計算機ですから、計算をさせることが出来ます。例えば、次のように書くと
rightAngle * 2
掛け算を行うことが出来ます。
このような、計算を行う書法のことを「式」といいます。
Javaで使うことが出来る基本的な計算命令を以下に示します。
次のように評価(計算)されて、具体的な値になり、プログラムが動きます。
計算式があっても、右辺から評価されるのは一緒です。
次のようなプログラムが動かない(コンパイルエラーとなる)のは何故ですか?考えてみましょう。
length / 2 = smallHouseLength;
1: /* 2: * 家を書くプログラム (1辺の長さを入力する) 3: * 2003/05/08 Yoshiaki Matsuzawa 4: * 2012/10/16 改訂 Yoshiaki Matsuzawa 5: */ 6: public class InputHouse extends Turtle { 7: 8: // 起動処理 9: public static void main(String[] args) { 10: Turtle.startTurtle(new InputHouse()); 11: } 12: 13: // タートルを動かす処理 14: public void start() { 15: 16: int length;// 1辺の長さ 17: int rightAngle = 90;// 直角 18: 19: length = input();// 1辺の長さを入力値に設定する 20: 21: {// 屋根を書く 22: rt(30); // 30度右に回る 23: fd(length); // x歩前に進む 24: rt(120); 25: fd(length); 26: rt(120); 27: fd(length); 28: } 29: 30: {// 本体を書く 31: lt(rightAngle); 32: fd(length); 33: lt(rightAngle); 34: fd(length); 35: lt(rightAngle); 36: fd(length); 37: lt(rightAngle); 38: fd(length); 39: } 40: } 41: 42: }
ここ をクリックすると、プログラムをダウンロードできます。
下のボタンを押すと、InputHouseプログラムが実行できます。
入力を受け付けるには、
input()
命令を使います。
評価すると、ユーザが入力した値になります。そして、その値が変数に代入されます。
1: /* 2: * 家を書くプログラム (プロンプト付き) 3: * 2003/05/08 Yoshiaki Matsuzawa 4: * 2012/10/16 改訂 Yoshiaki Matsuzawa 5: */ 6: public class PromptHouse extends Turtle { 7: 8: // 起動処理 9: public static void main(String[] args) { 10: Turtle.startTurtle(new PromptHouse()); 11: } 12: 13: // タートルを動かす処理 14: public void start() { 15: 16: int length;// 1辺の長さ 17: int rightAngle = 90;// 直角 18: 19: {// 入力を受け取る 20: print("1辺の長さを入力してください"); 21: length = input();// 1辺の長さを入力値に設定する 22: } 23: 24: {// 屋根を書く 25: rt(30); // 30度右に回る 26: fd(length); // x歩前に進む 27: rt(120); 28: fd(length); 29: rt(120); 30: fd(length); 31: } 32: 33: {// 本体を書く 34: lt(rightAngle); 35: fd(length); 36: lt(rightAngle); 37: fd(length); 38: lt(rightAngle); 39: fd(length); 40: lt(rightAngle); 41: fd(length); 42: } 43: } 44: 45: }
ここ をクリックすると、プログラムをダウンロードできます。
下のボタンを押すと、PromptHouseプログラムが実行できます。
ユーザにメッセージを出すには
print("ここに出したいメッセージを書く")
命令を使います。
出したいメッセージを「"」(ダブルクォーテーション)で囲んでください。
1: /* 2: * 家を書くプログラム (ランダムな大きさにする) 3: * 2003/05/08 Yoshiaki Matsuzawa 4: * 2012/10/16 改訂 Yoshiaki Matsuzawa 5: */ 6: public class RandomHouse extends Turtle { 7: 8: // 起動処理 9: public static void main(String[] args) { 10: Turtle.startTurtle(new RandomHouse()); 11: } 12: 13: // タートルを動かす処理 14: public void start() { 15: 16: int length;// 1辺の長さ 17: int rightAngle = 90;// 直角 18: 19: length = random(100);// 1辺の長さを0-99までのランダム値に設定する 20: 21: {// 屋根を書く 22: rt(30); // 30度右に回る 23: fd(length); // x歩前に進む 24: rt(120); 25: fd(length); 26: rt(120); 27: fd(length); 28: } 29: 30: {// 本体を書く 31: lt(rightAngle); 32: fd(length); 33: lt(rightAngle); 34: fd(length); 35: lt(rightAngle); 36: fd(length); 37: lt(rightAngle); 38: fd(length); 39: } 40: } 41: 42: }
ここ をクリックすると、プログラムをダウンロードできます。
下のボタンを押すと、RandomHouseプログラムが実行できます。
乱数値を(命令毎に毎回変わる値)に取得するには
random(数)
命令を使います。
実行されるごとに異なる値が自動的に選択されます。
「0」から「数の所に書いた数」未満のどれかの数字が選択されます。
(例:random(10)のとき、0から9までの10種類のどれかの数が選択されます)
ユーザの入力を受け取り、その長さを一辺の長さとして正五角形を描くプログラムを作ってください。
ファイル名は「Pentagon2.java」とすること.
長さに乱数を使い、実行するたびに大きさが変わる星を描くプログラムを作ってください。 乱数は50以上100未満の間になるようにすること。
ファイル名は「Star2.java」とすること.