こんちゃっす、ダイブツです。
今回はこれが無くちゃ始まらない!というぐらい使用する「変数」について説明していきます。
こんな結果が出力されるプログラムがあった場合、
たった1か所変更するだけで全部の図形サイズを変更することができる。
そんな変数の使い方を学んでいきましょう!
変数とは
まずそもそも変数って何なのかから説明しますね。
よく例えられる例ですが、変数とは数字や文字列を入れておく持ち運び可能な箱のようなものです。
主にその箱を色んな箇所で使いたい時に使用します。
で、プログラムではその箱に入れる数字を入れ替えることがしょっちゅうあるんです。
だから「数が変わる入れ物」=「変数」って言われてるんですね。
ただ、変数には1つしかものを入れることができません。
もし他のものを入れたくなったら、入れ替えるしかないです。
この制限を理解した上で変数を使っていく必要があります。
そしてここからが学習サイトで伝えられていない僕の意見です。
この変数には名前を付けられるんですが、プログラマーは変数の名前を見て、どんなことに使う変数なのか判断しています。
xだけのようなよく分からない名前が付いていると、他のプログラマーがプログラムを見た時に「この変数は何に使ってるんだ?!」ってなって混乱しちゃうんですね。
だから、変数の名前の付け方って実は重要なんです。
マジで変数名の付け方はちゃんとできるようになってほしい!ほんと頼んます。
名前の付け方はどうしたらいいかも、これから説明していきますね。
覚えておくべき4つの変数の型
変数の名前と付ける前に説明しておかなきゃあいけないことがあります。
変数には型というものがあって、整数が入れられる箱だったり、文字列が入れられる箱だったりっていうのが分かれています。
あとそれぞれに入れられる範囲っていうのも決まってるんですね。
簡単に書くとこんな分類です。
よく使う型の順位とプログラムでの書き方、入力範囲を表にまとめるとこうなります。
よく使う順位 | 種類 | 書き方 | 入力範囲 |
---|---|---|---|
1 | 整数 | int | -2,147,483,648 ~ 2,147,483,647 |
2 | 論理値 | boolean | true または false |
3 | 文字列 | String | 日本語を含むあらゆる文字 |
4 | 文字(1文字) | char | A~z、0~9、記号 |
5 | 浮動小数点数 | float | -3.40282347 ~ 3.40282347 |
論理値と書いているのは、true(合っているよ)、false(合っていないよ)という内容を表現しているものです。
例えば「1+1は?」と聞かれた時どうなるか説明しますね。
この問いの正解は2ですよね?
なので、2という回答をしたのならtrue、3という回答をしたのなら間違っているのでfalseという結果になります。
これが論理値です。
あとは実際に使っていくと感覚が慣れていくんで、そこは実践していきましょう!
現役プログラマーが実践している変数名の付け方
さぁいよいよ変数名の付け方について説明していきます。
まーじでこれはプログラマーでさえもよく悩むとこですからね~、しっかり身に付けていきましょう。
あ、ちなみに会社によって名前の付け方は細かい違いがあるので、そこは会社に合わせるようにしてください。
じゃあまず最初に例を出しますね。
例:int型で体の大きさを示す変数を作る場合
こんな変数を使う場合、僕だったらこう宣言します。
上で書いていた例と同じやつですね。
int iBodySize;
さらっと書きましたが、プログラムで変数を使いたい場合は、まず「この変数使うよ!」と書いてあげる必要があるんです。
これを「宣言する」もしくは、「定義する」って言います。
だから上の例だと、「int型のiBodySizeを宣言した」ってことになるんですね。
ここはオッケーっすね?
そいで、肝心の名前の付け方なんですが、iBodySizeを3つに分けましょう。
そうすると、
①i
②Body
③Size
の3つに分かれます。
この3つのそれぞれの意味はなんなんでしょうか?
まず最初の①が表しているのはint型です。
int型の先頭文字iを抜き出して付けているんですね。
こうすることで、変数名を見ただけで、「この変数はint型なんだな。じゃあこの数値は代入できるな」と分かるようになるんです。
これが付いていないと、いちいち変数が宣言されている所を探さなくちゃいけなくて、他のプログラマーに面倒な作業をさせてしまうことになっちゃうんですね~。
次に②と③に関しては、そのまま英単語を使っているだけです。
ただ、bodysizeのように全て小文字にするとどこから単語の始まりか分からなくなっちゃいます。
なので、単語の区切りが分かるように最初の文字だけ大文字にするとBodySizeのように書けて、どんな単語をくっついているのか分かるようになりますよ。
因みに、変数に使う単語はあまり見慣れないものは使わない方がいいです。
っていうのも、いちいち単語の意味を調べなきゃいけないようなものを使っても、結局調べる手間ができちゃってめんどくさいですよね?
この、どのぐらいまでの単語ならいいのかっていうのはめちゃめちゃ微妙なとこなんですが、目安としては中学3年生までに習う英単語のレベルで考えておけばちょうど良いと思います。
注意!変数に使える文字
変数名の付け方を説明してきましたが、実は変数名には使っていい文字と使っちゃいけない文字があります。
使っちゃいけない文字を挙げるとキリがないので、使える文字だけ覚えておきましょう。
使える文字はこの4種類で覚えておけばいいです。
・a~z
・A~Z
・0~9
・_(アンダーバー)
あとこの他に、使っちゃいけないもののルールもあります。
これはもし間違えてもエラーが出てしまうだけなので、こんなのがあるんだな~ぐらいに覚えてもらえたらいいですw
「使っちゃいけない変数」
・システムで定義されている単語(色々ある)
・数字で始まる変数(例:123test)
変数名に関してはこんなもんですか。
色々ルールが多くてめんどくさいですよね~。
ま、この辺りは慣れです。徐々に覚えていきましょう。
変数の使い方
それじゃあ、実際に変数の使い方について書いていきますね。
上でも書いたように、変数を使うにはまず宣言をする必要があります。
宣言をするにはこう書きます。
int iBodySize;
これが宣言です。
続けて、宣言した変数に1を入れてみましょう。
この変数にものを入れることを代入と言います。
数学でも使う表現ですね。
宣言をした後に、代入をする書き方はこうなります。
int iBodySize;
iBodySize = 1;
変数を宣言した時、こうすることで、同時に値を代入することもできるんです。
int iBodySize = 1;
どっちの書き方をするかは個人の好みによりますね。
正直どっちで書いても問題ありません。
変数の凄まじい威力が分かる例
じゃあそろそろ冒頭で書いていた変数を使う例をやっていきましょう。
冒頭で出していた最初の表示はこれでしたね。
この表示は、変数を使って書くとこうプログラムすることができます。
int iRectSize = 50;
size(600,400);
rect(20,20,iRectSize,iRectSize);
rect(220,20,iRectSize,iRectSize);
rect(420,20,iRectSize,iRectSize);
rect(20,200,iRectSize,iRectSize);
rect(220,200,iRectSize,iRectSize);
rect(420,200,iRectSize,iRectSize);
これが1辺50ピクセルの正方形を6つ描画するプログラムですね。
rect()の指定にiRectSizeという変数を使っています。
そして、このiRectSizeに150を指定すると、こんなプログラムになります。
int iRectSize = 150;
size(600,400);
rect(20,20,iRectSize,iRectSize);
rect(220,20,iRectSize,iRectSize);
rect(420,20,iRectSize,iRectSize);
rect(20,200,iRectSize,iRectSize);
rect(220,200,iRectSize,iRectSize);
rect(420,200,iRectSize,iRectSize);
変更しているのはiRectSizeの指定一か所だけですね。
で、このプログラムを実行してみると・・・
ほーら!iRectSizeを使っていた正方形全ての大きさを変更することができました!
これが「変数の力」です。
もし、このプログラムで変数を使っていなかったら、6つあるrect()の指定をそれぞれ変更しなきゃいけませんでした。
今回はまだ6つだったから良いものの、これが100個rect()があるプログラムだったらと思うとゾッとしませんか?
それだけの量を修正するには、手間もかかるし、何より修正を間違ってしまって不具合が入ってしまう可能性も高くなります。
だから、プログラムを作る時には修正が入った時でも簡単にプログラムの変更ができるように(変更箇所が少なくなるように)作っていくことがめっちゃくちゃ大事です。
テストだったら絶対出すっていうぐらい大事なので、普段からそこに意識してプログラミングしていきましょうね。
問題:以下のように正方形を表示するプログラムを作成し、変数でY座標を指定せよ。
作成したプログラムの変数を1箇所変更するだけで、↓のように表示されるようにする。
正方形のサイズ、数は自由です。
変わるものは変数、では変わらないものは?
変数については理解してもらえましたね?
実は変数と同じように値を保持することができるものとして、定数というものがあるんです。
「変数と定数は何が違うの?」という声が聞こえてきそうですね。
分かりやすくする為に、違いを表にしてみました。簡単に書くとこうなります。
種類 | 値の代入 | 名前の付け方 |
---|---|---|
変数 | いつでも可 | 大文字小文字混合 型の内容を入れる |
定数 | 宣言時のみ | 大文字と_(アンダーバーのみ) 型の内容を入れない |
表のそれぞれの内容について説明していきますね。
まず表にも書いてある通り、定数は宣言時にしか値を入れることができません。
というのも、定数は「プログラムの実行中に値が変わらないもの」として使用するからです。
しょーじき定数を使わずに、変数に代入する値は直接数字を使って書くこともできます。
ただそうすると、変数の時にも書いたように、他の人がプログラムを読んだ時に意味が分からなくなっちゃうんですよね。
それを防ぐ為に定数を使うのが1つの理由です。
もう1つの理由も変数と似ているんですが、同じ意味合いの数字を複数の箇所で使っている場合に、後から修正する箇所を減らす為ですね。
この記事の例で取り上げた正方形のサイズなんかは、定数として宣言するのにピッタリです。
そのように共通の数値を定数としてまとめていきます。
そして、定数を宣言する場合はこのように書くんですね。
final int RECT_SIZE = 50;
プログラミング言語によって違いますが、Processingではfinalを先頭につけることで定数の宣言と判断されます。
そして定数名は基本的に全て大文字で付けます。
あと大文字だと単語の区切りが分からなくなる為に_(アンダーバー)も活用することが多いです。
小文字で宣言することもできるんですが、大文字で宣言されることがほとんどなので、定数は大文字にする癖をつけておきましょーね。
結構長くなりましたが、これで今回の変数/定数の内容は終了となります。
次はプログラムの凄さを実感しやすい繰り返し処理の内容をやっていきます。
第1回で書いていたwhileとforの違いについても説明していくので楽しみにしていてください!
iBodySize=1; と int iBodySize=1 がどちらでもいいとありますが、iBodySize=1; と入力しただけで int の変数になるのかわかりません。
質問ありがとうございます!
僕が記載していた内容は、代入の処理を書くなら、どちらでも良いという意味でした。
なので、
iBodySize = 1;
と書く前には必ず
int iBodySize;
で宣言をしておく必要があります。
誤解を招かないよう記事の方は修正しておきました。
良い質問をありがとうございました。
返信ありがとうございます!