変数の解説(基本情報技術者シラバス用語)

目次

変数とは

変数(へんすう)とは、プログラムの中でデータ(数値や文字など)を一時的に記憶しておくために用意する、名前のついた「箱」のようなものです。プログラムは、この箱に値を入れたり(代入)、入っている値を取り出したり(参照)、あるいは値を書き換えたりしながら様々な計算や処理を行います。変数を使うことで、同じ値を何度も使い回すことができ、プログラムの記述をすっきりと整理できます。また、値の中身が途中で変わる場合でも、変数名を使って共通の処理を書いておけば、柔軟に計算を実行できるという大きなメリットがあります。

具体例

スマートフォンのゲームアプリでプレイヤーの得点(スコア)を管理する場合を考えます。得点を保存するために「score」という名前の箱(変数)を用意します。ゲーム開始時は score に「0」を入れ、敵を倒したときに「100」を加算する、といったプログラムを作成します。

let score = 0; // scoreという変数(箱)を用意して0を入れる
score = score + 100; // scoreの中身に100を加算して書き換える
console.log(score); // 画面に「100」と表示される

もう少し詳しく

変数は、コンピュータの内部ではメインメモリ(主記憶装置)上の一部の領域(アドレス)を確保して利用する仕組みです。人間が「100番地のメモリにデータを保存して」と直接アドレスを指定してプログラミングするのは非常に困難でミスが起きやすいため、そのメモリ領域に対して人間が理解しやすい「名前(変数名)」を付けたものが変数です。

実際のプログラミング言語において変数を扱う際には、多くの場合「データ型(型)」という概念が非常に重要になります。データ型とは、その変数の箱に「どのような種類のデータを入れるか」を決めるルールのことです。代表的なデータ型には、整数を扱う「整数型(int)」、小数点を含む数値を扱う「浮動小数点型(floatやdouble)」、文字の集まりを扱う「文字列型(string)」、そして真か偽(TrueまたはFalse)の2つの状態だけを扱う「論理型(boolean)」などがあります。

データ型を指定する理由は、コンピュータがメモリを効率的に割り当てるためです。例えば、小さな整数を入れる箱と、長い文章を入れる箱では、必要なメモリのサイズが大きく異なります。また、「文字の"1"」と「数値の1」は人間にとっては同じに見えても、コンピュータ内部のデータ表現は全く異なります。そのため、プログラミング言語(特にC言語やJavaなどの静的型付け言語)では、変数を使い始める前に「この名前の変数には、このデータ型の値しか入れません」と宣言(定義)することが厳格に求められます。これを変数宣言と呼びます。

試験でのポイント

情報処理技術者試験において、「変数」という言葉単独で出題されることは基礎すぎるため少ないですが、プログラミングやアルゴリズムの問題を解く上で、変数の概念と振る舞いを正確に理解していることは大前提となります。

試験で特に注意すべき点は「変数の初期化」と「変数のスコープ(有効範囲)」です。変数の初期化とは、変数を宣言した直後に、最初に何らかの値(0や空文字など)を入れておくことです。初期化を行わずに変数を使って計算を始めると、メモリ上に残っていた過去のゴミデータ(不定値)が計算に混ざってしまい、プログラムが誤作動を起こす原因になります。試験のアルゴリズム問題でも、ループ処理に入る前に合計値を保存する変数「sum」を「0」で初期化しているかどうかが、解答の鍵になることが多々あります。

また、変数にはプログラムのどこからでもアクセスできる「大域変数(グローバル変数)」と、特定の関数やブロックの中だけで有効な「局所変数(ローカル変数)」というスコープの違いがあります。試験問題の疑似言語を読む際には、「いま注目している変数は、どの範囲で有効な変数なのか」「別の関数で同じ名前の変数が使われているが、これらは別々の箱なのか」をしっかりと見極める必要があります。これを間違えると、トレース(変数の値の変化を追いかけること)の結果が大きく狂ってしまいます。

さらに、変数の応用として、同じデータ型の変数を連続して複数用意する「配列(はいれつ)」というデータ構造も頻出です。変数が一つの一軒家だとしたら、配列はマンションのように部屋番号(添字)で管理される変数の集合体です。変数と配列の違いや使い方を確実にマスターしておくことが、アルゴリズム問題突破の第一歩となります。

関連する用語

データ型、配列、局所変数

読んだ内容を10問練習と実技で確認

記事で理解した用語を、StudyQuestの演習とクラウド実技ラボで定着させます。

10問練習 実技ラボ