Upload
others
View
10
Download
0
Embed Size (px)
Citation preview
Java 演習 (6)– 条件分岐 –
高橋 裕樹
条件分岐
Java演習 (6)– 条件分岐 –
高橋 裕樹
Java 演習 (6)– 条件分岐 –
高橋 裕樹
条件分岐
if 文
if-else 文
if-else 文のネスト
if文
例題
下図に示すように,描画領域 (400, 300)の範囲に,幅 20画素の縦縞模様を描画するプログラムを作成せよ.
Java 演習 (6)– 条件分岐 –
高橋 裕樹
条件分岐
if 文
if-else 文
if-else 文のネスト
縞模様を描画するプログラム (Stripe.java)
import javax.swing.JApplet;import java.awt.Graphics;import java.awt.Color;
public class Stripe extends JApplet {public void paint(Graphics g) {
g.setColor(Color.white);g.fillRect(0, 0, 400, 300);
int i = 0, x = 0, w = 20; 10
g.setColor(Color.black);while(x < 400){
if(i % 2 == 0) g.fillRect(x, 0, w, 300);x += w;i++;
}g.drawRect(0, 0, 399, 299);
}}
Java 演習 (6)– 条件分岐 –
高橋 裕樹
条件分岐
if 文
if-else 文
if-else 文のネスト
if文
if(評価式) 文
評価式 評価式が真であれば,文を実行
Java 演習 (6)– 条件分岐 –
高橋 裕樹
条件分岐
if 文
if-else 文
if-else 文のネスト
if文
if(評価式) 文
評価式 評価式が真であれば,文を実行
評価式
Java 演習 (6)– 条件分岐 –
高橋 裕樹
条件分岐
if 文
if-else 文
if-else 文のネスト
if文
if(評価式) 文
評価式 評価式が真であれば,文を実行
評価式
true
文
Java 演習 (6)– 条件分岐 –
高橋 裕樹
条件分岐
if 文
if-else 文
if-else 文のネスト
if文
if(評価式) 文
評価式 評価式が真であれば,文を実行
評価式
true
文
Java 演習 (6)– 条件分岐 –
高橋 裕樹
条件分岐
if 文
if-else 文
if-else 文のネスト
if文
if(評価式) 文
評価式 評価式が真であれば,文を実行
評価式
文
false
Java 演習 (6)– 条件分岐 –
高橋 裕樹
条件分岐
if 文
if-else 文
if-else 文のネスト
if文
if(i % 2 == 0) g.fillRect(x, 0, w, 300);
x += w;
i++;
i % 2 == 0 iを 2で割った剰余 ... 0 (iが偶数)
Java 演習 (6)– 条件分岐 –
高橋 裕樹
条件分岐
if 文
if-else 文
if-else 文のネスト
if文
if(i % 2 == 0) g.fillRect(x, 0, w, 300);
x += w;
i++;
i % 2 == 0 iを 2で割った剰余 ... 0 (iが偶数)
i % 2 == 0
Java 演習 (6)– 条件分岐 –
高橋 裕樹
条件分岐
if 文
if-else 文
if-else 文のネスト
if文
if(i % 2 == 0) g.fillRect(x, 0, w, 300);
x += w;
i++;
i % 2 == 0 iを 2で割った剰余 ... 0 (iが偶数)
i % 2 == 0
true(iが偶数)
g.fillRect
Java 演習 (6)– 条件分岐 –
高橋 裕樹
条件分岐
if 文
if-else 文
if-else 文のネスト
if文
if(i % 2 == 0) g.fillRect(x, 0, w, 300);
x += w;
i++;
i % 2 == 0 iを 2で割った剰余 ... 0 (iが偶数)
i % 2 == 0
true(iが偶数)
g.fillRect
x += w; i++;
Java 演習 (6)– 条件分岐 –
高橋 裕樹
条件分岐
if 文
if-else 文
if-else 文のネスト
if文
if(i % 2 == 0) g.fillRect(x, 0, w, 300);
x += w;
i++;
i % 2 == 0 iを 2で割った剰余 ... 0 (iが偶数)
i % 2 == 0
g.fillRect
x += w; i++;
false(iが奇数)
Java 演習 (6)– 条件分岐 –
高橋 裕樹
条件分岐
if 文
if-else 文
if-else 文のネスト
練習
練習
下図に示すような描画領域 (400, 300)の範囲に,幅 20画素の横縞模様を描画するプログラムを作成せよ.
Java 演習 (6)– 条件分岐 –
高橋 裕樹
条件分岐
if 文
if-else 文
if-else 文のネスト
チェッカーフラグ
例題
下図に示すように,描画領域 (400, 300)の範囲に,縦横 20画素の矩形を持つチェッカーフラグを描画するプログラムを作成せよ.
Java 演習 (6)– 条件分岐 –
高橋 裕樹
条件分岐
if 文
if-else 文
if-else 文のネスト
チェッカーフラグを描画するプログラム (Checker.java)
import javax.swing.JApplet;import java.awt.Graphics;import java.awt.Color;
public class Checker extends JApplet {public void paint(Graphics g) {
g.setColor(Color.white);g.fillRect(0, 0, 400, 300);
int j = 0, y = 0, w = 20; 10
g.setColor(Color.black);while(y < 300){
int x = 0, i = 0;while(x < 400){
if((i + j) % 2 == 0) g.fillRect(x, y, w, w);x += w;i++;
}y += w;j++; 20
}g.drawRect(0, 0, 399, 299);
}}
Java 演習 (6)– 条件分岐 –
高橋 裕樹
条件分岐
if 文
if-else 文
if-else 文のネスト
12-21行目
縦方向の描画
j: 行番号
14-18行目
横方向の描画
i: 列番号
15行目
i + j(行番号+列番号)が偶数か奇数か判断偶数の場合: 黒で塗りつぶす
Java 演習 (6)– 条件分岐 –
高橋 裕樹
条件分岐
if 文
if-else 文
if-else 文のネスト
練習
練習
下図に示すように,描画領域 (400, 300)の範囲に,縦横 20画素の矩形を持つチェッカーフラグを描画するプログラムを作成せよ.先程の例題とは色が逆になっている
Java 演習 (6)– 条件分岐 –
高橋 裕樹
条件分岐
if 文
if-else 文
if-else 文のネスト
練習
練習
下図に示すように,ひとつおきに画像を枠で囲うプログラムを作成せよ.
Java 演習 (6)– 条件分岐 –
高橋 裕樹
条件分岐
if 文
if-else 文
if-else 文のネスト
if-else文
例題
下図に示すような,□と○を交互に 10個,横に並べて描画するプログラムを作成せよ.
Java 演習 (6)– 条件分岐 –
高橋 裕樹
条件分岐
if 文
if-else 文
if-else 文のネスト
□と○を交互に描画するプログラム (CircleBox1.java)
import javax.swing.JApplet;import java.awt.Graphics;
public class CircleBox1 extends JApplet {public void paint(Graphics g){
int w = 30, sp = 20, y = 20;
for(int i = 0, x = 20; i < 10; i++, x += (w + sp)){if(i % 2 == 0)
g.drawRect(x, y, w, w); 10
else
g.drawArc(x, y, w, w, 0, 360);}
}}
Java 演習 (6)– 条件分岐 –
高橋 裕樹
条件分岐
if 文
if-else 文
if-else 文のネスト
if-else文
if(評価式) 文-1else 文-2
評価式 評価式が真であれば,文-1を実行評価式が偽であれば,文-2を実行
Java 演習 (6)– 条件分岐 –
高橋 裕樹
条件分岐
if 文
if-else 文
if-else 文のネスト
if-else文
if(評価式) 文-1else 文-2
評価式 評価式が真であれば,文-1を実行評価式が偽であれば,文-2を実行
評価式
Java 演習 (6)– 条件分岐 –
高橋 裕樹
条件分岐
if 文
if-else 文
if-else 文のネスト
if-else文
if(評価式) 文-1else 文-2
評価式 評価式が真であれば,文-1を実行評価式が偽であれば,文-2を実行
評価式
true
文-1 文-2
Java 演習 (6)– 条件分岐 –
高橋 裕樹
条件分岐
if 文
if-else 文
if-else 文のネスト
if-else文
if(評価式) 文-1else 文-2
評価式 評価式が真であれば,文-1を実行評価式が偽であれば,文-2を実行
評価式
true
文-1 文-2
Java 演習 (6)– 条件分岐 –
高橋 裕樹
条件分岐
if 文
if-else 文
if-else 文のネスト
if-else文
if(評価式) 文-1else 文-2
評価式 評価式が真であれば,文-1を実行評価式が偽であれば,文-2を実行
評価式
文-1 文-2
false
Java 演習 (6)– 条件分岐 –
高橋 裕樹
条件分岐
if 文
if-else 文
if-else 文のネスト
if-else文
if(評価式) 文-1else 文-2
評価式 評価式が真であれば,文-1を実行評価式が偽であれば,文-2を実行
評価式
文-1 文-2
false
Java 演習 (6)– 条件分岐 –
高橋 裕樹
条件分岐
if 文
if-else 文
if-else 文のネスト
if-else文
if(i % 2 == 0) { g.drawRect(); }else { g.drawArc(); }
i % 2 == 0 iが偶数であれば,□を描画iが奇数であれば,○を描画
Java 演習 (6)– 条件分岐 –
高橋 裕樹
条件分岐
if 文
if-else 文
if-else 文のネスト
if-else文
if(i % 2 == 0) { g.drawRect(); }else { g.drawArc(); }
i % 2 == 0 iが偶数であれば,□を描画iが奇数であれば,○を描画
i % 2 == 0
Java 演習 (6)– 条件分岐 –
高橋 裕樹
条件分岐
if 文
if-else 文
if-else 文のネスト
if-else文
if(i % 2 == 0) { g.drawRect(); }else { g.drawArc(); }
i % 2 == 0 iが偶数であれば,□を描画iが奇数であれば,○を描画
i % 2 == 0
true(iが偶数)
drawRect drawArc
Java 演習 (6)– 条件分岐 –
高橋 裕樹
条件分岐
if 文
if-else 文
if-else 文のネスト
if-else文
if(i % 2 == 0) { g.drawRect(); }else { g.drawArc(); }
i % 2 == 0 iが偶数であれば,□を描画iが奇数であれば,○を描画
i % 2 == 0
true(iが偶数)
drawRect drawArc
Java 演習 (6)– 条件分岐 –
高橋 裕樹
条件分岐
if 文
if-else 文
if-else 文のネスト
if-else文
if(i % 2 == 0) { g.drawRect(); }else { g.drawArc(); }
i % 2 == 0 iが偶数であれば,□を描画iが奇数であれば,○を描画
i % 2 == 0
drawRect drawArc
false(iが奇数)
Java 演習 (6)– 条件分岐 –
高橋 裕樹
条件分岐
if 文
if-else 文
if-else 文のネスト
if-else文
if(i % 2 == 0) { g.drawRect(); }else { g.drawArc(); }
i % 2 == 0 iが偶数であれば,□を描画iが奇数であれば,○を描画
i % 2 == 0
drawRect drawArc
false(iが奇数)
Java 演習 (6)– 条件分岐 –
高橋 裕樹
条件分岐
if 文
if-else 文
if-else 文のネスト
練習
練習
下図に示すような,□を一つ描いた後に○を 2個描く操作を繰り返し,横に図形を 10個並べて描画するプログラムを作成せよ.(Circle-Box2.java)
Java 演習 (6)– 条件分岐 –
高橋 裕樹
条件分岐
if 文
if-else 文
if-else 文のネスト
練習
練習
下図に示すように,2つの画像を交互に 10個並べて描画するプログラムを作成せよ.
Java 演習 (6)– 条件分岐 –
高橋 裕樹
条件分岐
if 文
if-else 文
if-else 文のネスト
if-else文
例題
下図に示すような,□,○,■を交互に 10個,横に並べて描画するプログラムを作成せよ.
Java 演習 (6)– 条件分岐 –
高橋 裕樹
条件分岐
if 文
if-else 文
if-else 文のネスト
□,○,■を交互に描画するプログラム (CircleBox3.java)
import javax.swing.JApplet;import java.awt.Graphics;
public class CircleBox3 extends JApplet {public void paint(Graphics g){
int w = 30, sp = 20, y = 20;
for(int i = 0, x = 20; i < 10; i++, x += (w + sp)){if(i % 3 == 0)
g.drawRect(x, y, w, w); 10
else if(i % 3 == 1)g.drawArc(x, y, w, w, 0, 360);
else
g.fillRect(x, y, w + 1, w + 1);}
}}
Java 演習 (6)– 条件分岐 –
高橋 裕樹
条件分岐
if 文
if-else 文
if-else 文のネスト
if-else文
if(評価式-1) 文-1else if(評価式-2) 文-2else 文-3
評価式-1 評価式-1が真であれば,文-1を実行
評価式-2 評価式-2が真であれば,文-2を実行
どちらも真でない場合,文-3を実行
Java 演習 (6)– 条件分岐 –
高橋 裕樹
条件分岐
if 文
if-else 文
if-else 文のネスト
if-else文
if(評価式-1) 文-1else if(評価式-2) 文-2else 文-3
評価式-1 評価式-1が真であれば,文-1を実行
評価式-2 評価式-2が真であれば,文-2を実行
どちらも真でない場合,文-3を実行
評価式-1
Java 演習 (6)– 条件分岐 –
高橋 裕樹
条件分岐
if 文
if-else 文
if-else 文のネスト
if-else文
if(評価式-1) 文-1else if(評価式-2) 文-2else 文-3
評価式-1 評価式-1が真であれば,文-1を実行
評価式-2 評価式-2が真であれば,文-2を実行
どちらも真でない場合,文-3を実行
評価式-1
true
文-1 文-2 文-3
Java 演習 (6)– 条件分岐 –
高橋 裕樹
条件分岐
if 文
if-else 文
if-else 文のネスト
if-else文
if(評価式-1) 文-1else if(評価式-2) 文-2else 文-3
評価式-1 評価式-1が真であれば,文-1を実行
評価式-2 評価式-2が真であれば,文-2を実行
どちらも真でない場合,文-3を実行
評価式-1
true
文-1 文-2 文-3
Java 演習 (6)– 条件分岐 –
高橋 裕樹
条件分岐
if 文
if-else 文
if-else 文のネスト
if-else文
if(評価式-1) 文-1else if(評価式-2) 文-2else 文-3
評価式-1 評価式-1が真であれば,文-1を実行
評価式-2 評価式-2が真であれば,文-2を実行
どちらも真でない場合,文-3を実行
評価式-1
文-1 文-2 文-3
false 評価式-2
Java 演習 (6)– 条件分岐 –
高橋 裕樹
条件分岐
if 文
if-else 文
if-else 文のネスト
if-else文
if(評価式-1) 文-1else if(評価式-2) 文-2else 文-3
評価式-1 評価式-1が真であれば,文-1を実行
評価式-2 評価式-2が真であれば,文-2を実行
どちらも真でない場合,文-3を実行
評価式-1
文-1 文-2 文-3
false 評価式-2
true
Java 演習 (6)– 条件分岐 –
高橋 裕樹
条件分岐
if 文
if-else 文
if-else 文のネスト
if-else文
if(評価式-1) 文-1else if(評価式-2) 文-2else 文-3
評価式-1 評価式-1が真であれば,文-1を実行
評価式-2 評価式-2が真であれば,文-2を実行
どちらも真でない場合,文-3を実行
評価式-1
文-1 文-2 文-3
false 評価式-2
true
Java 演習 (6)– 条件分岐 –
高橋 裕樹
条件分岐
if 文
if-else 文
if-else 文のネスト
if-else文
if(評価式-1) 文-1else if(評価式-2) 文-2else 文-3
評価式-1 評価式-1が真であれば,文-1を実行
評価式-2 評価式-2が真であれば,文-2を実行
どちらも真でない場合,文-3を実行
評価式-1
文-1 文-2 文-3
false 評価式-2false
Java 演習 (6)– 条件分岐 –
高橋 裕樹
条件分岐
if 文
if-else 文
if-else 文のネスト
if-else文
if(評価式-1) 文-1else if(評価式-2) 文-2else 文-3
評価式-1 評価式-1が真であれば,文-1を実行
評価式-2 評価式-2が真であれば,文-2を実行
どちらも真でない場合,文-3を実行
評価式-1
文-1 文-2 文-3
false 評価式-2false
Java 演習 (6)– 条件分岐 –
高橋 裕樹
条件分岐
if 文
if-else 文
if-else 文のネスト
if-else文
if(i % 3 == 0) { g.drawRect(); }else if(i % 3 == 1) { g.drawArc(); }else { g.fillRect(); }
i % 3 == 0 iが 3の倍数であれば,□を描画
i % 3 == 1 iが 3の倍数+1であれば,○を描画
どちらでもない場合,■を描画
Java 演習 (6)– 条件分岐 –
高橋 裕樹
条件分岐
if 文
if-else 文
if-else 文のネスト
if-else文
if(i % 3 == 0) { g.drawRect(); }else if(i % 3 == 1) { g.drawArc(); }else { g.fillRect(); }
i % 3 == 0 iが 3の倍数であれば,□を描画
i % 3 == 1 iが 3の倍数+1であれば,○を描画
どちらでもない場合,■を描画
i % 3 == 0
Java 演習 (6)– 条件分岐 –
高橋 裕樹
条件分岐
if 文
if-else 文
if-else 文のネスト
if-else文
if(i % 3 == 0) { g.drawRect(); }else if(i % 3 == 1) { g.drawArc(); }else { g.fillRect(); }
i % 3 == 0 iが 3の倍数であれば,□を描画
i % 3 == 1 iが 3の倍数+1であれば,○を描画
どちらでもない場合,■を描画
i % 3 == 0
true
drawRect drawArc fillRect
Java 演習 (6)– 条件分岐 –
高橋 裕樹
条件分岐
if 文
if-else 文
if-else 文のネスト
if-else文
if(i % 3 == 0) { g.drawRect(); }else if(i % 3 == 1) { g.drawArc(); }else { g.fillRect(); }
i % 3 == 0 iが 3の倍数であれば,□を描画
i % 3 == 1 iが 3の倍数+1であれば,○を描画
どちらでもない場合,■を描画
i % 3 == 0
true
drawRect drawArc fillRect
Java 演習 (6)– 条件分岐 –
高橋 裕樹
条件分岐
if 文
if-else 文
if-else 文のネスト
if-else文
if(i % 3 == 0) { g.drawRect(); }else if(i % 3 == 1) { g.drawArc(); }else { g.fillRect(); }
i % 3 == 0 iが 3の倍数であれば,□を描画
i % 3 == 1 iが 3の倍数+1であれば,○を描画
どちらでもない場合,■を描画
i % 3 == 0
drawRect drawArc fillRect
falsei % 3 == 1
Java 演習 (6)– 条件分岐 –
高橋 裕樹
条件分岐
if 文
if-else 文
if-else 文のネスト
if-else文
if(i % 3 == 0) { g.drawRect(); }else if(i % 3 == 1) { g.drawArc(); }else { g.fillRect(); }
i % 3 == 0 iが 3の倍数であれば,□を描画
i % 3 == 1 iが 3の倍数+1であれば,○を描画
どちらでもない場合,■を描画
i % 3 == 0
drawRect drawArc fillRect
falsei % 3 == 1
true
Java 演習 (6)– 条件分岐 –
高橋 裕樹
条件分岐
if 文
if-else 文
if-else 文のネスト
if-else文
if(i % 3 == 0) { g.drawRect(); }else if(i % 3 == 1) { g.drawArc(); }else { g.fillRect(); }
i % 3 == 0 iが 3の倍数であれば,□を描画
i % 3 == 1 iが 3の倍数+1であれば,○を描画
どちらでもない場合,■を描画
i % 3 == 0
drawRect drawArc fillRect
falsei % 3 == 1
true
Java 演習 (6)– 条件分岐 –
高橋 裕樹
条件分岐
if 文
if-else 文
if-else 文のネスト
if-else文
if(i % 3 == 0) { g.drawRect(); }else if(i % 3 == 1) { g.drawArc(); }else { g.fillRect(); }
i % 3 == 0 iが 3の倍数であれば,□を描画
i % 3 == 1 iが 3の倍数+1であれば,○を描画
どちらでもない場合,■を描画
i % 3 == 0
drawRect drawArc fillRect
falsei % 3 == 1
false
Java 演習 (6)– 条件分岐 –
高橋 裕樹
条件分岐
if 文
if-else 文
if-else 文のネスト
if-else文
if(i % 3 == 0) { g.drawRect(); }else if(i % 3 == 1) { g.drawArc(); }else { g.fillRect(); }
i % 3 == 0 iが 3の倍数であれば,□を描画
i % 3 == 1 iが 3の倍数+1であれば,○を描画
どちらでもない場合,■を描画
i % 3 == 0
drawRect drawArc fillRect
falsei % 3 == 1
false
Java 演習 (6)– 条件分岐 –
高橋 裕樹
条件分岐
if 文
if-else 文
if-else 文のネスト
練習
練習
下図に示すように□,○,■,●を交互に 10個,横に並べて描画するプログラムを作成せよ.(CircleBox4.java)
Java 演習 (6)– 条件分岐 –
高橋 裕樹
条件分岐
if 文
if-else 文
if-else 文のネスト
if-else文のネスト
例題
下図に示すように,□と○を交互に並べ,一行おきに色を変えて描画するプログラムを作成せよ.
Java 演習 (6)– 条件分岐 –
高橋 裕樹
条件分岐
if 文
if-else 文
if-else 文のネスト
□と○を交互に,一行おきに色を変える描画するプログラム (Circle-Box5.java)
import javax.swing.JApplet;import java.awt.Graphics;import java.awt.Color;
public class CircleBox5 extends JApplet {public void paint(Graphics g){
int w = 30, sp = 20;
for(int j = 0, y = 20; j < 5; j++, y += (w + sp)){if(j % 2 == 0) g.setColor(Color.red); 10
else g.setColor(Color.black);
for(int i = 0, x = 20; i < 5; i++, x += (w + sp)){if((i + j) % 2 == 0)
g.drawRect(x, y, w, w);else
g.drawArc(x, y, w, w, 0, 360);}
}} 20
}
Java 演習 (6)– 条件分岐 –
高橋 裕樹
条件分岐
if 文
if-else 文
if-else 文のネスト
例題
下図に示すように,□と○,●と■を交互に並べて描画するプログラムを作成せよ.
Java 演習 (6)– 条件分岐 –
高橋 裕樹
条件分岐
if 文
if-else 文
if-else 文のネスト
□と○,●と■を交互に描画するプログラム (CircleBox6.java)
import javax.swing.JApplet;import java.awt.Graphics;
public class CircleBox6 extends JApplet {public void paint(Graphics g){
int w = 30, sp = 20;
for(int j = 0, y = 20; j < 5; j++, y += (w + sp)){if(j % 2 == 0){
for(int i = 0, x = 20; i < 5; i++, x += (w + sp)){ 10
if(i % 2 == 0) g.drawRect(x, y, w, w);else g.drawArc(x, y, w, w, 0, 360);
}}else{
for(int i = 0, x = 20; i < 5; i++, x += (w + sp)){if(i % 2 == 0) g.fillArc(x, y, w, w, 0, 360);else g.fillRect(x, y, w + 1, w + 1);
}} 20
}}
}
Java 演習 (6)– 条件分岐 –
高橋 裕樹
条件分岐
if 文
if-else 文
if-else 文のネスト
練習
練習
下図に示すように,□と○を交互に並べ,一列おきに色を変えて描画するプログラムを作成せよ.(CircleBox7.java)
Java 演習 (6)– 条件分岐 –
高橋 裕樹
条件分岐
if 文
if-else 文
if-else 文のネスト
練習
練習
下図に示すように,□と●,○と■を交互に並べて描画するプログラムを作成せよ.(CircleBox8.java)