report#3
ProgII/e045732
Report#1
Report#2
Report#3
Report#4
Report#5
Report#6
Report#7
Report#8
Belonging-----Information Engineering Section
Student ID---045732K
Name----------Shingo Tamaki
Date------------2005/11/14(MON)
1.課題の紹介
- 講義資料を参考にJavaの基礎的な文法について、教科書と対応させながら解説・
考察せよ。
2.解答
- 講義で見たTest07.javaを使用します。
public class Test07 {
public static void main(String[] args) {
System.out.println("・if文");
If(); //If()メソッドの呼び出し
System.out.println("・for文");
For(); //For()メソッドの呼び出し
System.out.println("・while文");
Whle(); //While()メソッドの呼び出し
System.out.println("・do-while文");
Do(); //Do()メソッドの呼び出し
System.out.println("・switch文");
Swch(); //Swch()メソッドの呼び出し
System.out.println("・break文");
Break(); //Break()メソッドの呼び出し
System.out.println("・continue文");
Cont(); //Cont()メソッドの呼び出し
}
public static void If() {
int a, b, c; //整数型変数a,b,cの宣言
a = 100; b = 100; //aに100,bに100を代入
System.out.println("a=" + a + "b=" + b);
//変数a,bの値を出力
if (a > 50) //変数aが50より大きい場合
System.out.println("aは50より大");
if (a % 2 == 0) //変数aを2で割った時の余りが0のと
き
System.out.println("aは偶数");
else //そうでない場合
System.out.println("aは奇数");
if (a > b) //aがbより大きい場合
System.out.println("aはbより大");
else if (a < b) //bがaより大きい場合
System.out.println("aはbより小");
else //どちらでもない場合
System.out.println("aとbは等しい");
if (a > 80) { //変数aが80より大きい場合
b = 10;
c = 20;
}
else { //そうでない場合
b = 30;
c = 40;
}
System.out.println("a=" + a + "b=" + b +
"c=" + c);
}
public static void For() { //For()メソッド
int i, sum, mul; //変数i,sum,mulの宣言
sum = 0; //変数sumに0を代入
mul = 1; //変数mulに1を代入
for (i=1; i<=5; i++) { //変数iに1を代入し、イ
ンクリメント演算子により1つずつ増加し、iが5に達するまで繰り
返し処理
sum = sum + i; //総和を計算
mul = mul * i; //5の階乗
}
System.out.println("和 = " + sum);
System.out.println("積 = " + mul);
for (i=40; i>=20; i=i-2) { //変数iに40を代入し、
2ずつ減少し、20未満になるまで繰り返し処理
System.out.print(i + " "); //iの値を繰り返し出力
}
System.out.println();
}
public static void Whle() { //Whle()メソッド
int i, sum; //整数型変数i,sumの宣言
int dt[] = { 10, 50, 30, -1, 40 }; //1次元配列dt
の初期化
System.out.println("----------(1) 1〜5の和を計算");
i = 1; sum = 0; //iに1,sumに0を代入
while(i <= 5) { //iが6になるまで繰り返し処理
sum = sum + i; //総和を計算
i++; //iの値を1つずつ増加
}
System.out.println("sum=" + sum);
System.out.println("----------(2) -1に出会うまでの配列値を表示
");
i=0; //iに0を代入
while (dt[i] != -1) { //値に-1がくるまでくり返し処
理
System.out.println("i=" + i +
"dt[i]=" + dt[i]);
i++;
}
System.out.println("----------(3) 10に出会うまでの配列値を表示
");
i=0;
while (dt[i] != 10) { //値に10がくるまでくり返
し処理
System.out.println("i=" + i + "dt[i]=" + dt[i]);
i++;
}
}
public static void Do() { //Do()メソッド
int i; //変数iを宣言
int d1[] = { 10, 20, 30, -1, 50 }; //配列d1の
初期化
int d2[] = { 0, 0, 0, 0, 0 }; //配列d2の初期化
i = -1; //iに-1を代入
do {
++i; //iの値を1ずつ増加
d2[i] = d1[i]; //d1[i]の値をd2[i]に代入
} while (d2[i] != -1); //d2[i]の値が-1になるま
でくり返し処理
for (i=0; i<5; i++) { //iの値が5に達するまでくり
返し処理
System.out.print(d2[i] + " ");
}
System.out.println();
}
public static void Swch() { //Swich()メソッド
int a; //変数aの宣言
for (a=1; a<=5; a++) { //aが5に達するまで繰り
返し処理
System.out.println("--------" + a);
switch (a) { //aの値による場合分け
case 1: //a=1の場合
System.out.println("a=1");
break; //ブロックの終わりにジャン
プ
case 3: //a=3の場合
System.out.println("a=3");
break;
case 5: //a=5の場合
System.out.println("a=5");
break;
default: //どれでもない場合
System.out.println("1,3,5以外");
}
}
}
public static void Break() { //Break()メソッド
int i, sum; //変数i.sumの宣言
int dt[] = { 5, 9, 6, -1, 2, 3, 4, 7, 1, 8 };
//配列dtの宣言
sum = 0; //変数sumに0を代入
for (i=0; i<10; i++) { //iが10に達するまでくり返
し処理
System.out.println("dt[i]=" + dt[i]);
if (dt[i] == -1) break; //dtの値
が-1になったら終了
sum =sum + dt[i];
}
System.out.println("sum1=" + sum);
i = sum = 0; //iとsumに0を代入
while (i<10) { //iが10に達するまで繰り返し処理
System.out.println("dt[i]=" + dt[i]);
if (dt[i] == -1) break; //dtの値が-1になっ
たら終了
sum =sum + dt[i];
++i;
}
System.out.println("sum2=" + sum);
}
public static void Cont() { //Cont()メソッド
int a, b; //変数a,bを宣言
System.out.println("----------(1) break test");
for (a=1; a<=3; a++) { //aが4に達するまで繰り
返し処理
System.out.println("start a=" + a);
if (a == 2) break; //a=2になっ
たら終了
System.out.println("end");
}
System.out.println("----------(2) continue test");
for (a=1; a<=3; a++) { //aが4に達するまで繰り
返し処理
System.out.println("start a=" + a);
if (a == 2) continue; //aが2に
なったらループの始まりに移動
System.out.println("end");
}
System.out.println("----------(3) continue(with label)
test");
for_cont: for (a=1; a<=3; a++) {
System.out.println("a_start a=" + a);
for (b=1; b<=3; b++) {
System.out.println("b_start b=" + b);
if (b == 2) continue for_cont;
System.out.println("b_end");
}
System.out.println("a_end");
}
}
}
- 実行結果
・if文
a=100 b=100
aは50より大
aは偶数
aとbは等しい
a=100 b=10 c=20
・for文
和 = 15
積 = 120
40 38 36 34 32 30 28 26 24 22 20
・while文
----------(1) 1〜5の和を計算
sum=15
----------(2) -1に出会うまでの配列値を表示
i=0 dt[i]=10
i=1 dt[i]=50
i=2 dt[i]=30
----------(3) 10に出会うまでの配列値を表示
・do-while文
10 20 30 -1 0
・switch文
--------1
a=1
--------2
1,3,5以外
--------3
a=3
--------4
1,3,5以外
--------5
a=5
・break文
dt[i]=5
dt[i]=9
dt[i]=6
dt[i]=-1
sum1=20
dt[i]=5
dt[i]=9
dt[i]=6
dt[i]=-1
sum2=20
・continue文
----------(1) break test
start a=1
end
start a=2
----------(2) continue test
start a=1
end
start a=2
start a=3
end
----------(3) continue(with label) test
a_start a=1
b_start b=1
b_end
b_start b=2
a_start a=2
b_start b=1
b_end
b_start b=2
a_start a=3
b_start b=1
b_end
b_start b=2
3.考察
- このプログラムではIf文、for文、while文、do-while文、swich文、break
文、continue文を使用しています。
- if文について
- if文は条件によって処理を分けて行うときに使います。条件には比較演算
子や論理演算子を使った条件式を指定します。
- for文について
- プログラムでは、同じような処理を繰り返すことがよくあります。そんな
ときは、for文を使います。
- for文は、繰り返し処理を効率よく行うための制御文です。普通はカウンタ
を用意してその値によって何回繰り返すかを決めます。
- while文について
- while文は、ある条件が成り立っている間だけ、処理を繰り返し実行する制
御文です。for文と異なるのは、カウンタにあたるものがないことです。
主にキーボードからの入力など、繰り返す回数が分からないときに使いま
す。
- do〜while文も、while文と同じように繰り返しを行う制御文です。while文
では処理よりも先に条件を評価するため、最初の回で条件が成立しなけれ
ば処理を1度も実行しないことがあるのに対し、do〜while文では条件を下
に書くため、必ず1度は実行します。
- while文などの繰り返し制御文では、常に成立するような条件を誤って指定
してしまうと、処理を永久に繰り返してしまいます。これを無限ループと
いい、プログラムのバグ(不具合)の1つです。
- break,contunue文について
- for文やwhile文などの繰り返しを途中で中断するにはbreak文を使います。
プログラム実行中にbreak文があると、一番近いブロックの終わりにジャ
ンプします。
- 実行中のループ処理を中断するbreak文に対し、continue文は、繰り返しの
その回の処理を中断し、次の回の最初から実行するという働きをします。
- switch文について
- switch文は、複数のcaseという選択肢の中から式の値に合うものを選び、
その処理を実行します。式の値がcaseのどれにもあてはまらないときは
defaultに進みます。各選択肢の最後にはbreak文を記述し、選択した処理
のみを行うようにします。
4.感想
- 時間がなかったんで考察は図を書けませんでした。上のプログラムを見な
がら読んでください。ヨロシク。
ProgII/e045732
Report#1
Report#2
Report#3
Report#4
Report#5
Report#6
Report#7
Report#8