条件に応じて処理を変える。
そしてその判断を決して間違えない。
これもコンピュータの特徴といってよいでしょう。
ここでは、条件分岐の方法を学びます。
以下のプログラムを作成しなさい。
(チームで、ホワイトボードを使い、方針を決めてからプログラミングを始めること)
なお、乱数を発生させるには、Math.random()を使うこと。
例えば、次のようにすれば0から100までの整数値が取得できる。
int score = (int) (Math.random() * 101);
1.if文
テストの点数が80点以上かどうかを判定したい。
0から100までの乱数を発生させ、その値を点数として表示し、80点以上なら「合格です」と表示し、80点未満なら何も表示しないプログラムを作成しなさい。
なお、IDEのコードテンプレート機能はできるだけ使用すること。(以降同様)
2.if..else if文①
テストの点数ごとに評価をしたい。
0から100点までの乱数を発生させ、点数に応じて
「19点以下です」
「点数は20点以上49点以下です」
「点数は50点以上79点以下です」
「点数は80点以上です」
と表示するプログラムを作成しなさい。
3.if..else if文②
BMIとは Body Mass Index の略であり次の計算式で求められる。
BMI = [体重(kg)]÷[身長(m)の2乗] ※身長の単位がメートルであることに注意!
あなたの身長と体重からBMIの判定をするプログラムを作成しなさい。(サバ読み可)
日本肥満学会の定めた基準では
18.5未満が「低体重(やせ型)」
18.5以上25未満が「普通体重」
25以上が「肥満」と分類される。
日本肥満学会
(出力例)
普通体重です |
4.switch文
おみくじプログラムを作成したい。
おみくじのルール:0から100までの乱数を発生させ、その値を9で割り
余りが0のとき:「大吉です」
余りが1または2のとき:「中吉です」
余りが3または4または5のとき:「小吉です」
余りが6または7のとき:「凶です」
余りが8のとき:「大凶です」
と表示させるプログラムを作成しなさい。
ただし、条件分岐にはswitch文を使うこと。
5.三項演算子
意思決定システムを作りたい。
あなたが今、意思決定を迫られていることに関して、あなたに代わって意思決定してくれるシステムである。
乱数を発生させて、ちょうど2分の1の確率で「YES」、2分の1の確率で「NO」と表示するプログラムを作成しなさい。
なお、三項演算子を使用すること。
YES |
(出力例2)
NO |
6.論理演算子
うるう年の判定ができるプログラムを作成したい。
任意の年を設定し、その年がうるう年か否かを表示するプログラムを作成しなさい。
なお、うるう年とは、1年を366日とする年のことである。
また、うるう年の判定は以下の記述を参考にすること。
- 4の倍数の年は閏年とする
- ただし100の倍数の年は閏年にしない
- なお特別に400の倍数の年は閏年にする※
論理演算子を使用すること。
(出力例1)
※これはグレゴリオ暦では1太陽年を365.2425日として暦を作っているためである。
このデータを基礎にすれば閏年のない暦の400年間は実際より97日(=0.2425×400)短くなってしまうので、それを先のやり方で補正している。
「寄り道の多い数学」(大沢 健夫著)より
7.結果の予想①
以下のプログラムを実行したら何が出力されるか?また、それはなぜか説明しなさい。
package p04;
public class Q07 {
public static void main(String[] args) {
double num1 = 0.1;
double num2 = 0.2;
double num3 = num1 + num2;
if (num3 == 0.3) {
System.out.println("The same");
} else {
System.out.println("Not the same");
}
num1 *= 10;
num2 *= 10;
num3 = num1 + num2;
if (num3 == 3) {
System.out.println("The same");
} else {
System.out.println("Not the same");
}
}
}
8.結果の予想②
以下のプログラムを実行したら何が出力されるか?また、それはなぜか説明しなさい。
package p04;
public class Q08 {
public static void main(String[] args) {
char bloodType = 'A';
switch (bloodType) {
case 'A':
System.out.println("慎重な性格");
case 'B':
System.out.println("大胆な性格");
case 'O':
System.out.println("おおらかな性格");
}
}
}
9.結果の予想③
以下のプログラムはある新入社員が作成した上記2.のプログラムの内容である。
論理エラーを見つけ、指摘し、修正しなさい。
なお、デバッガを使いscoreの値を直接書き換えることを試してみること。
package p04;
public class Q09 {
public static void main(String[] args) {
int score = (int) (Math.random() * 101);
System.out.println(score);
if (score <= 49) {
System.out.println("点数は20点以上49点以下です");
} else if (score <= 19) {
System.out.println("19点以下です");
} else if (score <= 79) {
System.out.println("点数は50点以上79点以下です");
} else {
System.out.println("点数は80点以上です");
}
}
}
10.オリジナル問題作成
将来の後輩のために良い問題が出来たら教えてください。
以上。