CO-P25|情報Ⅰ 対策問題
次のプログラムは、パスワードが条件(8文字以上、かつ数字を含む)を満たすか検査する。検査するパスワードは、あらかじめ変数 pw に文字列として入っている。空欄【ア】に入るものはどれか。 【関数の説明】 文字数(s) … 文字列sの文字数を返す 数字を含む(s) … sに数字が1つでもあれば真を返す (1) もし 【ア】 ならば: (2) | 表示する("OK") (3) そうでなければ: (4) ⎿ 表示する("NG")
解答・解説を見る
正解: 1
正答
1
この問題のポイント
論理演算子 and/or の使い分け+境界値 を問う問題です。
解説
要件は「8文字以上、かつ数字を含む」。この日本語を論理式に翻訳します。翻訳のポイントは2つあります。①「かつ」=and(両方成立が必要)、「または」=or(どちらか一方でよい)。②「8文字以上」は8ちょうどを含むので >=(等号あり)。よって「(文字数(pw) >= 8) and (数字を含む(pw))」が正解です。
正しさは、具体的なパスワードを通して確かめられます。
「abcdefg1」(8文字・数字あり)のとき: 文字数8>=8 → 真、数字を含む → 真。真 and 真 = 真 → OK。
「abcdefgh」(8文字・数字なし)のとき: 真 and 偽 = 偽 → NG。
「ab1」(3文字・数字あり)のとき: 偽 and 真 = 偽 → NG。
両方を満たすときだけOKになり、要件どおりです。
誤答の動きも見ておきます。or にすると「ab1」(3文字でも数字があればOK)が通ってしまい、条件が緩みます。選択肢4の「> 8」は9文字以上の意味になり、8文字ちょうどの正しいパスワードがNGになる——境界値(8文字ぴったり)で試すと等号の誤りを発見できます。
「要件の日本語を and/or/not と不等号に正確に翻訳する」力は、令和8年度本試験でも「(taiken <= 15) and (…)」の形でそのまま問われました。「かつ→and」「または→or」「以上・以下→等号あり」「未満・より大きい→等号なし」の対応表を頭に入れ、境界の値で検算する習慣をつけましょう。
選択肢の確認
1.○ and(両方必要)+ >=(8を含む)が要件どおり。
2.× or では片方だけでOKになり、3文字でも数字があれば通ってしまう。
3.× not(8文字以上)は「8文字未満ならOK」という逆の条件。
4.× > では8文字ちょうどがNGになる。「以上」は等号ありの >=。
ここだけは覚えよう
「かつ」=and、「または」=or、「以上」=等号あり — 境界値(ちょうどの値)で等号の有無を検算する。