共通テスト用プログラム表記を読む3つのポイント
Pythonで練習したあと、日本語のプログラム表記を見ると別の言語に見えるかもしれません。読むときは、処理の順番・条件・くり返し・配列という共通の構造を探します。その上で、記号や添字の定義を問題文で確認します。
大学入試センターの資料では、授業で使う言語が多様であることを踏まえ、独自の日本語によるプログラム表記を用いています。「DNCL」と「情報Ⅰの共通テスト用プログラム表記」を、すべて同一の規則として扱わないようにしましょう。本ページは独自の練習例です。公式の定義と出題例は参考資料から確認できます。
1. くり返しの終わりの値を含むか
「iを1から4まで1ずつ増やす」という処理なら、値は1、2、3、4です。Pythonの range(1, 4) は4を含まないので、同じ範囲にするには range(1, 5) と書きます。
| 処理したい値 | Python |
|---|---|
| 1、2、3、4 | range(1, 5) |
| 0、1、2、3、4 | range(5) |
| 4、3、2、1 | range(4, 0, -1) |
減らす場合まで「終わりに1を足す」と暗記すると間違えます。まず実際に通る値を並べ、rangeの終了値が含まれないことと、増減の向きを照合してください。
2. 商・あまり・通常のわり算を区別する
例として17個を5個ずつの組に分けると、3組できて2個余ります。Pythonでは 17 // 5 が3、17 % 5 が2、17 / 5 が3.4です。試験で ÷ が商を求める演算と定義されていれば、その定義に従って読みます。
負の数を含む場合は、「小数部分を取る」といったあいまいな説明で置き換えないでください。Pythonの // は負の無限大側へ丸めるため、-17 // 5 は-4です。試験の演算は問題文の定義を確認します。
3. 配列の先頭の添字を確認する
Pythonの a = [8, 5, 9] では、a[0] が8、a[1] が5です。試験の問題が1始まりと定義しているなら、そのまま同じ添字をPythonへ持ち込むと1つずれます。
翻訳方法の一例として、試験の添字iを使う箇所をPythonでは a[i - 1] とする方法があります。ただし、添字を保存して後で使う処理など、関連する箇所すべてで整合させる必要があります。「配列はいつも0始まり」と決めず、問題ごとに確認しましょう。
読み替えた後は、短い表で追う
次のコードは、点数60以上の個数を数える独自の例です。実行前にcountの値を予想します。
scores = [55, 80, 60]
count = 0
for i in range(len(scores)):
if scores[i] >= 60:
count = count + 1
print(count)
| 時点 | i | scores[i] | 条件 | count |
|---|---|---|---|---|
| 開始前 | 未設定 | — | — | 0 |
| 1回目の終了 | 0 | 55 | 偽 | 0 |
| 2回目の終了 | 1 | 80 | 真 | 1 |
| 3回目の終了 | 2 | 60 | 真 | 2 |
| 終了後・表示 | 2 | — | — | 2を表示 |
60ちょうどを含めるので >= を使います。> に変えると60が除外され、結果は1です。また、count = 0 をくり返しの中へ移動すると、毎回それまでの記録を消してしまいます。値だけでなく、初期化する位置にも注目してください。
自分で確かめる問題
上のコードで、「60未満の点数の合計」を求めたいとします。初期値は0のまま、条件の行と更新の行をどのように変えるでしょうか。第7章の自由実行スペースで試してください。
解答と理由を見る
条件を if scores[i] < 60:、更新を count = count + scores[i] にすれば、このデータでは55になります。ただしcountは個数を思わせる名前なので、合計を表す total に全体を統一すると処理の目的が読み取りやすくなります。追加するのが1か要素の値かで、個数と合計が変わります。
続けて書く練習をするなら第7章の翻訳ドリル・トレース道場へ進みましょう。Pythonのrangeの規則はPython公式ドキュメントで確認できます。