高校数学をプログラミングで解く(準備編)「1-3 データ型、変数、コメント、コンソール出力」
マガジンリスト > 準備編 1.プログラム基礎 > 1-3 データ型、変数、コメント、コンソール出力
はじめに
今回は、「高校数学をプログラミングで解く」を始めるための準備として、プログラミング言語「Processing」でプログラムを書く際に必要となる知識のデータ型、変数、コメント、コンソール出力について説明していきます。
データ型
『高校数学をプログラミングで解く(準備編)「1-2 プログラムを書く」』で利用した円を描くプログラムを改めてみてください。
void setup(){
size(300,300);
circle(150.0, 150.0, 200.0);
}
これまで触れていませんでしたが、size関数の引数に与えている数は「300」と書いているのに対して、circle関数の引数に与えている数は「150.0」や「200.0」と書いています。実は、これらの数はキチンと区別して書いています。
プログラムを書く際に利用する様々な「データ」は、それぞれ「型」というものが決まっています。それを「データ型」と呼んでいます。
データ型の種類はいくつかあります。それらのうち、「高校数学をプログラミングで解く」で利用する主なデータ型は以下の4つになります。
整数型(int型)
浮動小数点数型(float型)
論理型(boolean型)
文字列型(String型)
整数型(int型)
整数型(int型)は整数を扱うデータ型になります。「円を描くプログラム」のsize関数の引数に与えている数「300」は整数型になります。整数型で扱える整数の範囲は$${-2,147,483,648}$$~$${2,147,483,647}$$となります。
整数型データの四則演算
整数型データ同士の四則演算は次のように行うことができます。
足し算(和) 300 + 200 → 500(整数型)
引き算(差) 300 - 200 → 100(整数型)
掛け算(積) 300 * 200 → 60000(整数型)
割り算の商 300 / 200 → 1(整数型)
割り算の余り 300 % 200 → 100(整数型)
なお、演算の結果はすべて整数型となります。特に、割り算の商は小数の「1.5」にならないことに注意してください。
浮動小数点数型(float型)
浮動小数点数型(float型)は平たく言えば「1.414」や「3.14」などの小数を扱うデータ型になります。
実は、「円を描くプログラム」のcircle関数の引数には浮動小数点数型の値を与える必要がありました。そのため、「150.0」や「200.0」のように小数点を加えることにより浮動小数点数型であることを明示して、整数型と区別していました。
浮動小数点数型データの四則演算
浮動小数点数型データ同士の四則演算は次のように行うことができます。
足し算(和) 300.0 + 200.0 → 500.0(浮動小数点数型)
引き算(差) 300.0 - 200.0 → 100.0(浮動小数点数型)
掛け算(積) 300.0 * 200.0 → 60000.0(浮動小数点数型)
割り算の商 300.0 / 200.0 → 1.5(浮動小数点数型)
割り算の余り 300.0 % 200.0 → 100.0(浮動小数点数型)
なお、演算の結果はすべて浮動小数点数型となります。割り算の商は小数(浮動小数点数)の「1.5」になります。
また、整数型データと浮動小数点数型データとの四則演算の結果は浮動小数点数型となります。
論理型(boolean型)
論理型は真(true)と偽(false)の2つの値をとります。正しいか正しくないかという値です。今後、条件式などを扱うときにでてきます。
文字列型(String型)
文字列型はデータとして文を扱うときに利用します。2つのダブルコーテーション「”」と「”」で文を挟むことで文字列型データとなります。たとえば、「”あいうえお”」などと記述します。
文字列型データの結合
文字列型データ同士を結合することができます。
"あいうえお" + "かきくけこ” → ”あいうえおかきくけこ"
変数
次に、変数について説明します。
変数のイメージ
変数は、データを入れる箱というイメージです。
変数名
変数には名前(変数名)を付けることができます。変数として準備した箱に名前を付けるイメージです(図 2)。変数名は以下のルールに従えば、どのような名前でも付けることができます。
1. 変数名に利用できる文字は大文字小文字のアルファベット「a-z」,「A-Z」と数字「0-9」、そして記号「_」です。
2. 変数名の最初の文字はアルファベットか、記号「_」になります。
3. 変数名はアルファベット1文字とすることができますが、記号「_」の1文字を変数名にすることはできません。
変数のデータ型
変数はデータを入れる箱のイメージと説明しましたが、どんなデータでも自由に入れることができるわけではありません。データにはデータ型が決まっていることを説明しましたが、変数もどのようなデータ型のデータを入れる箱であるのかを決めておく必要があります。
プログラムで利用するデータ型名
プログラミング言語により多少違いがありますが、プログラムで変数のデータ型を指定する際には以下にまとめたデータ型名を利用します。
整数型 int
浮動小数点数型 float
論理型 boolean
文字列型 String
図 3はそのイメージを描いています。
変数の宣言
以上の内容を踏まえて、実際のプログラムではどう書いていくのかを説明します。
void setup(){
int n1;
float pi;
String _t;
}
ソースコード1 変数の宣言
ソースコード1のように、「データ型 変数名;」とプログラムに書くことで、その変数を定義することができます。これを「変数の宣言」といいます。
変数への代入
ソースコード 1で変数の宣言を行いました。ここまでで変数という箱を用意することができたわけです。次に、この変数に実際のデータを入れていきます。これを「変数への代入」といいます。
void setup(){
int n1;
float pi;
String _t;
n1 = 1;
pi = 3.14;
_t = "ABC";
}
ソースコード2 変数への代入
ソースコード 2のように、「変数名 = 値;」とプログラムに書くことで、その変数に値(データ)を入れることができます。「=」の記号は、数学では「左辺と右辺が等しい」という意味になりますが、プログラムでは「左辺の変数に右辺の値を代入する」という意味になり、「代入演算子」と呼びます。なお、変数のデータ型と代入する値の型が一致していない場合、エラーになるか、仮にエラーにならなかったとしても結果がおかしくなる可能性がありますので、注意が必要です。
変数を利用した演算
値を代入した変数はデータと同じように各種演算を行うことができます。例えば、整数型変数や浮動小数点数型変数はデータ型のところで説明した四則演算を行うことができます。試しに、整数型変数a,b,cを宣言し、aに3、bに2を代入した後、aをbで割ったときの商を求め、cに代入するというプログラムを作成してみます。(「// 整数型変数aの宣言」や「println(c);」の部分については後程説明します。)
void setup(){
int a; // 整数型変数aの宣言
int b; // 整数型変数bの宣言
int c; // 整数型変数cの宣言
a = 3; // 変数aに3を代入
b = 2; // 変数bに2を代入
c = a/b; // aをbで割ったときの商を変数cに代入
println(c); // 変数cに入っている値をコンソールに出力
}
ソースコード3 変数を利用した演算の例
このソースコードを、Processingの開発環境ウィンドウを開いて(スケッチ名を「example_variable」としています)、テキストエディタ部分に書いて実行します。
図4のように、コンソールに「1」が出力され、正しい結果が得られていることがわかります。
コメント
ソースコード3で「// 整数型変数aの宣言」という文を書きました。これはその左側のコード「int a;」を説明している文です。
プログラム(ソースコード)には、コンピュータが実行するコードのほかに、コンピュータに実行させない文章などを記述することができます。この実行させない部分を「コメント」と呼びます。上記のように、コメントを使ってコードの説明を書くことができます。これにより、このプログラムを見返すときに、どのようなプログラムなのか、それぞれのコードが何を表しているのか、などがわかりやすくなります。
Processingでのコメントの書き方には2種類の方法があります。1つ目は
// コメント
のように「//」の右側に書きます。「//」を書いた行の右側の文についてはコンピュータは無視します。
もう1つは
/*
コメント
*/
のように「/*」と「*/」との間に文章を書きます。「/*」と「*/」との間であれば何行でも書くことができます。「/*」と「*/」との間の文についてはコンピュータは無視します。
コンソールへの出力
もう一つ、ソースコード3で「println(c);」というコードを書きました。このprintln関数は「( と ) の間の値をコンソールに出力」させる関数になります。
コンソールとは、Processingの開発環境ウィンドウの下部の黒色の領域のことを表しています。図4ではそのコンソールに「1」と表示しています。
このコンソール出力は今後よく利用します。
なお、コンソールへの出力に利用する関数はprintln関数のほかに、print関数も利用することができます。実際にこれらの関数の違いを見るために、以下のプログラムを考えてみます。
void setup(){
println(1);
println(2);
print(3);
print(4);
}
ソースコード4 printlnとprintの比較
このソースコードを、Processingの開発環境ウィンドウを開いて(スケッチ名を「console_test」としています)、テキストエディタ部分に書いて実行します。
println関数の場合、( と ) の間の値を出力した後に改行を行っていることがわかります。一方、print関数の場合、( と ) の間の値を出力した後は特に何もせず、次に呼ばれたprint関数の ( と ) の間の値が続けて出力されています。
このような特徴がありますので、printlnを使うか、printを使うかは、用途によって使い分けてください。
「円を描くプログラム」を書き換えてみる
ここまで説明した内容を踏まえて、最後に「円を描くプログラム」を書き換えてみます。
// 円を描くプログラム
void setup(){
size(300,300); // キャンバスのサイズ
float x = 150.0; // 円の中心位置のx座標
float y = 150.0; // 円の中心位置のy座標
float d = 200.0; // 円の直径
circle(x, y, d); // キャンバスに円を描画する
}
ソースコード5 円を描くプログラム(書き換え版)
変更点は、以下のとおりです。
・プログラムの先頭に、何をするプログラムであるかをコメントしました。
・circle関数に与えていた引数を変数で置き換えました。
・それぞれの変数やcircle関数にコメントを使って説明を加えました。
ソースコード5を実行すると、以前の結果と同じ円がキャンバス上に描かれます。
結果は変わりませんが、何をするプログラムであるかはわかりやすくなったと思います。また、circle関数の引数の値も変数にしてそれらの説明をコメントで加えることでデータが何を表しているのかがわかりやすくなったと思います。
まとめ
今回は、「高校数学をプログラミングで解く」を始めるための準備として、プログラミング言語「Processing」でプログラムを書く際に必要となる知識のデータ型、変数、コメント、コンソール出力について説明しました。
これらのことは今後よく出てきます。少しずつ覚えていってください。
最後に2つほどアドバイスです。
・変数名は「変数」のところで説明したルールに従ってさえいればなんでもよいのですが、できれば多少長くなってもいいのでわかりやすいものを使いましょう。例えば、ソースコード5で、円の直径を表す変数として「d」を使いました。これは直径を英語で表した「diameter」の頭文字をとって「d」としています。別に「a」でも「b」でもいいのですが、変数が何を表しているのかが分かりやすいものがよいと思います。
・コメントはできるだけ書くようにしましょう。プログラムの実行に関係ないものだし、何を書くかを考えるのは結構手間なので、コメントを書くことを後回しにして最終的に結局書かないということをついついやってしまいがちです。ただ、それをやってしまうと、後々見返したときに何のプログラムだったかさっぱりわからなくなってしまいます。ですので、コメントは書くように習慣付けるようにしてください。
参考文献
Processingをはじめよう 第2版(オライリー・ジャパン、オーム社、ISBN9784873117737)