講義資料

応用理工学情報処理
第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