【基本情報】コードあり!科目B問1「年齢ごとの入場料を計算するプログラム」について解説

20231029_基本情報 資格試験

今年度から基本情報の試験内容が変わりましたね.

特に午後試験は大きく変わりました.
プログラムやアルゴリズムについてより深い理解を求められるようになったことでしょう.

プログラムを理解するには自分で書くのが1番です.

今回はプログラムをコードに書いて科目Bサンプル問題 問1を解説します.

科目Bサンプル問題 問1 年齢ごとの入場料を計算するプログラム

問題文は以下のとおりです.
if文を使った条件分岐の問題です.

問1 問題文と回答選択肢|クリックして拡大できます
科目Bサンプル問題[科目B]問1 年齢ごとの入場料を計算するプログラム

Pythonでプログラムを書く

プログラムをPythonで書き直しました.

def fee(age):
    ret = 0
    # 0歳から3歳まで
    if (age <= 3):
        ret = 100
    # 4歳から9歳まで
    elif (□□□□□□□□□):
        ret = 300
    # 10歳以上
    else:
        ret = 500
    return ret

□に入る条件式は age が4歳以上かつ9歳以下です
Pythonでは次のようになります.

def fee(age):
    ret = 0
    # 0歳から3歳まで
    if (age <= 3):
        ret = 100
    # 4歳から9歳まで
    elif (age >= 4 and age <= 9):
        ret = 300
    # 10歳以上
    else:
        ret = 500
    return ret

age に 3, 4, 9, 10 をそれぞれ代入してその結果を確認しましょう.

境界値を確認する|クリックして拡大できます

ageが4, 9のときはちゃんと300が表示されていますね.
条件式はあっていそうなので選択肢から同じ意味を探します.

回答と解説

ウ (ageが4より大きい) and (ageが9以下)

ウが近そうですが,これはひっかけです.

age が4より大きいなので4は含みません.条件式になおすと 4 < age です.
気をつけましょう.

条件式はもう1つ書き方がありました.

それはageが9歳以下とする場合です.
すでに3歳以下の条件式と処理は書かれているのでage < 9としても問題ありません.

def fee(age):
    ret = 0
    # 0歳から3歳まで
    if (age <= 3):
        ret = 100
    # 4歳から9歳まで
    elif (age <= 9):
        ret = 300
    # 10歳以上
    else:
        ret = 500
    return ret
条件式(age < 9)とする|クリックして拡大できます

条件式 age < 9 に該当する選択肢はカになります.
よってカが正解です.

カ ageが9以下

まとめ

今回は科目Bサンプル問題の問1を解説しました.

この問題ちょっと意地悪ですね.
問1なんだからもう少し優しくても良いだろうと思ってしまいました.

この問題から学べることはプログラムの書き方は1通りじゃないということです.

4~9歳を表現するとき age >= 4 and age <= 9age <= 9(すでにage <= 3は定義済み)も一緒の意味になりました.

柔軟に考えられることを見ているのかもしれません.