05:変数と定数と型
目次
変数・定数・型
プログラムを作る際に覚えて欲しい知識は、おいおい説明します。その中で最初に覚えてほしいものに「変数」、「定数」、「型」があります。
変数とは「変な数」ではなくて(笑)、「変化する数」の事です。値がいろいろと変わる数の事を変数と呼びます。その一方で、一度決めたら変化しない数の事を「定数」といいます。
例えば「私は男だ」という場合、「男」は定数です。性転換手術でもしない限り、物理的な性別は変化しませんよね。また「私の身長は180cmだ」という場合の「身長」は変数です。身長は年齢とともに変化するからです。
(画像URL:illust-AC 様)
多くのプログラミング言語では、変数と定数は明確に分けて使います。PROCESSINGでも変数と定数は分けて使いますので、覚えておいてください。
では型とは何でしょうか?。プログラミング言語では「どんな値をいれるものかを示す情報」を型といいます。
コンピュータは様々な値を扱うことができます。整数、文字、小数点を含む数などです。それらを適当に扱っていると、いろいろと混乱を招くことがあります。
人間なら「私の身長は180です」と言われれば、180は数値(整数)だとわかります。また「私はMSLABOです」と言えば、MSLABOは文字だとわかります。
でもコンピュータは、そこまで融通が効きません。180が数値なのか単なる文字なのか判別ができないのです。
だから、プログラムを作る人が「この180というのは数値だよ。だから足し算や引き算などの計算に使ってもいいんだよ」と教えてあげる必要があるのです。また「MSLABOというのは文字だからね。計算に使っちゃダメだよ」と教えるのです。
より具体的には、180という値を入れておくための箱(変数)を用意し、その変数は整数なんだよと教えてあげます。型を教えてあげることを「型宣言」といいます。面倒くさいですね。でも、しょうがありません(汗)。
(画像URL:illust-AC 様)
現実の世界でも、タコ焼きを作りたい時はタコ焼き用の鉄板を使います。タイ焼きならタイ焼き用の鉄板を使います。材料(練った小麦粉)は同じでも、ごちゃまぜにはしません(笑)。
PROCESSINGでは、変数や定数にどんな値を入れるのかを、プログラムを作る人がコンピュータに教えなくてはいけません。このようなプログラミング言語を「静的型付け」言語といいます。代表的なものにJava、C、C#、VB.netがあります。
一方で、プログラミング言語の中には型を意識しないものがあります。同じ名前の変数や定数に、文字も数値も格納できるわけです。このようなプログラミング言語を「動的型付け」言語と呼びます。JavaScript、Python、Rubyなどが代表例です。
どちらが良いか・・・たまに宗教論争的な言い争いが起きることがありますが、私はケースバイケースだと思っています。
PROCESSINGで扱う代表的な型には、以下の様なものがあります。
●int(イント、またはインテジャー)型
整数を扱う型です。具体的には -2147483648 から +2147483647 までの値をあつかえます。ざっくりと±21億まで扱えると思っていればOKです。
●long(ロング)型
整数を扱う型ですが、intよりももっと大きな数を扱えます。具体的にには -9223372036854775808 から + 9223372036854775807 までの値をあつかえます。大きすぎて数えられませんが・・・約±900京(けい)です。一十百千万億兆のうえの位・・・京(けい)です。
●float(フロート)型
浮動小数点を扱う型です。浮動小数点を説明するのは難しいのですが、ざっくりと 3.14のような小数点以下の値をもつものと思って頂ければOKです。
●double(ダブル)型
同じく浮動小数点を扱う型です。floatよりも大きな範囲の数を扱うことが可能です。
●char(チャー、キャラ、キャラクタ)型
整数を扱う型です。intよりも小さな範囲の値を扱います。PROCESSINGでは1文字分のデータを格納するのに用います。
●boolean(ブーリアン)型
真偽値ともいいます。true(真)かfalse(偽)のどちらかを扱います。主にフラグ(何かの処理を実行したか否かを示す情報)や、そもそも状態が2つしかないもの(男と女など・・・あ、オカマはbooleanでは表現不可能ですね:笑)といった情報を扱うのに便利です。
●String(ストリング)型
文字列を扱う専門の型です。char型は1文字分の情報しか扱えません。Stringは複数の文字(文字列)を扱うことが可能です。PROCESSINGでは、非常によく使う型です。
この他にも様々な型があります。その都度説明したいと思いますので、いきなり理解できなくても大丈夫です。今は「そんなものか」と思って頂ければOKです。
16進数と8進数
「01:コンピュータの仕組み」記事で2進数について説明しました。1と0だけで数をかぞえる方法でしたね。
コンピュータにとっては都合の良い数え方ですが、人間にとっては非常にわかりにくいものです。第一、ある数を表現するのに桁数が膨大になってしまいます。
例えば10進数なら255 と3文字で足りるものが、2進数では11111111と8桁も必要になります。
そこでコンピュータの世界では2進数を書き表す際に、2進数の代わりに16進数が良く使われます。
16進数は、その名の通り0、1、2、3・・・と数えていって16までいったら繰り上がる数え方です。具体的には、以下のように数えます。
0から順番に数えて9までは10進数と同じです。9の次は10なのですが、16進数なので、まだ繰り上がりません。そこでアルファベットのAを10の代わりに使います。
Fまで(15まで)数えたら、はじめて繰り上がって10(イチゼロ)になります。
上図を見ていただくとわかると思いますが、1桁の16進数は2進数4つ(4bit)で表現できます。ですので、ある数を2進数で記述する時に、1と0でズラっと書くよりも16進数で表現した方がわかり易いのです。
例えば 10進数の255は2進数では11111111と書きますが、16進数ではFFと記述できます。Fは1111の事なので、FとFで1が8つ分になるわけです。FFといっても某オンラインゲームではありません(笑)。
書いてある物が10進数か16進数か区別するために、16進数を表記する時は、16進数の前に「0x」とか「&h」という記号をつけます。例えば、16進数のFF(=10進数の255) なら 0xFF とか &hFF と記述します。
アルファベットは大文字でも小文字でもOKですが、大文字を使うことが多いようです。ですので、0xff ではなくて 0xFF と書きます。
8進数はちょっとマイナーな数え方です。8進数は通信処理を行うプログラムなどで用いられますが、正直いってあまり使う機会はありません。
0、1、2と数えて8までいったら繰り上がって10(イチゼロ)になります。1桁の8進数は2進数3つ(3bit)で表現できます。
8進数を書く場合は、数の前にo(オー)か0(ゼロ)を付けます。8進数の10(=10進数の8)は、010 や o10 と記述します。
今日の言葉
・変数
変化する数の事。プログラムの中で値が変わる可能性があるものを変数を言います。
・定数
値が固定で変化しない数の事。プログラムの最初に1回だけ値を指定します。以降は内容が変わりません。
・型
どんな値をいれるものかを示す情報。多くのプログラミング言語では、扱う値が整数なのか文字なのかを区別する必要があります。
・型宣言
運動会などで「宣誓!、私たちはスポーツマンシップにのっとり・・・」というアレです(笑)。変数や定数を使う前に、どんな意味の数値なんだよとコンピュータに教えてあげる事を指します。
・静的型付け言語
変数や定数を使う前に、その型を指定(宣言)するプログラミング言語の事です。PROCESSINGも静的型付け言語になります。
・動的型付け言語
変数や定数を使う前に、その型を指定しなくても良いプログラミング言語。WEB系で使われるスクリプト言語で多く用いられている方法です。
・16進数
0、1、2と数えて10(じゅう)をA、11をB、12をC、13をD、14をE、15をFで表現します。16までいったら繰り上がって10(イチゼロ)になります。コンピュータでは2進数で数を表現するのが面倒くさいので、16進数を使います(笑)。16進数の前には 0x とか &h を付けます。
・8進数
マイナーな数え方。0、1、2と数えて8までいったら繰り上がって10(イチゼロ)になります。あまり使う機会がありませんが、通信系のプログラムを作るぞという人は重宝するかもしれません。
今日のまとめ
- 定数と変数の違いを理解しよう
- 型とは「どんな値をいれるものかを示す情報」
- PROCESSINGは静的型付け言語なので、変数や定数を使う前に型を指定する
- 2進数で数を表現すると面倒くさいので16進数を使う
電子書籍のご案内
よりわかりやすく詳細にまとめたものを、以下の電子書籍として販売しております。書籍については、下記書籍ページを参照してください
本ページの文章及びプログラムは、全てMSLABOに著作権があります。
本ページで利用している画像、フォントには、参照元リンクの企業・団体・個人に著作権があります。
著作権に従い、適切に利用して下さい。