ITパスポートの擬似言語・アルゴリズム問題の解き方|例題でトレース
更新日:
ITパスポートの擬似言語は、処理の手順を読み、変数の値がどう変わるかを追うことから始めます。プログラム全体を一度に理解しようとせず、初期値、条件、更新の順に表へ書き出すと整理できます。
ここでは、代入・条件分岐・繰返しの解き方をオリジナル例題で確認します。実際の試験では、IPAの記述形式と各問題の注記に従って読んでください。
擬似言語とは?まず読む3つの処理
| 記述 | 意味 | 確認すること |
|---|---|---|
| x ← 式 | 右側の計算結果をxに入れる | 更新前の値で右側を計算する |
| if … else … endif | 条件によって処理を選ぶ | 実行しない側の処理を混ぜない |
| while … endwhile | 条件が真である間、処理を繰り返す | 条件を確かめる時点と終了条件 |
擬似言語は、特定のプログラミング言語の文法をそのまま覚えるものではありません。IPAはITパスポート用の記述形式を示しています。PythonやJavaの知識があっても、代入記号や添字の条件は問題文に合わせて読みましょう。
「←」は等しいことの宣言ではなく、値を入れ直す操作です。たとえばxが3なら「x ← x + 2」の後のxは5です。数学の方程式として読むと混乱するので、右側を計算してから左側を更新します。
例題1:代入の順番を追う
次の処理を順に実行した後、xとyはいくつになるでしょうか。ここでは変数はいずれも整数とします。
x ← 4
y ← x + 3
x ← y × 2| 処理後 | x | y |
|---|---|---|
| x ← 4 | 4 | 未設定 |
| y ← x + 3 | 4 | 7 |
| x ← y × 2 | 14 | 7 |
答えはx=14、y=7です。最後にxを14へ変えても、すでにyに入れた7は自動では変わりません。変数同士をずっと結び付ける式ではなく、各行を実行した時点で値を入れる処理だからです。
例題2:ifの条件が成り立つ側だけ実行する
次の処理で、scoreが65のときresultには何が入るでしょうか。scoreとresultは整数とします。
if (score ≧ 60)
result ← 1
else
result ← 0
endif65は60以上なので条件は真です。実行するのは「result ← 1」であり、答えは1です。else側は実行しないため、最後に0で上書きされることはありません。
境界も確認しましょう。scoreが60なら条件は真、59なら偽です。「以上」と「より大きい」を取り違えると境界値で答えが変わります。選択肢を見る前に、どちらの処理を通るか決めてください。
例題3:whileを表で追う
次の処理が終わったとき、totalはいくつでしょうか。totalとiは整数です。
total ← 0
i ← 1
while (i ≦ 3)
total ← total + i
i ← i + 1
endwhile| 条件確認時のi | i ≦ 3 | 処理後のtotal | 更新後のi |
|---|---|---|---|
| 1 | 真 | 1 | 2 |
| 2 | 真 | 3 | 3 |
| 3 | 真 | 6 | 4 |
| 4 | 偽 | 6(変化なし) | 4(変化なし) |
答えは6です。最後の条件確認ではiが4になっているため繰返しを終えます。4回目の加算は行いません。条件を確認した回数と、中の処理を実行した回数が違う点に注意してください。
また、加算した後にiを増やしています。もし順序を入れ替えれば、加算に使う値が変わります。「繰返しだから1+2+3」と即断せず、更新する順番も追いましょう。
配列・初期値・終了条件で間違えないために
配列の添字と値を分ける
要素番号が1から始まり、値が10、20、30と並ぶ配列なら、2番目の値は20です。「2」は位置、「20」は入っている値です。要素番号の開始位置は、普段使う言語の習慣ではなく問題の条件を確認してください。
繰返しの最初と最後を書く
何度も同じ処理が続く場合でも、最初の1回、最後の実行、終了する条件確認を省かないようにします。whileは最初に条件が偽なら中の処理を一度も実行しません。
出力する値を取り違えない
処理の意味が分かっても、最後に聞かれているのが合計値か、回数か、添字かで答えは変わります。例題3ならtotalは6ですが、終了時のiは4です。問題文の「何を答えるか」に戻って確認してください。
苦手な人の練習順序とよくある質問
最初は短い代入だけ、次にif、最後に繰返しへ進みます。正解したら初期値や境界値を変え、同じ手順で説明できるか試してください。表を書かずに当たった問題も、一度は値の変化を確かめます。
実際にプログラムを書けないと解けませんか?
まず必要なのは、与えられた処理を読んで追う力です。開発環境を用意する前に、短い処理を紙でトレースしてみましょう。公式サンプル問題でも表記を確認できます。
アルゴリズム問題は捨ててもよいですか?
すべて避ける前に、代入や短い繰返しを試してください。本番で時間がかかる問題を後回しにする判断と、学習段階で基礎を飛ばす判断は別です。
暗算だけで解いたほうが速いですか?
値の更新を取り違えやすいなら、表を書いたほうが確認しやすくなります。速さを求める前に、初期値・条件・更新を漏らさず追える状態を目指します。
このサービスを使う場合
理解できたかを確かめるときは、公開過去問を利用できます。日々の計画や復習を管理したくなったら、学習コーチの機能を確認してください。
出典
計画づくりと「今日やること」をアプリに任せる
試験日と1日に使える時間を入れると、ITパスポート学習コーチが毎日の学習を組み立てます。最初の7日間は学習記録も無料です。