アルゴリズムとプログラミング|ITパスポート試験
この分野には 21問あります。くり返し出ているものから並べています。
この分野の出題のようす
この分野の問題が出た回のうち、新しい8回では1回に1〜4問出ています。
| 回 | この |
|---|---|
| 令和8年度 | 3問 |
| 令和7年度 | 3問 |
| 令和6年度 | 2問 |
| 令和5年度 | 3問 |
| 令和4年度 | 4問 |
| 令和3年度 | 1問 |
| 平成30年度 秋期 特別措置試験 | 1問 |
| 平成27年度 秋期 特別措置試験 | 1問 |
この分野でくり返し出ている用語は引数(7問)・配列(6問)・プログラム(4問)・擬似言語(4問)です。問題が多い回は令和4年度(4問)・令和8年度(3問)・令和7年度(3問)です。
この分野でいちばん新しい出題は令和8年度 問88です。
この分野の21問のうち、1問はほかの回にも同じ内容で出ています。
ITパスポートの「アルゴリズムとプログラミング」を過去問の数で見る
この分野には、平成21年度春期から令和8年度までの29回の試験のうち10回から、21問を収めています。この分野の問が無い回は19回で、平成21年度秋期から令和2年度10月までの間にあります。令和4年度より前で問がある回は5回です。令和4〜8年度の5回では15問で、1回あたり3.0問でした。それより前の24回は6問で、1回あたり0.2問です。
よく出る論点
論点は、各問の解説に付けた用語を束ねて数えています。1問がいくつかの論点にまたがって入ることがあります。
擬似言語と関数(変数・引数・戻り値)(10問・6回)
関数は引数で値を受け取り、処理した結果を戻り値として返します。合計を貯める変数が0から始まるとき、そこへ掛け算を重ねても0のままなので、足し込む式でなければ総和になりません。変数の値が1、3、7、13と変わる問では、増えた分を並べると、式の中で繰返しの変数が何倍で入っているかが分かります。一回だけ当てはめて決めると取り違えるので、一段ずつ最後まで確かめます。余りを調べる条件では、割った商ではなく余りを見ます。
問: 令和5年度 問64・令和4年度 問96・令和3年度 問74・令和7年度 問78・令和7年度 問99(平成27年度〜令和7年度)
流れ図とアルゴリズム(7問・6回)
流れ図は、処理の順を決まった形の記号と矢印で描いたもので、分かれるところは菱形、行うところは長方形で表します。戻る矢印は繰り返しです。割った余りを次の箱へ渡していく問は、最大公約数を求める型です。判定を何段も並べた流れ図で比べる回数を少なくするには、件数の多い区分ほど上の段に置きます。
問: 平成27年度春期 問59・令和4年度 問79・平成21年度春期 問72・平成27年度秋期 問48(平成21年度〜令和7年度)
配列と整列・探索(7問・6回)
整列の問は、手続が一巡するごとの並びを紙の上に書き出して追います。隣り合う二つを比べて左が大きければ入れ替える手続では、一度走査するたびに、残りの中で最も大きい値が右端へ送られます。入れ替える条件の向きを逆に読むと、大きい順の並びを選んでしまいます。線形探索法は先頭から順に見るだけなので並びがばらばらでも使え、手間は要素数に比例して増えます。2分探索法は真ん中と比べて範囲を半分ずつ絞る方法で、並び替えてあることが前提です。
問: 令和5年度 問60・令和8年度 問67・令和5年度 問69(平成27年度〜令和8年度)
分岐と反復(4問・2回)
繰返しが何回まわるかは、始める値と終わりの条件で決まります。カウンタを0から始めて6未満の間だけ戻ると、六回目を終えたところで6になって終わり、1から始めると辺が五本しか引かれません。正六角形を描くときに向きを変える角度は外側の角の60度で、内側の角の120度と取り違えやすいところです。一個以上残っていればもう一度行う手順では、残りが一個のときにも実行され、零になったところで終わります。残りが一個で終わりと読むと一回少なく、零のあとにもう一度回ると読むと一回多くなります。
問: 令和8年度 問88・令和7年度 問98(令和7年度〜令和8年度)
数を扱う処理(基数・素数・チェックデジット)(3問・3回)
2進数を10進数に直す問では、桁の重みは末尾から一つ目が一、二つ目が二、三つ目が四と、二を掛けながら大きくなります。桁の数字と重みを掛けたものは合計に足し込みます。零から始まる合計に掛けると、何を掛けても零のままです。素数を調べる関数では、いちばん小さい素数の2を下回る値を先にはじき、割る数を2から順に増やして割り切れるかを見ます。
問: 令和6年度 問85・令和4年度 問78・令和8年度 問85(令和4年度〜令和8年度)
データ構造(スタック・キュー・木構造)(2問・2回)
スタックは最後に入れたものを最初に取り出す後入れ先出しで、入れた順と出す順がちょうど逆になります。キューは待ち行列とも呼ばれ、先に入れたものから出ていきます。ファイルシステムを木構造で表すと、根がルートディレクトリで、下に枝を持つ節にはディレクトリだけが入ります。
問: 平成30年度秋期 問76・令和4年度 問90(平成30年度〜令和4年度)
取り違えやすい組
空白を除いて30字以下の短い誤りの選択肢に、別の問の解説で用語として挙げた語が入っていた問を、その問の用語と組にして数えました。この分野で組になったのは、ディレクトリと木構造 1問の1組だけです(令和4年度 問90)。この問の誤りの肢が入れ替えているのは、木構造の節と葉に置くディレクトリとファイルです。節は下にさらに何かをぶら下げている中間の位置なので、ディレクトリだけが入ります。葉は下に何もぶら下げていない末端の位置で、ファイルのほか、空のディレクトリを許すと断ってある問ではディレクトリも葉に置けます。
最近の出方
令和4〜8年度の5回と、それより前の24回を、1回あたりの問の数で比べました。最近の5回は回の数が少ないので、1問の違いで1回あたり0.2問動きます。この幅を超えて動いた論点は4つです。増えたのは擬似言語と関数(0.08問→1.60問)、配列と整列・探索(0.08問→1.00問)、分岐と反復(0.00問→0.80問)、数を扱う処理(0.00問→0.60問)でした。減った論点はありません。最近の5回の15問は、令和4年度4問、令和5年度3問、令和6年度2問、令和7年度3問、令和8年度3問でした。
進め方
問の多い擬似言語と関数、流れ図とアルゴリズム、配列と整列・探索の3つから解くと、この分野の21問のうち17問に当たります(2つ以上の論点に入る問は1問と数えています)。この分野の21問のうち12問は、肢がすべて数字の問か、問の文に計算とある問です(最近の5回では9問)。変数や配列の値が一回ごとにどう変わるかを、紙に書き出しながら追います。この分野の全問は アルゴリズムと
対策問題(オリジナル)
過去問の傾向をもとに作ったオリジナルの問題です。本試験の問題ではありません。
1/10問・擬似言語と関数(変数・引数・戻り値)
関数fは、正の整数を引数nで受け取る。関数の中では、整数型の変数sに0を入れてから、kを1からnまで1ずつ増やしながら s ← s + k × k を繰り返し、最後にsを戻り値として返す。f(4)として呼び出したときの戻り値はどれか。
- ア 10
- イ 16
- ウ 30
- エ 0
正解と
解説 正解はウです。
sは0から始まり、kが1、2、3、4と進むたびに、そのkを2回掛けた値が足し込まれます。足されるのは1、4、9、16なので、sは1、5、14、30と変わり、最後に30が返ります。式は前のsに足す形なので、それまでの合計は消えずに残ります。
- ア10は1から4までをそのまま足した値で、kを2回掛けてから足すという式の中身を読み落としています。
- イ16は最後の回に足す4×4だけを取り出した値です。式は前のsに足し込む形なので、前の回までの1、4、9も合計に残ります。
- エ0は、0から始まるsに掛け算を重ねたときに出る値です。この式は足し算でsを増やすので、最初が0でも合計は増えていきます。
この論点の過去問:令和5年度 ITパスポート
試験 問64 2/10問・擬似言語と関数(変数・引数・戻り値)
整数型の変数xに2を入れてから、iを1から3まで1ずつ増やしながら x ← 2 × x − i を繰り返す。繰返しを1回終えるごとのxの値を、はじめの値から順に並べたものはどれか。
- ア 2→3→4→5
- イ 2→3→5→9
- ウ 2→4→8→16
- エ 2→1→−1→−4
正解と
解説 正解はアです。
1回目はiが1なので、2の2倍の4から1を引いて3になります。2回目はiが2になり、3の2倍の6から2を引いて4、3回目はiが3で、4の2倍の8から3を引いて5です。iが1回ごとに増えるので、引く数も1、2、3と変わるところを一段ずつ追います。
- イ1回目の3は合っていますが、2回目以降も1を引き続けた並びです。引く数はiなので、2回目は2、3回目は3を引きます。
- ウ2倍したあとにiを引く手順を落とした並びで、xが倍々に増えるだけになっています。
- エxを2倍する手順を落とし、iを引くだけにした並びです。
この論点の過去問:令和4年度 ITパスポート
試験 問96 ・令和3年度 ITパスポート試験 問74 3/10問・擬似言語と関数(変数・引数・戻り値)
ある手続は、整数型の変数cに0を入れてから、iを1から10まで1ずつ増やしながら、iを4で割った余りが1と等しいときだけcに1を加える。繰返しが終わったあとにcの値を出力する。出力はどれか。
- ア 2
- イ 3
- ウ 4
- エ 15
正解と
解説 正解はイです。
4で割った余りが1になるのは、1、5、9の三つです。1は4で割ると商が0で余りが1なので、条件に当たります。条件に当たった回にはcに1を足すので、cは三回増えて3になります。
- ア2は5と9だけを数えた値です。1を4で割ると商は0で余りは1なので、1も条件に当たります。
- ウ4は、余りが1になるiではなく、商が1になるiを数えた値です。商が1になるのは4から7までの四つですが、この手続が見ているのは余りです。
- エ15は、条件に当たった1、5、9を足した値です。cに足すのはiの値ではなく1なので、出力されるのは当たった回数です。
この論点の過去問:令和7年度 ITパスポート
試験 問78 4/10問・流れ図とアルゴリズム
次の手順で処理する。終了したときのxの値はどれか。
(1) xに84、yに36を入れる。
(2) yが0なら(4)へ進む。
(3) xをyで割った余りをrに入れ、xにyの値を、yにrの値を入れてから(2)へ戻る。
(4) 終了する。
- ア 0
- イ 36
- ウ 48
- エ 12
正解と
解説 正解はエです。
1回目は84を36で割った余りの12を求め、xが36、yが12になります。2回目は36を12で割ると割り切れて余りが0になり、xが12、yが0になったところで終わります。割った余りを次へ渡していくこの手順は、二つの数の最大公約数を求める型で、84と36の最大公約数は12です。
- ア0は最後にyへ入る余りです。問われているのはxで、余りが0になったときにxに入っている直前の数が答えになります。
- イ36は1回目を終えたときのxの値です。yがまだ12で0ではないので、手順は続きます。
- ウ48は84から36を一度引いた値で、余りを求める手順とも、終わりの条件とも合いません。
5/10問・流れ図とアルゴリズム
データを1件ずつ読み、判定を3段に並べて区分を見分ける流れ図がある。1段目で当たらなければ2段目、2段目で当たらなければ3段目で判定し、3段目でも当たらなければ「その他」として処理する。区分ごとの件数は、Pが20件、Qが60件、Rが15件、その他が5件である。判定の回数の合計が最も少なくなる、1段目から3段目までの区分の並べ方はどれか。
- ア P→Q→R
- イ Q→R→P
- ウ Q→P→R
- エ R→P→Q
正解と
解説 正解はウです。
1段目で当たる区分は1回、2段目は2回、3段目は3回判定され、その他の5件はどの並べ方でも3回ずつです。件数の多い順にQ、P、Rと置くと、60×1+20×2+15×3+5×3で160回になり、四つの中で最も少なくなります。件数の多い区分ほど上の段に置くと、全体の回数が減ります。
- アPを1段目に置くと、60件あるQが2段目に回り、合計は200回になります。
- イQを1段目に置いた点は合っていますが、15件のRを20件のPより先に判定しているので、合計は165回で160回より多くなります。
- エ件数の少ないRから判定する並べ方で、合計は250回になり、四つの中で最も多くなります。
この論点の過去問:平成27年度 秋期 ITパスポート
試験 ・令和7年度 ITパスポート(特別措置試験) 問48 試験 問99 6/10問・配列と整列・探索
配列の要素を先頭から見ていき、隣り合う二つを比べて左のほうが大きければ入れ替える、という走査を末尾まで行う。配列{5, 2, 4, 1, 3}に対してこの走査を1回だけ行ったあとの並びはどれか。
- ア 1, 2, 3, 4, 5
- イ 1, 2, 4, 5, 3
- ウ 5, 4, 2, 3, 1
- エ 2, 4, 1, 3, 5
正解と
解説 正解はエです。
5と2を比べて入れ替え、次に5と4、5と1、5と3も入れ替えるので、最も大きい5が右端まで送られます。5より前に並んでいた2と4は、ここでは比べ直されないので、1回目の走査を終えた並びは2, 4, 1, 3, 5です。小さい順にそろうのは、この走査を何回か繰り返したあとです。
- アすべて並べ終えたあとの並びで、1回の走査ではまだ1と3が途中に残っています。
- イ全体の中で最も小さい1を探して先頭と入れ替えた形です。この手続は隣どうしを比べるだけなので、1が一度に先頭まで飛ぶことはありません。
- ウ左のほうが小さいときに入れ替えると読んだ形で、比べる向きが逆です。
この論点の過去問:令和5年度 ITパスポート
試験 問60 7/10問・配列と整列・探索
1,000件の商品の番号を配列に入れておき、その中から一つの番号を探す。探し方の説明のうち、誤っているものはどれか。
- ア 番号が小さい順に並んでいなくても、2分探索法なら真ん中から比べて範囲を半分ずつ絞れる。
- イ 番号がばらばらに入っていても、線形探索法なら先頭から一つずつ比べて探せる。
- ウ 線形探索法で、探す番号がたまたま先頭にあれば、1回比べるだけで見つかる。
- エ 線形探索法で最後まで比べる場合の回数は、配列の件数が増えるのに比例して増える。
正解と
解説 正解はアです。
2分探索法は、真ん中の値と比べて、探す値がそれより前にあるか後ろにあるかを決め、範囲を半分ずつ絞ります。前か後ろかを決められるのは、配列があらかじめ小さい順か大きい順に並び替えてあるときだけです。並び替えていない配列には使えないので、この説明が誤りです。
- イ線形探索法は先頭から順に見るだけなので、並び方に関わらず使えます。
- ウ探す値が先頭にあれば最初の比較で見つかるので、正しい説明です。
- エ最後まで見る場合の手間は要素数に比例して増えるので、正しい説明です。
この論点の過去問:令和5年度 ITパスポート
試験 問69 8/10問・分岐と反復
ペンの上げ下げ、直進、右回りの向き変えができるロボットに、1辺が1mの正五角形を描かせる。次の手順のa、bに入れる字句の適切な組合せはどれか。
(1) ペンを下ろす。
(2) 回数を数える変数cに1を入れる。
(3) 1m進み、右回りに b 度向きを変え、cに1を加える。
(4) cが a ならば(3)に戻る。
(5) ペンを上げる。
- ア a 5以下・b 108
- イ a 5以下・b 72
- ウ a 5未満・b 72
- エ a 6未満・b 108
正解と
解説 正解はイです。
cを1から始めると、1辺目を描いたあとcは2になり、5辺目を描いたあとcは6になります。5辺を描くには、cが5以下の間だけ(3)へ戻り、6になったら抜ければよいので、aは5以下です。向きを変える角度は外側の角で、一周の360度を五つに分けた72度なので、bは72です。
- アaは合っていますが、bの108度は正五角形の内側の角です。108度ずつ曲がると5辺を描いても出発点に戻らず、正五角形になりません。
- ウ5未満にすると、4辺目を描いてcが5になったところで抜けるので、辺が四本しか引かれません。
- エ整数のcでは6未満は5以下と同じなので回数は合いますが、bを内側の角の108度にしています。
この論点の過去問:令和8年度 ITパスポート
試験 問88 9/10問・数を扱う処理(基数・素数・チェックデジット)
2進数を表す文字列「1011」を、左の桁から1文字ずつ読んで整数に直す。整数型の変数vに0を入れてから、1文字読むごとに v ← v × 2 +(読んだ桁の数字)を行う。4文字を読み終えるまでに、vの値はどう変わるか。
- ア 1→2→5→11
- イ 1→3→6→13
- ウ 1→3→7→15
- エ 2→4→10→22
正解と
解説 正解はアです。
1文字目の1で、0×2+1の1になります。続いて0を読んで1×2+0の2、1を読んで2×2+1の5、最後の1で5×2+1の11です。1011を末尾から重み1、2、4、8で直すと、1+2+0+8の11になり、同じ値になります。
- イ文字列を右の桁から読んだ並びで、1101を直した13になっています。
- ウ読んだ桁の数字を使わず、毎回1を足した並びで、0の桁も1として数えています。
- エ桁の数字を足してから2を掛けた並びで、最後に余分な2倍がかかり、答えが11の2倍になっています。
この論点の過去問:令和6年度 ITパスポート
試験 問85 10/10問・データ構造(スタック・キュー・木構造)
空のスタックに、A、B、Cの順に一つずつ積み、一つ取り出す。次にDを積み、続けて二つ取り出す。取り出したものを、取り出した順に並べたものはどれか。
- ア A, B, C
- イ D, C, B
- ウ C, D, B
- エ C, B, A
正解と
解説 正解はウです。
スタックは最後に積んだものから取り出します。A、B、Cと積んだあとの一つ目はCです。次にDを積むと、いちばん上はDになり、その下にBがあるので、続く二つはD、Bの順に出ます。中にはAだけが残ります。
- ア先に入れたものから出す順で、キューを使ったときの並びです。
- イDまで四つとも積んでから三つ取り出したときの並びで、Cを先に一つ取り出す手順を飛ばしています。
- エDを積む手順を落とした並びです。Dを積んだ時点でいちばん上はDになるので、二つ目に出るのはDです。
この論点の過去問:平成30年度 秋期 ITパスポート
試験 (特別措置試験) 問76
問題一覧
- 令和7年度 問98過去5回出題4個の要素から成るデータの並びを,次の手順を繰り返して昇順に整列するとき,整列が終了するまでに(1)から(3)の一連の手順は,何回実行されるか。ここで,最初はデータの並び全体を整列対象とする。
- 平成27年度 春期 特別措置試験 問87〔中問A・テクノロジ〕P社では,一度の解錠で同時に複数の社員が入退室することがあり,入室と退室の記録の数が合わないという問題が発生していることが分かった。そこで,毎日,入退室記録表を使って,前日の入退室の回数が一致しない社員がいないかどうかを確認することにした。次に示す入退室確認では,前日の日付で,同一区画での入室と退室の回数が一致していないICカード番号を調べる手順を示している。a,bに入れる字句の適切な組合せはどれか。
- 令和4年度 問90ディレクトリ又はファイルがノードに対応する木構造で表現できるファイルシステムがある。ルートディレクトリを根として図のように表現したとき,中間ノードである節及び末端ノードである葉に対応するものの組合せとして,最も適切なものはどれか。ここで,空のディレクトリを許すものとする。
- 令和8年度 問88プログラミングすることによって,ペンの上げ下げ,直進及び右回りの方向転換が可能なロボットがある。このロボットに1辺が1mの正六角形を描画させるプログラムを作成した。次の正六角形描画プログラムのa,bに入れる字句の適切な組合せはどれか。
- 平成27年度 春期 特別措置試験 問59プログラムの処理手順を図式を用いて視覚的に表したものはどれか。
- 平成21年度 春期 問72図 1 のように二つの正の数値 A1,A2 を読み取り,二つの数値 B1,B2 を出力するボックスがある。B1 には A2 と同じ数値を出力し,B2 には A1 を A2 で割った余りを出力する。図 2 のようにこのボックスを 2 個つないだ場合,A1=15,A2=6 のとき後方のボックスの B1 に出力される数値は幾らか。
- 令和7年度 問78手続calcMod3を呼び出したときの出力はどれか。
- 令和5年度 問60手続printArrayは,配列integerArrayの要素を並べ替えて出力する。手続printArrayを呼び出したときの出力はどれか。ここで,配列の要素番号は1から始まる。
- 令和8年度 問67手続sortは,要素数が2以上の整数型の配列を引数numberArrayで受け取り,その要素を昇順に並べ替えた結果を出力する。手続sortの動作確認のために,処理の途中でjの値とworkArrayの全ての要素を出力する。配列numberArrayを{3, 5, 1, 2, 4}とし,手続sortをsort(numberArray)として呼び出したとき,jの値が3と出力された直後のworkArrayの全ての要素の出力はどれか。ここで,配列の要素番号は1から始まる。
- 令和3年度 問74流れ図Xで示す処理では,変数 i の値が,1→3→7→13 と変化し,流れ図Yで示す処理では,変数 i の値が,1→5→13→25 と変化した。図中のa,bに入れる字句の適切な組合せはどれか。
- 令和4年度 問79流れ図で示す処理を終了したとき,xの値はどれか。
- 平成27年度 秋期 特別措置試験 問48表に示す構成のデータを,流れ図の手順で処理する場合について考える。流れ図中のx,y,zをそれぞれデータ区分A,B,Cと適切に対応させれば,比較(“xか?”,“yか?”,“zか?”)の回数の合計は,最低何回で済むか。
- 平成30年度 秋期 特別措置試験 問76複数のデータが格納されているスタックからのデータの取出し方として,適切なものはどれか。
- 令和5年度 問69配列に格納されているデータを探索するときの,探索アルゴリズムに関する記述のうち,適切なものはどれか。
- 令和6年度 問85関数binaryToIntegerは,1桁以上の符号なし2進数を文字列で表した値を引数binaryStrで受け取り,その値を整数に変換した結果を戻り値とする。例えば,引数として“100”を受け取ると,4を返す。プログラム中のa,bに入れる字句の適切な組合せはどれか。
- 令和4年度 問96関数calcXと関数calcYは,引数inDataを用いて計算を行い,その結果を戻り値とする。関数calcXをcalcX(1)として呼び出すと,関数calcXの変数numの値が,1→3→7→13と変化し,戻り値は13となった。関数calcYをcalcY(1)として呼び出すと,関数calcYの変数numの値が,1→5→13→25と変化し,戻り値は25となった。プログラム中のa,bに入れる字句の適切な組合せはどれか。
- 令和7年度 問99関数calculateAmountOfPrizeは,業務改善の効果における改善額と短縮期間を,それぞれimprovementとperiodで受け取り,賞金額を戻り値とする。改善額が20万円で短縮期間が3日の業務改善と,改善額が5万円で短縮期間が14日の業務改善があった。この二つの賞金額の合計は何円か。ここで,改善額と短縮期間の値はそれぞれ0以上とする。
- 令和4年度 問78関数checkDigitは,10進9桁の整数の各桁の数字が上位の桁から順に格納された整数型の配列originalDigitを引数として,次の手順で計算したチェックデジットを戻り値とする。プログラム中のaに入れる字句として,適切なものはどれか。ここで,配列の要素番号は1から始まる。
- 令和6年度 問62関数convertは,整数型の配列を一定のルールで文字列に変換するプログラムである。関数convertをconvert(arrayInput)として呼び出したときの戻り値が“AABAB”になる引数arrayInputの値はどれか。ここで,arrayInputの要素数は1以上とし,配列の要素番号は1から始まる。
- 令和8年度 問85関数isPrimeは,引数として与えられた正の整数が,素数であればtrueを,素数でなければfalseを戻り値とする。例えば,関数isPrimeをisPrime(2)として呼び出したときの戻り値はtrueである。プログラム中のa,bに入れる字句の適切な組合せはどれか。
- 令和5年度 問64関数sigmaは,正の整数を引数maxで受け取り,1からmaxまでの整数の総和を戻り値とする。プログラム中のaに入れる字句として,適切なものはどれか。
正解と解説は、答え合わせのあとに出ます。
年度別
この分野の問題は 10年度ぶんの試験から出ています。いちばん新しいのは令和8年度です。年度別に解くと、回ごとにまとめて解けます。