◆PROCESSING 逆引きリファレンス
カテゴリー:プログラミング
変数と定数と型
【解説】
最も基本的な事を解説していなかったので、遅ればせながら説明しておきますね。
変数(へんすう)とは変な数ではなくて・・・変化する数の事です(笑)。リアル社会でも変化する数は沢山ありますよね。
身長、体重、長さ、重さ、放射線量、髪の毛の数、シワの数・・・。最近、私の体重は増加するという変化しかしていません・・・(汗)。これらの変化する数のことを「変数」と呼びます。
変化する数がある一方で、変化しない数もあります。値が固定で決っているものです。このようなものを「定数」と呼びます。例えば
- 円周率は3.14
- 消費税は8%
- 私はとりあえず男
など、将来は変わるかもしれないけど、当面は決まった値を採用するものです。
そして、プログラムの中で変数や定数を扱うためには、「型」を指定します。
型とは「変数の種類」の事です。整数、小数点を含む数(プログラムでは、これを浮動小数点数といいます)、文字、文字列など、プログラムで扱う変数の種類を示すものが「型」になります。
拳法にも、その拳法独自の型(構え)がありますよね?。変数や定数にも、それがどのようなものかを示す型が必要なのです。
PROCESSINGでは、変数や定数を扱う際に、予めこの変数は整数だよとか、文字だよと教えてあげないといけないというルールになっています。
たまに「何でもOKだよ(型が不定)」という変数や定数を許可しているプログラミング言語もあります。ですが、少なくともPROCESSINGでは変数や定数には型を指定すると覚えておいてください。
PROCESSINGで扱うことが可能な代表的な「型」には、以下の様なものがあります。ここで紹介した型以外にも、HashMapやIntDict、JSON、XMLなどがありますが、最初はあまり使わないでしょう。
詳しくは「PROCESSINGで扱える基本データ型とは」記事を参照してください。
- int:整数
- short:整数
- long:整数
- byte:整数
- float:浮動小数点数
- double:浮動小数点数
- char:文字
- String:文字列
- bolean:真偽値
- color:色
- ArrayList :配列
- StringList :文字列配列
PROCESSINGでは、変数や定数は予め宣言しておいてから使う必要があります。「整数を扱うHogeという名前の変数があります」と宣言しないと、Hogeという変数を使うことができないのです。
例えるなら、ホテルに予約を入れておかないと泊まれないのと同じです。
プログラミング言語の中には、当日予約なしでも泊まれるホテルがあるように、使いたい時に、事前に何の宣言もせずにいきなり変数を使いはじめることが出来るものもあります。でもPROCESSINGではNGです。
【構文】
●変数の宣言と、値の格納例:
- private static int Apple ;
- static int Apple ;
- int Banana ;
- int Orange = 100 ;
[アクセス制限修飾子] [確保指定] [ 型] [変数名] ;
として宣言します。最後のセミコロン(;)を忘れないで下さい。
なにやら小難しそう・・・ですかね?。大丈夫ですよ。よく使うのは3番の例です。[型] [変数名] ; で指定します。
int Banana;
なら、「int型(整数を格納する型)の変数を Banana という名前で用意する」という意味になります。
1と2はグルーバル変数の宣言時に使います。正直、私はあまり使わない方法ですね。3と4の方法は、グローバル変数にもローカル変数にも利用可能です。
グローバル?と感じた方は、ともかく3の方法を覚えて頂ければOKです。また、3の応用として4の例を見て頂ければわかると思いますが、変数は定義した時に値(初期値)を格納する事が可能です。
int Orange = 100 ;
なら、「int型(整数を格納する型)の変数を Orange という名前で用意して、そこに100を格納する」という意味になります。
●変数へ値を格納する例:
Apple = 170 ;
[変数名] = 値 ;
として、用意した変数に値を格納します。変数ですから、プログラム中で何度でも値を書き換えることが可能です。
上の図では、いろいろな変数を格納する箱の中から、整数を格納するための箱(型=int)を選択し、その箱に名前(変数名=Apple)をつけています。そして、Appleと名付けた箱に変数(170)を格納しています。
変数の型、確保、値の格納のイメージが湧いたでしょうか?。
●定数の宣言例:
- private final static int APPLE = 170 ;
- private final int APPLE = 170 ;
- final static int APPLE = 170 ;
- final int APPLE = 170 ;
[アクセス制限修飾子] [ final] [確保指定] [ 型] [定数名] = 値 ;
として宣言し、宣言と同時に値を格納します。
定数は宣言時にしか値を格納できません。なので宣言と同時に、値を格納します。この値は、プログラムの中で変更することはできません(だって、定数ですからね)。
ごちゃごちゃしていますが、大切なのは final という部分です。なれないうちは4番の形式 [final] [型] [定数名] = 値 ; だけ覚えていただければ良いと思います。
final int APPLE = 170 ;
なら、「int型(整数を格納する型)の定数を APPLE という名前で用意して、そこに170を格納する」という意味になります。
なおプログラミング言語の規則として明確に決っているわけではありませんが、定数は全て大文字で記述するのが暗黙のルールとなっています。こうする事で、変数か定数かをパッとみてわかるように工夫しているんですね。
ちなみに
アクセス制限修飾子とは、その変数や定数が参照できる範囲を示しています。privateやpublic、protectedが使えます。
PROCESSINGはオブジェクト指向に対応した言語です。アクセス制限修飾子は、PROCESSINGで作成したプログラム(クラス)を、他のプログラム(クラス)で利用する場合に影響します。
確保指定とは、その変数や定数を動的に確保するか、静的(static)(つまりインスタンスによらずにクラス固定で)確保するかを示しています。こちらも単純なアプリケーションを作るだけなら、特に意識する事は少ないと思います。
オブジェクト指向に従って、開発したアプリケーション(クラス)を複数のクラスから参照したり呼び出す場合、メソッドや変数が動的なのか静的なのかで、振る舞いが異なってきます。
アクセス制限修飾子だの動的だのインスタンスだの・・・と言われると、初心者の方は戸惑う事だと思います。最初はあまり気にする必要はありませんので、定数では4の方法だけ覚えて頂ければ、当面は大丈夫です。
あるいは
private final static [型] [定数名] = 値 ;
と書くものだと覚えても良いかもしれません。
【関連記事】
- 第2章:図形を描いてみよう
- 第3章:改定版-タイトル画面を作成しよう(その3)
- 第3章:改定版-タイトル画面を作成しよう(その4)
- PROCESSINGで扱える基本データ型とは
サンプルプログラム
変数の例:
1 2 3 4 5 6 7 8 |
String name; char sex; int stature; name = "MSLABO"; sex = '男'; stature = 180; println( name + " " + sex + " 身長:" + stature + "cm" ); |
上記サンプルでは、name、sex、statureの3つの変数を用意しています。
name は String型(文字列を格納する変数)、sex はchar型(1文字だけを格納する変数)、stature はint型(整数を格納する変数)です。
宣言した後で、それぞれ値を設定しています。最後の println() というのは、各変数をデバック領域に表示する命令です。
定数の例:
1 2 3 4 5 6 7 |
final String NAME = "MSLABO"; final char SEX = '男'; int stature = 180; stature = 180; println( NAME + " " + SEX + " 身長:" + stature + "cm" ); |
NAMEとSEXは、変わらない値(の筈・・・)ですので、変数ではなく定数にしてみました。
また stature 変数は宣言時に初期値を格納しています。
説明文にも記載しましたが、定数は大文字で定義するのが一般的のようです(NameじゃなくてNAMEと宣言する)。
本ページで利用しているアイコン画像は、下記サイト様より拝借しております。各画像の著作権は、それぞれのサイト様および作者にあります。