ITパスポートの擬似言語|配列・繰返しをトレースして解く
擬似言語で迷ったら、プログラム全体を頭の中で動かす前に、変数の値を一行ずつ書き出します。ここでは小さな3例で「代入」「配列と条件分岐」「繰返しの終了」を練習し、実際の公開問題につなげます。例題はkakoloopのオリジナルで、IPAの過去問ではありません。
更新日:2026-10-08
最初に、出力と変わる値を見つける
擬似言語は、処理の手順を表すための記法です。特定の言語を覚えてからでなくても、各行の意味と実行順序を確認しながら読めます。IPAのシラバスVer.6.5には、変数や配列、順次・選択・繰返し、代入や入出力などが含まれています。
- 最後に何を求めるかを読む。 出力される値、関数の戻り値、処理途中の配列などを区別します。
- 初期値を書く。 途中の値と混ぜないように、実行前の行を作ります。
- 値が変わるたびに表を更新する。 条件が偽なら、実行しない行を飛ばします。
- 終了条件をもう一度確認する。 最後に条件が偽となる判定も省略しません。
基本用語はアルゴリズムの基本構造と表現方法で確認できます。範囲の出典:IPA:ITパスポート試験 シラバスVer.6.5、本文38ページ。以下の小例は、擬似言語の全範囲や出題頻度を示すものではありません。
このページの記号と配列の約束
例題を曖昧にしないため、このページでは次の約束を使います。実際の問題では、本文や注記に書かれた約束を優先してください。
| 記号・書き方 | このページでの意味 |
|---|---|
| x ← 式 | 右辺を今の値で計算し、結果をxに代入する |
| A[i] | 配列Aのi番目の要素。この記事の例は1から始める |
| if (条件) … endif | 条件が真のときだけ中を実行する |
| for (iを1から4まで1ずつ増やす) | iが1、2、3、4の各値で中を1回ずつ実行する |
| while (条件) … endwhile | 中に入る前に条件を判定し、真なら実行して再判定する |
| ≧、<、× | それぞれ「以上」「未満」「掛け算」を表す |
| 出力する | その行に到達した時点の値を結果として示す |
←は、左右が等しいことを表す式ではありません。 x ← x + 1なら、変更前のxに1を足してから、xの値を置き換えます。また、配列の要素番号が0から始まる問題や、繰返しの範囲が異なる問題もあり得るため、この記事の1始まりをすべての問題へ当てはめないでください。以下は整数を使い、各例の変数はほかの例と共有しません。
公式の記述形式はIPA:試験で使用する情報技術に関する用語・プログラム言語など Ver.5.1、別紙1(ITパスポート試験用)で確認できます。この記事では短い練習用に型の宣言などを省いています。公式資料の記法と、問題ごとの注記も併せて確かめてください。
例1:代入の順序を追う。xとyはいくつになる?
オリジナル練習例: 次の処理を上から実行した後、出力されるxとyを求めてください。表を見る前に自分で追ってみましょう。
x ← 3
y ← x + 4
x ← y - 2
y ← x + y
xとyを出力する
| 実行した行 | x | y | 読み取り方 |
|---|---|---|---|
| x ← 3 | 3 | 未設定 | xの初期値を決める |
| y ← x + 4 | 3 | 7 | 3 + 4をyへ入れる |
| x ← y - 2 | 5 | 7 | 7 - 2をxへ入れる |
| y ← x + y | 5 | 12 | 右辺の5 + 7を計算してからyを更新する |
| xとyを出力する | 5 | 12 | 出力はxが5、yが12 |
答えはx = 5、y = 12です。 y ← x + 4を「いつでもx + 4になる関係」と読むと、後でxが変わったときにyも勝手に変えてしまいます。代入はその行を実行した時点だけ行い、その後はyを更新する行に来るまで7のままです。
例2:配列から、条件に合う値だけを足す
オリジナル練習例: 配列Aを {3, 8, 2, 7} とし、要素番号は1から始めます。次の処理で出力されるtotalを求めてください。Aの値は処理中に変更しません。
A ← {3, 8, 2, 7}
total ← 0
for (iを1から4まで1ずつ増やす)
if (A[i] ≧ 5)
total ← total + A[i]
endif
endfor
totalを出力する
| i | A[i] | A[i] ≧ 5 | 更新前のtotal | その回の終了後のtotal |
|---|---|---|---|---|
| 1 | 3 | 偽 | 0 | 0 |
| 2 | 8 | 真 | 0 | 8 |
| 3 | 2 | 偽 | 8 | 8 |
| 4 | 7 | 真 | 8 | 15 |
答えは15です。 forは4回実行されますが、加算する行は条件が真となる2回だけ実行されます。i = 3の回はtotalが0へ戻るのではなく、前の8を保持します。
ここではiは要素番号、A[i]はその場所に入っている値です。i = 2ならA[i]は8なので、totalへ2を足さないようにします。配列を変更する問題では、さらに各要素の列を作り、変更した場所だけ書き換えると追いやすくなります。
例3:whileは、条件を確かめてから中へ入る
オリジナル練習例: 初期値n = 1、count = 0から始め、次の処理で出力されるnとcountを求めます。
n ← 1
count ← 0
while (n < 10)
n ← n × 2
count ← count + 1
endwhile
nとcountを出力する
| 処理・判定 | n | count | 次に行うこと |
|---|---|---|---|
| 初期値 | 1 | 0 | 1 < 10は真 |
| 1回目:nを更新 | 2 | 0 | countを更新する |
| 1回目:countを更新 | 2 | 1 | 2 < 10は真、次の回へ |
| 2回目:nを更新 | 4 | 1 | countを更新する |
| 2回目:countを更新 | 4 | 2 | 4 < 10は真、次の回へ |
| 3回目:nを更新 | 8 | 2 | countを更新する |
| 3回目:countを更新 | 8 | 3 | 8 < 10は真、次の回へ |
| 4回目:nを更新 | 16 | 3 | まだ同じ回のcountを更新する |
| 4回目:countを更新 | 16 | 4 | 16 < 10は偽、繰返しを終了する |
答えはn = 16、count = 4です。 条件はnを更新するたびに割り込んで判定するのではなく、whileへ戻ったときに判定します。nが16になっても、その回のcountの更新は実行します。
自分で確かめるために、初期値nだけを10へ変えてみてください。最初の10 < 10が偽なので、中の処理は一度も実行されず、出力はn = 10、count = 0です。「未満」と「以下」の違い、最初から条件が偽のときも確認すると、回数の数え間違いを見つけられます。
実際の過去問では、同じ表を自分で作る
3例を読んだ後は、次の実際の公開問題で、解説を開く前に表を作ってみてください。この記事の変数や条件を写すのではなく、その問題の初期値・要素番号・繰返し範囲を読み直します。
| 試す問題 | 表で追うところ |
|---|---|
| 令和5年度・問64:整数の総和 | 繰返しの変数と、累計の更新 |
| 令和5年度・問60:配列の並べ替え | 比較した要素と、交換後の配列 |
| 令和7年度・問99:条件分岐による賞金額 | 入力ごとに真になる条件と戻り値 |
間違えたら、答えだけ直さず、自分の表と正しい処理が最初に違った行を探します。初期値、配列の番号、条件の真偽、更新順序、終了判定のどこかを特定し、そこからもう一度追います。
ほかの題材はアルゴリズムとプログラミングの過去問にあります。学習アプリで同じ分野を練習することもできます。間違いの残し方は復習方法、試験全体での時間の使い方は模擬試験の時間配分へ進んでください。
よくある質問
Qプログラミング経験がなくても擬似言語を読めますか?
まず、問題に示された記号や条件を確認し、代入、条件分岐、繰返しを小さな値で追う練習から始められます。このページでは実行環境を使わず、表に値を書いて結果を確かめます。特定のプログラミング言語の記法とは区別して読みましょう。
Q配列の要素番号は必ず1から始まりますか?
必ず1からとは決めつけられません。このページの例は1から始めると明記していますが、実際には各問題の本文や注記を確認します。要素番号と、その位置に入っている値も分けて記録してください。
Q繰返しの回数を間違えるときは何を記録すればよいですか?
初期値、条件を判定したときの値、各更新の後の値、最後に条件が偽となった判定を記録します。例3では4回処理しますが、whileの条件判定は終了時を含め5回あります。処理回数と判定回数を分けると確認しやすくなります。
関連する過去問
この記事の内容を、実際の問題で確かめましょう。
出典・確認日
編集・確認:kakoloop · 編集方針
- IPA:ITパスポート試験 シラバス Ver.6.5、本文38ページ(データ構造、アルゴリズムとプログラミング)(2026-10-08確認)
- IPA:試験で使用する情報技術に関する用語・プログラム言語など Ver.5.1、別紙1(ITパスポート試験用)(2026-10-08確認)