演習課題「複雑な条件分岐 1」
西暦年に対して、以下の条件を満たすものを paiza 年として定めます(条件は下に行くほど強くなります)。
1. 西暦年が 5 で割り切れる年は paiza 年である。
2. ただし、西暦年が 100 で割り切れる年は paiza 年ではない。
3. ただし、西暦年が 500 で割り切れる年は paiza 年である。
今、標準入力に西暦年が入力されます。
その年が paiza 年となるかどうかを判別し、paiza 年となるなら YES を、paiza 年とならなければ NO を出力してください。
プログラムを実行して、想定通り出力されれば演習課題クリアです!
期待する出力値
YES
演習課題「複雑な条件分岐 2」
あなたは、平日は仕事のために朝 7 時には起きないといけません。
そのため、休日でも平日でも必ず朝 7 時までには目が覚めるようになりました。
しかし、休日はお昼の 12 時までは寝ていても大丈夫です。
そこで、朝起きた時間に対して、あと何時間眠れるかを教えてくれるプログラムを書くことにしました。
標準入力の 1 行目に目が覚めた時間、2 行目に「平日」、または「休日」のいずれかが入力されます。
ただし、目が覚めた時間は 4 ~ 7 時のいずれかの時間を表す数字になります(分以下は考えません)。
その日起きる時間になっていたら
「起きる時間です」
その日あと n 時間眠ることができるなら
「あとn時間眠れます」
と出力してください。
プログラムを実行して、想定通り出力されれば演習課題クリアです!
#11:複雑な条件分岐
このチャプターでは、うるう年の判定を題材に、if文の分岐の中で更に分岐をするような複雑な条件分岐について考えます。
MDN web docs
https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Operators/Arithmetic_Operators
四則演算に加え、基本的な算術演算の一つである剰余計算を表す記号です。
余りを求める際に用います。
MDN web docs
https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Operators/Comparison_Operators
2 つの値が違うことを確かめることができます。=== の否定を表しています。
MDN web docs
https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Operators/Logical_Operators
「かつ、または、〜ではない」を表す論理演算子は以下のようになります。
- A かつ B → A && B
- A または B → A || B
- A ではない → !A
論理演算子を用いることで if などの条件式をまとめて書くことができてしまいます。
それは良いことなのですが、条件によっては 1 行が長くなり過ぎたり、そもそも考えた論理演算が間違っている、というようなことが起きることがあります。
また、全く論理演算子を使わないというのも視認性が悪くなったり、見落としが発生したり、大変なことになってしまいます。
正確に、素直に、そして適切に用いることを意識してください。