Back to page

− Links

 Print 

Source of Articles​/D言語入門講座​/第03章 - 変数 :: D言語友の会

Source of wiki:Articles/D言語入門講座/第03章 - 変数

« Prev[3]  
TITLE:変数について
#navi

* #01 - 変数とは [#u66da40b]
** 今回は… [#a4c8a8f2]
さて、今まではテキストな電卓程度のことしかプログラミングできませんでした。もっとプログラムらしいことをさせたいとは思いませんか?~
ここで、もっと自由度を聞かせるために、「変数」についてのお話をしてみようと思います。~
数学の変数について思うところのある方は、ぶっちゃけつまらない回なので[[次に急ぎましょう>#y975147a]] :-)

** 今回のミソ [#ke636bd5]
- 「''変数''」とは変えられる数のこと
- 数学で言えば x や y のこと
- 値を入れる入れ物のようなもの
- 変数と対象に、定まった数のことは「''定数''」という


** 内容 [#jbdd62ce]
変数とは、変えることができる数字って言う意味で、数学で言えば x や y にあたります。~
これが使えるようになると、ぐんとできることの幅が広がります。~
プログラミングのミソといってもいいかもしれません。

変数と言うのは、平たく言うと入れ物です。~
入れ物の中に値を入れます。~
この値は基本好きなときに見ることができます。~
便利です。~
今まで使ってきた数字とかは、 5 とか 7 とか、見るからに数字ですって言うようなものばかりでした。~
これは、数学やプログラミングの世界では「定数」と言います。いわゆる定まった数字です。この数は変えることができません。プログラムがその場所を通った時点ではいつも同じように判断されます。

ここで、変数と言う概念を導入します。すると、今まではずっと同じだった数を変えることができるようになります。つまり、入れ物の中身をかえてやるんです。~
数学の変数では~
#block(class=math){{
3x + 2
}}
となっていた場合、 x が変数となっています。~
また、 3 や 2 は定数となります。~
上の場合では、 x が3なら
#block(class=math){{
3 * 3 + 2 = 11
}}
で、 11 という計算結果になります。~
また、 x が 5 なら
#block(class=math){{
3 * 5 + 2 = 17
}}
となり、計算結果は 17 です。~
このように、変数の中身をかえてやることができれば、同じ書き方で、違った値をもらうことができるようになります。

** まとめ [#w2ff6ee9]
今回は文章オンリーです。 次のも文章のみです。 つまらないですね。 でも、この概念はとても大切なものなのです。~
次は、プログラムの中で変数を使うに当たって必要な知識「型」について説明していきます。~
文章ばかりで暇かもしれませんが、お付き合いくださいな。


* #02 - プログラミングでの変数 [#y975147a]
** 今回は… [#adc89b52]
今回は、変数の型について説明します。~
今まで、数値には「実数」や「整数」があり、また、「文字列」もあるなどといったことを解説しました。これは、プログラミングでは「型」と呼ばれています。~
たとえばJavascriptやPerlなどといった言語には型は存在していません。大雑把にobjectやHASHなどといった区別はありますが、変数はすべて同じように扱うことができす。~
しかし、D言語では、この変数の型は厳格に決められており、整数型には、整数しか格納できず、文字列型には文字列しか格納できません。~
不便と思う人もいるかもしれませんが、D言語はそうなのです。あきらめましょう。~
余談ですが、反対に型のない言語もあります。タイプルーズな言語とか呼ばれる言語です。先に紹介した、Javascript、Perlなんかですね。

** 今回のミソ [#s537be3d]
- 型の対応は次のようになっています
-- 整数 … int
-- 実数 … real
-- 文字列 … char[]



** 内容 [#v5e33cae]
う~ん、なんというか、今回のミソでほとんど今回の内容完璧に物語っているような気もしますが…~
一応補足です。

整数型の変数を定義するには、 int というものを使います。~
実数では real で、~
文字列は char[] です。~
実数な変数 x を定義したければ、次のようにします~
real x; まぁ、詳しくは次回のプログラムを見ればわかると思います。


** まとめ [#a09bf398]
次回は、実際のプログラムを通して変数のありがたさを実感してみようかと思います。~
やる内容は、「円の面積」を「半径」から求めるプログラムです。~
数学の内容で行けば、
#block(class=math){{
S = πr&sup{2};
}}
ですね。~
S が円の面積をあらわす変数、~
πは円周率を表す定数~
r は円の半径をあらわす変数~
と言う風になっています。

では、それを踏まえたうえで、お次へどうぞ~。

* #03 - 変数の使い方 [#sd881418]
** 今回は… [#g8c49766]
変数を使ってようやっとプログラムを組んで見ます。~
でもまあ、今回は一応使ってみる程度で、変数を使わなくても同じようなことが一応できるのですが…とりあえず…ね。

** 今回のミソ [#n6170ec7]
- = は、数学的な「左辺と右辺は等しい」という意味ではなく、「右辺の値を左辺の変数に代入する」という意味。
- 変数の定義の仕方は…
#code(d,nomenu,nonumber,nooutline){{{
型 変数名; // で変数の定義
}}}
- 変数に値を代入するには…
#code(d,nomenu,nonumber,nooutline){{{
変数 = 値; // で変数に値を代入
}}}
- 型 変数名 = 初期値; // で変数の定義+変数の初期化
- 変数には型ごとに初期値が決まっている
- int型の初期値は 0
- 文字列を代入するときは.dupでコピーしたものを代入する。(なぜこうするかは今はおまじない。)
- 一応初期値はあるけれど、期待通りの動作をさせたいならとりあえず初期化しましょう。


** サンプルコード [#h297b484]
#code(d,sample0303p.d);
#region(Tango用はこちら){{
#code(d,sample0303t.d);
}}


** 実行結果 [#ucd45ba9]
#code(console){{{
$ dmd -run sample0303p.d
628.318
}}}


** まとめ [#hc6b42d4]
というわけで、今回は変数を使って出力をしてみました。~
今回のこと程度では前回の計算とあわせて電卓が多少楽になった程度でしょう。~
次章ではこの変数を使って、入力するといったことをやっていこうと思います。

とりあえず今回は以上でーす。~
お次へどうぞー

* #04 - 変数を使いこなす [#v9ce6535]
** 今回は… [#dbb158f7]
前回の内容で、変数の定義の仕方と使い方を学びました。~
今回は、それを発展させて様々なパターンに応用したものを示します。


** 今回のミソ [#tb4e1a96]
- 数値や文字列など、さまざまなものに変数を使用することができる。


** サンプルコード [#e68363e0]
#code(d,sample0304p.d);
#region(Tango用はこちら){{
#code(d,sample0304t.d);
}}

** 実行結果 [#q694d7a1]
#code(console){{{
$ dmd -run sample0304p.d
10
3.500000
1.800000
文字列の代入
文字列の代入+書式で出力
文字列の代入+文字列の連結
0
}}}

** まとめ [#b90be712]
今回は前回の内容を掘り下げて、さまざまな型やパターンで変数を取り扱いました。~
特に以下のようなパターンは理解が難しいかと思いますので、いろいろ試しながら理解を深めていってください。
#code(d,nomenu,nonumber,nooutline){{{
// 新しい変数 b を1.8として定義
real b = 1.8;
// 現時点で b は 1.8
// b に、新しい値として b(1.8) + 2.5 の結果である 4.3 を代入する。
b = b + 2.5;
// 現時点で b は 4.3
// b に、新しい値として b(4.3) * b(4.3) + b(4.3) の結果である 22.79 を代入する
b = b * b + b;
// 現時点で b は 22.79
}}}
~  とりあえず今回はこれで終わりでーす。
~  お次へどうぞー

* #summary - まとめ [#fd677530]
** 第03章のミソ [#b29ac06c]
- 「''変数''」とは変えられる数のこと
- 数学で言えば x や y のこと
- 値を入れる入れ物のようなもの
- 変数と対象に、定まった数のことは「''定数''」という
- 型の対応は次のようになっています
-- 整数 … int
-- 実数 … real
-- 文字列 … char[]
- = は、数学的な「左辺と右辺は等しい」という意味ではなく、「右辺の値を左辺の変数に代入する」という意味。
- 変数の定義の仕方は…
#code(d,nomenu,nonumber,nooutline){{{
型 変数名; // で変数の定義
}}}
- 変数に値を代入するには…
#code(d,nomenu,nonumber,nooutline){{{
変数 = 値; // で変数に値を代入
}}}
- 型 変数名 = 初期値; // で変数の定義+変数の初期化
- 変数には型ごとに初期値が決まっている
- int型の初期値は 0
- 文字列を代入するときは.dupでコピーしたものを代入する。(なぜこうするかは今はおまじない。)
- 一応初期値はあるけれど、期待通りの動作をさせたいならとりあえず初期化しましょう。
- 数値や文字列など、さまざまなものに変数を使用することができる。

** 宿題 [#a4ef796e]
変数を使って、一辺5の立方体の底面積と体積を求めてみましょう。~
以下のような結果が得られるはずです。
#code(console){{{
底面積 : 25
体積 : 125
}}}


** コメント [#u71b4608]
さてさて、できましたかな~?~
とりあえず、変数はとてもよく使うので、変数の何たるかはどうでもいいとしても、使い方は覚えておきましょう。~
そんなわけで、宿題できたら、あるいは予想ついたら次にいきましょう~

#navi

* 投票とコメント [#m3187dd8]
#vote(#lastvote:206a499f93f4a947869c09788c67c8b7,大変参考になった[1],参考になった,あまり参考にならなかった,まったく参考にならなかった,#notimestamp)
#pcomment

« Prev[3]