人工言語入門 A 2010
変数と繰り返し
変数
変数とは?
- 一時的に値(文字、文字列、数字など)を記憶しておく場所
- データを入れておく「箱」のようなもの
データ型
- 値の種類を「データ型」という
Processingでよく用いられるデータ型
- int:整数 (-1, 0, 1, 2, 3….)
- float:少数 (-0.01, 3.14, 21.314)
- boolean:ブール値、「真」か「偽」か、(true, false)
- char:1文字分のデータ(a, b, c, d…)
- color:色の情報を保存
変数の使いかた
- 宣言:使用する変数の名前の箱を準備する
[code language=”java”]
int hoge;
[/code]
- 代入:変数の箱に値を入れる
[code language=”java”]
hoge = 0;
[/code]
- 演算:変数の値を計算する
[code language=”java”]
hoge = hoge + 1;
[/code]
変数の使用例
[code language=”java”]
//変数の宣言
int diameter, x, y;
//初期設定
colorMode(HSB,360,100,100,100);
size(300,300);
background(0);
fill(210,100,100,50);
noStroke();
//変数へ値の代入
diameter = 180;
x = 60;
y = 150;
//円1
ellipse(x,y,diameter,diameter);
//右に移動
x = x+60;
//円2
ellipse(x,y,diameter,diameter);
//右に移動
x = x+60;
//円3
ellipse(x,y,diameter,diameter);
//右に移動
x = x+60;
//円4
ellipse(x,y,diameter,diameter);
[/code]
変数の使用例:その2
[code language=”java”]
//変数の宣言
int diameter,top,left;
//初期設定
size(300,300);
colorMode(HSB,360,100,100,100);
background(0,0,0,100);
noStroke();
fill(210,100,100,20);
diameter = 300;
top = 150;
left = 150;
//同心円を描いて行く
ellipse(top,left,diameter,diameter);
diameter = diameter – 40;
ellipse(top,left,diameter,diameter);
diameter = diameter – 40;
ellipse(top,left,diameter,diameter);
diameter = diameter – 40;
ellipse(top,left,diameter,diameter);
diameter = diameter – 40;
ellipse(top,left,diameter,diameter);
diameter = diameter – 40;
ellipse(top,left,diameter,diameter);
diameter = diameter – 40;
ellipse(top,left,diameter,diameter);
diameter = diameter – 40;
[/code]
繰り返し
- さっきのプログラムに注目
- 途中から同じ命令のくりかえしになっていないだろうか?
[code language=”java”]
//同心円を描いて行く
ellipse(top,left,ellipse_size, ellipse_size);
ellipse_size = ellipse_size – 40;
ellipse(top,left,ellipse_size, ellipse_size);
ellipse_size = ellipse_size – 40;
ellipse(top,left,ellipse_size, ellipse_size);
ellipse_size = ellipse_size – 40;
….
[/code]
- 繰り返しの部分を何度も書かずに一気に指定したい
[code language=”java”]
ellipse(top,left,ellipse_size, ellipse_size);
ellipse_size = ellipse_size – 40;
[/code]
- これを10回くりかえし
繰り返し – for文
- 繰り返しをするには「for文」を使用する
- for文の書きかた
[code language=”java”]
for (初期化式; 継続条件式; 再初期化式) {
文;
}
[/code]
- 初期化式:初期化の際の条件式
- 継続条件式:繰り返しを継続する条件式
- 再初期化式:繰り返されるたびに実行される式
for分を用いた、繰り返しの例 1
[code language=”java”]
// 100回「+」の文字を出力する
int i;
for (i=0; i<100; i=i+1){
print("+");
}
[/code]
for分を用いた、繰り返しの例 2
- 変数 i をfor分の中で使用してみる
[code language=”java”]
/*
0から99までの数を出力する
for文の繰り返しの条件式の中の、変数iを利用する
*/
int i;
for (i=0; i<100; i=i+1){
print(i + ", ");
}
[/code]
同心円をくりかえしを用いて描画
[code language=”java”]
//変数の宣言
int diameter,top,left,i;
//初期条件の設定
size(300,300);
colorMode(HSB,360,100,100,100);
background(0,0,0,100);
noStroke();
fill(210,100,100,10);
//円のパラメータを初期化
diameter = 300;
top = 150;
left = 150;
//同心円を描いていく
for(i=0; i<16; i++){
ellipse(top,left,diameter,diameter);
diameter = diameter – 20;
}
[/code]
虹色のグラデーション
[code language=”java”]
//変数の宣言
int i;
//初期設定
size(300,300);
colorMode(HSB, 360, 100, 100);
noStroke();
//色相を変化させながら四角を描いていく
for(i=0; i<30; i++){
fill(i*10,80,100);
rect(i*10,0,10,300);
}
[/code]
乱数:ランダムな値を出力する
- 例:0から100の乱数を生成
[code language=”java”]
random(100);
[/code]
- 例:100から1000の乱数を生成
[code language=”java”]
random(100, 1000);
[/code]
ランダムに色を塗る
[code language=”java”]
//ランダムに色を塗る
//変数の宣言
int i;
//初期設定
size(300,300);
colorMode(HSB, 360, 100, 100);
noStroke();
//ランダムに色を塗る
for(i=0; i<300; i++){
fill(random(360),random(100),random(100));
rect(i*1,0,1,300);
}
[/code]
似たような色相で
[code language=”java”]
//似たような色相で色を塗る
//変数の宣言
int i;
//初期設定
size(300,300);
colorMode(HSB, 360, 100, 100);
noStroke();
//似たような色相で色を塗る
for(i=0; i<300; i++){
fill(random(200,220),random(100),random(100));
rect(i*1,0,1,300);
}
[/code]
似たような明度と彩度で
[code language=”java”]
//似たような明度と彩度で色を塗る
//変数の宣言
int i;
//初期設定
size(300,300);
colorMode(HSB, 360, 100, 100);
noStroke();
//似たような明度と彩度で色を塗る
for(i=0; i<300; i++){
fill(random(360),60,90);
rect(i*1,0,1,300);
}
[/code]
たくさん円を描く
[code language=”java”]
//たくさん円を描く
//変数の宣言
int i;
//初期設定
size(300,300);
background(0);
colorMode(HSB, 360, 100, 100,100);
noStroke();
//たくさんの円を描く
for(i=0; i<100; i++){
float diameter;
fill(random(200,240),random(50,100),random(50,100), 50);
diameter = random(20,80);
ellipse(random(300),random(300),diameter,diameter);
}
[/code]
たくさん四角形を描く
[code language=”java”]
//たくさんの四角形を描く
//変数の宣言
int i;
//初期設定
size(300,300);
background(0);
colorMode(HSB, 360, 100, 100,100);
rectMode(CENTER);
noStroke();
//たくさんの四角形を描く
for(i=0; i<100; i++){
fill(random(0,40),random(50,100),random(50,100), 50);
rect(random(300),random(300),random(5,100),random(5,100));
}
[/code]
次回までの課題
- くりかえしを使用したスケッチの作成
- 連休明けの授業で提出
- 以下の場所にアップロードしておくこと
- http://www.cuc.ac.jp/~[ログイン名]/proga/assignment2/