ニコニコ大百科モバイル

7/2(月)よりスマホまたはPCでアクセスした場合、各デバイス向けのサイトへ自動で転送致します


変数


ヨミ: ヘンスウ
掲示板をミル!
22カキコ!

変数とは、不定の数値である。


プログラミングにおける変数


変数は、メモリ間上の特定データ領域をプログラミング言語上で抽化したものである。メモリ間にアクセスする為の渡しをする。変数には、任意の値を代入することが可であり、読み出すことができる。

逆に値が変わらないもの定数と呼ぶ。

によっては、それぞれの変数にが定められている。が定められた変数には、そのを持った値しか代入できない。変数をによって拘束することで、より堅性の高いプログラム製作することができる、といわれている。

変数という概念を持たないプログラミング言語もあるにはあるが(スタックだけで動く言とか)実用的なものはあまりない。副作用を持たない純関数型言語のようなものであっても、関数定義の束縛変数や関数呼び出しの結果を受ける一時的な変数は存在するし、自分からは変更不能というだけで中の値は呼び出し毎に変わるのが普通である。

一方定数プログラムの作成時に決まっており、いつどのように参照しても変化しない(といいつつ何事にも例外はあるのだが[外部]・・・)

「左辺 = 右辺」は右辺の結果を左辺に代入するという役割がある。


例えば


「5+3=8」という式では、数字は全て定数である。「5+3=x」の場合でも、xは8以外の値を取りようがないので定数である。
では、「5+x=x」という式ではどうなるだろうか?

数学的に考えると「=」の両辺は等価(同じ)でなければならないので「5+xとxが等価になるわけがない」つまり矛盾ということになる。
だがプログラム世界では先頭から式を評価するため「"5"に"x"を足し、それは新たな"x"と等価である」という考え方になってしまう。ここで前者のxに自在な数値を入できれば、プログラムは最初のxに5を足した値を新たなxとしてみなすわけである。

この場合でのxはいわば「」であり、5+x=xは「に5を入れてまた戻す」と例えられる。この場合xにユーザーが数字を入すると式5+xの出値も自在に変化するわけで、この場合のxを変数という。


箱vsタグ


ちなみにプログラミング言語における変数には、実は大まかに二種類の考え方がある。

まず昔から入門書などに載っている伝統的な考え方は「変数とは値を入れておけるのようなものだ」という理解である。実際C言語などのクラシックな言では、値が実メモリのどこかに置かれている様子をで上手く説明することができ、感覚的にも分かりやすい。

もう一つの考え方は「変数とは値にタグを付けるようなものである」という理解である。この場合とにかくどこかに値があって、これにfooとかbarとか書かれたタグが付けられており、その名前で値にアクセスができるということになる。

一見すると両者に大した違いはなさそうだが、例えば次のJavaコードを見てほしい。

import java.util.ArrayList;

class alias {
    public static void main(String args[]) {
        ArrayList<String> list = new ArrayList<>();
        ArrayList<String> other = list; // 別の変数に代入

        other.add(“item”); // 要素を追加

for(String s: list) { System.out.println(s); }
} }

実行結果:

% java alias
item

もし変数がだとすると、otherとlistは別々のなのだからそれぞれに入っているデータは別のものになるはずである。しかし実際にはotherに要素を追加してlistの中身を表示すると、listの方も中身は増えている。

つまりデータが同時に2つのに入っているということになってしまうのである。

もちろん「Javaの変数は(基本的に)参照なので、には参照を入れることができるのだ」という説明もできないことはないのだが、であれば実体は結局に入っていないわけだからモデルにこだわるのは意味がなく、最初からタグ付けされていると説明したほうが自然である。

細な違いではあるのだが、変数とは何なのかという喩が意外と微妙な問題をはらんでいることをお分かりいただけただろうか


数学における変数


単純に、未知もしくは不定である数や事、または単なる代入されていない値をそれらに代わって表す記号である。
いわば「未確認飛行物体」という飛行機スーパーマンかわからないような存在をUFOというようなものである。

変数には、ローマ字アルファベットや、ギリシャ文字に用いられる。方程式の x, y, z や、指数関数α,βなどが典例。
日本語文字を変数の記号として用いようとする運動もある。


関連項目



最終更新日: 20/11/12 20:21
タグ検索 パソコン版を見る


[0]TOP
ニコニコ動画モバイル
運営元:ドワンゴ