第二回-03 変数の利用と四則演算

1年生における Visual Basic でも学んだように、プログラミングでは変数という概念を多用する。
本ページでは変数とはどういうものかを解説し、さらにそれを用いた四則演算を紹介する。

変数の宣言とそのイメージ

C言語では、整数を格納できる変数 x を使うために、以下のような宣言を必要とする。
int x;
この宣言のイメージを図示すると、下図のようになる。



変数というのは何か (典型的には数字) を格納できる箱であることがまず示されている。
この箱が格納できるのは整数であり (それを指定しているのが「int」である。後述)、
その箱に x という名前が付けられていることを上図は示している。

なお、複数の変数を宣言することもできる。
int x;
int y;
int z;
上記の3行からなる宣言を書けば、x、y、z という3つの異なる箱が用意されるというイメージである。
また、この宣言は以下のようにコンマ「,」で区切って1行にまとめて書くことも出来る。
int x,y,z;
ここまでは数学のように1文字の変数のみを使ったが、複数の文字からなる名前を付けても良い。
例えば、年齢を格納するために以下のように変数 age を宣言する、などである。
int age;
ただし、変数の名前の付け方には、以下のルールがあるので注意しなければならない。 なお、同じ宣言を二度書くとエラーになるので注意。
int x;
int x;	// 同じ宣言を二度書くとエラー


変数の初期化とそのイメージ

変数は何かを格納できる箱なのであるから、その箱にその「何か」を入れる方法を学ぼう。
方法の一つ目は、初期化である。
int x=5;
上記のように変数の宣言にそのまま「=」を続けて右辺に値を書くことで、
下図のようにあらかじめ整数の5が格納された状態で箱 x が用意される。

なお、「int x;」や「int x=5;」のように「int」で変数を宣言した場合は、x には整数のみを格納できる。





変数への値の代入とそのイメージ

変数に値を格納する方法の二つ目は、代入である。
int x;
x=5;
上記のように、「int x;」という宣言の後で「x=5;」という命令を書くことで、 変数 x には 整数 5 が格納される。
そのイメージを記したのが下図である。



起こる結果としては初期化「int x=5;」と同じなのだが、文法上初期化と代入は異なる概念なので、別々に紹介した。
変数を宣言するときに、格納したい値が最初から確定していれば初期化を、そうでなければ代入を用いれば良いだろう
(この説明の意味は講義の回数を重ねた後の方が理解しやすいかも知れない)。

なお、「=」は数学では「等しい」という意味だが、C/C++ では「右辺の値を左辺の変数に代入する」という意味であり、
用途が異なるので注意が必要である。

もちろん、初期化済みの変数に、別の数値を代入することもできる。
int x=5;
x=10;
上記の記述をしたときに起こることのイメージを記したのが下図である。
特に難しいことはないと思うが、もともと格納されていた5は消えてしまうことは注意しておいた方が良いかも知れない。





変数の型

ここまで整数を格納できる変数をを紹介し、int で宣言できることを確認した。
実は変数に格納できる値は、変数を宣言するときに指定する型 (type)で決まる。
int 型で宣言した変数には整数のみを格納できる、ということである。

int 型以外では、小数点以下を含む数を格納できる double 型を本講義では多用する (下図)。



他にどのような型があるかを下表にまとめた。

表としての一貫性を保つために、現時点では皆さんが理解できない内容も含んでいる
(例えば、「いくつの0と1で数値が表現されるか」を表す「ビット幅」など)。
それは後日学んでいくことになる。

典型的なビット幅 典型的な範囲
char 8 ビット (1 バイト) -128~127
int 32 ビット (4 バイト) -2,147,483,648~2,147,483,647
float 32 ビット (4 バイト) 3.4×10-38~3.4×1038 (負の数も含まれる)
double 64 ビット (8 バイト) 1.7×10-308~3.4×10308 (負の数も含まれる)
bool 1 ビット true または false
void - 値なし

現時点では、整数を格納できる int 型と、小数点以下の数を格納できる double 型があることを知っておけば良い。

なお、double 型と似た用途のものに float 型があるが、表を丁寧にみると分かるように、
それぞれ精度が異なる。 double型は倍精度浮動小数点数型、float型は単精度浮動小数点数型と呼ばれる。
通常のPCではdouble型を用いていれば問題ない。ロボット制御用のマイコンなど、計算能力が低い環境では float 型を優先して使うこともある。

なお、異なる型の変数をで同じ名前で宣言するとエラーになるので注意。
int x;
double x;	// x は既に整数型の変数と宣言されているのでエラーになる


変数の画面への表示

変数の内容をコンソールに表示するには、文字列同様 cout を使えば良い。
paiza.IO に追記する部分のみを記すと以下のようになる。実行して何が起こるか確認してみよう。
int x = 5;
int y = 10;
int z = 20;

cout << x << "\n";
cout << y << "\n";
cout << z << "\n";
改行をいれないと混乱するので必ず入れること!

上のプログラムにおいて、以下の2点がポイントである。 実行するとわかるが、上の例ではあまりにも表示がそっけない。 実際には以下のように文字列を交えて丁寧に書いたりする。
int x = 5;
int y = 10;
int z = 20;

cout << "xの値は" << x << "\n";
cout << "yの値は" << y << "\n";
cout << "zの値は" << z << "\n";
ここでも前ページで行った練習がいかされていることがわかるだろうか。


四則演算

プログラミングにおいて、変数は四則演算のような計算とともに用いられることが多い。
int x = 5;
int y = 10;
int z;

z=x+y;
上の例は、変数 x と y にそれぞれ 5 と 10 が格納されているとき、「z = x + y;」という命令を実行するものである。
何が起こるかのイメージを記したのが下図である。



右辺である x + y の結果 ( 5 + 10 = 15 ) が計算され、それが左辺の変数 z に格納される様子が示されている。
このように、右辺の計算式が先に計算され、その結果が左辺の変数に格納される、という点がポイントである。

今回体験してもらうのは、下記の四則演算の演算子である。
加算 ( + )、減算 ( - )、乗算 ( * ) は特に難しいことはないと思う。
乗算の記号「*」は、 Excel などでも使うので初めてではないはずである。

注意が必要なのは、表の 4 行目の除算である。
整数 (int) 同士の除算は「小学校で学んだ割算の商」となる。
すなわち、「5 ÷ 10 を計算すると、商 0 余り 5」なので、5 / 10 を計算すると 0 となる、ということである。

+ 加算
- 減算
* 乗算
/ 整数 (int) 同士の除算では小学生の割算出学ぶ「商」が計算される。
すなわち、5 / 3 に対しては商の 1 が得られる。
一方、割る数と割られる数のどちらに小数点以下を含む数 (double または float) がある場合の除算では、
結果にも小数点以下が含まれる。
% 整数の除算の余りが計算される。すなわち、5 % 3 に対しては余りの 2 が得られる。





←コンソールへの表示のバリエーション課題→

オンラインコンパイラで C/C++ を自習しように戻る