3. 型と演算

 前回学んだ変数はint型といって整数値を一つ格納できるものでした。小数点以下の値も含んだ値を格納できる変数の型を実数型と呼びます。実数型の変数にはdoubleやfloatなどがありますが、ここではdouble型を扱います。数学での実数は数直線上のすべての値の事ですが、プログラムでいう実数は有限桁、それも高々15桁程度(64ビットの場合)です。

(1) 実数型 double
 新しいプロジェクトno4にソースファイルave.cを追加して次の内容を入力してください。

実行結果
Average = 4.50
ちゃんと小数点以下の数値も出力されました。

新しく出てきた命令
double a=6.0, b=3.0;  /* a, bをdouble型の変数とするとともに、最初の値を6と3とする。*/
double ave;  /* aveをdouble型の変数とするという宣言。*/
書式文字列の%f  後に続く引数の実数型の値をここに置き換える。%5.2なら全体を最小5桁で、小数点以下2桁表示する。桁が足りない場合は先頭に空白が入る。%fと桁数を省略することもできる。

(2) 式の評価
 式の評価では、+,-と*,/が混在する式では一般の数式同様*,/が優先される。式の計算順序を指定するには小かっこ( )を用いる。
 さらに、式を評価(計算)する過程で型との関係を知っておくことが重要です。次の原則をおさえておきましょう。

原則1: 直接数値で表すときには3は整数型、3.0は実数型として扱う。
原則2: 同じ型同士の演算は結果も同じ型になる。 
例) 3/2の評価は整数型の1になり、3.0/2.0の評価は実数型の1.5となります。
原則3: 異なる型の演算では、大きい型に合わせてから演算が行われる。doubleとintの場合、doubleが大きい。式はその計算過程でも型に合わせた評価が行われる。
例)2/3*30や100.0*(1/2)の評価は0になる。(2/3の計算で0になる)

原則3: 異なる型の演算では、大きい型に合わせてから演算が行われる。doubleとintの場合、doubleが大きい。式はその計算過程でも型に合わせた評価が行われる。
 例)3/2.0の評価は実数型1.5になり、1.0/20の評価も実数型の0.05となります。リスト4のaveに代入される結果が実数型なのもこのためです。

 以上のことを踏まえて新しいプロジェクトno5を作り、var3.cにリスト5を入力、実行して型と演算を確認しましょう。

 実行結果は次のようになりました。

 変数aはint型なので右辺がdouble型でも小数点以下切り捨てて格納しますのでどちらも結果が4になります。変数bはdouble型で実数を格納できますが、最初の9/2だけ式の評価の段階で整数の4になっているので結果は4.0000となっています。

演習1 身長(cm)と体重(kg)の値を実数型でコンソールから入力して、BMIを計算するプログラムを作成せよ。ここで、BMIの計算は[体重(kg)]÷[身長(m)の2乗]で計算できる。

演習2 半径の値2を実数型の変数rに代入文で設定し、半径の値とその半径を持つ円の面積と球の体積を表示するプログラムを作成せよ。実行結果は次のように小数点以下2桁まで表示するようにせよ。
2.00
25.12
33.49

※2乗の計算は、^ではなくa*aで計算できる。


【補足1】オブジェクト

 intやdoubleを型、その型でできた変数をオブジェクト(object)と呼ぶ。

【補足2】キャスト
 型を強制的に変換する場合には、キャストと呼ばれる方法を用いる。例えば、
 int a=4, b=5;
 double ave;
 ave=(double)(a+b)/2;
 とすると(a+b)の結果がdouble型に変換され、9.0/2の計算が行われる。

【補足3】intやdouble以外の主な型
 char 符号付整数(-128~127)や1バイト文字(半角英数字など)を記憶できる。
 unsigned char (0~255)の値や1バイト文字を記憶できる。
 long 4バイトの符号あり整数(-2^31~2^31-1)を記憶できる。
 unsigned long 4バイトの符号なし整数(0~2^32-1)を記憶できる。
 float 4バイトの浮動小数点実数(有効桁数7桁)を記憶できる。
 double 8バイトの浮動小数点実数(有効桁数15桁)を記憶できる。
 int 2バイトの符号あり整数(-2^15~2^15-1)を記憶できる。※処理系によって異なることがある。


コンプロI C言語の部屋です。

このサイトは東京電機大学東京千住キャンパスのEJ, EK, EF科の1年次生向けコンピュータプログラミングIの授業内容やお知らせをするページです。プログラムの初歩の初歩を学ぶ人のためのページです。この資料を授業等で共有したいという方もどうぞお使いください。一緒に学習向けコンテンツを作ってくださる方、学習者向けのサンプルプログラムの提案など歓迎いたします。

0コメント

  • 1000 / 1000