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

全172語。

*(正規表現) アスタリスク

直前のパターンを0回以上繰り返すことを表す記号。
⚠ +(1回以上)と取り違えやすい。どちらも文字そのものではなく繰返しの指示。
式の表し方とスタックの応用

+(正規表現) プラス

直前のパターンを1回以上繰り返すことを表す記号。
⚠ *は0回以上。+が付いた部分は最低1回必要で、*が付いた部分は無くてもよい。
式の表し方とスタックの応用

2次元配列 にじげんはいれつ

行番号と列番号の2つの添字で要素を指す、表の形の配列。
⚠ A(i, j) は i が行、j が列。入れ替えると別の要素になる。
配列の添字操作と表計算の参照

2進数 にしんすう

0と1だけで表し、桁が1つ上がるごとに重みが2倍になる数の表し方。
⚠ 10進→2進の変換では、余りは下の桁から順に並ぶ(上の桁からではない)。
数値を扱うアルゴリズムと計算問題

2分探索 にぶんたんさく(binary search)

整列済みのデータの真ん中と比べて探す範囲を半分ずつ絞る探索法。
⚠ 真ん中に直接飛ぶ必要があるので配列向き。リストでは効率が悪い。
連結リストの構造とポインタ操作

整列済みのデータの中央と比べ、探す範囲を毎回半分に絞っていく探索方法。
⚠ 線形探索と違い、キーで整列済みであることが前提。計算量は log₂n(n log₂n ではない)。
探索アルゴリズムと計算量

2分探索木 にぶんたんさくぎ(binary search tree)

どの節でも、左部分木の値はすべて節より小さく、右部分木の値はすべて節より大きい2分木。
⚠ ヒープは上下(親と子)の大小、2分探索木は左右の大小。根に最小値が来るのはヒープ。
2分探索木とヒープ

2分木 にぶんぎ

各要素が最大2つの子をもつ木構造。
スタックとキュー(LIFO と FIFO)

各節が持つ子が最大2つの木構造。
⚠ 「全ての節が2つの子を持つ」は誤り。子が0個や1個の節があってもよい。
連結リストの構造とポインタ操作

各節点が持つ子が最大2つ(左の子・右の子)の木。
木構造の基本と巡回順序・グラフの表現

各節の子が最大2つ(左の子・右の子)までの木構造。
⚠ 2分探索木は、2分木に「左<親<右」の大小条件を加えたもの。形が2分木でも、大小条件がなければ2分探索木ではない。
2分探索木とヒープ

3アドレス命令 さんアドレスめいれい

c = a op b のように、被演算子2つと結果1つの計3つの場所を指定して演算を1つだけ行う命令。
⚠ 四つ組は同じ内容を(演算子, 被演算子1, 被演算子2, 結果)の順で書いたもの。書く順番が違うだけ。
式の表し方とスタックの応用

ASCII コード American Standard Code for Information Interchange

英数字や記号を数値で表す代表的な文字コードで、小文字 a〜z は 97〜122 の連番。
ハッシュ法と衝突の扱い

div division(ディビジョン)

x div y は、x を y で割った商の整数部分を返す演算。
⚠ mod(余り)と入れ替えた選択肢が出る。
数値を扱うアルゴリズムと計算問題

EJB Enterprise JavaBeans

サーバ側の業務処理を再利用できる部品にするJavaの仕組み。
⚠ JSPと混同しやすい。HTML生成ならJSP。
オブジェクト指向とプログラム言語の特徴

FIFO First In First Out

先に入れたものが先に出る「先入れ先出し」のこと。キューの性質。
⚠ LIFO:スタックの性質。再帰呼出しの復帰は FIFO ではなく LIFO。
スタックとキュー(LIFO と FIFO)

JDBC Java Database Connectivity

Javaプログラムからデータベースに接続して操作するためのAPI。
オブジェクト指向とプログラム言語の特徴

JSP JavaServer Pages

HTMLにJavaのプログラムを埋め込み、サーバ側で動的にHTMLを生成する技術。
⚠ アプレットはクライアント側で動く。EJBは業務部品、JDBCはDB接続。
オブジェクト指向とプログラム言語の特徴

LIFO Last In First Out

後から入れたものが先に出る「後入れ先出し」のこと。スタックの性質。
⚠ FIFO と1文字違い。「Last が先(First)に出る」のがスタック。
スタックとキュー(LIFO と FIFO)

最後に入れたものを最初に取り出す方式で、スタックの性質。
⚠ FIFO(先入れ先出し)はキューの性質。L=Last が先に出るほうがスタック。
式の表し方とスタックの応用

LILO Last In Last Out

後に入れたものが後に出ること。意味は FIFO と同じで、試験ではダミーの選択肢として出る。
⚠ LIFO:スタックの性質。スタックを問われて LILO を選ばない。
スタックとキュー(LIFO と FIFO)

log₂n ログにエヌ

2 を何乗すると n になるかを表す値で、n を半分にし続けて 1 になるまでの回数に当たる。
⚠ n log₂n(整列の計算量)と取り違えやすい。1件探すだけなら log₂n。
探索アルゴリズムと計算量

LRU Least Recently Used

最も長い間使われていないものを追い出す、ページ置換えなどの方式。
⚠ LIFO・FIFO:データ構造の取り出し順を表す言葉。LRU はデータ構造の性質ではない。
スタックとキュー(LIFO と FIFO)

mod modulo(モジュロ)

x mod y は、x を y で割った余りを返す演算。
⚠ div は商を返す。mod は余り、div は商。
数値を扱うアルゴリズムと計算問題

mod(x, y) は x を y で割った余りを返す演算で、結果は 0〜y−1 の範囲に収まる。
⚠ 割り算の商と取り違えやすい。mod は余り。
ハッシュ法と衝突の扱い

push / pop プッシュ / ポップ

push はスタックの一番上にデータを積む操作、pop は一番上のデータを取り出す操作。
再帰呼出しと引数の渡し方

アプレット Java Applet

ブラウザ上で動くJavaの小さなプログラム(現在は廃止された技術)。
⚠ JSPはサーバ側、アプレットはクライアント側で動く。
オブジェクト指向とプログラム言語の特徴

インタプリタ いんたぷりた

ソースプログラムを1行ずつ解釈しながら実行する方式。事前のコンパイルが要らない。
⚠ コンパイラは先に全体を機械語へ翻訳してから実行する。
オブジェクト指向とプログラム言語の特徴

エンキュー enqueue(ENQ・enq)

キューの末尾にデータを入れる操作。
⚠ プッシュ:スタックの頂上に積む操作。
スタックとキュー(LIFO と FIFO)

オーダ order(O記法)

計算量の増え方を、定数倍を無視して n、log₂n、n² などの形だけで表したもの。
⚠ 「n² のオーダ」は cn²(c は定数)で抑えられる意味。具体的な回数そのものではない。
探索アルゴリズムと計算量

オーバーライド おーばーらいど

上位クラスのメソッドを、下位クラスで同じシグネチャのまま中身だけ書き換えること。
⚠ オーバーロードと混同しやすい。継承関係が前提ならオーバーライド。
オブジェクト指向とプログラム言語の特徴

オーバーロード おーばーろーど

同じ名前で引数の数や型が違うメソッドを複数定義し、呼び出し時の引数で使い分けること。
⚠ オーバーライドは同じシグネチャのメソッドを下位クラスで再定義すること。引数が違う方がオーバーロード。
オブジェクト指向とプログラム言語の特徴

オープンアドレス法 おーぷんあどれすほう(open addressing)

衝突したとき、決められたルールで表の中の別の空き場所を探して格納する方式。
⚠ チェイン法は同じ場所にリストでつなぐ方式。表の中で場所をずらすのがオープンアドレス法。
ハッシュ法と衝突の扱い

オブジェクト指向 おぶじぇくとしこう

データと処理をまとめたオブジェクトを組み合わせ、メッセージのやり取りでプログラムを組み立てる考え方。
⚠ 構造化(処理の手順を階層に分ける考え方)と混同しやすい。オブジェクト指向はデータと処理をセットにする点が違う。
オブジェクト指向とプログラム言語の特徴

オフセット offset

基準の位置から何個分ずらすかを表す数。
⚠ 連結では、前に置いた並びの長さがオフセットになる。後ろの並びの長さと取り違えない。
配列の添字操作と表計算の参照

ガーベジコレクション がーべじこれくしょん

プログラムが使わなくなったメモリ領域を自動で見つけて回収する機能。
オブジェクト指向とプログラム言語の特徴

カプセル化 かぷせるか

属性と振る舞いを1つにまとめて内部を隠し、決められた窓口からしか使えないようにすること。
⚠ クラス化・モジュール化と取り違えやすい。「内部を隠す」「利用者が影響を受けない」とあればカプセル化。
オブジェクト指向とプログラム言語の特徴

キュー queue

先に入れたデータから順に取り出す(先入れ先出し)データ構造。
⚠ 「格納された順番に取り出す」はキュー。スタックと取り違えやすい。
式の表し方とスタックの応用

最初に入れたデータを最初に取り出す(先入れ先出し・FIFO)データ構造。
⚠ スタックはLIFO。
連結リストの構造とポインタ操作

キュー(待ち行列) queue(まちぎょうれつ)

最初に入れたデータから順に取り出すデータ構造。
⚠ スタック:最後に入れたデータから取り出す。「先入れ先出し」ならキュー。
スタックとキュー(LIFO と FIFO)

クイックソート quick sort

基準値を決めて、大きい値の区分と小さい値の区分に振り分け、各区分で同じ処理を繰り返す方法。
⚠ 「基準値」「区分」がキーワード。バブルソートの説明と入れ替えられやすい。
2分探索木とヒープ

基準値より小さいグループと大きいグループに分け、各グループで同じ分割を再帰的に繰り返す整列法。
⚠ マージソートも分割するが、整列しながら「併合」する。説明文に基準値があればクイックソート、併合があればマージソート。
整列(ソート)アルゴリズムの比較

クラス くらす

オブジェクトに共通する属性とメソッドを定義した設計図。
⚠ インスタンスはクラスから作った実体。設計図なのか実物なのかで見分ける。
オブジェクト指向とプログラム言語の特徴

グラフ グラフ

節点(頂点)と、それらを結ぶ枝(辺)で表したつながりの構造。
⚠ 木はグラフのうち、すべてつながっていて閉路を持たないもの。
木構造の基本と巡回順序・グラフの表現

コンパイラ compiler

プログラム全体をまとめて機械語などに翻訳するソフトウェア。
⚠ インタプリタは1行ずつ解釈しながら実行する。
式の表し方とスタックの応用

シェルソート shell sort

一定間隔おきに取り出した要素の部分列を整列し、間隔を詰めながら最後は間隔1で整列する方法。
⚠ 「間隔」がキーワード。クイックソートの説明と入れ替えられやすい。
2分探索木とヒープ

一定の間隔ごとの要素で部分列を作って挿入法で整列し、間隔を詰めながら最後は間隔1で仕上げる整列法。
⚠ 「ある間隔おきに取り出した要素」とあればシェルソート。基数ソートの「桁ごと」と混同しない。
整列(ソート)アルゴリズムの比較

シグネチャ しぐねちゃ

メソッド名と引数の並び(数・型・順序)の組合せ。
オブジェクト指向とプログラム言語の特徴

シノニム synonym(同義語)

ハッシュ値が同じになって衝突したキー同士のこと。
⚠ 検索技術のシソーラス(同義語・類義語リスト)とは別物。
ハッシュ法と衝突の扱い

シフト(ずらし) しふと

配列の要素を1つずつ前または後ろの位置へ移すこと。
⚠ 後ろへずらすときは大きい添字から、前へ詰めるときは小さい添字から処理する。逆にすると値が上書きされて消える。
配列の添字操作と表計算の参照

スクリプト言語 すくりぷとげんご

手軽に書いて、事前にコンパイルせずそのまま実行できる言語(Perl・Python・Ruby・JavaScriptなど)。
オブジェクト指向とプログラム言語の特徴

スタック stack

後から入れたデータを先に取り出す(LIFO)データの入れ物。
⚠ キュー(先に入れたものを先に出す FIFO)と区別する。
再帰呼出しと引数の渡し方

最後に入れたデータから順に取り出すデータ構造。
⚠ キュー:最初に入れたデータから取り出す。「後入れ先出し」ならスタック。
スタックとキュー(LIFO と FIFO)

最後に入れたデータから順に取り出す(後入れ先出し)データ構造。
⚠ キューは先に入れたものから取り出す。「最後に入れたものが先に出る」ならスタック。
式の表し方とスタックの応用

最後に入れたデータを最初に取り出す(後入れ先出し・LIFO)データ構造。
⚠ 先入れ先出し(FIFO)はキュー。
連結リストの構造とポインタ操作

チェイン法 ちぇいんほう(連鎖法・chaining)

同じハッシュ値になったデータをリスト構造でつなぎ、同じ格納場所にまとめておく衝突処理方式。
⚠ オープンアドレス法は別の空き場所へずらす。チェイン法はずらさずにつなぐ。
ハッシュ法と衝突の扱い

データ部 でーたぶ

リストの各要素のうち、値そのものを入れる部分。
⚠ ポインタ部は値ではなく「次の要素の場所」を入れる部分。
連結リストの構造とポインタ操作

デキュー dequeue(DEQ・deq)

キューの先頭からデータを取り出す操作。
⚠ ポップ:スタックの頂上(最後に入れたもの)から取り出す。
スタックとキュー(LIFO と FIFO)

トレース trace(追跡)

変数の値が処理1行ごとにどう変わるかを、表などに書き出して追いかけること。
流れ図の基本構造とループの終了条件

流れ図やプログラムを手で1ステップずつ実行して、変数の値の変化を追うこと。
数値を扱うアルゴリズムと計算問題

パス ぱす(pass)

整列の途中で、データ列を端から端まで1回走査すること。
整列(ソート)アルゴリズムの比較

ハッシュ hash

キーから計算した値でデータの格納位置を決める方式。
スタックとキュー(LIFO と FIFO)

ハッシュ関数 はっしゅかんすう

キーを入力すると、格納場所の番号(ハッシュ値)を返す計算式。
ハッシュ法と衝突の扱い

ハッシュ探索 はっしゅたんさく

キーから計算したハッシュ値を格納位置として使い、目的のデータを直接取り出す探索方法。
⚠ 2分探索と違い整列は不要。衝突を無視すれば計算量は 1(定数)。
探索アルゴリズムと計算量

ハッシュ値 はっしゅち

キーを決まった計算式(ハッシュ関数)に通して得られる、格納位置を表す値。
探索アルゴリズムと計算量

ハッシュ関数の計算結果で、格納場所のアドレスとして使う値。
⚠ 計算途中の値(桁の和や割り算の商)をハッシュ値と取り違えやすい。最後に出た余りなどが答え。
ハッシュ法と衝突の扱い

ハッシュ表 はっしゅひょう

ハッシュ値をアドレスとしてデータを格納する配列状の表。
ハッシュ法と衝突の扱い

ハッシュ法 はっしゅほう

キーをハッシュ関数で計算した値を格納場所として使い、表をなめずに直接アクセスする探索・格納の方法。
⚠ 索引(対応表を引く)や直接アドレス指定(キーをそのままアドレスにする)と混同しやすい。「関数で計算する」がハッシュ法の目印。
ハッシュ法と衝突の扱い

バブルソート bubble sort

隣り合う要素を比べ、大小が逆なら入れ替える操作を繰り返す方法。
⚠ 「隣り合う」がキーワード。シェルソートの説明と入れ替えられやすい。
2分探索木とヒープ

隣り合う2つの要素を比べ、順番が逆なら交換する操作を繰り返す整列法。
⚠ 選択ソートは「最小値を探して先頭と交換」で、交換する相手が隣とは限らない。「隣り合う」とあればバブルソート。
整列(ソート)アルゴリズムの比較

ヒープ heap

親の値が子の値より常に大きい(または小さい)木構造で、最大値(最小値)をすぐ取り出せる。
⚠ スタック・キュー:入れた順番で取り出す。ヒープは値の大小で取り出す。
スタックとキュー(LIFO と FIFO)

どの親も子より小さい(または大きい)という上下の関係を保ち、上の段から左詰めで埋めた2分木。
⚠ 2分探索木と違い、左右の子の大小は決まっていない。根に最小値(最大値)が来る。
2分探索木とヒープ

ヒープソート heap sort

未整列部分をヒープにし、根の最大値(最小値)を取り出して整列済み部分へ移すことを繰り返す整列法。
⚠ 一定間隔おきに整列するのはシェルソート、基準値で振り分けるのはクイックソート、隣同士を入れ替えるのはバブルソート。
2分探索木とヒープ

未整列部分をヒープ(順序木)にし、根から最大値(最小値)を取り出して整列済みに移すことを繰り返す整列法。
⚠ 選択ソートも最小値を取り出すが、最小値を探す手段が違う。「順序木」「ヒープ」とあればヒープソート。
整列(ソート)アルゴリズムの比較

ヒープへの挿入 ひーぷへのそうにゅう

最後部に要素を置き、親より小さい(親<子のヒープの場合)間は親と入れ替えて上へ進める操作。
⚠ 2分探索木への挿入は根から下へたどって葉に置く。ヒープは最後部に置いてから上へ上がる。
2分探索木とヒープ

ピボット(基準値) ぴぼっと(pivot)

クイックソートで、グループを大小に分けるときの境目として選ぶ値。
整列(ソート)アルゴリズムの比較

プッシュ push

スタックの頂上にデータを積む操作。
⚠ エンキュー:キューの末尾にデータを入れる操作。
スタックとキュー(LIFO と FIFO)

プッシュ/ポップ push/pop

スタックの一番上にデータを積む操作がプッシュ、一番上から取り出す操作がポップ。
⚠ キューでは同じ働きの操作をエンキュー/デキューと呼ぶ。
式の表し方とスタックの応用

ブロック分割探索 ぶろっくぶんかつたんさく

整列済みデータを一定件数のブロックに分け、ブロックを特定してからその中を探す2段階の探索方法。
探索アルゴリズムと計算量

ポインタ pointer

データが置かれているメモリ上の場所(アドレス)を指し示す値。
⚠ 添字は配列の中での番号。配列2本で作るリストでは、next に入る添字がポインタの役割をする。
連結リストの構造とポインタ操作

ポインタ部 ぽいんたぶ

リストの各要素のうち、次(双方向なら前も)の要素の格納先を入れる部分。
⚠ ハッシュ関数で次の場所を計算するわけではない。値をそのまま保持している。
連結リストの構造とポインタ操作

ポップ pop

スタックの頂上(最後に積んだもの)からデータを取り出す操作。
⚠ デキュー:キューの先頭(最も古いもの)から取り出す。
スタックとキュー(LIFO と FIFO)

マージソート まーじそーと(merge sort)

データを細かく分けてから、整列しながら合体(併合)させていく整列法。
⚠ クイックソートとの見分け方は「併合」の有無。
整列(ソート)アルゴリズムの比較

メッセージ めっせーじ

あるオブジェクトが別のオブジェクトに処理を頼む呼び出しのこと。
オブジェクト指向とプログラム言語の特徴

ユークリッドの互除法 ゆーくりっどのごじょほう

大きい方を「差」または「割った余り」に置き換える操作を繰り返して、最大公約数を求める手順。
⚠ 引き算版は2つの値が等しくなったら終わり、mod版は y=0 になったら終わり。比較回数は、引き算の回数+最後の1回。
数値を扱うアルゴリズムと計算問題

ループ端 ループたん

流れ図で繰返しの範囲の始まりと終わりを示す記号で、「変数名:初期値,増分,終値」で回し方を指定できる。
流れ図の基本構造とループの終了条件

ループ端の繰返し指定 るーぷたんのくりかえししてい

「変数名:初期値, 増分, 終値」の形で、変数をいくつから始め、いくつずつ変え、いくつで終えるかを示す書き方。
⚠ 増分が −1 なら減らしていく(降順)。初期値と終値の大小だけで向きを判断しない。
配列の添字操作と表計算の参照

一時変数 いちじへんすう

計算の途中結果を一時的に入れておく変数(T1、w1 など)。
⚠ 最終的な式には残らない。残っている選択肢は誤り。
式の表し方とスタックの応用

演算子 えんざんし

+、−、×、÷ など、計算の種類を表す記号。
⚠ 被演算子は計算される側の数や変数。
式の表し方とスタックの応用

演算子の優先順位 えんざんしのゆうせんじゅんい

括弧が無いときにどの演算子から先に計算するかの決まりで、通常は × ÷ が + − より先。
⚠ 括弧があれば括弧の中が優先される。式を復元するとき、括弧を付け忘れると別の式になる。
式の表し方とスタックの応用

仮引数 かりひきすう

関数の定義側で受け取る変数で、その関数の中だけで有効。
⚠ 『仮引数が呼出し側でも有効』という選択肢は誤り。
再帰呼出しと引数の渡し方

関数を定義する側で、渡された値を受け取る変数。
⚠ 実引数:関数を呼び出す側が実際に渡す値。
スタックとキュー(LIFO と FIFO)

回転(90度回転) かいてん

2次元配列の図形を90度回すこと。時計回りなら B(j, 7−i) ← A(i, j)(8×8の場合)。
⚠ 反転は片方の添字だけ「7−」にする(B(i, 7−j) など)。行と列の入れ替えが無い点で回転と違う。
配列の添字操作と表計算の参照

階乗 かいじょう

1 から n までの整数をすべて掛けた値 n! で、0! は 1 と決められている。
⚠ 1 から n までの総和(n+(n−1)+…)と取り違えやすい。階乗は掛け算。
再帰呼出しと引数の渡し方

完全2分木 かんぜんにぶんぎ

葉以外の節点がすべて2つの子を持ち、葉の深さがすべて等しい2分木で、深さ d なら節点は 2^(d+1)−1 個、葉は 2^d 個になる。
⚠ 葉の数 2^d と全節点数 2^(d+1)−1 を取り違えやすい。d=2 で描いて確かめる。
木構造の基本と巡回順序・グラフの表現

最下段以外の段がすべて埋まり、最下段は左から詰めて並ぶ2分木(15個なら4段がちょうど満杯になる)。
⚠ 2分探索木で完全2分木になる値の配置は1通りだが、その形になる挿入順は複数ある。
2分探索木とヒープ

基数ソート きすうそーと(radix sort)

下の桁から順に、桁の数字でグループに分けて並べ直すことを繰り返す整列法。大小の比較はしない。
⚠ 「1の位で0〜9に分ける」とあれば基数ソート。途中の桁までしか処理しなければ、まだ整列は終わっていない。
整列(ソート)アルゴリズムの比較

基数変換法 きすうへんかんほう

キーを別の基数(例:11進数)の数とみなして10進数に直し、その一部を加工してアドレスにするハッシュ関数の作り方。
ハッシュ法と衝突の扱い

基底条件 きていじょうけん

再帰でそれ以上は呼び出さず、具体的な値を返して止まるための条件。
再帰呼出しと引数の渡し方

帰りがけ順 かえりがけじゅん(後行順・後順・postorder)

左部分木→右部分木→自分の順に訪れる巡回で、式の木に使うと逆ポーランド記法になる。
⚠ 行きがけ順と逆で、根が最後に出てくる。
木構造の基本と巡回順序・グラフの表現

逆ポーランド記法 ぎゃくポーランドきほう(後置記法)

演算子を、計算する2つの値の後ろに書く式の表し方(例:a+b を ab+)。
⚠ 前置記法(+ab)と区別する。式の木を帰りがけ順でたどると得られる。
木構造の基本と巡回順序・グラフの表現

局所変数 きょくしょへんすう

その関数の中だけで使われる変数。
スタックとキュー(LIFO と FIFO)

繰返し くりかえし

条件を判定しながら同じ処理を何度も実行する構造。
⚠ 再帰と混同しやすいが、再帰は基本構造に含まれない。
流れ図の基本構造とループの終了条件

継承 けいしょう(インヘリタンス)

上位クラスの属性やメソッドを下位クラスが引き継ぐ仕組み。
⚠ 下位クラスは独自の性質を追加できるので、「下位に必要な性質は全て上位にある」は誤り。
オブジェクト指向とプログラム言語の特徴

継続条件 けいぞくじょうけん

成り立っているあいだループを続ける条件。
⚠ 終了条件とは否定の関係(i≦N の否定が i>N)。ひし形の Yes が終了につながっていれば、そこは終了条件。
流れ図の基本構造とループの終了条件

計算量 けいさんりょう

データ数 n が増えたとき、処理の手間(比較回数や時間)がどのように増えるかを表す尺度。
探索アルゴリズムと計算量

データ数 n が増えたとき、処理の手間がどの程度増えるかの目安。
⚠ バブル・選択・挿入は n² に比例。クイック(平均)・マージ・ヒープは n log n に比例。
整列(ソート)アルゴリズムの比較

結果呼出し けっかよびだし(call by result)

関数の終了時に、仮引数の結果を実引数へ書き戻す方式。
⚠ 呼出し元の変数が変わりうるので、『変更されない保証』の正解にはならない。
再帰呼出しと引数の渡し方

後行順(帰りがけ順) こうこうじゅん(post-order)

左部分木 → 右部分木 → 自分 の順に節をたどる方法。
⚠ 自分(親)を最後に読むのが後行順。最後に根が来る。
2分探索木とヒープ

後置記法(逆ポーランド記法) こうちきほう(ぎゃくポーランドきほう)

ab+ のように演算子を被演算子の後ろに置く書き方で、スタックで左から順に計算できる。
⚠ 前置記法(ポーランド記法)は演算子が前に来る。「逆」が付いているほうが後置。
式の表し方とスタックの応用

後判定繰返し あとはんていくりかえし

本体を実行した後に条件を判定する繰返しで、本体を必ず1回以上実行する。
⚠ 「先頭で判定する」は前判定の説明。
流れ図の基本構造とループの終了条件

語頭条件 ごとうじょうけん(接頭語条件・prefix condition)

どの符号も、ほかの符号の先頭部分になっていないという条件。
⚠ 満たしていれば一意に復号できる。短さだけで選ぶと、この条件を見落とす。
数値を扱うアルゴリズムと計算問題

構造化プログラミング こうぞうかプログラミング

処理の流れを順次・選択・繰返しの3つの基本構造だけで組み立てるプログラミング手法。
⚠ 関数型(関数の組合せ)・論理型(事実と規則から推論)・並列(同時実行)とは別物。「順次・選択・繰返しだけ」と出たら構造化。
流れ図の基本構造とループの終了条件

構文解析 こうぶんかいせき

コンパイラが、プログラムや式の文法上の構造(どの演算をどの順で行うか)を読み取る処理。
⚠ 字句解析は、文字の並びを単語(トークン)に区切る前段階の処理。
式の表し方とスタックの応用

行きがけ順 いきがけじゅん(先行順・前順・preorder)

自分→左部分木→右部分木の順に訪れる巡回で、式の木に使うと前置記法になる。
⚠ 帰りがけ順とは自分を出すタイミングが逆。最初に根が出てくれば行きがけ順。
木構造の基本と巡回順序・グラフの表現

根 ね(ルート)

木の一番上にあり、親を持たない唯一の節点。
⚠ 親配列表現では A[k]=0 の節点。葉として数えない。
木構造の基本と巡回順序・グラフの表現

木のいちばん上にある、親を持たない節。
⚠ 葉は反対に、子を持たない末端の節。
2分探索木とヒープ

再帰 さいき

関数や手続きが、処理の中で自分自身を呼び出すこと。
⚠ 三基本構造(順次・選択・繰返し)には含まれない。選択肢に再帰が入っていたら外す。
流れ図の基本構造とループの終了条件

関数が自分自身を呼び出して処理を進める書き方。
⚠ ループと同じことを、関数の呼び出しで書いたもの。終了条件(例:y=0)を必ず探す。
数値を扱うアルゴリズムと計算問題

ある処理の中で、より小さな範囲に対して同じ処理を呼び出して繰り返すこと。
整列(ソート)アルゴリズムの比較

再帰呼出し さいききよびだし

関数が実行中に自分自身を呼び出すこと。
⚠ 再入可能(複数のタスクが同時に実行できる性質)と混同しやすい。『自分自身を』と書いてあれば再帰。
再帰呼出しと引数の渡し方

再帰的定義 さいきてきていぎ

あるものを、それ自身の一回り小さい場合を使って定義する書き方。
再帰呼出しと引数の渡し方

再使用可能 さいしようかのう(リユーザブル)

一度実行した後にロードし直さなくても、繰り返し正しく実行できる性質。
⚠ 見分けるキーワードは『ロードし直さずに』。
再帰呼出しと引数の渡し方

再入可能 さいにゅうかのう(リエントラント)

複数のタスクが同時に共有して実行しても、正しい結果が得られる性質。
⚠ 再帰的と取り違えやすい。見分けるキーワードは『同時に複数タスク』。
再帰呼出しと引数の渡し方

再配置可能 さいはいちかのう(リロケータブル)

主記憶のどのアドレスに置いても実行できる性質。
⚠ 見分けるキーワードは『どこのアドレスでも』。
再帰呼出しと引数の渡し方

最下位ビット さいかいびっと(LSB:Least Significant Bit)

ビット列のいちばん右の桁で、この問題では第0ビットと呼ぶ。
⚠ 最上位ビット(MSB・16ビットなら第15ビット)。乗算の流れ図で見るのは第0ビット。
数値を扱うアルゴリズムと計算問題

最大公約数 さいだいこうやくすう(GCD:Greatest Common Divisor)

2つの数をどちらも割り切れる数のうち、最大のもの。
⚠ 最小公倍数(両方の倍数のうち最小のもの)とは別物。
数値を扱うアルゴリズムと計算問題

索引 さくいん(インデックス)

キー値と格納アドレスの対応表を用意し、それを引いてデータにアクセスする方式。
⚠ ハッシュ法は表を引かずに計算でアドレスを出す。「対応表」と書いてあれば索引。
ハッシュ法と衝突の扱い

参照呼出し さんしょうよびだし(call by reference)

変数の場所(アドレス)を渡す方式で、関数内で変更すると呼出し元の変数も変わる。
⚠ 値呼出しと逆にしやすい。
再帰呼出しと引数の渡し方

四つ組 よつぐみ

(演算子, 被演算子1, 被演算子2, 結果)の4項目で1つの演算を表す、構文解析結果の表現形式。
⚠ 3アドレス命令と中身は同じ。項目の順番を問題文で確認する。
式の表し方とスタックの応用

実引数 じつひきすう

関数を呼び出す側が渡す値や変数。
⚠ 仮引数と逆にしやすい。呼ぶ側が実引数、受け取る側が仮引数。
再帰呼出しと引数の渡し方

終了条件 しゅうりょうじょうけん

成り立ったらループを抜ける条件。
⚠ 継続条件と向きが逆。空欄補充では、Yes の行き先が「終了」か「本体」かを先に確認する。
流れ図の基本構造とループの終了条件

集約 しゅうやく

あるオブジェクトが別のオブジェクトを部品として持つ、全体と部分の関係。
⚠ 汎化(〜の一種)と区別する。
オブジェクト指向とプログラム言語の特徴

順次 じゅんじ

処理を上から順に1つずつ実行する構造。
流れ図の基本構造とループの終了条件

順序木 じゅんじょぎ

親子の間に一定の大小関係を保った木。整列法の説明文ではヒープのことを指す。
⚠ 選択肢に「順序木」とあればヒープソートの説明。
2分探索木とヒープ

初期化 しょきか

ループに入る前に、変数に最初の値を入れておくこと。
⚠ 合計用は 0、掛け算を重ねる変数は 1 から始めるのが原則。取り違えると答えがずれる。
流れ図の基本構造とループの終了条件

商 しょう

割り算の答えの整数部分。
⚠ 余りと入れ替えた選択肢が出る。「何回引けたか」が商、「最後に残った数」が余り。
数値を扱うアルゴリズムと計算問題

衝突 しょうとつ

異なるキーから同じハッシュ値が出て、格納位置が重なること(シノニムとも呼ぶ)。
⚠ 試験の計算量の問題では「衝突は無視できる」と条件が付き、そのときハッシュ探索は 1 になる。
探索アルゴリズムと計算量

異なるキーなのに同じハッシュ値になり、同じ格納場所を指してしまうこと。
⚠ 「ハッシュ法は衝突が発生しない」は誤り。キーの種類が場所の数より多いので必ず起こりうる。
ハッシュ法と衝突の扱い

情報隠蔽 じょうほういんぺい

オブジェクト内部のデータや作り方を外部から見えないようにすること。
オブジェクト指向とプログラム言語の特徴

深さ ふかさ

根からある節点までにたどる枝の本数で、根の深さは0。
⚠ 段の数(深さ+1)と取り違えると、2^d と 2^(d−1) のずれが起きる。
木構造の基本と巡回順序・グラフの表現

深さ優先探索 ふかさゆうせんたんさく(DFS: Depth-First Search)

子があれば先にできるだけ深く進み、行き止まりで戻って次の枝へ進む探索方法。
⚠ 幅優先探索は、同じ深さの節点を全部見てから次の深さへ進む。
木構造の基本と巡回順序・グラフの表現

整列(ソート) せいれつ

データをキーの昇順や降順に並べ替えること。
⚠ 2分探索の前提条件。整列処理自体の計算量は n log₂n や n² で、探索の log₂n と混同しない。
探索アルゴリズムと計算量

データを決まった順序(昇順・降順)に並べ替える処理。
⚠ 探索(データの中から目的の値を探す処理)とは別のもの。2分探索などは整列済みのデータを前提にする。
整列(ソート)アルゴリズムの比較

正規表現 せいきひょうげん

文字列のパターンを、記号を使って表す書き方。
式の表し方とスタックの応用

積の法則 せきのほうそく

「Aをしてから続けてBをする」場合の数は、Aの数×Bの数になるという考え方。
⚠ 和の法則(AまたはB)は足し算。「〜を通って」なら掛け算。
数値を扱うアルゴリズムと計算問題

節(ノード) せつ(node)

木を構成する1つ1つのデータの入れ物。
2分探索木とヒープ

節点 せってん(ノード)

木やグラフでデータを持つ点のことで、根も葉も含む。
⚠ 枝(エッジ)と混同しない。枝の数=節点の数−1。
木構造の基本と巡回順序・グラフの表現

絶対参照 ぜったいさんしょう

$B$1 のように行と列の両方に$を付け、複写しても同じセルを指し続ける参照の仕方。
⚠ 片方だけ$なら複合参照。
配列の添字操作と表計算の参照

先行順(行きがけ順) せんこうじゅん(pre-order)

自分 → 左部分木 → 右部分木 の順に節をたどる方法。
⚠ 中間順と取り違えやすい。自分(親)を最初に読むのが先行順。
2分探索木とヒープ

線形リスト せんけいりすと

要素を一直線の順序でつなぎ、各要素がデータ部と次の要素を指すポインタ部を持つデータ構造。
⚠ 配列は連続した領域に並べて添字で直接アクセスする。リストはポインタをたどる。
連結リストの構造とポインタ操作

線形探索 せんけいたんさく

配列の先頭から1件ずつ順に比べて目的の値を探す方法で、データの並び順を問わない。
⚠ 2分探索と比べ、前提条件が「なし」、計算量が n。頻度順に並べた表はこちらで探す。
探索アルゴリズムと計算量

選択 せんたく

条件によって実行する処理を切り替える構造。
⚠ 戻る線があれば選択ではなく繰返し。
流れ図の基本構造とループの終了条件

選択ソート せんたくそーと(selection sort)

未整列部分から最小値(最大値)を選び、未整列部分の先頭と交換することを繰り返す整列法。
⚠ 挿入ソートは「整列済みの列に1つずつ差し込む」。選択ソートは「残りから最小値を探す」。
整列(ソート)アルゴリズムの比較

前置記法(ポーランド記法) ぜんちきほう

+ab のように演算子を被演算子の前に置く書き方。
⚠ 逆ポーランド記法(後置)と名前が似ているので、「逆」の有無で区別する。
式の表し方とスタックの応用

前判定繰返し まえはんていくりかえし

本体を実行する前に条件を判定する繰返しで、最初から終了条件が成り立っていれば本体を1回も実行しない。
⚠ 後判定繰返しは本体の後で判定するので最低1回は実行する。判定のひし形が本体の上にあれば前判定。
流れ図の基本構造とループの終了条件

組合せ くみあわせ(C(n,r))

n 個から順番を考えずに r 個を選ぶ選び方の数で、C(n,r)=n!÷(r!(n−r)!)。
⚠ 順列 P(n,r) は並ぶ順番も区別する。最短経路の数は C を使う。
数値を扱うアルゴリズムと計算問題

双岐選択 そうきせんたく

条件が成り立つかどうかで、2つの処理のどちらか一方へ進む選択構造。
⚠ 「前の処理に戻るか次に進むか」は繰返しの説明でウソ。
流れ図の基本構造とループの終了条件

双方向リスト そうほうこうりすと

各要素が次の要素と前の要素の両方へのポインタを持つリスト。
⚠ 挿入時に変わる既存ポインタは、前の要素の次ポインタと後ろの要素の前ポインタの2つ。
連結リストの構造とポインタ操作

挿入ソート そうにゅうそーと(insertion sort)

整列済みの列の正しい位置に、未整列の要素を1つずつ差し込んでいく整列法。
⚠ 選択ソートと混同しやすい。キーワードは「正しい位置に挿入(追加)」。
整列(ソート)アルゴリズムの比較

相対参照 そうたいさんしょう

式を複写すると、参照するセルも同じ方向・同じ距離だけずれる参照の仕方。
⚠ 絶対参照は複写してもずれない。$が付いているかどうかで見分ける。
配列の添字操作と表計算の参照

多岐選択 たきせんたく

変数の値などによって、3つ以上の処理の中から1つを選んで進む選択構造。
⚠ 「複数の処理を並列に行う」はウソ。実行するのは選んだ1つだけ。
流れ図の基本構造とループの終了条件

退避 たいひ

上書きで消えないように、値を一時的に別の場所へ避難させておくこと。
配列の添字操作と表計算の参照

代入 だいにゅう

計算した結果を変数に入れて、その変数の値を書き換えること。流れ図では「式→変数」と書く。
⚠ 代入後の行では、書き換わった後の値を使う。元の値のままで計算しない。
流れ図の基本構造とループの終了条件

変数や配列の要素に値を入れること。
⚠ 流れ図の「A → B」と擬似言語の「B ← A」は同じ意味。どちらも矢印の先が書き換わる側。
配列の添字操作と表計算の参照

単方向リスト たんほうこうりすと

各要素が次の要素へのポインタだけを持ち、先頭から後ろへの一方向にしかたどれないリスト。
⚠ 双方向リストは前ポインタも持つので逆向きにもたどれる。
連結リストの構造とポインタ操作

値呼出し あたいよびだし(call by value)

実引数の値のコピーを渡す方式で、関数内で変更しても呼出し元の変数は変わらない。
⚠ 参照呼出しと逆にしやすい。『変更されないことが保証される』のは値呼出しだけ。
再帰呼出しと引数の渡し方

中間順(通りがけ順) ちゅうかんじゅん(in-order)

左部分木 → 自分 → 右部分木 の順に節をたどる方法。2分探索木では小さい順になる。
⚠ 先行順は自分が最初、後行順は自分が最後。2分探索木の値を小さい順に並べるのは中間順だけ。
2分探索木とヒープ

中置記法 ちゅうちきほう

a+b のように演算子を被演算子の間に置く、ふだんの書き方。括弧が必要になる。
⚠ 後置・前置は括弧が要らない。
式の表し方とスタックの応用

直接アクセス(ランダムアクセス) ちょくせつあくせす(random access)

位置を指定するだけで、前から順にたどらずに任意の要素を読めること。
⚠ 順次アクセスは先頭から順にたどる方式で、リストはこちら。
連結リストの構造とポインタ操作

直接アドレス指定 ちょくせつあどれすしてい

キー値そのものを格納アドレスとして使うアクセス方式。
⚠ ハッシュ法はキーを関数で変換してからアドレスにする。「そのまま」なら直接アドレス指定。
ハッシュ法と衝突の扱い

直接編成ファイル ちょくせつへんせいふぁいる

キーから計算したアドレスにレコードを直接置き、直接読み書きするファイル編成で、ハッシュ法の考え方を使う。
⚠ 順にたどる順編成ファイルや、索引を使う索引順編成ファイルとは違う。
ハッシュ法と衝突の扱い

通りがけ順 とおりがけじゅん(中間順・間順・inorder)

左部分木→自分→右部分木の順に訪れる巡回で、式の木に使うと普段の書き方(中置)になる。
⚠ (左,節,右)のテキスト表現はこの順。根が真ん中付近に出てくる。
木構造の基本と巡回順序・グラフの表現

添字 そえじ(index)

配列の何番目の要素かを表す番号。
⚠ リストの並び順と添字の順は一致するとは限らない。
連結リストの構造とポインタ操作

配列の何番目の要素かを表す番号で、A(m) の m に当たる。
探索アルゴリズムと計算量

添字(要素番号) そえじ(ようそばんごう)

配列の中で何番目の要素かを表す番号。
⚠ 0から始まる配列と1から始まる配列がある。問題文の「要素番号が0から始まる」などの記述で確認する。
配列の添字操作と表計算の参照

転置 てんち

2次元配列の行と列を入れ替えること。B(j, i) ← A(i, j) の形。
⚠ 回転は B(j, 7−i) のように「7−」が付く。付かなければ転置。
配列の添字操作と表計算の参照

配列 はいれつ

同じ種類のデータを番号付きで並べて入れておく入れ物。
配列の添字操作と表計算の参照

同じ型のデータを連続した領域に並べ、添字で任意の要素に直接アクセスできるデータ構造。
⚠ 途中への挿入・削除は要素の移動が要るので苦手。ポインタの付け替えだけで済むのはリスト。
連結リストの構造とポインタ操作

汎化 はんか

複数のクラスの共通部分を取り出して上位クラスにまとめる関係(is-a)。
⚠ 集約は全体と部分の関係(part-of)。
オブジェクト指向とプログラム言語の特徴

被演算子(オペランド) ひえんざんし(operand)

演算子によって計算される数や変数のこと。
⚠ 後置記法に直しても被演算子の並び順は変わらない。変わるのは演算子の位置だけ。
式の表し方とスタックの応用

不動点 ふどうてん

関数に入れても値が変わらない点で、f(y)=y を満たす y のこと。
⚠ f(a)=y は1回目の結果にすぎず、収束の条件ではない。
数値を扱うアルゴリズムと計算問題

部分木 ぶぶんぎ

ある節の左右どちらかの子を根として、その下をまとめた木。
⚠ 直下の子1つだけではなく、その子孫全員を含む。2分探索木の条件は部分木の全員に対して確かめる。
2分探索木とヒープ

複合参照 ふくごうさんしょう

$B2(列だけ固定)や B$2(行だけ固定)のように、行か列の片方だけを固定する参照の仕方。
⚠ $は直後の記号を固定する。$B2 は列Bを固定、B$2 は行2を固定。
配列の添字操作と表計算の参照

複写 ふくしゃ

表計算でセルの式を別のセルへコピーすること。相対参照の部分は位置に合わせてずれる。
配列の添字操作と表計算の参照

平均比較回数 へいきんひかくかいすう

いろいろな探す値について比較回数を平均した期待値で、線形探索なら候補数の約半分になる。
⚠ 最悪比較回数(最後まで調べたときの回数)と取り違えやすい。問題文が「平均」か「最大」かを必ず確認する。
探索アルゴリズムと計算量

平均符号長 へいきんふごうちょう

各文字のビット長に出現確率を掛けて足し合わせた、1文字当たりのビット数の期待値。
⚠ ビット長をただ平均したもの(確率を無視)と取り違えやすい。
数値を扱うアルゴリズムと計算問題

閉路 へいろ(サイクル)

ある節点から出発し、同じ枝を通らずに元の節点へ戻れる経路。
⚠ 閉路があれば木ではない。節点 n 個で枝が n 本以上あれば閉路がある(つながっている場合)。
木構造の基本と巡回順序・グラフの表現

無向グラフ むこうグラフ

枝に向きがなく、a-b と b-a を同じ枝として扱うグラフ。
⚠ 有向グラフは枝に矢印の向きがあり、隣接行列は対称にならない。
木構造の基本と巡回順序・グラフの表現

名前呼出し なまえよびだし(call by name)

引数の式そのものを渡し、関数の中で使うたびに評価する方式。
⚠ これも呼出し元の変数が変わりうる。
再帰呼出しと引数の渡し方

木構造 きこうぞう(ツリー構造)

根から枝分かれする階層を持ち、上位の節点から下位の節点へたどってデータを取り出すデータ構造。
⚠ キュー(入れた順)、スタック(逆順)、線形リスト(ポインタ1つでたどる)の説明と並べて出題される。「階層」「上位から下位」があれば木。
木構造の基本と巡回順序・グラフの表現

戻り番地 もどりばんち

呼び出した関数の処理が終わった後に戻る命令の位置。
スタックとキュー(LIFO と FIFO)

余り あまり

割り切れずに残った、割る数より小さい数。
⚠ 商と取り違えやすい。余りは必ず割る数より小さい。
数値を扱うアルゴリズムと計算問題

葉 は(リーフ)

子を持たない末端の節点。
⚠ 親配列で「親として登場する番号」は子を持つ節点なので葉ではない。
木構造の基本と巡回順序・グラフの表現

子を1つも持たない末端の節。
⚠ 根と取り違えないこと。2分探索木の挿入では、新しい値は必ず葉として加わる。
2分探索木とヒープ

流れ図 ながれず(フローチャート)

処理の手順を、長方形(処理)・ひし形(判定)・矢印などの記号でつないで表した図。
流れ図の基本構造とループの終了条件

処理の手順を、処理・判定・ループの記号と矢印でつないで表した図。
探索アルゴリズムと計算量

領域割付け関数 りょういきわりつけかんすう

プログラム実行中に必要な分のメモリ領域を確保する関数。
⚠ 必ず成功するわけではないので、失敗時の処理を書くことがコーディング規約の適切な規定。
連結リストの構造とポインタ操作

隣接行列 りんせつぎょうれつ

i 行 j 列に、節点 i と j の間に枝があれば1、なければ0を書いた正方形の表。
⚠ 無向グラフでは対角線を境に対称になる。枝の本数は1の個数÷2。
木構造の基本と巡回順序・グラフの表現

連結 れんけつ

2つの文字列や配列をつないで1つにすること。
配列の添字操作と表計算の参照

連結リスト れんけつりすと(linked list)

ポインタで要素同士をつないだリストのことで、試験では線形リストとほぼ同じ意味で使われる。
連結リストの構造とポインタ操作

論理シフト ろんりしふと

ビット列を左右にずらし、空いた桁に0を入れる操作。
⚠ 算術シフトは符号ビットを保つ。左シフトは2倍、右シフトは2で割る。
数値を扱うアルゴリズムと計算問題