基礎理論

2021年4月9日作成,2021年5月30日更新

基礎理論

1. 離散数学

  • 基数,基数の変換,数値の表現,算術演算と精度など,コンピュータで扱う数値表現を理解し,担当する事項に適用する。
  • 集合,論理演算の基本法則,手法を理解し,担当する事項に適用する。

(1) 基数

基数(radix)とは、位取り記数法で数値を書き記す際に各桁の重み付けの基本となる数で、位が上がる毎に何倍になるかを表す。我々が普段使っているのは隣の桁が 10 倍あるいは 10 分の 1 となる 10 進数(10 進法)であり、基数は 10 である。

2 進数,8 進数,10 進数,16 進数の対応を次表に示す。

表 2 進数,8 進数,10 進数,16 進数の対応
10 進数 2 進数 8 進数 16 進数
0 0 0 0
1 1 1 1
2 10 2 2
3 11 3 3
4 100 4 4
5 101 5 5
6 110 6 6
7 111 7 7
8 1000 10 8
9 1001 11 9
10 1010 12 A
11 1011 13 B
12 1100 14 C
13 1101 15 D
14 1110 16 E
15 1111 17 F
10 進数整数を $r$ 進数へ変換

10 進数の整数値 $x$ を $r$ 進数に変換する手順は次のとおり。

  1. $x$ を $r$ で割ったときの商 $p$ と余り $q$ を求める。
  2. $p$ の値が 0 ならば終了。それ以外ならば $p$ を $x$ と読み替えて 1. へ戻る。

計算の終了後,これまでに求まった $q$ の値のうち,最後に求まった $q$ の値を最上位桁として順に下位方向に並べたときの数列が変換された $r$ 進数の値である。

10 進数小数を $r$ 進数へ変換

10 進数の小数値 $x$ を $r$ 進数へ変換する手順は次のとおり。

  1. $x$ を $r$ で乗算した結果を,整数部の数値 $i$ と $i$ を除いた小数値 $d$ に分ける。
  2. $d$ の値が 0 ならば終了。それ以外ならば $d$ を $x$ に読み替えて,1. に戻る。

計算の終了後,これまでに求まった $i$ の値のうち,最初に求まった $i$ の値を小数第 1 位として順に下位方向に並べたときの数列が,変換された $r$ 進数の値になる。

(2) 数値の表現

コンピュータの中では,整数だけでなく負数や小数点数なども,すべて 0 と 1 の 2 進数で表される。

浮動小数点数

浮動小数点(floating point number)とは,コンピュータにおける数値の表現形式の一つで、数値を桁の並びを表す仮数部と小数点の位置を表す指数部に分割して表現する方式。小数点以下の値を含む数値の表現法として最も広く利用されている。

(浮動小数点数の例)6.02 × 1023,-0.73 × 10-2

浮動小数点数は,小数点の位置を固定せずに小数点数を表現する方法である。数値を指数形式(± f × re)で表した時の,「符号(正を 0,負を 1)」,「仮数 f」,「指数 e」を下図の順に並べて表現する。これを浮動小数点形式という。ここで,r は基数を意味し,通常,基数は 2 である。また,仮数 f は「0.1xxx」となるように,指数 e と桁合わせをする。

16 ビットの浮動小数点
16 ビットの浮動小数点
固定小数点数
固定小数点数(fixed-point number)とは、コンピュータが実数を扱うときの表現形式の一つで、小数点が特定の位置に固定されているもの。
単精度浮動小数点数(float 型)
単精度浮動小数点数型(single precision floating point number type)とは、プログラミング言語などで用いられる数値データ型の一つで、32 ビット長の浮動小数点数を格納することができるもの。多くの言語では実数を表すことができる最も基本的な型として用意されている。
倍精度浮動小数点数(double 型)
倍精度浮動小数点数型(double precision floating point number type)とは、プログラミング言語などで用いられる数値データ型の一つで、64ビット長の浮動小数点数を格納することができるもの。多くの言語では最も幅広い範囲の実数を表すことができる型として用意されている。この形式で表すことができる値は 10 進数で概ね -1.79769 × 10308 ~ 1.79769 × 10308 の範囲で,精度は 15 桁である。
BCD
BCD(Binary-Coded Decimal,2 進化 10 進数)とは、10 進数の値を 2 進数で表現する方式の一つで、10 進数の一つの数字を 4 桁の 2 進数に対応させたもの。IBM 社がメインフレームで用いていた方式が広まったもので、これをアルファベットや記号を含む文字コードに拡張したものは EBCDIC として知られる。
パック 10 進数
2 進化 10 進数(BCD)を拡張し、末尾に数値の符号を表すコードを追加したものをパック 10 進数(packed BCD)という。1 バイトで 1 桁を表すゾーン 10 進数(アンパック 10 進数)に比べ少ないデータで数値を表すことができる。

0 以外の数値を浮動小数点表示で表現する場合,仮数部の最上位桁が 0 以外になるように,桁合わせする操作はどれか。ここで,仮数部の表現方法は,絶対値表現とする。

  1. 切上げ
  2. 切捨て
  3. 桁上げ
  4. 正規化
(出典)平成29年度 春季 基本情報技術者試験 午前問題 問2

正解は,4. である。仮数部の最上位桁が 1 になるように,指数部と仮数部を調節する(桁合わせする)操作を正規化と呼ぶ。

(3) 算術演算と精度

論理シフト
全ビットを一律に移動させるものを「論理シフト」(logical shift)という。
算術シフト
最上位ビットは変化させず残りのビット列でシフトを行うものを「算術シフト」(arithmetic shift)という。
桁落ち
桁落ち(loss of significance)とは、丸め誤差を含む非常に近い大きさの小数同士で減算を行ったときに、有効数字が減る現象のこと。コンピュータでは浮動小数点数の数値計算において生じる。例えば,有効桁数 3 の浮動小数点数同士の演算「0.789 × 105 - 0.788 × 105」の結果は,0.1 × 105 となり,有効桁数は 1 に減少する。
情報落ち
情報落ち(loss of trailing digits)とは、コンピュータで絶対値の大きさが極端に異なる数字を足したり引いたりしたときに、小さい値の情報が無視されてしまう現象。また、そのような現象によって起きる計算の誤差。例えば,有効桁数 3 桁の演算「0.111 × 105 + 0.111 × 10-1」の場合,0.111000111 × 105 → 0.111 × 105 となり,絶対値の小さい値が演算結果に反映されない。
オーバフロー(あふれ)
オーバーフロー(overflow)とは、あふれ(る)、あふれ出たもの、という意味の英単語。ITの分野では、数値の計算結果がその格納領域に収まる範囲を超えること(算術オーバーフロー/桁あふれ)や、与えられたデータが多すぎて指定の領域に収まりきらないこと(バッファオーバーフローなど)を指す。
アンダーフロー
アンダーフロー(underflow)とは、コンピュータで実数の計算をした結果、絶対値が小さすぎて正確に表現・計算できなくなってしまうこと。
単精度
数値を仮数部と指数部に分けて表現する浮動小数点数の形式の一つで、一つの数値を32ビットのデータで表現する方式のこと。多くのプログラミング言語などでは単に浮動小数点といえば単精度を意味し、“float” などの名称で表されるデータ型が用意されている。
倍精度
数値を仮数部と指数部に分けて表現する浮動小数点数の形式の一つで、一つの数値を32ビットのデータで表現する方式のこと。多くのプログラミング言語などが高精度な数値計算のために組み込みデータ型として用意しており、 “double” などの名称で表される。

桁落ちの説明として,適切なものはどれか。

  1. 値がほぼ等しい浮動小数点数同士の減算において,有効桁数が大幅に減ってしまうことである。
  2. 演算結果が扱える数値の最大値を超えることによって生じるエラーのことである。
  3. 浮動小数点数の演算結果について,最小の桁よりも小さい部分の四捨五入,切上げ又は切捨てを行うことによって生じる誤差のことである。
  4. 浮動小数点数の加算において,一方の数値の界の桁が結果に反映されないことである。
(出典)平成27年度 春季 基本情報技術者試験 午前問題 問2

正解は,1. である。例えば,有効桁数 3 の浮動小数点数同士の演算「0.789 × 105 - 0.788 × 105」の結果は,0.1 × 105 となり,有効桁数は 1 に減少する。

(4) 集合と命題

和集合
積集合
補集合
部分集合
命題論理

(5) 論理演算

否定(NOT)

否定の論理式は次式,真理値表は次表で表される。

F = ¬A
表 否定
A F
0 1
1 0
論理和(OR)

論理和の論理式は次式,真理値表は次表で表される。

F = A + B
表 論理和
A B F
0 0 0
0 1 1
1 0 1
1 1 1
論理積(AND)

論理積の論理式は次式,真理値表は次表で表される。

F = A · B
表 論理積
A B F
0 0 0
0 1 0
1 0 0
1 1 1
ド・モルガンの法則

ド・モルガンの法則は,否定論理はおよび否定論理積をそれぞれ論理和と論理積に変換するものである。

\[ \overline{A\cdot B}=\overline{A}+\overline{B} \] \[ \overline{A+B}=\overline{A}\cdot\overline{B} \]
否定
論理否定(NOT)とは、論理演算の一つで、与えられた命題が真のときに偽となり、偽のとき真となるもの。論理回路や2進数の数値による論理否定は、入力が 1 のとき 0 となり、0 のとき 1 となる。
論理和
論理和(OR)とは、論理演算の一つで、二つの命題のいずれか一方あるいは両方が真のときに真となり、いずれも偽のときに偽となるもの。論理回路や 2 進数の数値による論理和は、二つの入力のいずか一方あるいは両方が 1 のとき出力が 1 となり、いずれも 0 の場合に 0 となる。
論理積
論理積(AND)とは、論理演算の一つで、二つの命題のいずれも真のときに真となり、それ以外のときは偽となるもの。論理回路や 2 進数の数値による論理積は、二つの入力の両方が 1 のときのみ出力が 1 となり、いずれか一方あるいは両方が 0 の場合は 0 となる。
排他的論理和
排他的論理和(XOR)とは、論理演算の一つで、二つの命題のいずれか一方のみが真のときに真となり、両方真や両方偽のときは偽となるもの。論理回路や 2 進数の数値における XOR は、二つの入力のうち片方のみが 1 であるときのみ出力が 1 となり、両方 1 や両方 0 の場合は 0 となる。
否定論理和
否定論理和(NOR)とは、論理演算の一つで、二つの命題のいずれも偽のときに真となり、それ以外のときは偽となるもの。論理回路や 2 進数の数値による NOR は、二つの入力が 0 のときのみ出力が 1 となり、いずれか一方あるいは両方が 1 のときは 0 となる。論理和(OR)の結果を否定(NOT)したものと同値。
否定論理積
否定論理積(NAND)とは、論理演算の一つで、二つの命題のいずれも真のときに偽となり、それ以外のときは真となるもの。論理回路や 2 進数の数値による NAND は、二つの入力が 1 のときのみ出力が 0 となり、
論理関数
分配論

2. 応用数学

  • 確率・統計の計算,分析手法を理解し,担当する事項に適用する。
  • 線形代数,行列などの数値計算を理解し,担当する事項に適用する。
  • 数値解析,グラフ理論,待ち行列理論など基本的な数学的原理を理解し,担当する事項に適用する。

(1) 確率と統計

① 確率

確率とは,ある事象(結果)が発生する可能性を表す数値である。事象 A の確率 $P(A)$ は,事象 A の起こりうる場合の数($r$)と全ての事象の数($n$)から,次のように求める。

\[ P(A)=\frac{r}{n} \]

正規分布はガウス分布とも呼ばれ,統計学では最もよく用いられる連続型の確率分布である。自然界でも多く見られ,理論的にもとても都合の良い性質を持っている。実用面でも多くの場面で誤差関数(仮定した理論的な値と観測された値との差)として正規分布が仮定されている。

確率変数(実数)を $x$,平均を表すパラメータ(実数)を $\mu$,標準偏差を表すパラメータ(正の実数)を $\sigma$ とすれば,正規分布の確率密度関数は次式で表される。

\[ f(x)=\frac{1}{\sqrt{2\pi \sigma^2}}\exp\{-\frac{(x-\mu)^2}{2\sigma^2}\} \]

平均が 50,標準偏差が 5,10,20 である正規分布の確率密度関数を表すグラフを下図に示す。形状は平均値 50 を中心に左右対称で,標準偏差が小さければ,データの分布は平均値付近にまとまる。

平均が 60,標準偏差が 10 の正規分布を表すグラフ
図 平均が 60,標準偏差が 10 の正規分布を表すグラフ
階乗
加法定理
乗法定理
同時確率
条件付き確率
ベイズの定理
正規分布
平均値を中心とする左右対称で釣鐘状の連続確率分布のこと
一様分布
すべての事象が起こる可能性が等しい現象を表す確率分布のこと
ポアソン分布
離散的に発生し,発生確率は一定である離散確率分布のこと
指数分布
② 統計
中央値(メジアン)
データを中央に並べたときに中央に位置するデータ。データの数が偶数の場合,中央付近の 2 つのデータの平均値から求める。
最頻値(モード)
データの中で出現する頻度が最も高いデータ。
平均値
標準偏差
分散
相関係数
推定
回帰分析(単回帰分析,重回帰分析,ロジスティック回帰分析)
相関分析
主成分分析
因子分析

(2) 数値計算

線形代数
スカラ
ベクトル
固有値
固有ベクトル
行列
逆行列
単位行列
転置行列
等差数列
等比数列
フィボナッチ数列
対数
三角関数

(3) 数値解析

ニュートン法
絶対誤差
相対誤差
丸め誤差
打切り誤差

(4) 数式処理

因数分解
微分
積分

(5) グラフ理論

有向グラフ

(6) 待ち行列理論

キューとは、最も基本的なデータ構造の一つで、要素を入ってきた順に一列に並べ、先に入れた要素から順に取り出すという規則で出し入れを行うもの。順番を待つ人の行列と同じ仕組みであるため「待ち行列」とも訳される。

リトルの法則

リトルの法則(Little's law)とは,待ち行列理論において「安定な系において長時間平均化した顧客数 $L$(与えられた負荷)は,長時間平均化した到着率 $\lambda$ と長時間平均化した顧客が形に費やす時間 $W$ に等しい」というものであり,次式が成り立つ。

\[ L=\lambda W \]
サービス時間
待ち時間
到着間隔
平均到着率
平均サービス率

(7) 最適化問題

動的計画法

3. 情報に関する理論

  • 情報理論,符号理論のあらましを理解する。
  • 述語論理,形式言語,オートマトンなど,情報に関する理論のあらましを理解する。
  • AI(人工知能)のあらましを理解する。
  • コンパイラ理論,プログラム言語論や意味論のあらましを理解する。

(1) 情報理論

(2) 符号理論

コンピュータ同士の通信においては,次の点を考慮する必要がある。

  • 通信路上で起きた誤りの検出・訂正を受信側で行えること
  • 送信する元の情報を短くし,通信効率を高めること

上記を実現する方法はさまざまあるが,その 1 つとして符号化がある。

通信路符号化
ハフマン符号
ハフマン符号(Huffman compression)とは、1952年にデビット・ハフマン(David Albert Huffman)氏が考案した、可逆圧縮アルゴリズムの代表的な方式の一つ。現代でもファイル圧縮や画像ファイル形式など様々な場面で応用されている。
データ圧縮
データ圧縮(data compression)とは、データを一定の計算手順で加工し、実質的な内容を損なわずにより短い符号列で表すこと。原則として得られた圧縮符号は逆の計算手順により元のデータに復元することができ、データの一部を損なって容量を減らす削減や間引きとは異なる。

1 秒間に一定間隔で 16 個のパルスを送ることができる通信路を使って,0 ~ 9,A ~ F の 16 種類の文字を送るとき,1 秒間に最大何文字を送ることができるか。ここで,1 ビットは 1 個のパルスで表し,圧縮は行わないものとする。

(出典)平成25年度 春季 基本情報技術者試験 午前問題 問2

通信路は,1 秒間に 16 ビットの情報を送信できる。一方,0 ~ 9,A ~ F の 16 種類の文字を表現するには,0 → 0000,1 → 0001,...,F → 1111 とし,少なくとも 4 ビット必要である。よって,1 秒間に 4 文字(= 16 ビット ÷ 4 ビット/文字)を送ることができる。

(3) 文字の表現

ASCII コード(アスキーコード)
ASCII(American Standard Code for Information Interchange)とは、アルファベットや数字、記号などを収録した文字コードの一つ。最も基本的な文字コードとして世界的に普及しており、他の多くの文字コードが ASCII の拡張になるよう実装されている。文字を 7 ビットの値(0~127)で表し、128 文字が収録されている。
EUC(Extended UNIX Code)
EUC-JPとは、主に UNIX 系 OS で標準的に用いられる、日本語文字に対応した文字コード規格(正確には符号化方式)の一つ。
JIS コード(ISO-2022-JP)
JIS コードとは、国際的な文字コード規格の一つである ISO/IEC 2022 の枠組みに沿って定義された日本語の文字コードの一つ。
シフト JIS コード
Shift JIS とは、JIS 規格として標準化された日本語を含む様々な文字を収録した文字コードの一つ。正確には「Shift_JIS」と間にアンダーバーを挟んで表記する。MS-DOS や Windows が標準の日本語文字コードとして採用したことから広く普及した。
Unicode
Unicode とは、文字コードの国際的な業界標準の一つで、世界中の様々な言語の文字を収録して通し番号を割り当て、同じコード体系のもとで使用できるようにしたもの。
UCS
ISO/IEC 10646 標準で規定される文字集合を UCS(Universal Coded Character Set)というが、Unicode の基本多言語面にほぼ相当する冒頭 16 ビット分の領域を UCS-2 という。

(4) 述語論理

関係データベース

(5) 形式言語

コンピュータで使用する言語は,明確な定義のもとで作成した形式(フォーマット)に従い,文字やプログラムを読み,理解する。これを形式言語と呼ぶ。形式言語の代表的な表記方法として,正規表記BNF がある。

正規表現

正規表現とは,文字列などの記号列を表現する形式言語である。正規表現では,有限個の記号に対して,規則を表すメタ文字を組み合わせて表現する。

表 代表的なメタ文字
メタ文字 意味
[A-Z] 半角の英字の大文字 1 文字を表す
* 直前の正規表現の 0 回以上の繰返し
+ 直前の正規表現の 1 回以上の繰返し
? 直前の正規表現の 0 個または 1 個あることを表す
| 左右にある正規表現のいずれかを表す。

UNIX における正規表現 [A-Z]+[0-9]* が表現する文字列の集合の要素となるものはどれか。

  1. 456789
  2. ABC+99
  3. ABC99*
  4. ABCDEF
(出典)平成28年度 春季 基本情報技術者試験 午前問題 問3

正解は,4. である。

BNF

BNF(Backus-Naur Form)とは、コンピュータが扱う人工言語の文法を定義する際に用いられるメタ言語(言語を記述するための言語)の一つ。コンピュータ言語の多くはその仕様は BNF で記述している。構文規則には,順次,反復,選択があり,次表の記号を用いる。

表 BNF の代表的な記号
記号 意味
<x> x という構文要素を表す
::= 左に示す構文要素に対し,右の構文規則を定義することを表す
... 左の構文要素を繰り返すことを表す
| 左右の構文要素のどちらかを表す
[ ] [ ] に囲まれた構文要素は省略可能を表す
逆ポーランド表記法
逆ポーランド記法(Reverse Polish Notation)とは、数式などを記述する際の表記法の一つで、演算子を被演算子(演算対象)の列の後に記す方式。後置記法とも言う。ポーランド記法を逆順にしたものであるためこのように呼ばれる。

次の BNF で定義される <変数名> に合致するものはどれか。

<数字> ::= 0|1|2|3|4|5|6|7|8|9
<英字> ::= A|B|C|D|E|F
<英数字> ::= <英字>|<数字>|_
<変数名> ::= <英字>|<変数名><英数字>
  1. _B39
  2. 246
  3. 3E5
  4. F5_1
(出典)令和元年度 秋季 基本情報技術者試験 午前問題 問7

正解は,4. である。

(6) オートマトン

オートマトン(automaton)とは、計算機の構造や動作を抽象化したモデルの一つで、内部に固有の状態と、状態を変化させる規則の集合を持ち、外部からの入力に応じて状態を変化させるもの。複数形は “automata” (オートマタ)。

(7) 計算量

アルゴリズムの効率性を評価する基準として,処理を行うデータ件数を $n$ としたときの実行時間の目安を表す計算量がある。計算量は,「$O$」(英字の大文字で,オーダと読む)の記号を用いて,「$O(n)$」と表す。計算量が $O(n)$ の場合は,処理件数 $n$ に計算量が比例し,$O(1)$ は処理件数に関わらず計算量は変わらないことを示す。

時間計算量(time complexity)
時間計算量とは、コンピュータが特定の手順に従って与えられた問題を解く際に必要とする手順の回数。これが少ないほど、より短い時間で問題を解くことができる。

(8) AI(Artificial Intelligence : 人工知能)

人工知能とは、人間にしかできなかったような高度に知的な作業や判断をコンピュータを中心とする人工的なシステムにより行えるようにしたものである。

機械学習は,機械に与えるデータを AI 自身が解析してルールや法則を反復的に学習し,人間が行う知的な振る舞いを人工的に再現する技法である。機械学習における学習方法は,次表に示す 3 つがある。

表 機械学習の学習方法
種類 内容
教師あり学習 学習データに正解ラベルを付けて学習する方法。主に入力と出力の関係を学習させる
教師なし学習 学習データに正解ラベルを付けないで学習する方法。主にデータの構造を学習させる。
強化学習 正解ラベルの代わりに,与えられた環境でとった行動に対して報酬(評価)を与える学習方法。将棋,囲碁や株の売買など,場面に応じてとるべき最良の行動を学習させる。
エキスパートシステム(expert system)
エキスパートシステムとは、ある分野の専門家の持つ知識をデータ化し、専門家のように推論や判断ができるようにするコンピュータシステム。1970 ~ 80 年代の人工知能(AI)研究から生まれた応用分野の一つである。
知識ベース
推論エンジン
機械学習
機械学習とは,機械に与えるデータを AI 自身が解析してルールや法則を反復的に学習し,人間が行う知的な振る舞いを人工的に再現する技法である。
汎化
厳密な解でなくてもなるべく正解に近い解を得るようにする方法であり,特定分野に特化せずに,広範囲で汎用的な問題解決ができるようにするものである。
ニューラルネットワーク
ニューロンと呼ばれる脳細胞の特性をコンピュータ上で表現したモデル
ディープラーニング(深層学習)
ディープラーニングとは,機械学習においてニューラルネットワークによるパターン認識を利用した機械学習の 1 つである。その構造は,ニューラルネットワークの中間層(隠れ層)が幾重にも重なる構造を持たせて,より効率的な学習が行われるようになっている。

機械学習における教師あり学習を説明せよ。

(出典)平成31年度 春季 基本情報技術者試験 午前問題 問4

正解のデータを提示したり,データが誤りであることを指摘したりすることによって,未知のデータに対して正誤を得ることを助ける。

(9) コンパイラ理論

中間言語
中間コードとは、人間が読み書きしやすいプログラミング言語で書かれたソースコードと、コンピュータが直に実行可能なネイティブコードの中間の特徴を持つ形式のプログラムコード。命令を表すコードを 1 バイトで表現するものは特に「バイトコード」(byte code)と呼ばれる。
目的プログラム(object code)
オブジェクトコードとは、コンピュータプログラムの形式の一つで、コンピュータによる解釈・実行に適した言語やコード体系で記述されたもの。通常は人間が直接記述することはなく、ソースコードから変換して生成する。
形式言語
コンピュータで使用できるよう,明確な定義の下で作成した形式(フォーマット)に従い,文字やプログラムを記述したもの。
オートマトン(automaton,状態機械)
オートマトンとは、計算機の構造や動作を抽象化したモデルの一つで、内部に固有の状態と、状態を変化させる規則の集合を持ち、外部からの入力に応じて状態を変化させるもの。複数形は “automata” (オートマタ)。

(10) プログラム言語論

手続型言語(procedural language)
手続き型言語とは、プログラミング言語の分類の一つで、コンピュータが実行すべき命令や手続きを順に記述していくことでプログラムを構成する言語。
関数型言語(functional language)
関数型言語とは、プログラミング言語の分類の一つで、プログラム中の処理や制御を関数の定義と適用の組み合わせとして記述していくもの。そのようなスタイルでコードを記述することを「関数型プログラミング」(functional programming)という。
論理型言語
オブジェクト指向言語(object-oriented programming language)
オブジェクト指向言語とは、プログラミング言語のうち、互いに関連するデータの集合とそれらに対する手続き群をひとまとめにした「オブジェクト」(object)をプログラムの基本的な構成単位として扱うことができるもの。

4. 通信に関する理論

  • 情報を伝送するための基本的な技術,代表的な方式の種類,特徴を理解し,担当する事項に適用する。

(1) 伝送理論

① 伝送路
単方向
半二重
全二重
② 変復調方式
AM(Amplitude Modulation : 振幅変調)
FM(Frequency Modulation : 周波数変調)
PM(Phase Modulation : 位相変調)
PCM(Pulse Code Modulation : パルス符号変調)

PCM 方式によって音声をサンプリング(標本化)して 8 ビットのディジタルデータに変換し,圧縮しないで転送したところ,転送速度は 64,000 ビット/秒であった。このときのサンプリング間隔は何マイクロ秒か。

(出典)平成25年度 秋季 基本情報技術者試験 午前問題 問

サンプリング間隔は,次式で求められる。

8 [ビット] ÷ 64,000 [ビット/秒] = 125 × 10-6 [sec]

よって,サンプリング間隔は 125 マイクロ秒である。

② 多重化方式
FDM(Frequency Division Multiplexing : 周波数分割多重)
TDM(Time Division Multiplexing : 時分割多重)
③ 誤り検出・訂正
CRC(Cyclic Redundancy Code)
CRC とは、誤り検出方式の一つで、データを値とみなしてある定数で割った余り(余剰)を用いて誤りの検知を行なうもの。その検査用の値を CRC 値、CRC 符号、巡回冗長符号などと呼ぶが、値自体を CRC(Cyclic Redundancy Code)と呼ぶこともある。
ハミング符号(Hamming Code)
ハミング符号とは、データの伝送時に付加し、誤りを検知・訂正できる誤り訂正符号の一つ。ビット列中の 1 の数の奇偶を利用するパリティチェックを拡張したもの。
パリティチェック(parity check,寄偶検査)
パリティチェックとは、データの誤り検出方式の一つで、ビット列中に含まれる「1」の数が偶数か奇数かを表す符号を算出してデータに付加する手法。最も単純な誤り訂正符号で、1 ビットの誤り検出しかできないが算出や検証が容易で高速なため広く普及している。
ECC(Error-Correcting Code)
誤り訂正符号とは、データを記録・伝送する際に発生する誤りを受け手の側で検出し、訂正することができるように付加される符号。元のデータから一定の手順に基いて算出し、データと共に記録・伝送する。
チェックサム(checksum)
チェックサムとは、誤り検出符号の一つで、データ列を整数値の列とみなして和を求め、これをある定数で割った余り(余剰)を検査用データとするもの。最も単純な誤り検出方式の一種で、誤りの検出精度は低いが原理が簡単で容易に実装でき、計算コストも低いため、簡易な誤り検出方式として広く普及している。

送信側では,ビット列をある生成多項式で割った余りをそのビット列に付加して送信し,受信側では,受信したビット列が同じ生成多項式で割り切れるか否かで誤りの発生を判断する誤り検査方式はどれか。

  1. CRC 方式
  2. 垂直パリティチェック方式
  3. 水平パリティチェック方式
  4. ハミング符号方式
(出典)平成29年度 秋季 基本情報技術者試験 午前問題 問2

正解は,1. である。

通信回線の伝送誤りに対処するパリティチェック方式(垂直パリティ)の記述として,適切なものはどれか。

  1. 1 ビットの誤りを検出できる。
  2. 1 ビットの誤りを訂正でき,2 ビットの誤りを検出できる。
  3. 奇数パリティならば 1 ビットの誤りを検出できるが,偶数パリティでは 1 ビットの誤りも検出できない。
  4. 奇数パリティならば奇数個のビット誤りを,偶数パリティならば偶数個のビット誤りを検出できる。
(出典)平成25年度 春季 基本情報技術者試験 午前問題 問4

正解は,1. である。

④ 信号同期方式

通信の分野では、機器やソフトウェアなどの間で信号やデータの送受信のタイミングを合わせ、正しく伝送されるよう制御することを同期という。

コンピュータ内部の通信では、一定周期のクロック信号に合わせて各回路や装置が信号を送り出すクロック同期が行われることが多い。クロック同期はデータの伝送だけでなく処理や制御のタイミングを合わせるのにも用いられる。

ビット同期
キャラクタ同期
フラグ同期
調歩同期
スタートビット
ストップビット
SYN 同期
フレーム同期

5. 計測・制御に関する理論

  • 信号処理の基本的な仕組みを理解する。
  • 制御の必要性,基本的な仕組みを理解する。
  • 代表的なセンサ・アクチュエータの種類と動作特性を理解する。

(1) 信号処理

フィルタリング(filtering)
フィルタリングとは、選別、濾過などの意味を持つ英単語で、IT の分野では与えられた条件に基づいて信号やデータなどを選別・加工・排除する仕組みを指す。そのような処理を行う装置やソフトウェアなどのことは「フィルタ」(filter)という。
D/A 変換
A/D 変換

アナログ電圧をディジタル化した後に演算処理することの利点として,適切なものはどれか。

  1. アナログからディジタルへの変換では誤差が発生しない。
  2. 演算結果が部品精度,温度変化及び外来雑音の影響を受けにくい。
  3. 数値演算において丸め誤差が発生することはない。
  4. 電圧が変化してから演算結果を得るまでの遅延時間が発生しない。
(出典)平成27年度 秋季 基本情報技術者試験 午前問題 問4

正解は,2. である。

(2) 制御に関する理論

① 制御の仕組み
リアルタイム OS(real-time operating system : RTOS)
リアルタイム OS とは、OS(オペレーティングシステム)の種類の一つで、時間的な制約がある処理を実行するための機能や特性を備えたもの。産業ロボットや輸送機械などの組み込みシステムの制御用としてよく用いられる。
オープンループ
応答特性
制御安定性

フィードバック制御を説明せよ。

(出典)平成29年度 秋季 基本情報技術者試験 午前問題 問3

フィードバック制御は,出力結果と目標値とを比較して,一致するように制御を行う。

② センサ・アクチュエータの種類と動作特性
光学センサ
赤外線センサ
磁気センサ
加速度センサ
ジャイロセンサ
超音波センサ
温度センサ
湿度センサ
圧力センサ
ひずみゲージ
サーミスタ
ホール素子
モータ

アルゴリズムとプログラミング

1. データ構造

  • データ構造の考え方,基本的な仕組みを修得し,適用する。
  • 代表的なデータ構造の種類,特徴を修得し,適用する。

(1) データ構造

データ構造は,プログラムで使用するデータを扱うための枠組みのことである。

(2) データ構造の種類

① 配列

配列(array)とは、複数のデータを連続的に並べたデータ構造。各データをその配列の要素といい、自然数などの添字(インデックス)で識別される。

多次元配列(multidimensional array)
プログラミング言語などが扱うデータ構造の一つで、配列の各要素が配列に、その要素がさらに配列になっているような入れ子構造の配列データのこと。単純な配列(1 次元配列)では配列の各要素にそれぞれ値が格納されているが、多次元配列では配列の各要素が配列に、その要素がさらに配列に…という具合に配列が何段階にも入れ子構造になっている。入れ子が何段階になっているかを次元の数で表し、配列の要素が配列になっているものを 2 次元配列、その要素がさらに配列になっているものを 3 次元配列、というように呼ぶ。
静的配列
動的配列

リストは,配列で実現する場合とポインタで実現する場合とがある。リストを配列で実現した場合の特徴として,適切なものはどれか。

  1. リストにある実際の要素数にかかわらず,リストの最大長に対応した領域を確保し,実際には使用されない領域が発生する可能性がある。
  2. リストにある実際の要素数にかかわらず,リストへの挿入と削減は一定時間で行うことができる。
  3. リストの中間要素を参照するには,リストの先頭から順番に要素をたどっていくので,要素数に比例した時間が必要となる。
  4. リストの要素を格納する領域の他に,次の要素を指し示すための領域が別途必要となる。
(出典)平成25年度 秋季 基本情報技術者試験 午前問題 問6

正解は,1. である。

② リスト

リストはデータの構造を連結したデータ構造で,リストの最小単位となる要素はデータ部とポイント部で構成される。データ部にはデータ自体を格納し,ポイント部には次の要素の場所に格納する。このポインタをたどることで,個々の要素にアクセスすることができる。

リストの種類には,ポインタの向きによって,単方向リスト双方向リスト環状リストがある。

表 リストの種類
種類 内容
単方向リスト 次の要素を示すポインタのみを持つリスト。先頭から末尾の方向へデータをたどることができる。
双方向リスト 次の要素と前の要素を示す 2 つのポインタを持つリスト。先頭から末尾,あるいは末尾から先頭へ向かって,データをたどることができる
環状リスト 末尾の要素のポイントが先頭の要素を示すリスト。要素が環状に連結される
線形リスト
先頭から末尾へ直線上に要素が連結されているもの

ポインタを用いた線形リストの特徴のうち,適切なものはどれか。

  1. 先頭の要素を根とした $n$ 分木で,先頭以外の要素は全て先頭の要素の子である。
  2. 配列を用いた場合と比較して,2 分探索を効率的に行うことが可能である。
  3. ポインタから次の要素を求めるためにハッシュ関数を用いる。
  4. ポインタによって指定されている要素の後ろに,新たな要素を追加する計算量は,要素の個数や位置によらず一定である。
(出典)平成27年度 秋季 基本情報技術者試験 午前問題 問5

正解は,4. である。

③ スタックとキュー

スタック(stack)とは,後に格納したデータから順に取り出す。後入先出型(LIFO : Last In First Out)のデータ構造である。スタックにデータを格納することを push(プッシュ),スタックからデータを取り出すことを pop(ポップ)と呼ぶ。

スタック
図 スタック

キュー(queue)とは,先に格納したデータから順に取り出す,先入先出型(FIFO : First In First Out)のデータ構造である。キューへデータを格納することを enqueue(エンキュー),キューからデータを取り出すことを dequeue(デキュー)と呼ぶ。

キュー
図 キュー
FIFO(First-In First-Out)
FIFO とは、複数の対象を取り扱う順序を表した用語で、最初に入れたものを最初に取り出す(先に入れたものを先に出す)方式のこと。
LIFO(Last-In First-Out)
LIFO とは、複数の対象を取り扱う順序を表した用語で、最初に入れたものを最後に取り出す(先に入れたものを後に出す)方式のこと。会計の分野では「後入先出法」と呼ぶ。
プッシュ(push)
プログラミングの分野で、スタックなどのデータ構造で新たにデータを一つ追加する操作や命令をプッシュという。
ポップ(pop)
プログラミングの分野で、スタックなどのデータ構造に保管されたデータの中から最も最近追加されたものを取り出す操作や命令をポップという。

キューに関する記述として,最も適切なものはどれか。

  1. 最後に格納されたデータが最初に取り出される。
  2. 最初に格納されたデータが最初に取り出される。
  3. 添字を用いて特定のデータを参照する。
  4. 二つ以上のポインタを用いてデータの階層関係を表現する。
(出典)平成27年度 春季 基本情報技術者試験 午前問題 問5

正解は,2. である。

加減乗除を組み合わせた計算式の処理において,スタックを利用するのが適している処理はどれか。

  1. 格納された計算の途中結果を,格納された順番に取り出す処理
  2. 計算の途中結果を格納し,別の計算を行った後で,その計算結果と途中結果との計算を行う処理
  3. 昇順に並べられた計算の途中結果のうち,中間にある途中結果だけを変更する処理
  4. リストの中間にある計算の途中結果に対して,新たな途中結果の挿入を行う処理
(出典)平成26年度 秋季 基本情報技術者試験 午前問題 問5

正解は,2. である。

④ 木構造

木構造(tree structure)とは、データ構造の一つで、一つの要素(ノード)が複数の子要素を持ち、一つの子要素が複数の孫要素を持ち、という形で階層が深くなるほど枝分かれしていく構造のこと。木が幹から枝、枝から葉に分岐していく様子に似ているためこのように呼ばれる。

すべての節において,「左側の子の値 < 節の値」「節の値 < 右側の子の値」という大小関係を持つ木を 2 分岐探索木と呼び,探索を効率的に行うことができる。下図は,1 ~ 9 の数字が各節に格納された 2 分岐探索木である。

2 分岐探索木
図 2 分岐探索木

2 分岐探索木からデータを探索する場合,探索データと節の値を比較し,その結果によって,次の処理を行う。

  • 対象データの値 > 節の値 → 右部分木をたどり,探索を続行。
  • 対象データの値 < 節の値 → 左部分木をたどり,探索を続行。
  • 対象データの値 = 節の値 → 探索を終了。

葉に達した時点で一致しない場合は,探索対象データが存在しないことになるため,探索を終了する。

階層の最上位の節を根(ルート)という。
子を持たない節を葉(リーフ)という。
節同士を結ぶものを枝(ブランチ)という。
2 分木(binary tree)
二分木とは、データ構造の一つである木構造(ツリー構造)のうち、どの親ノードも二つ以下の子ノードを持つもの。子が N 個以下に制限された N 分木(N-ary tree)のうち最も単純な構造の木である。
完全 2 分木(perfect binary tree)
二分木のうち、(子のない葉ノードを除く)子を持つノードの子の数がすべて二個ずつであるようなものを「全二分木」(full binary tree)、全二分木のうちすべての葉ノードの深さが揃っているものを「完全二分木」という。
バランス木(balanced tree)
木構造のうち、根ノードから子を持たない末端の要素(葉ノード)までの高さ(深さ)がなるべく等しくなるように構築されたものを「平衡木」(へいこうぎ/balanced tree:バランス木)という。
順序木
多分木(multi-branch tree/multi-way tree)
木構造のうち、親要素(親ノード)が3個以上の子要素(子ノード)を持つことができるもの多分木(たぶんぎ)という。
探索木
2 分探索木(binary search tree)
二分探索木はデータの探索に適したデータ構造の一つである。値を探索するには、根ノードから出発して、各ノードの値が探索している値より大きければ左の子に、小さければ右の子に移っていき、末端のノード(葉ノード)まで辿れば探索が終了する。根から葉までの深さ(高さ)の数だけ値を調べればよく、値を単純に端から順番に調べるより効率的に探索できる。
深さ優先探索
幅優先探索
先行順
後行順
中間順

2 分探索に関する記述のうち,適切なものはどれか。

  1. 2 分探索するデータ列は整列されている必要がある。
  2. 2 分探索は線形探索よりも常に速く探索できる。
  3. 2 分探索は探索をデータ列の先頭から開始する。
  4. $n$ 個のデータの 2 分探索に要する比較回数は,$n\log_{2}{n}$ に比例する。
(出典)平成26年度 秋季 基本情報技術者試験 午前問題 問6

正解は,1. である。

2. アルゴリズム

  • アルゴリズム,流れ図の基本的な考え方,表現方法を修得し,適用する。
  • 代表的なアルゴリズムの基本を修得し,適用する。
  • アルゴリズムの基本的な設計方法を修得し,適用する。

アルゴリズム(algorithm)とは、ある特定の問題を解く手順を、単純な計算や操作の組み合わせとして明確に定義したもの。数学の解法や計算手順なども含まれるが、IT の分野ではコンピュータにプログラムの形で与えて実行させることができるよう定式化された、処理手順の集合のことを指すことが多い。

(1) 流れ図

アルゴリズムを表記するための方法として,手続きの種類を表す記号を組み合わせて処理の流れを視覚化する流れ図(フローチャート)がある。流れ図の表記方法は JIS 規格(JIS X 0121-1986)で定義されている。

流れ図(フローチャート)記号
図 流れ図(フローチャート)記号
端子
処理の開始と終了を示す
処理
変数の代入や計算などの処理を記述する
定義済み処理
サブルーチンを示す
判断
処理を分岐するための条件を記述する
ループ端
繰返しの処理の開始と終了,および,繰返しの終了条件を記述する
データ
データの入出力を記述する
流れ図記号を結び処理の流れを示す

(2) 代表的なアルゴリズム

① 整列・併合・探索のアルゴリズム

整列(sort : ソート)は,ある基準に従ってデータを並び替える操作のことである。探索は,データの集合に目的のデータが存在するかを調べる処理である。

選択ソート(selection sort,基本選択法)
選択ソートとは、与えられたデータ列を大小などの順序通りになるよう並べ替えるソート(整列)アルゴリズムの最も基本的な手法の一つで、未整列の要素の中から最大あるいは最小のものを選択し、整列済みの列の末尾に追加していくもの。
バブルソート(bubble sort,単純交換法 / 隣接交換法 / 基本交換法)
バブルソートとは、与えられたデータ列を大小などの順序通りになるよう並べ替えるソート(整列)アルゴリズムの最も基本的な手法の一つで、端から順番に隣接する要素同士を比較・交換していくもの。
マージソート(merge sorting,併合ソート / 併合整列法)
マージソートとは、与えられたデータ列を大小などの順序通りになるよう並べ替えるソート(整列)アルゴリズムの一つで、データ列を細かく分割し、整列しながら次第に併合(merge)していくもの。
挿入ソート(insertion sort,基本挿入法 / インサーションソート / 単純挿入法)
挿入ソートとは、与えられたデータ列を大小などの順序通りになるよう並べ替えるソート(整列)アルゴリズムの最も基本的な手法の一つで、未整列の要素を一つずつ、整列済みの列の適切な位置に挿入していくもの。
シェルソート(Shell sort)
シェルソートとは、与えられたデータ列を大小などの順序通りになるよう並べ替えるソート(整列)アルゴリズムの最も基本的な手法の一つで、挿入ソートを改良したもの。1959 年にアメリカのコンピュータ科学者ドナルド・シェル(Donald Shell)が考案した。
クイックソート(quick sort)
クイックソートとは、与えられたデータ列を大小などの順序通りになるよう並べ替えるソート(整列)アルゴリズムで、最も高速な手法の一つ。1960 年に英コンピュータ科学者アントニー・ホーア(Charles Antony Richard Hoare)氏が考案した。
ヒープソート(heap sort)
ヒープソートとは、与えられたデータ列を大小などの順序通りになるよう並べ替えるソート(整列)アルゴリズムの一つで、ヒープ構造と呼ばれる二分木の一種を構築して並べ替えを行うもの。
線形探索法(linear search)
線形探索とは、データ探索アルゴリズムの一つで、配列などに格納されたデータ列の先頭から末尾まで順番に、探しているデータと一致するか比較していく手法。
2 分探索法(binary search,バイナリサーチ)
二分探索とは、データ検索アルゴリズムの一つで、ソート(整列)済みのデータ群の探索範囲を半分に絞り込むを操作を繰り返すことで高速に探索を行う手法。
ハッシュ表探索法(hashing method)
ハッシュ法とは、データ探索アルゴリズムの一つで、対象となるデータから一定の手順で算出したハッシュ値を用いてデータ本体の代わりに比較に用いる方式。対象とするデータが長い場合に処理を高速化することができる。

クイックソートの処理方法を説明したものはどれか。

  1. 既に整列済みのデータ列の正しい位置に,データを追加する操作を繰り返していく方法である。
  2. データ中の最小値を求め,次にそれを除いた部分の中から最小値を求める。この操作を繰り返していく方法である。
  3. 適当な基準値を選び,それよりも小さな値のグループと大きな値のグループにデータを分割する。同様にして,グループの中で基準値を選び,それぞれのグループを分割する。この操作を繰り返していく方法である。
  4. 隣り合ったデータの比較と入替えを繰り返すことによって,小さな値のデータを次第に端の方に移していく方法である。
(出典)平成30年度 秋季 基本情報技術者試験 午前問題 問6

正解は,3. である。

表探索におけるハッシュ法の特徴はどれか。

  1. 2 分木を用いる方法の一種である。
  2. 格納場所の衝突が発生しない方法である。
  3. キーの関数値によって格納場所を決める。
  4. 探索を要する時間は表全体の大きさにほぼ比例する。
(出典)平成30年度 春季 基本情報技術者試験 午前問題 問7

正解は,3. である。

顧客番号をキーとして顧客データを検索する場合,2 分岐探索を使用するのが適しているものはどれか。

  1. 顧客番号から求めたハッシュ値が指し示す位置に配置されているデータ構造
  2. 顧客番号に関係なく,ランダムに配置されているデータ構造
  3. 顧客番号の昇順に配置されているデータ構造
  4. 顧客番号をセルに格納し,セルのアドレス順に配置されているデータ構造
(出典)平成29年度 春季 基本情報技術者試験 午前問題 問7

正解は,3. である。

整列された $n$ 個のデータの中から,求める要素を 2 分探索法で探索する。この処理の計算量のオーダを表す式はどれか。

  1. $\log n$
  2. $n$
  3. $n^2$
  4. $n\log n$
(出典)平成27年度 春季 基本情報技術者試験 午前問題 問6

正解は,1. である。2 分探索では,範囲を 2 分しながら探索を行うため,平均の比較回数は「$\log_{2}{n}$」となる。

② 再帰のアルゴリズム

プログラミングの分野で、関数やメソッドなどの処理内容の記述の中に、自身の呼び出しを行なうコードが含まれることを「再帰呼び出し」(recursive call:リカーシブコール)、そのような関数を「再帰関数」(recursive function)という。また、そのような構造を用いて記述されるアルゴリズムを「再帰的アルゴリズム」(recursive algorithm)という。

再帰呼出しを説明せよ。

(出典)平成29年度 秋季 基本情報技術者試験 午前問題 問6

関数の中で自分自身を用いた処理を行う。

③ グラフのアルゴリズム
深さ優先探索
幅優先探索
最短経路探索
④ 文字列処理のアルゴリズム
文字列照会
⑤ ファイル処理のアルゴリズム

(2) アルゴリズム設計

再帰
再帰(リカーシブ)は,手続きや関数の中で,自分自身を呼び出すことをいう。
分割統治法

複数のプロセスから同時に呼び出されたときに,互いに干渉することなく並行して動作することができるプログラムの性質を表すものはどれか。

  1. リエントラント
  2. リカーシブ
  3. リユーザブル
  4. リロケータブル
(出典)平成31年度 秋季 基本情報技術者試験 午前問題 問8

正解は,1. である。リエントラント(再入可能)は,同時に複数のタスクを共有して実行しても,正しい結果が得られるプログラムの性質である。

3. プログラミング

  • プログラミング作法,コーディング標準を修得し,適用する。
  • プログラム言語の文法の基本的な表記法を修得し,適用する。

(1) プログラミング

プログラミング(programming)とは、コンピュータに意図した動作を行わせるために、まとまった処理手順を作成し、与えること。作成された手順のことをコンピュータプログラム(computer program)あるいは単にプログラムという。プログラミングを行う人や職種のことをプログラマ(programmer)という。

① プログラミング作法とコーディング標準
字下げ(インデンテーション)
インデントとは、文章の行頭に空白を挿入して先頭の文字を右に押しやること。また、そのために左端に挿入された空白や、テキストエディタやワープロソフトの持つ字下げ機能のこと。
ネストの深さ
命名規則
使用禁止命令
プログラムの機能適合性・性能効率性・使用性・保守性の向上
② プログラム構造
モジュール分割
モジュール分割とは、コンピュータプログラムを設計する際に、全体を何らかの基準に則って複数の部品(モジュール)に分割すること。モジュールは特定の機能や構造を表す適切な大きさのプログラムのまとまりであり、これを組み合わせてプログラム全体を構成していく。
独立性
ルーチン(routine)
ルーチンとは、型通りの(動作)、日課、定形業務などの意味を持つ英単語で、コンピュータプログラムのうち特定の機能や処理を実装したひとまとまりのコードの集合のことをこのように呼ぶ。
メインルーチン(main routine)
プログラムの本体となる最初に起動される部分のこと。
サブルーチン(sub routine)
メインルーチンや他のルーチンから呼び出されて利用されるルーチン。

再入可能プログラムの特徴はどれか。

  1. 主記憶上のどこのアドレスに配置しても,実行することができる。
  2. 手続の内部から自分自身を呼び出すことができる。
  3. 必要な部分を補助記憶装置から読みながら動作する。主記憶領域の大きさに制限があるときに,有効な手法である。
  4. 複数のタスクからの呼出しに対して,並行して実行されても,それぞれのタスクに正しい結果を返す。
(出典)平成27年度 春季 基本情報技術者試験 午前問題 問7

正解は,4. である。

③ データ型

データ型(data type)とは、プログラミング言語などが扱うデータをいくつかの種類に分類し、それぞれについて名称や特性、範囲、扱い方、表記法、メモリ上での記録方式などの規約を定めたものである。

整数型(integer type,int 型)
整数型とは、プログラミング言語などで用いられるデータ型の一つで、整数の値を格納できるもの。多くの言語に実装されている最も基本的なデータ型で、ビット長や符号の有無などにより複数の種類に分かれている場合もある。
実数型
論理型(boolean type,ブーリアン型)
ブーリアン型とは、プログラミング言語などに用意されているデータ型の一つで、「真」(true)と「偽」(false)の二種類の値だけを取りうるもの。
文字型(character type)
文字型とは、C 言語などに用意されている基本的なデータ型の一つで、一文字分の文字コードを格納するためのもの。
抽象データ型
構造型(structure)
構造体とは、C 言語などのプログラミング言語が持つデータ型の一つで、複数の異なるデータ型の変数を一つにまとめたもの。言語によっては似た機能が「ユーザー定義型」「レコード型」などの名称で提供されている場合もある。
④ Web プログラミング
サーバーサイドプログラミング
リッチクライアント(rich client)
リッチクライアントとは、Web アプリケーションのクライアントとして、Web ブラウザで単純な Web ページを表示する方式を超える表現力や操作性を備えたシステムを用いること。専用のアプリケーションソフトを利用する場合と Web ブラウザで高度な機能や拡張技術を用いる場合がある。
Ajax(Asynchronous JavaScript + XML)
Ajax とは、ある Web ページを表示した状態のまま、別のページや再読込などを伴わずに Web サーバ側と通信を行い、動的に表示内容を変更する手法。ページ上でプログラムを実行できるプログラミング言語 JavaScript の拡張機能を用いる。JavaScript の非同期通信の機能を使うことによって,動的なユーザインタフェースを画面全体の遷移を伴わずに実現する技術。
Apache
Apache とは、世界的に最も普及している Web サーバ(HTTP サーバ)ソフトウェアの一つ。Apache Software Foundation(Apacheソフトウェア財団)が開発しており、オープンソースソフトウェアとして公開している。
HTML5 技術(convas ほか)
HTML5 とは、Web ページの記述などに用いるマークアップ言語である HTML(Hypertext Markup Language)の第 5 版。HTML4 から仕様が大幅に刷新された。

(2) 文法の表記法

4. プログラミング言語

  • プログラム言語の種類,特徴,基本的な記述方法を修得し,適用する。
  • C,Java,Python,アセンブラ言語のプログラム作成方法を修得し,適用する。
  • 表計算ソフトの活用方法を修得し,適用する。

(1) プログラミング言語

① プログラミング言語の変遷と分類
② 手続型言語

手続型言語(procedural language)とは、プログラミング言語の分類の一つで、コンピュータが実行すべき命令や手続きを順に記述していくことでプログラムを構成する言語。

③ オブジェクト指向言語

オブジェクト指向言語(object-oriented programming language)とは、プログラミング言語のうち、互いに関連するデータの集合とそれらに対する手続き群をひとまとめにした「オブジェクト」(object)をプログラムの基本的な構成単位として扱うことができるもの。

④ スクリプト言語

スクリプト言語(scripting language)とは、プログラミング言語の一種で、オペレーティングシステム(OS)やアプリケーションソフトの動作や機能などをプログラムの形で記述できるもの。転じて、実行可能形式への変換作業などを省略・自動化したり、少ない記述量でも実行できるなど、仕様や開発手順が簡略化された言語の総称を表すこともある。

⑤ 共通言語基盤(CLI : Common Language Infrastructure)

米マイクロソフト(Microsoft)社が推進する .NET の実行環境(CLR)および対応プログラムの記述言語(CIL)の標準仕様を定めた規格。同社による実装を .NET Framework という。

機種や OS に依存しないプログラムの開発・実行環境を実装するために必要な諸技術の仕様を定めている。.NET プログラムの配布形式である CIL(Common Intermediate Language/共通中間言語/MSIL/IL)の仕様と、開発に用いるプログラミング言語に求められる共通仕様、実行環境(CLR)が実装すべき仕様を定めている。

(2) C の知識と技術

C 言語(C language)とは、広く普及している手続き型の高水準プログラミング言語の一つ。汎用的な言語で様々な分野で広く利用されているが、特にハードウェアを直接制御するプログラムの開発で利用される機会が多い。

C 言語の最初の仕様は 1972 年に AT&T 社のベル研究所でデニス・リッチー(Dennis M. Ritchie)氏とブライアン・カーニハン(Brian W. Kernighan)氏によって発表され、1989 年に ANSI(米国国家規格協会)標準に、1990 年に ISO(国際標準化機構)標準となった。日本でも 1993 年に ISO 標準を和訳したものを JIS(日本工業規格)の一部として標準化している。


#include<stdio.h>
int main(void){
	printf("Hello World !");
	return 0;
}

C 言語は UNIX の移植性を高めるために作られたプログラミング言語である。UNIX では,main 関数から返される値が「0」であれば正常終了,「0 以外」であれば異常終了と判断される。上記のリストにおいて,5 行目の「return 0;」は,main 関数が正常に終了したことを示している。

(3) Java の知識と技術

Java とは、様々な分野で人気の高いオブジェクト指向プログラミング言語の一つ。旧サン・マイクロシステムズ(Sun Microsystems)社が開発したもので、同社を買収した米オラクル(Oracle)社が開発を引き継いでいる。

C言語に似た表記法を採用しているが、過去の言語の仕様を受け継がず新たに設計されており、特にオブジェクト指向プログラミングを前提として言語仕様が整理されている点が大きな特徴となっている。強力なセキュリティ機構や豊富なネットワーク関連の機能が標準で用意されており、ネットワーク環境で利用されることを強く意識した仕様になっている。

Java に関連する技術は数多く存在し,その代表的な技術を下表に示す。

表 Java 関連の技術
名称 特徴
Java アプレット Web サーバからダウンロードして Web ブラウザ上で稼働する Java アプリケーション
Java サーブレット Web ページで動的処理を行うためにサーバ側で稼働する Java アプリケーション
JavaBeans Java の部品プログラムを組み合わせて,Java アプリケーションを開発するための再利用技術

Web 環境での動的処理を実現するプログラムであって,Web サーバ上だけで動作するものはどれか。

  1. JavaScript
  2. Java アプレット
  3. Java サーブレット
  4. VBScript
(出典)平成28年度 秋季 基本情報技術者試験 午前問題 問8

正解は,3. である。

(4) Python の知識と技術

Python とは、簡潔で読みやすい文法が特徴的な汎用の高水準プログラミング言語の一つ。いわゆるスクリプト言語あるいは軽量言語(LL:Lightweight Language)の草分けの一つで、UNIX 系 OS を中心に広く普及している。

基本的な特徴としては、豊富なデータ型とコンテナ型、ガベージコレクション、Unicode による多言語対応、プログラムのモジュール(部品)化による他のプログラムへの容易な組み込み、プログラムの仕様の文書化(ドキュメンテーション)を支援する機能などがある。ユニークな特徴としては、多くの言語では人間にとってプログラムを読みやすくするために便宜的に行われるインデント(字下げ)を言語仕様上の構文の一つとして採用しており、ブロックの範囲を示すのに用いられる。

言語自体の文法や語彙、記法な最小限のシンプルなものに抑えられているが、対照的に、極めて広範囲の分野に渡り豊富な機能を提供する標準ライブラリが用意されている。当初は手続き型言語とオブジェクト指向言語の特徴を備えた言語として設計されたが、関数型言語の要素の多くを取り入れ、様々なスタイルのプログラミングが可能なマルチパラダイム言語として知られている。

(5) アセンブラ言語(CASL Ⅱ)の知識と技術

アセンブリ言語とは、プログラミング言語の類型の一つで、コンピュータの CPU(MPU/マイクロプロセッサ)が直接解釈・実行できる機械語(マシン語)と正確に対応する命令語で構成された言語。

(6) 表計算ソフト

表計算ソフト(spreadsheet software)とは、主に大量の数値データの集計や分析などに用いられるアプリケーションソフト。

パソコン向けの表計算ソフトとしては、Microsoft社のMicrosoft Officeの一部として提供される「Microsoft Excel」(マイクロソフト・エクセル)が最も有名でシェアが高いが、他にもApple社の「Numbers」、OpenOffice.orgやLibreOfficeの「Calc」などがある。Google社の「Google Sheets」(日本名はGoogleスプレッドシート)のようにWebブラウザなどからインターネットを通じて利用するネットサービスなどもある。

5. その他の言語

  • 代表的なマークアップ言語の種類,特徴,記述方法の基本を理解し,担当する事項に適用する。
  • コンピュータで使用されるその他の言語の特徴を理解する。

(1) マークアップ言語

マークアップ言語(markup language)とは、コンピュータによって処理される人工言語の種類の一つで、データ中に特定の記法を用いて何らかの情報を埋め込むためのもの。テキスト(文字)データ中に特定の記号で囲まれたタグ(tag)と呼ばれる表記を用いて構造や見栄えなどを記述するものがよく知られるが、バイナリデータ中に埋め込むものなど、様々な種類がある。

① HTML

HTML(Hyper Text Markup Language)とは,Web ページを記述するためのマークアップ言語。文書の論理構造や表示の仕方などを記述することができる。W3C によって標準化が行われており、大半の Web ブラウザは標準で HTML 文書の解釈・表示が行える。

② XML

XML(Extensible Markup Language)とは、文書やデータの意味や構造を記述するためのマークアップ言語の一つ。マークアップ言語とは、「タグ」と呼ばれる特定の文字列で地の文に情報の意味や構造、装飾などを埋め込んでいく言語のことで、XML はユーザが独自のタグを指定できることから、マークアップ言語を作成するためのメタ言語とも言われる。

XML では,利用者独自のタグを使って,文書の属性情報や論理構造を定義することができる。


<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<root>
	<child attr="value">TEXT</child>
</root>

XML 文書の DTD に記述するものはどれか。

  1. 使用する文字コード
  2. データ
  3. バージョン情報
  4. 文書型の定義
(出典)平成30年度 春季 基本情報技術者試験 午前問題 問8

正解は,4. である。DTD は,Document Type Definition : 文書型宣言の略である。XML 文書をある一定の構文に従ってルール付けするためのものである。

③ XHTML

XHTML(Extensible HyperText Markup Language)とは、Webページの記述などに用いられるマークアップ言語であるHTML(HyperText Markup Language)をXMLの仕様に従って定義しなおした言語。Web関連技術の標準化を推進するW3C(World Wide Web Consortium)によって規格の策定が行われた。

④ スタイルシート

スタイルシート(style sheet)とは、文書データの見栄えに関する情報のみを記録・定義したデータやファイルなどのこと。スタイルシートの入れ替えや編集により、文書自体の内容はそのままに見栄えだけを変更することができる。

Web ページの記述に用いられるHTMLなどにもスタイルシートの概念があり、一般的にはCSS(Cascading Style Sheets)と呼ばれる専用の言語によりスタイルシートを記述する。単にスタイルシートといった場合は CSS 形式のデータやファイルなどを指すことが多い(XSL など他の方式も存在する)。

HTML 文書にスタイルシートを適用すると、文書本体から表示形式やレイアウトなどに関する情報を分離し、文書の構造だけを HTML ファイル本体に記述することが可能になる。

これによって、HTML 文書の論理的な構造が把握しやすくなるほか、サイト内の複数のページで同じスタイルを共有でき、変更を一括して適用するなどの効率的な管理ができるようになる。

(2) その他の言語

inserted by FC2 system