本文へ移動

基本情報技術者試験 · 学習ガイド

疑似言語と科目B読解

疑似言語とは

疑似言語とは、プログラムの処理を日本語に近い形で表した記述で、変数の値を一行ずつ追って読解します。IPAの試験では「擬似言語」と表記します。

エルくんが説明する図解。i=1,2,3に対しs更新前0,1,3と更新後1,3,6を並べた表。
考え方の例:s=0として、iを1から3まで変化させs=s+iを実行すると、sは1、3、6です。更新前と更新後を分けた表を作ると、何が累積されたか分かります。

コードを眺めて答えを予想するより、変数の値を一行ずつ追うと確実です。疑似言語では問題ごとの添字や範囲の約束も読みます。

基本の仕組み

基本の仕組みの図解。中央に3行の表を置き、「i|更新前|+i|更新後」を縦線で仕切る。各行に「1|0|+1|1」「2|1|+2|3」「3|3|+3|6」と記し、各行の更新後から次の行の更新前へ下向き矢印を引く。
覚えること:s=0から1〜3を順に足すと6

s ← 0として、iを1から3まで1ずつ増やしながらs ← s+iを実行すると、sは1、3、6と変わります。更新前と更新後を分けた表を作ると、何が累積されたか分かります。

条件分岐は条件を評価した時点の値で進む先が決まり、反復では終了条件を再評価します。配列の走査では、添字(要素番号)がどこからどこまで動くかを先に確認します。

科目Bの問題文では「配列の要素番号は1から始まる」と注記されるのが通例です。一般的なプログラミング言語の0始まりと混同すると、参照する要素が一つずれます。また、ループの外で初期化する変数と毎回初期化する変数では結果が変わります。

科目Bの追跡手順

科目Bの追跡手順の図解。中央の仕切りで左右を分け、左はwhileの「条件:偽」から処理を通らず出口へ、右はdo〜whileの処理を1回通ってから「条件:偽」を経て出口へ進む矢印を描く。両側とも条件が最初に偽になる場合を比較する。
覚えること:初回偽なら前判定0回・後判定1回

IPAの擬似言語の記述形式では、代入を「変数名 ← 式」、剰余算をmodで書きます。選択はif〜elseif〜else〜endifで、条件式を上から評価し、最初に真になった処理だけを実行します。値が格納されていない状態は「未定義」と呼びます。

繰返しのwhileは前判定で、条件が最初から偽なら一度も実行しません。do〜whileは後判定で、処理を必ず1回は実行します。forは制御記述(例:iを1からnまで1ずつ増やす)に従って繰り返します。

演算子の優先順位は、単項のnot・+・−が最も高く、乗除(mod・×・÷)、加減、関係演算子(≠・≦・=など)、and、orの順に低くなります。「a or b and c」は「a or (b and c)」と読みます。

読解では、変数の型、要素番号の開始、引数と戻り値を問題文で確認します。分岐の真偽と反復の各回で変わる値を表にし、境界値と終了条件を追います。最大値を判定する条件なら、候補が他の全ての値以上であることを確かめる必要があります。

科目Bの追跡手順
確認点誤読しやすい点
要素番号1始まりか(問題文の注記)と末尾
選択elseifは最初に真になった処理だけ実行
反復前判定か後判定か、更新と終了判定の順序
演算子andはorより先に評価
引数・戻り値呼出し元の値が変わるか、何を返すか

試験に出る

  • 変数の値を一行ずつ追って表にするトレース。
  • ループの初期化を外に置くか毎回行うかで結果が変わる点。
  • 科目Bの配列は問題文の注記どおり要素番号1から始まる点(0始まりと混同しない)。
  • 代入の←、剰余のmod、andがorより先に評価される優先順位など、擬似言語の記述形式。
  • 条件分岐は評価時点の値、反復は終了条件を再評価する点。whileは前判定、do〜whileは後判定。
  • 累積の有無で最終値が変わる計算例。

重要な言葉

疑似言語
処理の流れを日本語に近い形で表した記述。
トレース
変数の値を一行ずつ追って処理結果を確かめること。
ループ
条件が成り立つ間、同じ処理を繰り返す構造。

確認問題

確かめよう各反復の初めにs ← 0で戻したら最終値は?

3。合計が蓄積されなくなるためです。

ループの中で毎回変数を初期化すると、値が累積されない。

0始まりの配列と1始まりの配列を混同しても結果は同じ。

処理の値を一行ずつ追って確かめることを何という?

合計用の変数をループの中で毎回0に戻すと、合計はどうなる?

コードを眺めて答えを予想するより、を一行ずつ追うと確実です。では問題ごとの添字や範囲の約束も読みます。

s ← 0として、iを1から3まで1ずつ増やしながらを実行すると、sは1、3、6と変わります。更新前と更新後を分けた表を作ると、何がされたか分かります。

は条件を評価した時点の値で進む先が決まり、反復ではを再評価します。配列の走査では、添字(要素番号)がどこからどこまで動くかを先に確認します。

科目Bの問題文では「配列の要素番号は1から始まる」と注記されるのが通例です。一般的なプログラミング言語のと混同すると、参照する要素が一つずれます。また、の外で初期化する変数と毎回初期化する変数では結果が変わります。

出典・参考資料

試験の公式案内と、この記事の参考にした学習資料です。

編集:Pinternet Works · 更新日:

教材の編集方針・訂正について