IPA 擬似言語・プログラム読解 — 頻出論点と過去問

頻出論点

1. この分野は何か

提示されたプログラムや手順書を上から順にたどり、実際にどのような動きをするかを読み解く分野です。初期値として与えられたデータに対して、条件分岐や繰返し処理が1ステップずつ実行される様子を手作業で追いかけることで、特定の時点での変数の値や、意図どおりに動かすために空欄へ入れるべき式・条件を導き出します。

2. 実際の出題のされ方

擬似言語のコードや番号付きの手順書、流れ図、表計算ソフトのワークシートを読み解く問題が、ITパスポートの中心です。擬似言語や流れ図では、具体的な引数や初期値を与えたときの出力・戻り値・処理途中の配列の状態を求めさせる問題と、目的の処理を完成させるために空欄へ入れる計算式や条件を選ばせる問題がよく出ます。また、求める戻り値から逆算して引数に渡すべき配列を選ばせる問われ方や、ロボットに正六角形を描かせる番号付き手順の空欄を埋める問題も出ています。表計算ソフトを題材にした問題では、合否判定や2進数の加算(繰り上がりの処理)を IF 関数で組み立てる式や、式を他のセルに複写したときに正しく計算される相対参照・絶対参照の指定が問われています。

応用情報技術者の午前では、2つの流れ図を比較し、同じ計算結果を得るために後判定ループの終了条件へ入れる不等式を選ばせる問題が出ています。

3. 学習のポイント

変数の値を紙に書き出しながら1ステップずつ処理を追うトレースの手順が基本になります。配列の要素を入れ替える二重ループや、2つの変数を引き算しながら更新するループでは、頭の中だけで追うと途中で値を取り違えやすくなります。ループ変数と対象となる変数(または配列の各要素)の値を反復ごとに書き留め、どの時点で出力や終了判定が行われるかを確認します。特に配列を扱う問題では、注記で「配列の要素番号は1から始まる」と指定されているため、添字の1番目から順に値を対応させることが大切です。

次に、繰返し処理(ループ)の回数と境界条件の扱い方を押さえます。繰り返す処理の前に条件を調べる前判定と、処理を1回実行してから条件を調べる後判定があります。後判定では、条件にかかわらず最初の1回は必ず実行されます。また、流れ図のループ端の注記や矢印の向きによって、書かれている条件が満たす間繰り返す継続条件なのか、満たしたときにループを抜ける終了条件なのかが変わります。たとえば、カウンタ ii が10未満の間繰り返す処理を終了条件で書き直すなら、ii が10以上になったら抜ける、となります。「以下」と「より小さい」(未満)の違いで実行回数が1回ずれるため、最小値や境界の値を当てはめて確かめます。

さらに、ループ内で変数を更新する式の基本形と、表計算ソフトの式の組み立て方を整理しておきます。総和や2進数から10進数への変換のように値を累積する処理では、集計用の変数を 0 で初期化したうえで、ループの中で現在の集計値に新しい項を足した値を同じ変数に代入して更新します。10進数の各桁を扱う処理では、10で割った商で十の位を取り出し、元の数から十の位の10倍を引いて一の位を取り出す関係を使います。表計算ソフトでは、IF(条件, 真の場合, 偽の場合) の引数の順序と、複数条件のいずれかを満たす論理和とすべてを満たす論理積の使い分け、そして式を下方向へ複写するときに行番号を動かすか固定($ を付与)するかを区別します。

4. 間違えやすいところ

トレースの問題では、出力が求められるタイミングや対象を取り違えた値が誤答肢になっていました。配列を昇順に並べ替える手続の途中で出力を確認する問題では、指定されたループ変数の時点ではなく最終的なソート結果や逆順(降順)の並びが誤答肢にあります。また、条件を満たした値を加算するループでは、合計値ではなく条件を満たした回数や、最初の1回分だけを加算した値が並んでおり、複数の変数を更新する流れ図でも、終了前の途中段階の値が誤答肢にありました。

空欄補充の計算式では、1回目のループだけを当てはめると正しい式と同じ値になる誤答肢に注意が必要です。たとえば、値が 2 → 5 → 11 と変わる処理の空欄に、現在の値に 3 を足す式を入れると 1 回目(2 → 5)は合いますが、2 回目は 8 になって 11 と合いません。1 回目だけで判断せず、2 回目以降のループまで値を代入して確かめる必要があります。同様に、総和や桁の合算を求める問題でも、「calcX ← calcX + 1」のように回数を数えてしまう式や、加算すべきところを「integerNum × digitNum × exponent」のように掛け算で更新してしまう式を選ばないよう気をつけます。

条件式や初期値の選択では、境界での1回のずれが誤答のもとになります。最初の分岐で除外する範囲に境界の値を含めるかどうかで結果が変わります。たとえば 1 以上 100 以下を受け付けたいのに、上限の判定を 100 より小さいとすると、100 を受け付けなくなります。また、後判定の繰返しは、判定の前に必ず 1 回実行されます。カウンタが 3 未満なら戻る判定では、初期値 0 なら 3 回、初期値 1 なら 2 回実行されます。このように小さな数で回数を確かめます。表計算ソフトの問題でも、どちらか一方を満たせばよい「合格判定条件 (1) 又は (2)」を論理積で結んだ式が誤答肢でした。また、複写時に動かすべき税抜価格の行番号まで B$4 と固定してしまう誤答肢があるため、条件のつながりと複写先のセル番地を一つずつ確認することが重要です。

擬似言語・プログラム読解の理解度チェック

擬似言語・プログラム読解の過去問一覧

擬似言語・プログラム読解の用語

アルゴリズムのほかの論点

データ構造26問 整列・探索・計算量19問 プログラム言語・パラダイム15問