人工言語入門 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:色の情報を保存
変数の使いかた
- 宣言:使用する変数の名前の箱を準備する
int hoge;
- 代入:変数の箱に値を入れる
hoge = 0;
- 演算:変数の値を計算する
hoge = hoge + 1;
変数の使用例
//変数の宣言 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);
変数の使用例:その2
//変数の宣言 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;
繰り返し
- さっきのプログラムに注目
- 途中から同じ命令のくりかえしになっていないだろうか?
//同心円を描いて行く 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; ....
- 繰り返しの部分を何度も書かずに一気に指定したい
ellipse(top,left,ellipse_size, ellipse_size); ellipse_size = ellipse_size - 40;
- これを10回くりかえし
繰り返し – for文
- 繰り返しをするには「for文」を使用する
- for文の書きかた
for (初期化式; 継続条件式; 再初期化式) { 文; }
- 初期化式:初期化の際の条件式
- 継続条件式:繰り返しを継続する条件式
- 再初期化式:繰り返されるたびに実行される式
for分を用いた、繰り返しの例 1
// 100回「+」の文字を出力する int i; for (i=0; i<100; i=i+1){ print("+"); }
for分を用いた、繰り返しの例 2
- 変数 i をfor分の中で使用してみる
/* 0から99までの数を出力する for文の繰り返しの条件式の中の、変数iを利用する */ int i; for (i=0; i<100; i=i+1){ print(i + ", "); }
同心円をくりかえしを用いて描画
//変数の宣言 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; }
虹色のグラデーション
//変数の宣言 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); }
乱数:ランダムな値を出力する
- 例:0から100の乱数を生成
random(100);
- 例:100から1000の乱数を生成
random(100, 1000);
ランダムに色を塗る
//ランダムに色を塗る //変数の宣言 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); }
似たような色相で
//似たような色相で色を塗る //変数の宣言 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); }
似たような明度と彩度で
//似たような明度と彩度で色を塗る //変数の宣言 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); }
たくさん円を描く
//たくさん円を描く //変数の宣言 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); }
たくさん四角形を描く
//たくさんの四角形を描く //変数の宣言 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)); }
次回までの課題
- くりかえしを使用したスケッチの作成
- 連休明けの授業で提出
- 以下の場所にアップロードしておくこと
- http://www.cuc.ac.jp/~[ログイン名]/proga/assignment2/