演習: 条件分岐
3-a. 偶数・奇数の判定
Section titled “3-a. 偶数・奇数の判定”変数 num の値が偶数なら "偶数" 、奇数なら "奇数" と出力するプログラムを書いてください。
const num = 7;num の値を変えて動作を確認してください。
ヒント
num % 2 の結果が 0 なら偶数です。
3-b. if / else の出力予測
Section titled “3-b. if / else の出力予測”以下のプログラムについて、score の値が (1) 80、(2) 59、(3) 60 のとき、それぞれ何が出力されるか予測してください。予測した後、score の値を変えて実行し確認してください。
const score = 80;let result;
if (score >= 60) { result = "合格";} else { result = "不合格";}
console.log(result);ヒント
score >= 60 は「60 以上か?」という条件式です。(3) の score = 60 のとき、60 >= 60 は true と false のどちらになるか考えてください。
3-c. 合否判定
Section titled “3-c. 合否判定”変数 score の値が 60 以上なら "合格" と合格ラインとの差を、60 未満なら "不合格" と不足点を出力するプログラムを書いてください。
const score = 75;出力例(score が 75 の場合):
合格合格ラインを15点上回っています出力例(score が 45 の場合):
不合格あと15点必要ですscore の値を変えて、両方のパターンを確認してください。
ヒント
if / else の各ブロックの中で、合格ラインの 60 との差を計算して出力します。
3-d. 成績判定
Section titled “3-d. 成績判定”変数 score の値に応じて、以下の基準で成績を出力するプログラムを書いてください。
const score = 75;| 点数 | 成績 |
|---|---|
| 90以上 | A |
| 70以上90未満 | B |
| 50以上70未満 | C |
| 50未満 | D |
score の値を変えて、各成績が正しく出力されることを確認してください。境界値(90, 70, 50)での動作も確認してください。
ヒント
if / else if / else を使います。条件式は上から順に評価されるため、score >= 70 に到達した時点で 90 以上は既に除外されています。
3-e. else if の出力予測
Section titled “3-e. else if の出力予測”ポイント残高に応じて会員ランクを判定するプログラムがあります。points の値が (1) 200、(2) 800、(3) 3500 のとき、それぞれ何が出力されるか予測してください。予測した後、実際に実行して確認してください。
const points = 200;let rank;
if (points >= 3000) { rank = "ゴールド";} else if (points >= 1000) { rank = "シルバー";} else if (points >= 500) { rank = "ブロンズ";} else { rank = "一般";}
console.log("会員ランク: " + rank);ヒント
条件式は上から順に評価され、最初に true になったブロックだけが実行されます。各入力値について、どの条件式で初めて true になるかを順に追ってください。
3-f. 料金計算
Section titled “3-f. 料金計算”年齢に応じて以下の入場料を出力するプログラムを書いてください。
const age = 10;| 年齢 | 料金 |
|---|---|
| 3歳以下 | 無料 |
| 4歳以上12歳以下 | 500円 |
| 13歳以上64歳以下 | 1000円 |
| 65歳以上 | 700円 |
age の値を変えて、各年齢区分の境界値(3, 4, 12, 13, 64, 65)で正しく動作することを確認してください。
ヒント
age <= 3 から判定を始めると、else if に到達した時点で「4歳以上」が保証されます。
3-g. 条件式の穴埋め
Section titled “3-g. 条件式の穴埋め”映画館の料金を年齢で判定するプログラムがあります。仕様は以下の通りです。
| 年齢 | 料金 |
|---|---|
| 5歳以下 | 無料 |
| 6歳以上15歳以下 | 800円 |
| 16歳以上 | 1500円 |
以下のプログラムの /* ??? */ に入る条件式を、選択肢から選んでください。
const age = 10;let price;
if (age <= 5) { price = 0;} else if (/* ??? */) { price = 800;} else { price = 1500;}
console.log(price + "円");選択肢の && は「かつ」を意味する演算子で、両方の条件式が true のときだけ全体が true になります。
- (ア)
age >= 6 && age < 15 - (イ)
age > 6 && age <= 15 - (ウ)
age <= 15 - (エ)
age < 15
ヒント
else if に到達した時点で、1番目の条件式(age <= 5)は false です。つまりこの時点で age の範囲は絞られています。各選択肢に境界値を代入して、仕様通りの料金になるかを確かめてください。
3-h. 変数の入れ替え
Section titled “3-h. 変数の入れ替え”2つの変数 a と b の値を入れ替えて出力してください。入れ替えた後に a が "みかん"、b が "りんご" になるようにします。
let a = "りんご";let b = "みかん";
// ここに入れ替えの処理を書く
console.log(a); // みかんconsole.log(b); // りんごヒント
a に b の値を入れると、a の元の値が消えてしまいます。先に a の値を別の変数に退避してください。
3-i. 3科目の最高点
Section titled “3-i. 3科目の最高点”3科目の点数が変数で与えられています。最も高い点数を求めて出力してください。
const math = 78;const english = 92;const science = 85;let max = math;
// ここに処理を書く
console.log("最高点: " + max);出力例:
最高点: 92値を変えて、どの科目が最高点でも正しく動作することを確認してください。
ヒント
max と english を比較し、english のほうが大きければ max を更新します。同様に science とも比較します。
3-j. 2つの数を小さい順に並べる
Section titled “3-j. 2つの数を小さい順に並べる”2つの変数 a と b を小さい順に並べて出力するプログラムを書いてください。a のほうが大きい場合は入れ替えてから出力します。
let a = 50;let b = 20;出力例:
20 50a と b の値を入れ替えて(a = 20, b = 50 など)、どちらの場合でも小さい順に出力されることを確認してください。
ヒント
if (a > b) のときだけ、3-h と同じ方法で入れ替えます。
3-k. 3つの数のソート
Section titled “3-k. 3つの数のソート”3つの変数 a, b, c を小さい順に並べ替えて出力するプログラムを書いてください。ループは使わず、if と変数の入れ替えだけで実装します。
let a = 30;let b = 10;let c = 20;出力例:
10 20 30ヒント
まず a と b を比較して、a のほうが大きければ入れ替えます。次に a と c、最後に b と c を同様に比較します。3-j の処理を3回繰り返すイメージです。
3-l. うるう年の判定
Section titled “3-l. うるう年の判定”変数 year がうるう年かどうかを判定して、結果を出力するプログラムを書いてください。
const year = 2024;うるう年の条件:
- 4 で割り切れる年はうるう年
- ただし、100 で割り切れる年はうるう年ではない
- ただし、400 で割り切れる年はうるう年
以下の年で動作を確認してください。
| 年 | うるう年? | 理由 |
|---|---|---|
| 2024 | はい | 4 で割り切れる |
| 1900 | いいえ | 100 で割り切れるが 400 で割り切れない |
| 2000 | はい | 400 で割り切れる |
| 2023 | いいえ | 4 で割り切れない |
ヒント
条件が細かいほうから先に判定します。400 で割り切れるか → 100 で割り切れるか → 4 で割り切れるか、の順に if / else if を書いてみてください。% で割り切れるかどうかを判定します。