06:PROCESSINGで計算

06:PROCESSINGで計算

変数の定義

変数は変化する数の事だと説明しました。では具体的に、PROCESSINGでは変数をどのようにプログラミングするのでしょうか?。

PROCESSINGでは変数を

int   apple;

のようにプログラミング(記述)します。
変数の定義
型と変数名の間は1文字以上の半角スペースで空けてください。変数名と終端記号は連続して記述してもOKです。

int の部分を型とか型宣言といいます。型は前回説明しましたよね。その変数がどんな値を扱うのかを示す情報でした。そして、int は整数を扱う型でした。

apple というのは変数の名前です。たまたま apple とつけましたが、変数の名前は自由につけてもらって構いません。hogeでもuhaでもOKです(笑)。

ただしPROCESSINGでは、以下の様な変数名は使えません。

  • 数字で始まるもの
  • 一部の半角記号文字(+-/*~!()^.,:;[]`”@’など)を含むもの
  • 日本語(全角文字)を含むもの

このルールは、利用するプログラミング言語によって多少異なります。ですが、どのプログラミング言語でも、だいたい上記で挙げたような変数名はNGとなっています。

変数の命名規則

終端記号は、ここで1つの命令が終わっているよという事をコンピュータに教えるための記号です。

PROCESSINGでは、半角のセミコロン( ; )を使います。これは日本語の文章の最後につける “。” (まる)と同じ意味の記号になります。

従って、

int   apple;

は、整数を格納する apple という名前の変数を用意した事になります。

ところで、変数を用意しただけでは、その中身は不定(決まっていない状態)です。変数に数値や文字を放り込む事で、始めて使えるようになります。

PROCESSINGでは、用意した変数に数値を入れるには以下のように記述します。

apple = 10;

代入
演算子とは+-×÷=などの計算をするための記号の事です。値を入れる(専門用語では「代入」する)には、=(イコール)演算子を使います。

イコール演算子は左に書かれた変数( apple )に、右に書かれた値( 10 )を代入します。算数のイコールとはチョット違いますよね。初心者の方が戸惑うポイントです。

算数のイコールは、左と右の値が同じである事を示す記号でした。一方で多くのプログラミング言語では、イコールは左に書かれたものに右の値を代入する記号として使われます。
代入2
また、変数は用意したら直ぐに値を入れる事が可能です。その場合は

int   apple  =  100 ;

と書きます。

上記例なら、整数を扱う apple という名前の変数を用意し、直ちに100という数値を代入した事になります。

算数で使うイコール(同じだよという意味の記号)は、代入用のイコール(=)とは区別して、==と2つ続けて書きます。

 

足し算、引き算

コンピュータというくらいですから、計算が得意です(笑)。そして計算といえば思いつくのが四則演算です。+-×÷の4つです。小学校で習いますよね。

PROCESSINGでも、もちろん四則演算を行うことができます。そのルールは算数の計算とほとんど一緒です。

例えば算数の足し算を考えてみましょう。
1 + 2 = 3

言うまでもない事ですが、1に2を加えた結果が3になるという意味です。

PROCESSINGでは

int   apple  =  1  +  2 ;

と書きます。

または

int  apple;
apple = 1 + 2;

と2行で書くことも可能です。

int   apple  =  1  +  2 ;

なら、apple という変数に 1 と 2 を加えた(加算した)値( 3 )を代入します。

変数の説明
(画像URL:illust-AC 様)

では続けて引き算の例を見てみましょう。PROCESSINGでは、引き算は以下のように書きます。

int  omosa = 100  - 10 ;

または

int   omosa;
omosa = 100 - 10;

と2行で書くこともできます。

基本的には演算子が + から – に変わっただけで、同じように記述できます。上記例なら、omosa という int型の変数は、100 から 10 を引いた値( 90 )になります。

 

掛け算、割り算

掛け算は、算数では × の記号を使います。PROCESSINGでは*(アスタリスク)を使います。

int   orange  =  2  *  3 ;

または

int   orange;
orange = 2 * 3;

と2行で書きます。

記号が違うだけで、足し算、引き算と同じですね。上記例なら orange というint型の変数は、2 と 3 をかけた値( 6 )になります。

変数の説明2
(画像URL:illust-AC 様)

割り算は ÷ の記号ではなく/(スラッシュ)を使います。

float  kazu  =  3f / 2f;

または

float  kazu ;
kazu =  3f / 2f;

と2行で書きます。

float を覚えていますか?。float というのも型でしたね。少数点(浮動小数点)を扱う型でした。

3とか2の数値が「 3f 」などと書かれていますが、” f ” はPROCESSINGに「この値は小数点値(フロート)だよ」と教えるための特別な記号になります。これを「サフィックス」と呼びます。

上記例なら kazu という float型の変数は、3を半分にした値( 1.5 )になります。

それでは、仮にここで

float  kazu = 3 / 2;

のようにプログラミングしたらどうなるでしょうか?。

この場合、なんと kazu の中身は 1.0 になってしまいます。

何故?・・・という疑問が湧きますよね。それは計算に使っている 3 や 2 という数値に「 f 」というサフィックスが付いていないからです。

PROCESSINGでは単に数値を記述した場合( 3 とか 2 )は、int型の整数として扱われます。3.0  や 3f と書くと少数点値(フロート)だと思ってくれます。

ですので、

float  kazu = 3 / 2;

とプログラミングすると、以下のように計算されるのです。

  1. まずint型(整数)の3 int型(整数)の2 で割る
  2. int型同士の計算はint型(整数)になる
  3. int型は小数点以下が扱えない型なので、1.5の ” .5 ” 部分が捨てられて ” 1 “になる
  4. それを float型の kazu に代入するので、kazu は ” 1.0 ” になる

・・・なんだかなぁという感じですよね(汗)。でも、そういうものなんです。

情報落ち
(画像URL:illust-AC 様)

だから数値に「 f 」を付けます。すると

  1. float型(少数点)の 3.0float型(少数点)の2.0 で割る
  2. float型の値を含む計算は、結果もfloat型(少数点)になる
  3. だから結果は 1.5 になる
  4. それを float型の kazu に代入するので、kazu は ” 1.5 ” になる

ちょっとした落とし穴ですね。

当然ですが

int kazu = 3 / 2;

とプログラムした場合も、結果は1になってしまいます。int型は小数点以下が扱えない型なので、1.5の ” .5 ” 部分が捨てられるからです。

このように計算途中で値が欠落してしまう事を「型落ち」とか「情報落ち」と言います。小数点を扱う計算(特に割り算)では、注意していないとハマる事があります。

 

コラム2:変数の命名規則

変数名は自由につけて良いのですが、プロの世界では一定の規則に従って命名するのが好まれます。

命名規則として有名なものに、ハンガリアン記法、スネーク記法、キャメル記法などがあります。いずれも、少しでもプログラムをわかり易くし、ミスを減らすための工夫になります。

ちょっと紹介してみましょう。

●ハンガリアン記法(システムハンガリアン記法)


(画像URL:パブリックドメインQ 様)

変数名の先頭に型の略称を付ける方法です。元々この案を考えた人(チャールズ・シモニー)がハンガリー人だったことが名前の由来です。
int     iCount;
float  fPi;
など、i や f とかかれた部分(接頭辞)から型を類推させる方式です。

●スネーク記法


(画像URL:photo-AC 様)

変数名を、意味のある単位でアンダーバーで区切って、ヘビのように後ろにつなげる方法です。
int   system_count;
float  kaikei_num;

●キャメル記法


(画像URL:photo-AC 様)

変数名の意味や単語の区切りで、大文字と小文字を混ぜる方法です。
int   SystemCount;
float  atenaKeisan;
大文字と小文字がラクダのコブのようにデコボコする様子から命名されました。

命名規則1つとっても、いろいろあって面白いですね。

 

今日の言葉

・ハンガリアン記法

ハンガリー人のチャールズ・シモニーが考案した変数名の命名規則です。正確にはシステムハンガリアン記法はシモニーさんが考案したのではなく、Microsoftの技術者が考案したと言われています。この方法を敬遠する人も多くいます。

・スネーク記法

おなじく変数名の命名規則です。意味のある単語をアンダーバーで区切って、変数の後ろにつなげていきます。

・キャメル記法

変数名の命名規則です。意味のある単語を大文字小文字を混ぜて記入する方法です。かなりオススメの方法です。

・演算子

+-×÷=など計算を行うための記号の事です。

・代入

PROCESSINGでは、変数に値を格納する事を代入と呼びます。=(イコール)演算子を利用します。

・サフィックス

数値や変数の後ろにつける特殊な意味をもたせた記号です。10f などと書いて、10が少数値(フロート)である事を明示します。

・型落ち

ある製品が古くなる事ではありません(笑)。情報落ちとも呼びます。本来は計算されるべき値が無くなってしまう(欠落してしまう)事を指します。

 

今日のまとめ

  • 変数名には命名規則がある
  • 足し算、引き算、掛け算、割り算が可能
  • イコールは代入という意味で使う
  • 計算結果が思い通りにいかない情報落ちに気をつける

電子書籍のご案内

よりわかりやすく詳細にまとめたものを、以下の電子書籍として販売しております。書籍については、下記書籍ページを参照してください。

 

本ページの文章及びプログラムは、全てMSLABOに著作権があります。
本ページで利用している画像、フォントには、参照元リンクの企業・団体・個人に著作権があります。
著作権に従い、適切に利用して下さい。