6. if-else 文で条件分岐させる
Test03a.java プロジェクト名: test03
public class Test03b { 変数 a の値の絶対値を
public static void main( String[] args ){ 計算しよう
int a, abs_a;
a = -2;
if ( a >= 0 ){ a≧0を満たさない
abs_a = a;
} else {
abs_a = -a; だからこれを実行する
}
System.out.println(“|a|=“+abs_a);
} 絶対値を計算するには
}
条件分岐が必要
条件分岐は if-else 文で
2008年8月,データ解析の基礎,加藤,瀬々,金子. 6
7. if-else 文で条件分岐させる
Test03a.java プロジェクト名: test03
public class Test03a { 変数 a の値の絶対値を
public static void main( String[] args ){ 計算しよう
int a, abs_a;
a = 3; 変数aに3を入れた場合
if ( a >= 0 ){ a≧0を満たす
abs_a = a; だからこちらを実行する
} else {
abs_a = -a;
}
System.out.println(“|a|=“+abs_a);
} 絶対値を計算するには
}
条件分岐が必要
条件分岐は if-else 文で
2008年8月,データ解析の基礎,加藤,瀬々,金子. 7
8. 練習3-a.if-else 文
Test03a.java プロジェクト名: test03
public class Test03a {
public static void main( String[] args ){
int a, abs_a;
a = 3;
if ( a >= 0 ){
abs_a = a;
} else {
abs_a = -a;
}
System.out.println(“|a|=“+abs_a);
}
}
変数 a に入れる値を変えて,
デバッガで条件分岐できていることを確認しよう
2008年8月,データ解析の基礎,加藤,瀬々,金子. 8
9. else 以下は省略できる
Test03b.java プロジェクト名: test03
public class Test03b { 変数 a の値の絶対値を
public static void main( String[] args ){ 計算しよう
int a, abs_a;
a = -2;
abs_a = a; abs_a に a の値を代入
if ( a < 0 ){
abs_a = -a; a が負の場合だけ修正
}
System.out.println(“|a|=“+abs_a);
}
}
else 以下を省略している
2008年8月,データ解析の基礎,加藤,瀬々,金子. 9
10. if 文の一般形式
if (条件式){
文1;
}
条件式が真なら
文1を実行する
偽なら
なにもしない
2008年8月,データ解析の基礎,加藤,瀬々,金子. 10
11. else 以下は省略できる
Test03b.java プロジェクト名: test03
public class Test03b { 変数 a の値の絶対値を
public static void main( String[] args ){ 計算しよう
int a, abs_a;
a = 3;
abs_a = a; abs_a に a の値を代入
if ( a < 0 ){ この場合,条件式を
abs_a = -a;
}
満たさない
System.out.println(“|a|=“+abs_a);
}
}
else 以下を省略している
2008年8月,データ解析の基礎,加藤,瀬々,金子. 11
12. else if で多方向分岐
Test03c.java プロジェクト名: test03
public class Test03c { 変数 a の値の符号を
public static void main( String[] args ){ 求めよう
int a;
a = -2;
if ( a > 0 ){
System.out.println(“a is positive.”);
} else if ( a == 0 ){
System.out.println(“a is zero.”);
} else {
System.out.println(“a is negative.”);
}
}
}
注意 == は論理値を返す演算子
= は代入演算子
2008年8月,データ解析の基礎,加藤,瀬々,金子. 12
13. 練習3-c.else if で多方向分岐
Test03c.java プロジェクト名: test03
public class Test03c {
public static void main( String[] args ){
int a;
a = -2;
if ( a > 0 ){
System.out.println(“a is positive.”);
} else if ( a == 0 ){
System.out.println(“a is zero.”);
} else {
System.out.println(“a is negative.”);
}
}
}
変数 a に入れる値を変えて,
デバッガで条件分岐できていることを確認しよう
2008年8月,データ解析の基礎,加藤,瀬々,金子. 13
14. 練習3-d.else if で多方向分岐
Test03d.java プロジェクト名: test03 成績をつけよう
public class Test03d {
public static void main( String[] args ){ 点数 成績
int score;
score = 75; 90~100 S
if ( score >= 90 ){ 80~99 A
System.out.println(“The grade is S.”);
} else if ( score >= 80 ){
System.out.println(“The grade is A.”);
70~79 B
} else if ( score >= 70 ){
System.out.println(“The grade is B.”); 60~69 C
} else if ( score >= 60 ){
System.out.println(“The grade is C.”); ~59 D
} else { この部分を埋めよ
System.out.println(“The grade is D.”);
}
}
}
2008年8月,データ解析の基礎,加藤,瀬々,金子. 14
15. 目標
• Java文法の基本,制御文を理解する
– if-else で条件分岐
– for 文で繰り返し処理
– while 文でも繰り返し処理
2008年8月,データ解析の基礎,加藤,瀬々,金子. 15
17. for 文を使えば簡潔に
public class Test01d_modi {
public static void main( String[] args ){
int a, pow_a, i;
a = 2;
pow_a = 1;
for (i = 0; i < 5; i=i+1 ){
pow_a = pow_a * a;
}
System.out.println(“pow_a=“+pow_a);
}
}
2008年8月,データ解析の基礎,加藤,瀬々,金子. 17
19. for 文を使えば簡潔に
public class Test01d_modi {
public static void main( String[] args ){
int a; int pow_a; int i;
a = 2; 「i++」は「i=i+1」と等価
pow_a = 1;
for (i = 0; i < 5; i++ ){
式1 条件 式2
pow_a = pow_a * a;
文1
}
System.out.println(“pow_a=“+pow_a);
}
}
ループ処理を行う前に式1を実行.
条件が真の間,ループを繰り返す.
ループ処理のたびに式2を実行.
2008年8月,データ解析の基礎,加藤,瀬々,金子. 19
20. 練習4-a.
a の n 乗を計算するプログラムを完成させよ
Test04a.java プロジェクト名: test04
public class Test04a {
public static void main( String[] args ){
int a; int n; int pow_a; int i;
a = 2; n = 10;
pow_a = 1;
for (i = 0; i < 5; n 乗を計算し,
for 文を使ってa の i++ ){
pow_a = pow_a * a; に代入せよ
その結果を pow_a
}
System.out.println(“pow_a=“+pow_a);
}
}
デバッガでforループの動きを確認せよ
(1) 何回ループが回ったか調べてみよ,各ループの i の値を観察せよ
(2) n の値を 3 とか 5 とかに変更してみて,動作がどのように
変わるか調査せよ
2008年8月,データ解析の基礎,加藤,瀬々,金子. 20
21. 目標
• Java文法の基本,制御文を理解する
– if-else で条件分岐
– for 文で繰り返し処理
– while 文でも繰り返し処理
2008年8月,データ解析の基礎,加藤,瀬々,金子. 21
22. 階乗のプログラムを簡潔にしたい
6! を計算する
Test01e.java
public class Test04b {
public static void main( String[] args ){
int a;
a = 6; 変数 a に値 6 を代入しろ
a = a*5; 式 a*5 の値を計算して変数 a に代入しろ
a = a*4; 式 a*4 の値を計算して変数 a に代入しろ
a = a*3; 式 a*3 の値を計算して変数 a に代入しろ
a = a*2; 式 a*2 の値を計算して変数 a に代入しろ
a = a*1; 式 a*1 の値を計算して変数 a に代入しろ
System.out.println(“a=“+a);
} aの値を画面に表示しろ
}
2008年8月,データ解析の基礎,加藤,瀬々,金子. 22
23. while 文で階乗のプログラムを簡潔に
Test05a.java
public class Test01d {
public static void main( String[] args ){
int a; int facto_a;
a = 6;
facto_a = 1;
while ( a > 0 ){ 条件 a > 0 を満たす間ループを続ける
facto_a = facto_a * a; 値 facto_a*a の値を変数 facto_a に代入
a = a – 1; a の値を1減らす
}
System.out.println(“facto_a=“+facto_a);
}
}
2008年8月,データ解析の基礎,加藤,瀬々,金子. 23
25. while 文で階乗のプログラムを簡潔に
Test05a.java
public class Test01d {
public static void main( String[] args ){
int a; int facto_a;
a = 6;
facto_a = 1;
while ( a > 0 ){ 条件 a > 0 を満たす間ループを続ける
facto_a = facto_a * a; 値 facto_a*a の値を変数 facto_a に代入
a = a – 1; a の値を1減らす
}
System.out.println(“facto_a=“+facto_a);
}
}
2008年8月,データ解析の基礎,加藤,瀬々,金子. 25
26. 練習5-a.
Test05a.java プロジェクト名: test05
public class Test01d {
public static void main( String[] args ){
int a; int facto_a;
a = 6;
facto_a = 1;
while ( a > 0 ){
facto_a = facto_a * a;
a = a – 1;
}
System.out.println(“facto_a=“+facto_a);
}
}
デバッガでwhileループの動きを確認せよ
(1)何回ループが回ったか調べてみよ,各ループの a の値を観察せよ
(2)aの値を変更したときに,facto_a がどのように計算されていくかデバッガで観測せよ
2008年8月,データ解析の基礎,加藤,瀬々,金子. 26
27. 練習5-b コンビネーションの計算
• nCm を計算しよう.
• nCm = n!/((m!)*(n-m)!)
Test05b.java
public class Test05b {
public static void main( String[] args ){
int n, m, nm, facto_n, facto_m, facto_nm, combi_nm;
n = 5; m = 3; nm = n-m;
// Compute the value of n! and put it into facto_n.
// Compute the value of m! and put it into facto_m.
// Compute the value of (n-m)! and put it into facto_nm.
combi_nm = facto_n/(facto_m*facto_nm);
System.out.println(“facto_a=“+facto_a);
}
}
2008年8月,データ解析の基礎,加藤,瀬々,金子. 27
28. まとめ
• Java文法の基本,制御文
– if-else で条件分岐
if (条件式){ if (条件式){ if (条件式1){
文1; 文1; 文1;
} else { } } else if (条件式2){
文2; 文2;
} } else if (条件式3){
…
} else {
– for 文で繰り返し処理 文n;
for (式1;条件式;式2){ }
文1;
}
– while 文でも繰り返し処理
while (条件式){
文1;
}
2008年8月,データ解析の基礎,加藤,瀬々,金子. 28