IPA擬似言語とは(全体像)
IPA擬似言語は、基本情報の科目B(プログラミング・アルゴリズム)で出題される、試験専用の書き方のこと。C言語やPythonのような実在の言語ではなく、試験のために決められた疑似的な記法だ。
そのため、ふだんプログラミングをしている人ほど、ふつうの言語とのクセの違いでつまずきやすい。逆に、ここさえ押さえれば読めるようになる。いちばん大事な違いは2つ。
- 代入は`←`(矢印) … 「変数に値を入れる」は`x ← 5`と書く(`=`ではない)。
- 配列は1始まり … 先頭は`配列[1]`(C/Java/Pythonの`[0]`始まりとは違う)。
科目Bは試験の大きな関門で、コードを手で1行ずつ追う(トレース実行)力が問われる。
詳しく:特殊な記法だけ覚えれば戦える
ここが記事の心臓部。ふつうの言語との違いを表で押さえる。
IPA擬似言語の特殊な記法
| 項目 | IPA擬似言語 | ふつうの言語(C/Java等) |
|---|---|---|
| 代入 | `←`(矢印) | `=` |
| 比較(等しい) | `=` | `==` |
| 配列の先頭 | `[1]`(1始まり) | `[0]`(0始まり) |
いちばんの注意点が、`←`と`=`の役割。IPA擬似言語では`←`が代入(値を入れる)、`=`が比較(等しいか調べる)。C/Java/Pythonでは`=`が代入、`==`が比較なので、ここが混乱のもとだ。
そして配列の1始まり。IPA擬似言語では`配列[1]`が先頭で、`配列[2]`が2番目。多くの言語は`配列[0]`が先頭なので、1つズレるミスが頻発する。これも最頻出の注意点だ。つまり、ふつうの言語の感覚(`=`代入・0始まり)から頭を切り替えるのがコツ、というわけだね。
その他の記法
| 記号 | 意味 |
|---|---|
| `and` / `or` / `not` | 論理(かつ・または・否定) |
| `//` | コメント(メモ書き) |
| `○手続名` | 手続き(関数)の定義 |
なお、科目Bは「アルゴリズム・プログラミング」と「情報セキュリティ」から出題され、アルゴリズム側の比重が大きい(出題数や時間は受験年度の最新案内で確認するとよい)。
わかりやすく言い換えると
要するに、IPA擬似言語は「試験だけの、ちょっとクセのある書き方」だ。
①代入の`←` … 「箱に値を入れる」を矢印で表す(`x ← 5`は「xに5を入れる」)
②比較の`=` … 「等しいか調べる」のは`=`(`if (a = b)`は「aとbが等しいなら」)
③配列の1始まり … 1番目から数える。`配列[1]`が先頭
ふつうの言語の感覚(`=`で代入、0始まり)のまま読むと取り違える。だから「矢印が代入・配列は1から」と切り替えるのが、科目B攻略の第一歩、というわけだね。
試験のツボ
🔴 一番出る:代入は`←`・比較は`=`
①`←`は代入(値を入れる)
②`=`は比較(等しいか調べる)。ふつうの言語の`==`にあたる
🔴 次に出る:配列は1始まり
①先頭は`配列[1]`(`[2]`が2番目)
②C/Java/Pythonの0始まりと違う(1ズレに注意)
🟡 押さえると安定:その他の記法
①論理は`and`/`or`/`not`、コメントは`//`
②手続きは`○手続名`で定義
よくある間違い
①「IPA擬似言語の代入は`=`で書く」→ ✗ 代入は`←`(矢印)。`=`は比較に使う。
②「IPA擬似言語の配列は0始まりである」→ ✗ IPA擬似言語は1始まり。先頭は`配列[1]`。
③「擬似言語は実在のプログラミング言語の一つである」→ ✗ 擬似言語は試験のために定められた記法で、実在の言語ではない。
試験での出題パターン
実際の問題でたしかめてみよう。
オリジナル問題1(代入と比較)
IPA擬似言語の記号に関する次の記述のうち、正しいものはどれか。
- 代入も比較もどちらも`=`の記号を使い、文脈で意味を読み分けるものである
- 代入は`==`、比較は`←`を使う、C言語とまったく同じ記法である
- 代入は`←`(矢印)、比較は`=`を使い、ふつうの言語とは記号が異なる
- 代入も比較も記号を使わず、すべて日本語の文章だけで表すものである
解答は 3 だよ。
IPA擬似言語では代入が`←`(矢印)、比較が`=`なんだ。C/Java/Pythonは`=`で代入・`==`で比較だから、ここで切り替えてね。
選択肢1は「どちらも`=`」が誤り。選択肢2は代入と比較が逆。選択肢4は「記号を使わない」が誤りだよ。
| 選択肢 | 判定 | 理由 |
|---|---|---|
| 1 | ✗ | 代入は`←`で区別する |
| 2 | ✗ | 代入と比較が逆 |
| 3 | ✓ | 代入=`←`・比較=`=` |
| 4 | ✗ | 記号を使う |
オリジナル問題2(配列の始まり)
IPA擬似言語の配列に関する次の記述のうち、正しいものはどれか。
- IPA擬似言語の配列は1始まりで、先頭の要素は配列[1]で表される
- IPA擬似言語の配列は0始まりで、先頭の要素は配列[0]で表される
- IPA擬似言語の配列には番号がなく、先頭の要素を取り出すことはできない
- IPA擬似言語の配列は先頭が配列[2]からで、配列[1]は使われないものである
解答は 1 だよ。
IPA擬似言語の配列は1始まりで、先頭は配列[1]なんだ。C/Java/Pythonは0始まり(配列[0]が先頭)だから、1つズレるミスに気をつけてね。
選択肢2は「0始まり」が誤り(ふつうの言語の話)。選択肢3は「番号がない」が誤り。選択肢4は「配列[2]から」が誤りだよ。
| 選択肢 | 判定 | 理由 |
|---|---|---|
| 1 | ✓ | 1始まりで先頭は配列[1] |
| 2 | ✗ | 0始まりはふつうの言語 |
| 3 | ✗ | 番号でアクセスできる |
| 4 | ✗ | 先頭は配列[1] |
オリジナル問題3(擬似言語の位置づけ)
IPA擬似言語の位置づけに関する次の記述のうち、正しいものはどれか。
- 擬似言語はC言語の別名で、まったく同じ記法で書かれるものとされている
- 擬似言語はPythonをそのまま日本語に翻訳しただけの言語のことである
- 擬似言語は試験とは無関係の、研究者だけが使う特殊な言語のことである
- 擬似言語は試験のために定められた記法で、実在の言語そのものではない
解答は 4 だよ。
IPA擬似言語は試験のために定められた記法で、C言語やPythonのような実在の言語そのものではないんだ。だから試験専用のクセ(`←`代入・1始まり)があるんだよ。
選択肢1は「C言語の別名」が誤り。選択肢2は「Pythonの翻訳」が誤り。選択肢3は「試験と無関係」が誤りだよ。
| 選択肢 | 判定 | 理由 |
|---|---|---|
| 1 | ✗ | C言語の別名ではない |
| 2 | ✗ | Pythonの翻訳ではない |
| 3 | ✗ | 科目Bで使う試験用の記法 |
| 4 | ✓ | 試験用の記法で実在の言語ではない |
まとめ
押さえどころ
- 🔴 代入と比較 = 代入は`←`(矢印)、比較は`=`。ふつうの言語(`=`代入・`==`比較)と違う。
- 🔴 配列は1始まり = 先頭は`配列[1]`。0始まりのふつうの言語と取り違えない。
- 🟡 その他 = 論理は`and`/`or`/`not`、コメント`//`、手続きは`○手続名`。試験専用の記法。
次に学ぶ
- 擬似言語の制御構造 ── 擬似言語のif・while・forの書き方。記法に続いて、流れの作り方を押さえる。
- ソートアルゴリズム ── 擬似言語で読むことになる代表的なアルゴリズム。記法と中身がつながる。
執筆: SikakuQuest編集部