前回まで、試験の構成と出題範囲を確認してきた。科目Bの中心を占めるのが「擬似言語」である。今回は、擬似言語の基本文法を一通り整理し、読解の土台を作る。
擬似言語とは何か
擬似言語は、特定のプログラミング言語に依存せずアルゴリズムを記述するために、IPAが独自に定めた記法である。2023年4月の制度改定より前は、C、Java、Python、COBOL、アセンブラ言語などから選択して受験する形式だったが、現行制度ではこの選択制が廃止され、全受験者が同じ擬似言語の問題を解くことになった。
擬似言語はコンパイル・実行できるものではなく、あくまで「読んで処理の流れを追う」ための記法である。他言語の経験があると馴染みやすい部分もあるが、独自ルールも多いため、擬似言語は擬似言語として素直に覚えるのが早道である。
変数宣言と代入
変数は「型名: 変数名」の形式で宣言する。代入には ← を用いる。
整数型: x
x ← 1同じ型の変数は1行でまとめて宣言できる。
整数型: sum, count
sum ← 0
count ← 0選択処理(if文)
条件分岐は if〜elseif〜else〜endif で記述する。
if (age が 3 以下)
ryoukin ← 100
elseif (age が 9 以下)
ryoukin ← 300
else
ryoukin ← 500
endif条件式は「〜が〜以下」「〜が〜より大きい」のように日本語の比較表現で書かれることが多く、記号の不等号(<、≦など)と併記される場合もある。
繰返し処理:for文
回数が決まっている繰返しには for を使う。
整数型: A[5], i, sum
sum ← 0
for (i を 1 から 5 まで 1 ずつ増やす)
sum ← sum + A[i]
endfor制御部の「i を 1 から 5 まで 1 ずつ増やす」がループの条件そのものであり、他言語のfor文のように初期化・条件・更新式を別々に書く形式ではない点に注意したい。
繰返し処理:while文・do〜while文
条件を先に判定する前判定繰返しには while、後で判定する後判定繰返しには do〜while を使う。
整数型: x
x ← 1
while (x ≦ 5)
x ← x + 1
endwhile整数型: x
x ← 1
do
x ← x + 1
while (x ≦ 5)while文は条件を満たさなければ一度も処理を実行しないのに対し、do〜while文は必ず1回は処理を実行してから条件を判定する。この違いはトレース問題で頻繁に問われるため、明確に区別しておく必要がある。
配列の扱い
配列は宣言時に要素数を指定し、[] で要素にアクセスする。
整数型: A[5]
A[1] ← 10ここで注意したいのが、要素番号が0から始まるか1から始まるかは問題ごとに異なるという点である。多くのプログラミング言語では0始まりが標準だが、擬似言語ではその都度、問題文冒頭の注釈で明示される。トレースを始める前に必ず確認する習慣をつけておきたい。
二次元配列も同様の記法で扱える。
整数型: B[3, 4]
B[1, 1] ← 100関数・手続きの定義
関数(手続き)は ○型名: 関数名(引数) の形式で定義し、return で戻り値を返す。
○整数型: goukei(整数型: n)
整数型: i, s
s ← 0
for (i を 1 から n まで 1 ずつ増やす)
s ← s + i
endfor
return s戻り値を持たない手続きの場合は型名を省略した記法が使われることもある。関数呼び出しは他言語と同様、goukei(10) のように引数を括弧内に渡す。
コメントの書き方
コメントは // の後に記述する。処理の意図を短く書き添えるスタイルが一般的で、トレース問題を解く際にも、コメントが処理内容を理解する手がかりになることが多い。
i ← i + 1 // カウンタを1つ進める学習の進め方
擬似言語は文法自体を覚えるだけなら1〜2時間程度で十分である。重要なのは、その先の「トレース」の練習、つまり紙に変数の値の変化を書き出しながらプログラムを1行ずつ追う訓練である。IPAが公開しているサンプル問題などを使い、実際に手を動かしてトレース表を作る練習を重ねることで、科目Bの得点力は着実に伸びていく。
擬似言語の基本文法を押さえたら、次はいよいよ実際の学習に必要な情報収集の段階に入る。今後は、情報処理推進機構(IPA)の公式Webサイトから、シラバスやサンプル問題、過去問題といった一次情報をどのように入手すればよいかを整理していこう。



コメント