基本情報技術者試験 (FE) 科目 B — 練習問題 第 19 問 / 全 20 問 · 本番相当
うるう年の判定
関連レッスン: 条件分岐 (if / elseif / else) の書き方
うるう年は「4 で割り切れる年。ただし 100 で割り切れる年は平年とし、400 で割り切れる年はうるう年とする」と定義される。次のプログラムがこの定義どおりに動くよう、空欄 a に入れる正しい答えはどれか。
○文字列型: 判定(整数型: 年)
if ( [ a ] )
return "うるう年"
endif
return "平年"
print(判定(2000))
print(判定(1900))
print(判定(2024))解説
正解: ウ 年 mod 400 = 0 or (年 mod 4 = 0 and 年 mod 100 ≠ 0)
3 つの年で選択肢を検証します。ア は 1900 もうるう年にしてしまいます (1900 は 4 で割り切れる)。イ は 400 で割り切れる 2000 を平年にしてしまいます。エ は 400 で割り切れない 2024 を平年にしてしまいます。ウ だけが 2000 = うるう年、1900 = 平年、2024 = うるう年を正しく返します。
規則に例外が入れ子になっているときは、**例外の外側から or でつなぐ**と整理できます。「400 の倍数なら無条件でうるう年」を先に or の左へ置き、残りを「4 の倍数 かつ 100 の倍数でない」として and でまとめる形です。
選択肢を眺めて悩むより、代表的な値を 3 つ (400 の倍数 / 100 の倍数だが 400 の倍数でない / 4 の倍数だが 100 の倍数でない) 決めて総当たりで表を作るほうが速く確実です。条件式の問題は具体値の代入で潰せます。
例外が 2 段あるので and だけでは書けない。400 の倍数を or で先に救う。
演習量を増やしたい方へ(おすすめ書籍)
擬似言語の記法の読み方から、トレースして答えを出すまでを一冊で通せる科目B特化本。手を動かして追う練習量を確保したいときの定番。
科目Bの出題パターンを網羅的に演習できる対策書。構文を理解した後、解法の型を身につける段階で効く。
科目Bの出題範囲を絞り込んだ薄型の対策書。頻出アルゴリズムと情報セキュリティを短期間で一周したいときに。
本セクションはAmazonアソシエイトのリンクを含みます。
プログラムの読み方でつまずいたら。
たいてっくが、アルゴリズムの追い方から SQL・データベース設計まで、1対1で学習をサポートします。「コードを目で追っても何をしているか分からない」段階からで大丈夫です。まずは無料相談から。
「教え方も上手で、お人柄も良いメンターです。DB周りの知識はもちろん、何より、しっかり教えてあげようという姿勢がとてもありがたかったです。データベース、SQLの学習を考えている方にはおススメです。」
— H 様(DB・SQL コース受講)「体系的に知識を教えてくださり、実際の業務でも大変役立っております。特に短い時間で効率よく知識の習得や、練習をできているのは期待以上でした。」
— M 様(DB・SQL コース受講)「大変充実したコンテンツでわかりやすいご説明をありがとうございました。基本的な質問にも丁寧にご説明いただき、また業務のご相談にも乗って頂き大変有意義な時間でした。」
— K 様(DB・SQL コース受講)