レッスン 17
二重ループを学ぼう
for文を2回用いて、効率よく図形を配置してみよう
チャプター1このレッスンのゴール
このレッスンで完成させるものを確認しよう

チャプター2連続した楕円形を表示しよう
2. 1 はじめに
for文の重要な使い方として、for文の中にfor文を使う手法があるよ。2回ループするという意味で、「二重ループ」と呼ばれたりもするよ。まずは二重ループが分かりやすい、図形を縦横に並べる方法について学ぼう
2. 2 写してみよう
//最初に一回だけ呼び出される初期設定
function setup() {
createCanvas(400, 400);
noStroke();
}
//繰り返し呼び出される処理
function draw() {
background(0);
for (var y = 0; y <= height; y += 40) {
for (var x = 0; x <= width; x += 40) {
fill(255, 140, y);
ellipse(x, y, 40, 40);
}
}
}
コードが書けたら実行してみよう。円がキャンバスいっぱいに敷き詰められて描かれて入ればOKだよ。
2. 3 コードの解説
- 10行目〜15行目
- for文を2つ使っています。11行目のfor文では
xが使われており、13行目のellipseのX座標を40ずつ増やしていることになります。つまり横方向に円を並べています。また10行目のfor文ではyが使われており、13行目のellipseのY座標を40ずつ増やしていることになります。つまり縦方向に円を並べています。
- for文を2つ使っています。11行目のfor文では
チャプター3forの表示の順番の仕組みを理解しよう
3. 1 変更してみよう
//繰り返し呼び出される処理
function draw() {
background(0);
- for (var y = 0; y <= height; y += 40) {
- for (var x = 0; x <= width; x += 40) {
fill(255, 140, y);
ellipse(x, y, 40, 40);
}
}
//繰り返し呼び出される処理
function draw() {
background(0);
+ for (var y = 0; y <= 20; y += 40) {
+ for (var x = 0; x <= 400; x += 40) {
fill(255, 140, y);
ellipse(x, y, 40, 40);
}
}
コードを変更できたら実行してみよう。
3. 2 コードの解説
- 10行目,11行目
- 10行目はfor文が0から始まり40ずつ増え、20を超えたら繰り返しをやめる命令です。つまり、横一列が描かれたら繰り返しは終了です。11行目はxが400になるまで増え続けるので、横幅いっぱい(このキャンバスの大きさは400)まで描かれます。
チャプター4チャレンジしよう
くり返しの仕組みが理解できているか確認のために、図形を余りを使って描き分けてみよう。
4. 1 完成形
次の完成形を参考に自分でコードを変更してみよう。

ヒント
- 縦3列置きに円の大きさを変えているので、わり算の余り
%を活用しよう - 1箇所の円だけ赤くなっていることに注意しよう
- 赤くするところがi列目のj番目と指定できるようにしよう