本分野はITパスポート試験シラバスのテクノロジ系・大分類7「基礎理論」の中分類14に当たり、小分類は「36 データ構造」「37 アルゴリズムとプログラミング」「38 プログラム言語」「39 その他の言語」の4つで構成される。シラバス改訂「iパス6.0」(Ver.6.0、2021年10月公表)により、2022年4月(令和4年4月)の試験から、特定のプログラム言語に依存しない擬似言語でプログラミング的思考力を問う問題の出題が始まった。
アルゴリズムの基本構造(基本制御構造)は「順次」「選択」「繰返し」の3つで、表現方法には流れ図(フローチャート)と擬似言語がある。流れ図の記号はJIS X 0121で規定され、ひし形は「判断」(条件による分岐)、長方形は「処理」を表す。データ構造の用語例はリスト、キュー、スタック、木構造、2分木。スタックは後入れ先出し(LIFO)でデータの格納をプッシュ(push)、取出しをポップ(pop)と呼び、キューは先入れ先出し(FIFO)で最初に格納したデータから順に取り出される。この対比は頻出である。
シラバスが代表的なアルゴリズムとして明記するのは、探索(線形探索法・2分探索法)、整列(選択ソート・バブルソート・クイックソート)、併合(マージ)。線形探索法は先頭から順に比較するため平均比較回数は約(n+1)/2回・最大n回。2分探索法は整列済みのデータ列が前提で、比較のたびに探索範囲が半分に絞られるため最大でも約log2(n)回(n=1,000件なら約10回)で済む。バブルソートは隣り合う要素の比較・交換を繰り返す方法で、比較回数はn(n−1)/2回(オーダはO(n^2))。クイックソートは基準値(ピボット)より小さい組と大きい組への分割を再帰的に繰り返す整列法(C.A.R.ホーア考案)で、平均計算量はO(n log n)である。
擬似言語の読解では、IPA公式の記述形式を確実に押さえたい。
関数・手続は引数を受け取り、処理結果を戻り値として返す。IPA公開の擬似言語サンプル問題の問1は、配列dataArrayの要素の平均を返す関数calcMean(宣言は「○実数型: calcMean(実数型の配列: dataArray)」)の穴埋めで、正解は「ア」——sumに要素dataArray[i]を順次加算して合計を求め、合計を要素数で割るという定石の流れである。変数の値を1行ずつトレースする練習が読解力に直結する。
言語の知識も出題される。シラバスの「プログラム言語」の用語例はC、Fortran、Java、C++、Python、JavaScript、R。「その他の言語」ではマークアップ言語のHTML(Hyper Text Markup Language)・XML(Extensible Markup Language)・タグ・SGMLが用語例に挙がり、異なるプログラム言語間のデータのやり取りに用いる言語としてJSON(JavaScript Object Notation)が明記されている。CSVのような単純な表形式のデータ形式との用途の違いも整理しておこう。
1. スタックというデータ構造の特徴として、最も適切なものはどれか。
スタックは後入れ先出し(LIFO:Last In First Out)で、最後に格納(push)したデータを最初に取り出す(pop)データ構造である。 (IPA ITパスポート試験シラバス Ver.6.5 項番36「データ構造」用語例「スタック」)
2. キューというデータ構造の特徴として、最も適切なものはどれか。
キューは先入れ先出し(FIFO:First In First Out)で、最初に格納したデータを最初に取り出すデータ構造である。 (IPA ITパスポート試験シラバス Ver.6.5 項番36「データ構造」用語例「キュー」)
3. 配列(array)の説明として、最も適切なものはどれか。
配列は同じ型の要素を連続して並べ、添字で任意の要素に直接アクセスできるデータ構造である。 (IPA ITパスポート試験シラバス Ver.6.5 項番36「データ構造」)
4. レコード(record)の説明として、最も適切なものはどれか。
レコードは、型が異なってもよい複数の項目(フィールド)を1件分のまとまりとして扱うデータ構造である。 (IPA ITパスポート試験シラバス Ver.6.5 項番36「データ構造」)
5. Webブラウザで「戻る」ボタンを押すと直前に見たページに戻れる。この動作を実現するのに最も適したデータ構造はどれか。
直前(最後)に訪れたページから順に戻るのは後入れ先出しの動作であり、スタックが適している。 (IPA ITパスポート試験シラバス Ver.6.5 項番36「データ構造」用語例「スタック」)
6. プリンタの印刷ジョブを、依頼された順番どおりに処理したい。この処理に最も適したデータ構造はどれか。
依頼された順に処理するのは先入れ先出し(FIFO)であり、キューが適している。 (IPA ITパスポート試験シラバス Ver.6.5 項番36「データ構造」用語例「キュー」)
7. 空のスタックに、数値を 1、2、3、4 の順に格納(push)した後、続けて2回取り出し(pop)を行った。取り出された数値の組合せはどれか。
スタックは後入れ先出しなので、最後に入れた4、次に3の順で取り出される。 (IPA ITパスポート試験シラバス Ver.6.5 項番36「データ構造」用語例「スタック」)
8. 空のキューに、文字を A、B、C の順に格納(エンキュー)した後、2回取り出し(デキュー)を行った。取り出された文字の順序はどれか。
キューは先入れ先出しなので、最初に入れたA、次にBの順で取り出される。 (IPA ITパスポート試験シラバス Ver.6.5 項番36「データ構造」用語例「キュー」)
9. リスト(連結リスト)が配列と比べて優れている点として、最も適切なものはどれか。
リストはポインタのつなぎ替えで挿入・削除ができるため、要素をずらす必要がある配列より途中の挿入・削除が容易である。 (IPA ITパスポート試験シラバス Ver.6.5 項番36「データ構造」用語例「リスト」)
10. 木構造において、最上位に位置し親を持たない節点(ノード)を何と呼ぶか。
木構造の最上位にあり親を持たない節点を根(ルート)と呼ぶ。子を持たない末端の節点は葉(リーフ)である。 (IPA ITパスポート試験シラバス Ver.6.5 項番36「データ構造」用語例「木構造」)
11. 2分木(二分木)の説明として、最も適切なものはどれか。
2分木は、各節点が持つ子の数が最大2個(左と右)である木構造である。 (IPA ITパスポート試験シラバス Ver.6.5 項番36「データ構造」用語例「2分木」)
12. 木構造において、子を1つも持たない末端の節点を何と呼ぶか。
木構造で子を持たない末端の節点を葉(リーフ)と呼ぶ。 (IPA ITパスポート試験シラバス Ver.6.5 項番36「データ構造」用語例「木構造」)
13. 空のスタックに 1、2、3、4、5 をこの順に格納(push)し、その後すべて取り出し(pop)た。取り出される数値の順序はどれか。
スタックは後入れ先出しなので、最後に入れた5から逆順に取り出され、5、4、3、2、1となる。 (IPA ITパスポート試験シラバス Ver.6.5 項番36「データ構造」用語例「スタック」)
14. 空のスタックに対し、push(1)、push(2)、pop、push(3)、pop、pop の順に操作した。pop で取り出される値を順に並べたものはどれか。
push(1),push(2)で[1,2]。popで2、push(3)で[1,3]、popで3、popで1となり、取り出し順は2、3、1である。 (IPA ITパスポート試験シラバス Ver.6.5 項番36「データ構造」用語例「スタック」)
15. 次のうち、先入れ先出し(FIFO)で処理するのが自然な業務はどれか。
着信した順に応対するのは先入れ先出し(FIFO)であり、キューの考え方に一致する。 (IPA ITパスポート試験シラバス Ver.6.5 項番36「データ構造」用語例「キュー」)
16. 線形探索法(リニアサーチ)の説明として、最も適切なものはどれか。
線形探索法は、データを先頭から順番に1つずつ比較して目的の値を探す方法である。 (IPA ITパスポート試験シラバス Ver.6.5 項番37 用語例「線形探索法」)
17. 2分探索法(バイナリサーチ)の説明として、最も適切なものはどれか。
2分探索法は、あらかじめ整列されたデータに対して中央の値と比較し、探索範囲を半分ずつ絞り込む方法である。 (IPA ITパスポート試験シラバス Ver.6.5 項番37 用語例「2分探索法」)
18. 2分探索法を適用するために、データが満たしていなければならない前提条件はどれか。
2分探索法は中央の値と大小比較して範囲を絞るため、データがあらかじめ整列されていることが前提となる。 (IPA ITパスポート試験シラバス Ver.6.5 項番37 用語例「2分探索法」)
19. n個のデータに対して線形探索法を行うとき、最悪の場合の比較回数はおよそ何回か。
線形探索は先頭から順に比較するため、目的のデータが末尾にある、または存在しない場合、最悪でn回の比較が必要となる。 (IPA ITパスポート試験シラバス Ver.6.5 項番37 用語例「線形探索法」)
20. n個の整列済みデータに対して2分探索法を行うとき、最悪の場合の比較回数はおよそ何回か。
2分探索は1回の比較で探索範囲が半分になるため、最悪でも約log₂n回の比較で済む。 (IPA ITパスポート試験シラバス Ver.6.5 項番37 用語例「2分探索法」)
21. 整列済みの大量データから特定の値を効率よく探したい。線形探索法と2分探索法を比較した説明として、最も適切なものはどれか。
整列済みデータでは2分探索法の比較回数は約log₂nで、線形探索の最悪n回より少なく、件数が多いほど差が広がり有利になる。 (IPA ITパスポート試験シラバス Ver.6.5 項番37 用語例「2分探索法」「線形探索法」)
22. 整列されていないデータの中から目的の値を探す場合に使える探索法はどれか。
線形探索法は整列の有無に関わらず使えるが、2分探索法は整列済みが前提のため未整列データには適用できない。 (IPA ITパスポート試験シラバス Ver.6.5 項番37 用語例「線形探索法」「2分探索法」)
23. 整列済みの1,000件のデータに対して2分探索法を用いるとき、目的のデータに到達するまでの最悪の比較回数に最も近いものはどれか。
2分探索の最悪比較回数は約log₂nで、log₂1000≒10(2の10乗=1024)であるため約10回となる。 (IPA ITパスポート試験シラバス Ver.6.5 項番37 用語例「2分探索法」)
24. 整列済みの100件のデータを探索するとき、線形探索法の最悪比較回数と2分探索法の最悪比較回数の組合せとして、最も近いものはどれか。
線形探索の最悪は件数と同じ約100回、2分探索は約log₂100≒7回である。 (IPA ITパスポート試験シラバス Ver.6.5 項番37 用語例「線形探索法」「2分探索法」)
25. 昇順に整列された配列に対して2分探索法を行い、探索対象と中央の要素を比較したところ、探している値のほうが中央の要素より大きかった。次に探索範囲とすべきなのはどこか。
昇順に整列されている場合、目的の値が中央より大きければ、中央より後ろ(大きい側)に絞り込んで探索を続ける。 (IPA ITパスポート試験シラバス Ver.6.5 項番37 用語例「2分探索法」)
26. プログラムのソースコードにおける「インデント(字下げ)」の主な目的はどれか。
インデントは処理のまとまりや入れ子構造を視覚的に示し、人がコードを読みやすくするために用いる書き方の工夫である。 (IPA ITパスポート試験シラバス Ver.6.5 項番37「アルゴリズムとプログラミング」コーディング標準)
27. プログラムの「命名規則(ネーミングルール)」を定める主な目的として、最も適切なものはどれか。
命名規則は変数名や関数名の付け方を統一するもので、複数人で開発してもコードが読みやすく保守しやすくなる。 (IPA ITパスポート試験シラバス Ver.6.5 項番37 コーディング標準)
28. コーディング標準(コーディング規約)を定める目的として、最も適切なものはどれか。
コーディング標準は記述形式や命名などのルールを統一し、担当者が違ってもコードの品質・可読性・保守性を保つために定める。 (IPA ITパスポート試験シラバス Ver.6.5 項番37 コーディング標準)
29. プログラムを機能ごとに複数の部品(モジュール)に分割して開発する「モジュール分割」の利点として、最も適切なものはどれか。
モジュール分割により、機能単位で開発・テスト・修正ができ、部品の再利用性や保守性が高まる。 (IPA ITパスポート試験シラバス Ver.6.5 項番37 プログラム構造「モジュール分割」)
30. サブルーチン(副プログラム)の説明として、最も適切なものはどれか。
サブルーチンは、まとまった処理に名前を付けて部品化し、必要な箇所から呼び出して再利用できるようにしたものである。 (IPA ITパスポート試験シラバス Ver.6.5 項番37 プログラム構造「サブルーチン」)
31. プログラム開発における「ライブラリ」の説明として、最も適切なものはどれか。
ライブラリは、汎用的によく使われる関数や処理を部品としてまとめ、他のプログラムから再利用できるようにしたものである。 (IPA ITパスポート試験シラバス Ver.6.5 項番37 プログラム構造「ライブラリ」)
32. API(Application Programming Interface)の説明として、最も適切なものはどれか。
APIは、あるソフトウェアの機能やデータを外部のプログラムから利用するための呼び出し規約(インタフェース)である。 (IPA ITパスポート試験シラバス Ver.6.5 項番37 プログラム構造「API」)
33. 自社のWebサイトに地図表示機能を組み込みたい。地図サービス提供事業者が公開している地図表示機能を、自社プログラムから呼び出して利用するために使うものはどれか。
他社サービスの機能を自社プログラムから呼び出して利用するには、その事業者が公開しているAPIを利用する。 (IPA ITパスポート試験シラバス Ver.6.5 項番37 プログラム構造「API」)
34. ローコード/ノーコード開発の説明として、最も適切なものはどれか。
ローコードはコード記述を最小限に、ノーコードはコードを書かずに、GUI操作などでアプリを開発する手法である。 (IPA ITパスポート試験シラバス Ver.6.5 項番37 プログラム構造「ローコード・ノーコード」)
35. プログラミングの専門知識を持たない業務担当者が、自分で簡単な業務アプリを作りたい。最も適した開発手段はどれか。
ノーコード開発ツールは、コードを書かずに用意された部品を画面上で組み合わせてアプリを作成できるため、専門知識のない担当者に適している。 (IPA ITパスポート試験シラバス Ver.6.5 項番37 プログラム構造「ノーコード」)