このページは以下の「ITパスポート シラバス6.3」学習用コンテンツです。
◆大分類:7.基礎理論
◆中分類:14.アルゴリズムとプログラミング
◆小分類 | ◆見出し | ◆学習すべき用語 |
---|---|---|
36.データ構造 | (1) データ及びデータ構造 変数やフィールドのタイプ,配列,レコード,ファイルなど,データ構造の基本的な考え方 | 変数 フィールド 配列 レコード ファイル データ構造 — リスト キュー スタック 木構造 2分木 |
変数
変数はプログラム内でデータを一時的に格納するための場所を指します。
変数には名前が付けられ、その名前を使用して格納されているデータにアクセスできます。変数のデータ型はプログラミング言語によって異なりますが、数値や文字列など様々なデータ型を扱うことができます。
また、変数はプログラムの実行中にその値を変更することができ、これが「変数」と呼ばれる所以です。
変数に関する学習用問題
問題
変数の特性として正しいものはどれですか?
- データを永続的に保存できる
- 値をプログラム実行中に変更できる
- データの型を変更することができない
%%replace6%%
正解
2 値をプログラム実行中に変更できる
解説
変数はプログラムの実行中にその値を変更することができます。
これに対し、選択肢1は変数ではなくファイルなどに当てはまる特性であり、選択肢3は誤りです。
問題
変数の宣言に関して誤っているものはどれですか?
- 変数名は一意である必要がある
- 変数にはデータ型が指定されることがある
- 変数は宣言後すぐに値が設定されなければならない
%%replace6%%
正解
3 変数は宣言後すぐに値が設定されなければならない
解説
変数は宣言後に値が設定される必要はありません。初期値が設定されない場合、デフォルト値が設定されることがあります。
選択肢1と2は変数の基本的な特性です。
問題
次のうち、変数の名前として適切なものはどれですか?
- 123total
- total_value
- class
%%replace6%%
正解
2 total_value
解説
変数名には数字から始めることはできません(選択肢1)。
また、classのような予約語を変数名として使用することも避ける必要があります(選択肢3)。
total_valueは適切な変数名です。
フィールド
フィールドとはデータベースやオブジェクト指向プログラミングにおける特定のデータ項目を表すものです。
データベースにおいては、フィールドはテーブルの中で特定のカラムに相当し、各レコードに保存されるデータの種類を定義します。
オブジェクト指向プログラミングでは、フィールドはクラスの属性を表し、オブジェクトごとに異なる値を持つことができます。
フィールドに関する学習用問題
問題
データベースのフィールドに関する説明として正しいものはどれですか?
- テーブル全体を指す
- レコードの個別のデータ項目を指す
- データベース全体の構造を指す
%%replace6%%
正解
2 レコードの個別のデータ項目を指す
解説
フィールドはデータベーステーブルにおける特定のデータ項目を指します。
テーブル全体やデータベース全体を指すものではありません。
問題
オブジェクト指向プログラミングにおけるフィールドに関して正しい説明はどれですか?
- メソッドの一種である
- クラスの属性を表す
- データベースのカラムを表す
%%replace6%%
正解
2 クラスの属性を表す
解説
フィールドはクラスの属性を表し、オブジェクトが持つデータを格納します。
メソッドやデータベースのカラムとは異なる概念です。
問題
フィールドの名前として不適切なものはどれですか?
- customerName
- _age
- 123address
%%replace6%%
正解
3 123address
解説
フィールド名は数字で始めることはできません。
customerNameや_ageはフィールド名として適切です。
配列
配列は同じデータ型の要素を複数格納するためのデータ構造です。
配列は連続したメモリ領域に格納され、インデックスを使用して個々の要素にアクセスすることができます。
配列は固定サイズであり、そのサイズは配列の作成時に指定されます。また、配列内のデータは順序付けられており、最初の要素はインデックス0で参照されます。
配列はあとから要素数を変更できない分、メモリ効率が良いため固定長データを扱うようなプログラムで使われるようなものになります。
たとえば、1週間の各日の気温を記録する場合、データ数は7つと固定されているので配列を使うといった形です。
配列に関する学習用問題
問題
配列の特徴として正しいものはどれですか?
- 異なるデータ型の要素を含むことができる
- 要素の数は固定されている
- 要素はランダムにアクセスできない
%%replace6%%
正解
2 要素の数は固定されている
解説
配列は作成時にサイズが固定されその後変更することはできません。
異なるデータ型を含むことはできず、要素へのアクセスはインデックスを使用して行います。
問題
配列のインデックスに関して誤っている説明はどれですか?
- 最初の要素のインデックスは1から始まる
- 配列のサイズがnの場合、最後の要素のインデックスはn-1である
- インデックスは連続した整数である
%%replace6%%
正解
1 最初の要素のインデックスは1から始まる
解説
配列の最初の要素のインデックスは0から始まります。したがって、1から始まるという説明は誤りです。
その他の選択肢は正しい説明です。
問題
配列の使用例として適切でないものはどれですか?
- 同じ種類のデータを順序付けて格納する
- データベースのフィールドを格納する
- 複数の値を一度に処理する
%%replace6%%
正解
2 データベースのフィールドを格納する
解説
配列は同じ種類のデータを順序付けて格納し、複数の値を一度に処理するのに適しています。
データベースのフィールドを格納するためには適していません。
レコード
レコードとはデータベースにおけるテーブルの一行に対応するデータの集まりを指します。各レコードは複数のフィールドで構成され、それぞれが特定のデータ項目を保持します。
レコードはデータベースに保存される実際のデータを表し、各レコードにはユニークなキーが割り当てられることがあります。レコードの概念は、データベース以外にもファイルやデータ構造の中で使用されることがあります。
レコードに関する学習用問題
問題
レコードに関して正しい説明はどれですか?
- データベース内の全てのデータ項目を指す
- テーブルの一行に対応するデータの集まり
- 個々のデータ項目を指す
%%replace6%%
正解
2 テーブルの一行に対応するデータの集まり
解説
レコードはデータベーステーブルの一行に対応し、複数のフィールドで構成されるデータの集まりです。
全てのデータ項目や個々のデータ項目を指すものではありません。
問題
レコードに含まれないものはどれですか?
- ユニークキー
- フィールド
- テーブル名
%%replace6%%
正解
3 テーブル名
解説
レコードにはフィールドやユニークキーが含まれますが、テーブル名はレコードの一部ではありません。
テーブル名はテーブル全体を識別するためのものです。
問題
次のうちレコードの特徴として誤っているものはどれですか?
- 複数のフィールドで構成される
- データベーステーブルの列を表す
- 一意に識別されることがある
%%replace6%%
正解
2 データベーステーブルの列を表す
解説
レコードはテーブルの行を表し、列ではありません。列はフィールドを指します。
その他の選択肢はレコードの正しい特徴です。
ファイル
ファイルはコンピュータ上でデータを永続的に保存するための基本的な単位です。ファイルにはテキスト、画像、プログラムなど様々な種類のデータが格納され、ファイル名と拡張子で識別されます。
ファイルはストレージデバイス上に保存され、必要に応じて読み書きされます。ファイルシステムはこれらのファイルを管理し、ユーザーがアクセスできるようにします。
ファイルに関する学習用問題
問題
ファイルの基本的な特性として正しいものはどれですか?
- 一時的なデータ保存に使用される
- 永続的にデータを保存する
- データの一時的なコピーを保持する
%%replace6%%
正解
2 永続的にデータを保存する
解説
ファイルはデータを永続的に保存するために使用されます。一時的なデータ保存には適していませんし、データの一時的なコピーではありません。
問題
ファイルシステムの役割に関して適切な説明はどれですか?
- ファイルを一時的に保管する
- ファイルのアクセスや管理を行う
- プログラムの実行を制御する
%%replace6%%
正解
2 ファイルのアクセスや管理を行う
解説
ファイルシステムはファイルの管理やアクセスを制御する役割を持ちます。
プログラムの実行制御や一時的な保管を行うものではありません。
問題
次のうちファイル拡張子の例として適切でないものはどれですか?
- .txt
- .exe
- .dbs
%%replace6%%
正解
3 .dbs
解説
.dbsは一般的なファイル拡張子ではありません。
通常、テキストファイルには.txt、実行ファイルには.exeが使用されます。
データ構造
データ構造とはデータを効率的に格納し、操作するための方法を指します。データ構造には配列、リスト、スタック、キュー、ツリー、グラフなど様々な種類があります。
各データ構造は特定の操作(例えば挿入、削除、検索など)に最適化されており、使用するデータ構造によってプログラムの性能が大きく左右されます。適切なデータ構造の選択は、プログラミングにおいて非常に重要です。
データ構造に関する学習用問題
問題
次のうち、線形データ構造に該当するものはどれですか?
- ツリー
- グラフ
- スタック
%%replace6%%
正解
3 スタック
解説
スタックは線形データ構造の一例であり、LIFO(Last In, First Out)形式でデータを管理します。
ツリーやグラフは非線形データ構造に分類されます。
問題
データ構造の中で、FIFO(First In, First Out)を使用するものはどれですか?
- キュー
- スタック
- リスト
%%replace6%%
正解
1 キュー
解説
キューはFIFOの原則に従い、最初に入れた要素が最初に取り出されます。
スタックはLIFO、リストは線形にデータを管理しますが、特定の操作順序に縛られません。
問題
データ構造において、ツリー構造の特性として適切でないものはどれですか?
- 階層的なデータ管理
- 各ノードは一つの親を持つ
- 各ノードは複数の親を持つことができる
%%replace6%%
正解
3 各ノードは複数の親を持つことができる
解説
ツリー構造では各ノードは一つの親しか持つことができません。
階層的なデータ管理が特徴であり、複数の親を持つことはツリー構造ではありません。
リスト
リストは複数のデータを順序付けて管理するデータ構造の一つです。
データの挿入や削除が簡単に行える点が特徴です。配列とは異なりリストは動的に要素の追加や削除が可能であり、メモリ効率が高いです。
一般的に、単方向リスト、双方向リスト、循環リストの3種類があり、それぞれ異なる用途や操作効率を持ちます。特に、挿入や削除が頻繁に発生するデータ管理に適しています。
リストに関する学習用問題
問題
リストの特徴として適切なものはどれですか?
- メモリ内で連続した領域にデータを保存する
- 要素の追加や削除が簡単にできる
- 要素数が固定されている
%%replace6%%
正解
2 要素の追加や削除が簡単にできる
解説
リストは要素の追加や削除が柔軟に行えるデータ構造です。
一方で、選択肢1は配列に関する特徴であり、選択肢3はリストには当てはまりません。
問題
リストの種類として誤っているものはどれですか?
- 単方向リスト
- 双方向リスト
- 階層リスト
%%replace6%%
正解
3 階層リスト
解説
リストには単方向リストや双方向リスト、循環リストがありますが、階層リストという種類は存在しません。したがって階層リストは誤りです。
問題
リストの利点として正しいものはどれですか?
- データの順序を維持しつつ高速な検索が可能
- 要素の挿入や削除が効率的に行える
- メモリ効率が悪い
%%replace6%%
正解
2 要素の挿入や削除が効率的に行える
解説
リストはデータの挿入や削除が容易に行えるため、動的なデータ管理に適しています。
選択肢1はリストよりもツリーや配列の特徴に近く、選択肢3は正しくありません。
キュー
キュー(Queue)とはデータを順番に処理するためのデータ構造の一種で、基本的に「先入れ先出し」(FIFO: First In, First Out)の方式で動作します。これはつまり、最初に追加されたデータが最初に取り出されるという順序になります。
キューはタスクスケジューリングやバッファリングといった多くのアプリケーションで利用されており、例えばプリンタの印刷ジョブの管理や、プロセスの待ち行列管理などに使われます。
キューに関する学習用問題
問題
キューの特徴として正しいものはどれですか?
- データが後から追加された順に取り出される
- 先に追加されたデータが先に取り出される
- 追加されたデータはどの順序でも取り出せる
%%replace6%%
正解
2 先に追加されたデータが先に取り出される
解説
キューは「先入れ先出し」のデータ構造であり、先に追加されたデータが先に取り出されます。
選択肢1は「後入れ先出し」を示しており、選択肢3はキューの動作特性とは異なります。
問題
キューを利用するシチュエーションとして最も適切なものはどれですか?
- データを優先順位に従って処理したいとき
- データを先に入力した順に処理したいとき
- データを後から入力した順に処理したいとき
%%replace6%%
正解
2 データを先に入力した順に処理したいとき
解説
キューは「先入れ先出し」方式を採用しているため、先に入力したデータを順番に処理したい場合に適しています。
選択肢1はヒープや優先度付きキューに関連し、選択肢3はスタックの特徴に近いです。
問題
次のうち、キューに関する誤った説明はどれですか?
- FIFO方式でデータを管理する
- プロセスの待ち行列などで利用される
- 最後に追加されたデータが最初に取り出される
%%replace6%%
正解
3 最後に追加されたデータが最初に取り出される
解説
キューは「先入れ先出し」方式で動作するため、最後に追加されたデータが最初に取り出されることはありません。
選択肢1と2はキューの正しい特性を示しています。
待ち行列とは先に処理待ちに並んだものから順次処理が行われていくというものですね。
例えば、チケット購入の待ち行列では最初に並んだ人から購入できるのでFIFO(ファーストイン ファーストアウト)で処理されています。
スタック
スタックとはデータを「後入れ先出し」(LIFO: Last In, First Out)の方式で管理するデータ構造です。つまり、最後に追加されたデータが最初に取り出されます。
スタックは主に再帰処理や関数呼び出しの管理に用いられ、例えばプログラムの実行時に関数の呼び出し順序を保持するために使われます。また、Webブラウザの「戻る」ボタンの操作などにも応用されています。
スタックに関する学習用問題
問題
スタックの特徴として正しいものはどれですか?
- 先に追加されたデータが先に取り出される
- 後に追加されたデータが先に取り出される
- データがランダムに取り出される
%%replace6%%
正解
2 後に追加されたデータが先に取り出される
解説
スタックは「後入れ先出し」のデータ構造で、後に追加されたデータが先に取り出されます。
選択肢1はキューの特徴を表し、選択肢3はスタックの動作とは異なります。
問題
次のうち、スタックを使用するのに最も適した場面はどれですか?
- 関数の呼び出し履歴を追跡する
- タスクを優先順位で管理する
- データをFIFOで管理する
%%replace6%%
正解
1 関数の呼び出し履歴を追跡する
解説
スタックは関数呼び出しの履歴を管理する際に非常に有効です。
選択肢2は優先度付きキューやヒープに適しており、選択肢3はキューの特徴に当たります。
問題
次のデータ構造のうち、スタックの特徴と一致するものはどれですか?
- LIFO
- FIFO
- ランダムアクセス
%%replace6%%
正解
1 LIFO
解説
スタックは「後入れ先出し」(LIFO)の方式を採用しており、選択肢1が正しいです。
選択肢2はキューに関連し、選択肢3は配列やリストなどランダムアクセスが可能なデータ構造に関連します。
木構造
木構造とは、階層的なデータを表現するためのデータ構造であり、ルートノードから始まり複数の子ノードへと分岐する形状を持ちます。
木構造はファイルシステムや組織図の表現など、階層構造を持つデータの管理に広く使用されます。
ノード間の関係性は親と子で表現され、ルートノードからすべてのノードへアクセス可能であることが特長です。
木構造に関する学習用問題
問題
木構造において、ノードが持つ可能性がある要素として正しいものはどれですか?
- 子ノードとルートノード
- ルートノードとサブノード
- 親ノードと子ノード
%%replace6%%
正解
3 親ノードと子ノード
解説
木構造では、各ノードは親ノードと子ノードを持つ可能性があります。
ルートノードは最上位に位置するノードで、選択肢1と2はこの特性を正しく表現していません。
問題
木構造の応用例として適切でないものはどれですか?
- ファイルシステム
- 組織図
- ハッシュテーブル
%%replace6%%
正解
3 ハッシュテーブル
解説
ハッシュテーブルはデータをキーと値のペアで管理するデータ構造であり、木構造ではありません。ファイルシステムや組織図は木構造の代表的な応用例です。
ファイルシステムはディレクトリに格納(例: /home/user/documents/file.txt
)されて循環せずにファイルにたどり着けるので木構造となります。
問題
次の用語のうち、木構造に関連するものはどれですか?
- ルート
- バケット
- フィールド
%%replace6%%
正解
1 ルート
解説
「ルート」は木構造の最上位ノードを指し、木構造に関連する重要な概念です。
選択肢2の「バケット」はハッシュテーブルに関連し、選択肢3の「フィールド」はデータベースやプログラミングに関連する用語です。
2分木
2分木は各ノードが最大で2つの子ノードを持つことができる特別な木構造の一種です。この木構造は探索やソート、表現の評価などさまざまなアルゴリズムに利用されます。
左の子ノードには親ノードよりも小さい値が、右の子ノードには親ノードよりも大きい値が配置される場合は「2分探索木」となり効率的なデータ検索や挿入が可能です。
2分木に関する学習用問題
問題
2分木において、各ノードが持つことができる最大の子ノード数はどれですか?
- 1つ
- 2つ
- 3つ
%%replace6%%
正解
2 2つ
解説
2分木は各ノードが最大で2つの子ノードを持つことができます。
選択肢1と3は2分木の特性に当てはまりません。
問題
次のうち、2分木の特性に関する説明として正しいものはどれですか?
- 左の子ノードには親ノードよりも大きい値が配置される
- 右の子ノードには親ノードよりも小さい値が配置される
- 左の子ノードには親ノードよりも小さい値が配置される
%%replace6%%
正解
3 左の子ノードには親ノードよりも小さい値が配置される
解説
2分木では、左の子ノードに親ノードよりも小さい値が、右の子ノードに親ノードよりも大きい値が配置されるのが一般的です。
選択肢1と2は逆に表現されており、誤りです。
問題
次の用語のうち、2分木に最も関連性が高いものはどれですか?
- スタック
- 葉ノード
- バケット
%%replace6%%
正解
2 葉ノード
解説
葉ノードは2分木の最も下位に位置するノードを指し、他に子ノードを持たないノードです。
選択肢1のスタックは異なるデータ構造であり、選択肢3のバケットはハッシュテーブルに関連します。