応用理工学情報処理 第2回(2015年10月15日) Manaba https://manaba.tsukuba.ac.jp の応用理工学情報処理のページ 授業のHP http://www.ims.tsukuba.ac.jp/~maeshima/joho 今回は最初にこちらを見てください。 1 第2章 演算と型 2 演算子 (p.22) #include <stdio.h> int main(void) { int vx, vy; puts(“二つの整数を入力してください。“); printf(“整数vx : “); scanf(“%d“, &vx); printf(“整数vy : “); scanf(“%d“, &vy); printf("vx + vy = %d\n", vx + vy); printf("vx - vy = %d\n", vx - vy); printf("vx * vy = %d\n", vx * vy); printf("vx / vy = %d\n", vx / vy); printf("vx %% vy = %d\n", vx % vy); return 0; } 3 演算子 四則演算など • 足し算 • 引き算 • 掛け算 • 割り算 + - * / • 剰余(余り) % その他の演算子 単項の算術演算子(p.26) 単項 + 演算子: 単項 - 演算子: +a -a aの値 aの符号を反転した値 代入演算子(p.27) (単純)代入演算子: a=b bの値をaに代入 • aとbは等しいという 等号ではない。 • bにa を代入する場 合は b=a 4 剰余(p.24), 単項の算術演算子(p.26) #include <stdio.h> #include <stdio.h> int main(void) { int no; int main(void) { int num; } printf(“整数を入力してください: “); scanf(“%d“, &no); printf(“最も下の桁は%dです。\n", no%10); printf(“整数を入力してください: “); scanf(“%d“, &num); printf(“符号を反転した値は%dです。\n", -num); return 0; return 0; } 5 型: int型変数とdouble型変数 • int 整数型変数 [整数(1,2,など)のみ] • double 実数型変数 [実数(1.234など)を保存できる] 注意点 • 整数型変数に実数値を代入すると、小数点以下の部分は切り捨てられる。 •(整数)/(整数)を実行すると、その結果も小数点以下は切り捨てられる。 • printfでdouble型の値を表示するための変換指定は “%d”ではなく “%f”。 変換指定(p.6) 変数の表示(printf), 読み込み(scanf)の際に、変数の型や書式を指定 6 int型とdouble型 (p.29) #include <stdio.h> 実行結果 int main(void) { int n; double x; n = 9.99; d = 9.99; int 型変数nの値 : 9 n/2 :4 double 型変数xの値 : 9.990000 x / 2 : 4.995000 nはint型なので小数点以下が切り捨てられてn=9となる printf(“ int 型変数 n の値 : %d\n”, n); printf(“ n / 2 : %d\n”, n / 2); printf(“double 型変数 x の値 : %f\n”, dx); printf(“ x / 2.0 : %f\n”, dx / 2.0); return 0; double型の変換指定は%f } n/2=9/2=4.5ですが、小数点以下が切 り捨てられて4が表示 型とオブジェクト 変数の宣言(p.29のプログラムより) 型の指定 整数型か実数型か,など int double n x ; ; 変数: これが値を保持し、演算の対象となりうる 変数のように、値を保持し、 演算の対象となるものをオブジェクトと呼ぶ 当面は”オブジェクト=変数”とみなして良いが、後で 配列 や 構造体のように値 (データ)を保持し、演算の対象となりうるが、変数”ではない”ものが出てくる。 8 double型変数の入力 (p.31) #include <stdio.h> int main(void) { double vx,vy; puts("二つの数を入力してください。"); printf("実数vx : "); scanf("%lf", &vx); printf("実数vy : "); scanf("%lf", &vy); scanfでdouble型の値を読み込むための変換 指定は “%f”ではなく “%lf”。lは小文字のエル. printf("vx + vy = %f\n", vx + vy); printf("vx - vy = %f\n", vx - vy); printf("vx * vy = %f\n", vx * vy); printf("vx / vy = %f\n", vx / vy); return 0; } 9 型と演算: 暗黙の型変換 • int 整数型変数 [整数(1,2,など)のみ] • double 実数型変数 [実数(1.234など)を保存できる] 異なる変数型同士の演算は? 暗黙の型変換 int型とdouble型の演算 ->int型が自動的にdouble型に変換される よって、計算結果としては • int型 と int型 = int型 • int型 と double型 = double型 • double型 と double型 = double型 10 暗黙の型変換 (p.33改変) printf("n1 = %d\n", n1); printf("n2 = %d\n", n2); #include <stdio.h> int main(void) { int n1, n2; double d1, d2; n1 = 5 /2; n2 = 5.0/2; printf("d1 = %f\n", d1); printf("d2 = %f\n", d2); return 0 ; } d1 = 5 /2; d2 = 5.0/2; 11 考え方 int n1, n2; double d1, d2; n1 = 5 /2; (1) 右辺は整数同士の計算 5/2なので、その結果は2。 これをint n1に代入するので n1=2。 n2 = 5.0/2; (2) 暗黙の型変換により右辺は2.5。 これをint n2に代入するので n2=2。 d1 = 5 /2; 右辺は整数同士の計算 5/2なので、その結果は2。 これをdouble d1に代入するので d1=2.0。 (3) d2 = 5.0/2; (4) 暗黙の型変換により右辺は2.5。 これをdouble d2に代入するので d2=2.5。 12 キャスト演算子 (p.35) #include <stdio.h> 平均値を計算するプログラム int main(void) { int a, b; puts("二つの整数を入力してください"); printf("整数A : "); scanf("%d", &a); printf("整数B : "); scanf("%d", &b); printf("それらの平均は%fです。\n", (double)(a + b) / 2); return 0; } p.34のように暗黙の型変換を用いて (a + b)/2.0 としても同じ結果がえられます。 型変換を明示的に行う int 型変数 a (double) a はdouble型と解釈 13 暗黙の型変換とキャスト演算子 int 型変数 a = 9 • a/2.0 = 4.5 このページでは,これ以降の”=“は 代入演算子ではなく数学のイコール 整数と実数の演算なので、暗黙の型変換によりaが実数に 変換され、結果は実数。 • (double) a/2 = 4.5 (double)は、まず aに作用するのでa が実数に変換。 次は整数と実数の演算なので、結果も実数。 • (double) (a/2) = 4.0 a/2がまず計算される。a/2は整数として計算されるので、 小数点以下は切り捨てられて、結果は4。 (double)は (a/2)の計算結果4に作用。よって実数に変換されて、4.0となる。 14 表示桁数の指定 #include <stdio.h> int main(void) { int a, b, c; int sum; double ave; puts("三つの整数を入力してください。"); printf("整数a : "); scanf("%d", &a); printf("整数b : "); scanf("%d", &b); printf("整数c : "); scanf("%d", &c); sum = a + b + c; ave = (double)sum / 3; printf("それらの合計は%5dです。\n", sum); printf("それらの平均は%5.1fです。\n",ave); %5d (p.36) 整数を10進数で 少なくとも5桁 sum=10 の場合 1 0 %5.1f 浮動小数点数を少 なくとも5桁(少数点 含む)。但し小数点 以下は1桁 ave=3.33333…. の場合 return 0; } 3 . 3 15 演習問題 体重(kg単位)と身長(cm単位)をint型整数で読み込み、BMI値を実数で出力 するプログラムを作成せよ。下記の計算では暗黙の型変換かキャスト演算 子を用いること。 BMI値 = • 体重(kg) 身長(m) × 身長(m) 演習問題の提出・出席確認について • 授業中にプログラムが完成した方は申し出てください。プログラ ムの確認・出席の確認を同時に行います。完成が確認できた方 は退出しても構いません。 • 授業終了10分前(16:20)の時点でプログラムが未完成の方も、 申し出てください。出席の確認のみを行います。 • 授業終了までにプログラムを完成できなかった方は第3回目の 授業の際に確認を行いますので、それまでに完成させておいて ください。 16
© Copyright 2024 ExpyDoc