情報処理技術者試験 過去問(ソフトウェア-開発ツール,その他) -情報処理シンプルまとめ

情報処理技術者試験 過去問(ソフトウェア-開発ツール,その他)のブログのアイキャッチ画像 ソフトウェア

 情報処理技術者試験(今のところは基本情報技術者試験)の過去問(ソフトウェア-開発ツール,その他)を集めて,シンプルにまとめています。言語プロセッサ(言語処理系),コンパイラ(字句解析,構文解析(四つ組形式,三つ組形式),意味解析,最適化,コード生成),リンカ(動的リンキング),ローダー,インタプリタ,CASEツール(上流CASEツール),デバッグを支援するツール(静的解析ツール),テストを支援するツール(カバレージモニター),オープンソースソフトウェア(OSS)(コピーレフト),統合開発環境(Eclipseなど)について,理解度を確認することができます。解けなかった問題や,完全に理解できていない問題については,【参考】にあるリンク先ページを読んで,もう一度,解いてみてください。難しい問題もあると思いますが,繰り返し解くことにより,だんだんと身に付いてきますので,根気よく頑張りましょう。

  1. 平成21年度 基本情報技術者試験 春期 午前 問22
  2. 平成30年度 基本情報技術者試験 秋期 午前 問19
  3. 平成27度 基本情報技術者試験 秋期 午前 問19
  4. 平成22度 基本情報技術者試験 春期 午前 問22
  5. 平成30年度 基本情報技術者試験 春期 午前 問18
  6. 平成22年度 基本情報技術者試験 秋期 午前 問22
  7. 平成28年度 基本情報技術者試験 春期 午前 問19
  8. 平成26年度 基本情報技術者試験 春期 午前 問18
  9. 平成23年度 基本情報技術者試験 秋期 午前 問22
  10. 平成30年度 基本情報技術者試験 秋期 午前 問20
  11. 平成28年度 基本情報技術者試験 春期 午前 問20
  12. 平成24年度 基本情報技術者試験 秋期 午前 問20
  13. (令和4年度) 基本情報技術者試験 サンプル問題 科目A 問16
  14. 平成31年度 基本情報技術者試験 春期 午前 問19
  15. 平成23年度 基本情報技術者試験 特別 午前 問23
  16. 平成21年度 基本情報技術者試験 秋期 午前 問20
  17. 平成22年度 基本情報技術者試験 秋期 午前 問23
  18. 平成28年度 基本情報技術者試験 春期 午前 問21
  19. 平成26年度 基本情報技術者試験 春期 午前 問19
  20. 平成23年度 基本情報技術者試験 秋期 午前 問23
  21. 平成25年度 基本情報技術者試験 春期 午前 問22
  22. 平成31年度 基本情報技術者試験 春期 午前 問20
  23. 平成21年度 基本情報技術者試験 春期 午前 問23
  24. 平成25年度 基本情報技術者試験 秋期 午前 問21
  25. 平成21年度 基本情報技術者試験 秋期 午前 問21
  26. 平成26年度 基本情報技術者試験 秋期 午前 問20
  27. 平成30年度 基本情報技術者試験 春期 午前 問19
  28. 平成24年度 基本情報技術者試験 秋期 午前 問21
  29. 平成27年度 基本情報技術者試験 秋期 午前 問20
  30. 平成30年度 基本情報技術者試験 春期 午前 問20
  31. まとめ

平成21年度 基本情報技術者試験 春期 午前 問22

 図はプログラムを翻訳して実行するまでの流れを示したものである。コンパイラ,リンカ,ローダの入出力の組合せとして,適切なものはどれか。

「平成21年度 基本情報技術者試験 春期 午前 問22」の問題_画像01

a

b

c

目的プログラムライブラリモジュールロードモジュール
ライブラリモジュールロードモジュール目的プログラム
ロードモジュール目的プログラムライブラリモジュール
ロードモジュールライブラリモジュール目的プログラム

【解答】

【解説】

プログラムを翻訳して実行するまでの流れは,次のようになる。

「平成21年度 基本情報技術者試験 春期 午前 問22」の解答_画像01

平成30年度 基本情報技術者試験 秋期 午前 問19

 手続型言語のコンパイラが行う処理のうち,最初に行う処理はどれか。

ア 意味解析イ 構文解析ウ 最適化エ 字句解析

【解答】

【解説】

■ コンパイラ

高水準言語で記述されたソースプログラムを機械語に変換するソフトウェアである。

※ 変換過程で最適化されるため実行速度が速い

「平成30年度 基本情報技術者試験 秋期 午前 問19」の解答_画像01

※ オブジェクトプログラムだけでは実行できない(オブジェクトプログラムから呼び出されるコードが記述されている他のオブジェクトプログラムやライブラリファイルなどと連結していないため)

字句解析ソースプログラム内の文字列を,予約語や定数,区切り記号などの最小単位(トークン)に分解する
構文解析トークンを読み込んで構文木を生成し,構文規則に従っているかをチェックする
意味解析変数の使用や演算におけるデータ型の整合性などをチェックし,(最適化を行いやすくするために)中間コードに変換する

※ 中間コードには,三つ組形式や四つ組形式,逆ポーランド表記法(後置表記法)などがある

※ 四つ組形式の例)(+,A,B,T)⇒ T=A+B

最適化プログラムのサイズを小さくしたり,実行速度を向上させるために構造を変換させるなどする
コード生成オブジェクトプログラムに変換する

平成27度 基本情報技術者試験 秋期 午前 問19

 コンパイラで構文解析した結果の表現方法の一つに四つ組形式がある。

(演算子,被演算子1,被演算子2,結果)

  この形式は,被演算子1と被演算子2に演算子を作用させたものが結果であることを表す。次の一連の四つ組は,どの式を構文解析したものか。ここで,T1,T2,T3は一時変数を表す。

(*,B,C,T1

(/,T1,D,T2

(+,A,T2,T3

ア A+B*C/Dイ A+B*C/T2
ウ B*C+A/Dエ B*C+T1/D

【解答】

【解説】

一連の四つ組を順に展開すると,

(*,B,C,T1)⇒ T1=B*C

(/,T1,D,T2)⇒ T2=T1/D ⇒ T2=B*C/D

(+,A,T2,T3)⇒ T3=A+T2 ⇒ A+B*C/D

となる。

平成22度 基本情報技術者試験 春期 午前 問22

 次の一連の3アドレス命令で得られる結果 x を表す式はどれか。ここで,3アドレス命令では,三つのオペランドを用いた命令 “c = a op b” を “op(a,b,c)” として表記する。op は一つの演算子を表し,結果 x を表す式においては優先順位の高い順に *,/,+,- とする。

/ (c,d,w1)

+ (b,w1,w2)

/ (e,f,w3)

- (w3,g,w4)

* (w2,w4,x)

ア b+c/d*e/f-gイ b+c/d*(e/f-g)
ウ (b+c/d)*e/f-gエ (b+c/d)*(e/f-g)

【解答】

【解説】

一連の3アドレス命令を順に展開すると,

/ (c,d,w1) ⇒ w1=c/d

+ (b,w1,w2) ⇒ w2=b+w1 ⇒ w2=b+c/d

/ (e,f,w3) ⇒ w3=e/f

- (w3,g,w4) ⇒ w4=w3-g ⇒ w4=e/f-g

* (w2,w4,x) ⇒ x=w2*w4 ⇒ x=(b+c/d)*(e/f-g)

となる。

平成30年度 基本情報技術者試験 春期 午前 問18

平成22年度 基本情報技術者試験 秋期 午前 問22

 コンパイラによる最適化の主な目的はどれか。

ア プログラムの実行時間を短縮する。

イ プログラムのデバッグを容易にする。

ウ プログラムの保守性を改善する。

エ 目的プログラムを生成する時間を短縮する。

【解答】

【解説】

■ コンパイラ

高水準言語で記述されたソースプログラムを機械語に変換するソフトウェアである。

※ 変換過程で最適化されるため実行速度が速い

「平成30年度 基本情報技術者試験 秋期 午前 問19」の解答_画像01

※ オブジェクトプログラムだけでは実行できない(オブジェクトプログラムから呼び出されるコードが記述されている他のオブジェクトプログラムやライブラリファイルなどと連結していないため)

字句解析ソースプログラム内の文字列を,予約語や定数,区切り記号などの最小単位(トークン)に分解する
構文解析トークンを読み込んで構文木を生成し,構文規則に従っているかをチェックする
意味解析変数の使用や演算におけるデータ型の整合性などをチェックし,(最適化を行いやすくするために)中間コードに変換する

※ 中間コードには,三つ組形式や四つ組形式,逆ポーランド表記法(後置表記法)などがある

※ 四つ組形式の例)(+,A,B,T)⇒ T=A+B

最適化プログラムのサイズを小さくしたり,実行速度を向上させるために構造を変換させるなどする
コード生成オブジェクトプログラムに変換する

イ 開発支援ツール

エ コンパイラ自体を最適化する必要がある

平成28年度 基本情報技術者試験 春期 午前 問19

平成26年度 基本情報技術者試験 春期 午前 問18

平成23年度 基本情報技術者試験 秋期 午前 問22

 コンパイラにおける最適化の説明として,適切なものはどれか。

ア オブジェクトコードを生成する代わりに,インタプリタ用の中間コードを生成する。

イ コンパイルを実施するコンピュータとは異なるアーキテクチャをもったコンピュータで動作するオブジェクトコードを生成する。

ウ ソースコードを解析して,実行時の処理効率を高めたオブジェクトコードを生成する。

エ プログラムの実行時に,呼び出されたサブプログラム名やある時点での変数の内容を表示するようなオブジェクトコードを生成する。

【解答】

【解説】

■ コンパイラ

高水準言語で記述されたソースプログラムを機械語に変換するソフトウェアである。

※ 変換過程で最適化されるため実行速度が速い

「平成30年度 基本情報技術者試験 秋期 午前 問19」の解答_画像01

※ オブジェクトプログラムだけでは実行できない(オブジェクトプログラムから呼び出されるコードが記述されている他のオブジェクトプログラムやライブラリファイルなどと連結していないため)

字句解析ソースプログラム内の文字列を,予約語や定数,区切り記号などの最小単位(トークン)に分解する
構文解析トークンを読み込んで構文木を生成し,構文規則に従っているかをチェックする
意味解析変数の使用や演算におけるデータ型の整合性などをチェックし,(最適化を行いやすくするために)中間コードに変換する

※ 中間コードには,三つ組形式や四つ組形式,逆ポーランド表記法(後置表記法)などがある

※ 四つ組形式の例)(+,A,B,T)⇒ T=A+B

最適化プログラムのサイズを小さくしたり,実行速度を向上させるために構造を変換させるなどする
コード生成オブジェクトプログラムに変換する

イ クロスコンパイラ

エ デバッガ

平成30年度 基本情報技術者試験 秋期 午前 問20

平成28年度 基本情報技術者試験 春期 午前 問20

 リンカの機能として,適切なものはどれか。

ア 作成したプログラムをライブラリに登録する。

イ 実行に先立ってロードモジュールを主記憶にロードする。

ウ 相互参照の解決などを行い,複数の目的モジュールなどから一つのロードモジュールを生成する。

エ プログラムの実行を監視し,ステップごとに実行結果を記憶する。

【解答】

【解説】

■ リンカ(連係編集プログラム)

オブジェクトプログラムやライブラリファイルなどを連結してロードモジュール(実行可能なファイル)を作成するソフトウェアである。

「平成30年度 基本情報技術者試験 秋期 午前 問20」の解答_画像01

ア コンパイラ

イ ローダー

エ デバッガー

平成24年度 基本情報技術者試験 秋期 午前 問20

 プログラムを構成するモジュールの結合を,プログラムの実行時に行う方式はどれか。

ア インタプリタイ オーバレイ
ウ 静的リンキングエ 動的リンキング

【解答】

【解説】

■ リンカ(連係編集プログラム)

オブジェクトプログラムやライブラリファイルなどを連結してロードモジュール(実行可能なファイル)を作成するソフトウェアである。

「平成30年度 基本情報技術者試験 秋期 午前 問20」の解答_画像01

■ 動的リンキング(ダイナミックリンキング)

(プログラムの実行中)ライブラリなどが必要になった時点で連結する方式をいう。

(令和4年度) 基本情報技術者試験 サンプル問題 科目A 問16

平成31年度 基本情報技術者試験 春期 午前 問19

 インタプリタの説明として,適切なものはどれか。

ア 原始プログラムを,解釈しながら実行するプログラムである。

イ 原始プログラムを,推論しながら翻訳するプログラムである。

ウ 原始プログラムを,目的プログラムに翻訳するプログラムである。

エ 実行可能なプログラムを,主記憶装置にロードするプログラムである。

【解答】

【解説】

■ インタプリタ

高水準言語で記述されたソースプログラムを機械語に変換しながら実行するソフトウェア。

※ 変換しながら実行するため,実行速度は(コンパイラ型に比べて)遅い

※ ソースプログラムを即座に実行できるため,開発や修正が容易

ウ コンパイラ

エ ローダー

平成23年度 基本情報技術者試験 特別 午前 問23

 Javaなどのバイトコードプログラムをインタプリタで実行する方法と,コンパイルしてから実行する方法を,次の条件で比較するとき,およそ何行以上のバイトコードであれば,コンパイル方式の方がインタプリタ方式よりも処理時間(コンパイル時間も含む)が短くなるか。

〔条件〕

(1) 実行時間はプログラムの行数に比例する。

(2) 同じ100行のバイトコードのプログラムをインタプリタで実行すると0.2秒掛かり,コンパイルしてから実行すると0.003秒掛かる。

(3) コンパイル時間は100行当たり0.1秒掛かる。

(4) コンパイル方式の場合は,プログラムの行数に関係なくファイル入出力,コンパイラ起動などのために常に0.15秒のオーバヘッドが掛かる。

(5) プログラムファイルのダウンロード時間など,そのほかの時間は無視して考える。

ア 50イ 75ウ 125エ 155

【解答】

【解説】

プログラムの行数がx行の場合の,それぞれの実行時間は,

インタプリタ型:0.2(秒)÷ 100(行)× x = 0.002x(秒)

コンパイラ型:0.003(秒)÷ 100 × x + 0.1(秒)÷ 100 × x + 0.15

= 0.00003x + 0.001x + 0.15

= 0.00103x + 0.15(秒)

である。よって,コンパイル方式の方がインタプリタ方式よりも処理時間が短くなるのは,

0.002x > 0.00103x + 0.15

200x > 103x + 15000

97x > 15000

x > 154.6…(155行)

である。

平成21年度 基本情報技術者試験 秋期 午前 問20

 CASEツールが提供する機能のうち,上流CASEツールに属するものはどれか。

ア DFDの作成支援イ テストデータの作成支援
ウ プログラムの自動生成エ ライブラリの管理支援

【解答】

【解説】

■ CASE(Computer Aided Software Engineering)ツール

ソフトウェアの開発や保守を効率的に行えるようにするための開発支援ツールのことをいう。

上流CASEツール要件定義などの上流工程を支援する
下流CASEツールコーディングやテスト,保守などの下流工程を支援する

イ,ウ,エ 下流CASEツール

平成22年度 基本情報技術者試験 秋期 午前 問23

 プログラムの静的解析ツールで検出できるものはどれか。

ア 関数ごとの実行処理時間

イ 後に使用されない変数への代入

ウ プログラム仕様に対応する処理の記述漏れ

エ 用意したテストケースでは実行されなかった命令

【解答】

【解説】

■ 静的解析ツール

(プログラムを実行せずに行う)静的テストを支援するツールである。

※ 静的テストには,プログラムを1行1行トレースしたり,プログラムに記述されている文などを検証したりするものなどがある

ア 実行処理時間は,実際にプログラムを実行して測定する。

ウ 処理の記述漏れは,レビューなど,人的な解析で検出する。

エ カバレージモニター(動的解析ツール)などで検出する。

平成28年度 基本情報技術者試験 春期 午前 問21

平成26年度 基本情報技術者試験 春期 午前 問19

平成23年度 基本情報技術者試験 秋期 午前 問23

 静的テストツールの機能に分類されるものはどれか。

ア ソースコードを解析して,プログラムの誤りを検出する。

イ テスト対象モジュールに必要なドライバ又はスタブを生成する。

ウ テストによって実行した経路から網羅度を算出する。

エ プログラムの特定の経路をテストするためのデータを生成する。

【解答】

【解説】

■ 静的解析ツール

(プログラムを実行せずに行う)静的テストを支援するツールである。

※ 静的テストには,プログラムを1行1行トレースしたり,プログラムに記述されている文などを検証したりするものなどがある

平成25年度 基本情報技術者試験 春期 午前 問22

 ホワイトボックステストにおいて,コード中のどれだけの割合の部分を実行できたかを評価するのに使うものはどれか。

ア アサーションチェッカイ シミュレータ
ウ 静的コード解析エ テストカバレージ分析

【解答】

【解説】

■ カバレージモニター

プロブラム内の経路のうち,どのくらいの割合をテストしたかを算出するツール

平成31年度 基本情報技術者試験 春期 午前 問20

平成21年度 基本情報技術者試験 春期 午前 問23

 OSIによるオープンソースソフトウェアの定義に従うときのオープンソースソフトウェアに対する取扱いとして,適切なものはどれか。

ア ある特定の業界向けに作成されたオープンソースソフトウェアは,ソースコードを公開する範囲をその業界に限定することができる。

イ オープンソースソフトウェアを改変して再配布する場合,元のソフトウェアと同じ配布条件となるように,同じライセンスを適用して配布する必要がある。

ウ オープンソースソフトウェアを第三者が製品として再配布する場合,オープンソースソフトウェアの開発者は第三者に対してライセンス費を請求することができる。

エ 社内での利用などのようにオープンソースソフトウェアを改変しても再配布しない場合,改変部分のソースコードを公開しなくてもよい。

【解答】

【解説】

ア 「5. 個人やグループに対する差別の禁止 … ライセンスは特定の個人やグループを差別してはなりません。」とある。

イ 「3. 派生ソフトウェア … ライセンスは,ソフトウェアの変更と派生ソフトウェアの作成,並びに派生ソフトウェアを元のソフトウェアと同じライセンスの下で頒布することを許可しなければなりません。」とあるが,強制するものではない。

ウ 「再頒布の自由 … 「オープンソース」であるライセンス(以下「ライセンス」と略)は,出自の様々なプログラムを集めたソフトウェア頒布物(ディストリビューション)の一部として,ソフトウェアを販売あるいは無料で頒布することを制限してはなりません。」とある。

平成25年度 基本情報技術者試験 秋期 午前 問21

平成21年度 基本情報技術者試験 秋期 午前 問21

 GPLの下で公開されたOSSを使い,ソースコードを公開しなかった場合にライセンス違反となるものはどれか。

ア OSSとアプリケーションソフトウェアとのインタフェースを開発し,販売している。

イ OSSの改変を他社に委託し,自社内で使用している。

ウ OSSの入手,改変,販売を全て自社で行っている。

エ OSSを利用して性能テストを行った自社開発ソフトウェアを販売している。

【解答】

【解説】

ア,エ OSSを改変していないので,ソースコードを公開する必要はない

イ OSSを改変したのは他社なので,自社がソースコードを公開する必要はない(OSSを改変した他社はソースコードを公開しなければならない)

平成26年度 基本情報技術者試験 秋期 午前 問20

 オープンソースライセンスにおいて,“著作権を保持したまま,プログラムの複製や改変,再配布を制限せず,そのプログラムから派生した二次著作物(派生物)には,オリジナルと同じ配布条件を適用する”とした考え方はどれか。

ア BSDライセンスイ コピーライト
ウ コピーレフトエ デュアルライセンス

【解答】

【解説】

■ コピーレフト

「著作権を保持したまま,プログラムの複製や改変,再配布を制限せず,そのプログラムから派生した二次著作物(派生物)には,オリジナルと同じ配布条件を提供する」とする考え方。

【参考】

平成30年度 基本情報技術者試験 春期 午前 問19

平成24年度 基本情報技術者試験 秋期 午前 問21

 ソフトウェアの統合開発環境として提供されているOSSはどれか。

ア Apache Tomcatイ Eclipse
ウ GCCエ Linux

【解答】

【解説】

■ IDE(Integrated Development Environment;統合開発環境)

ソフトウェア開発に必要な機能をひとまとめにしたソフトウェアのことをいう。ソースプログラムを記述するためのエディターや,コンパイラ,デバッガ,バージョン管理機能などを持っているものが多い。

※ Microsoft社の「Visual Studio」や,Apple社の「Xcode」,オープンソースソフトウェアの「Eclipse」などがある

平成27年度 基本情報技術者試験 秋期 午前 問20

 オープンソースの統合開発環境であって,アプリケーション開発のためのソフトウェア及び支援ツール類をまとめたものはどれか。

ア Eclipseイ Perlウ PHPエ Ruby

【解答】

【解説】

■ IDE(Integrated Development Environment;統合開発環境)

ソフトウェア開発に必要な機能をひとまとめにしたソフトウェアのことをいう。ソースプログラムを記述するためのエディターや,コンパイラ,デバッガ,バージョン管理機能などを持っているものが多い。

※ Microsoft社の「Visual Studio」や,Apple社の「Xcode」,オープンソースソフトウェアの「Eclipse」などがある

平成30年度 基本情報技術者試験 春期 午前 問20

 多数のサーバで構成された大規模な分散ファイルシステム機能を提供し,MapReduceによる大規模データの分散処理を実現するOSSはどれか。

ア Apache Hadoopイ Apache Kafka
ウ Apache Sparkエ Apache Storm

【解答】

【解説】

■ Apache Hadoop

P(ペタ)バイト級の大規模なデータを分散して保存したり,分散処理を行ったりするためのフレームワーク。

【参考】

まとめ

 今回は,情報処理技術者試験の過去問(ソフトウェア-開発ツール,その他)を集めて,シンプルにまとめてみました。みなさん,どのくらい解けましたか?はじめは難しく感じると思いますが,繰り返し解くことにより,少しずつ理解できるようになると思います(8割以上(できれば9割以上)解けるようになるまで頑張りましょう)。また,解けるようになっても時間が経つと忘れることもありますので,たとえば,1週間後とか,1か月後とかに,また,やってみてください。