3 変数とデータ型(教科書の3章)

C言語の変数は、数学で使われる変数とよく似ており、そこに数値を代入することができ る。実際には、コンピューターのメモリーの一部の記憶場所を示しており、そこに数値を 記憶するようになっている。イメージは、図1に示しているとお りで、変数とは数値を入れる箱のようなものである。整数型と倍精度実数型の変数は、数 学の変数と全く同じである。
図 1: 変数のイメージ。変数とはデータを入れる箱のようなもの。
\includegraphics[keepaspectratio, scale=0.8]{figure/image_variable.eps}

図の左端に書かれているcharintdoubleはその変数の型を示してお り、それぞれ文字型、整数型、倍精度実数型を表す。これは変数に代入できる値の種類が 決まっていると考える。文字型の変数(c, h, moji)には1文字が、整数型の変数 (i, j, seisu)には整数が、倍精度実数型の変数(x, y, jisu)には実数を入れ ることができる。このように変数には、型と変数名があることを理解して欲しい。プログ ラム中では、この変数に入れられた値を操作するのである。

型と変数名の指定は、プログラム中の中括弧 で囲まれた部分の最初に

	char c, h, moji;
	int i, j, seisu;
	double x, y, jisu;
のように書く。これを変数の宣言と言う。

諸君は方程式を使って問題を解く場合、変数というものを使っている。数学の変数とC言 語の使用方法での決定的な違いは、変数の型の宣言が必要なことである。プログラムの動 作にはこの変数宣言は無駄のように思える。これが必要なのは、コンピューターの都合で ある。たいていのプログラミング言語では、これを宣言することにより、メモリーを確保 する。必要なメモリー量はプログラマーが決めなくてはならない。コンピューターは、こ のプログラムがどの程度のメモリーが必要か全く分からないからである。

1を見て分かるように、箱の大きさが型によって異なる。これ は、一つのデータを表現するために必要な情報量が異なるためである。情報量の単位は、 ビット(bit)が使われる。2 進数の1桁を1ビットと言う。8ビットで1バイトとなり、それ がコンピューターで使われる基本単位となる。

同じint型でもいろいろあり、表現できる範囲が異なっている3。これは一つの変数の情報量の差か ら生まれる。C言語で使われる型によって表現できる範囲は、教科書の表3-1(p.34)に示さ れている。全てのC言語は同一になっておらず、諸君が使っているシステムではこの表の ようになっている。いろいろな型があるが、ほとんどの場合、charintdoubleで十分である。諸君が作るプログラムでは、これらで十分、間に合うが、問 題が生じたときのみ他の型を使えば良い。

文字型の変数に代入できるのは、諸君の教科書の表紙の裏の黄色のページの文字コード表 に書かれているもののみである。漢字や平仮名を代入したい場合は、文字型の配列を使う ことになる。興味のある者は自分で調べよ。

文字型と整数型、実数型の変数を宣言、それに値をに代入、そして画面へ出力するソース をプログラム2に示す。各行の内容は以下の通りである。

3行
文字型の変数を宣言。
4行
整数型の変数を宣言。
5行
倍精度実数型の変数を宣言。
6-7行
シングルクォーテーション4で囲まれた文字が代入さ れる。
16行
文字変数を出力するための変換仕様は、%cを使う(教科書p.322)。
\begin{lstlisting}[caption=変数の学習プログラム,label=prog:variable]
...

[練習1]
プログラム2を、以下のように変 数を使うように変更せよ。もちろん、変数の代入された結果 も表示させること。
  • 文字型の変数、hogehogehogeを宣言し、 それぞれにAkを代入する。
  • 整数型の変数、fugafugafugaを宣言し、 それぞれに-123と321を代入する。
  • 倍精度実数型の変数、foobarを宣言し、 それぞれに$ -0.1987$ $ -96.85\times 10^{-28}$を 代入する。




ホームページ: Yamamoto's laboratory
著者: 山本昌志
yamamoto masashi
平成17年5月14日


no counter