CプログラミングⅠ
変数とデータ型
標準入力
変数を利用したプログラム
変数を用いた演算
変数を用いれば,プログラムの修正が簡単
いろんな値に対する演算が一つのプログラムで可能となる
四則演算する値を変更したいときは
すべての printf 文を修正しなければ
ならない 変数a,bに代入する値を修正するだけでよい
直接,値を記述しての演算 1:
2:
3:
4:
5:
6:
7:
8:
9:
int main(void) {
printf("20 + 10 = %d¥n", 20 + 10);
printf("20 - 10 = %d¥n", 20 - 10);
printf("20 * 10 = %d¥n", 20 * 10);
printf("20 / 10 = %d¥n", 20 / 10);
return 0;
}
変数を利用しての演算 1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
int main(void) {
int a,b;
a = 15;
b = 5;
printf("a + b = %d¥n", a + b);
printf("a - b = %d¥n", a - b);
printf("a * b = %d¥n", a * b);
printf("a / b = %d¥n", a / b);
return 0;
}
値を変更するだけ
変数を利用したプログラム
入力した値を用いた演算
変数を用いれば,キーボードから入力した値による計算 が行えるようになる
四角形の面積の計算 1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
int main(void) {
int tate,yoko;
int menseki;
printf("四角形の面積の計算¥n");
printf("縦辺の長さを入力してください.¥n");
scanf("%d", &tate);
printf("横辺の長さを入力してください.¥n");
scanf("%d", &yoko);
menseki = tate * yoko;
printf("四角形の面積は%dです.¥n", menseki);
return 0;
}
実行結果
四角形の面積の計算
縦辺の長さを入力してください 10 [Enter]
横辺の長さを入力してください.
15 [Enter]
四角形の面積は150です.
※[Enter]は, [Enter]キーの入力
※ユーザーからの入力は下線で表している
入力した値(整数値)
int型変数tate,yokoに格納される
入力した値で計算した結果が mensekiに格納される
変数
変数とは
一時的に値(数値,文字)を記憶するため場所(箱)
箱
値
プログラムでは データを記憶する
必要がある.
例 : ユーザーが入力した数値 計算した結果
メモリに変数を 用意してデータを
入れておく.
メモリは,コンピュータ 内部の記憶装置
メモリ
変数:データを入れる 100
'A'
変数
変数名(識別子)
変数(箱)には名前(変数名)を付ける必要がある
半角英字(大文字,小文字),半角数字,半角の「 _ 」
(アンダースコア)を使うことができる
数字から始まる名前は付けられない
予約語(C言語で用いられている単語)は使えない
a abc ab_c F1
12a return is-a
数字で始まってはだめ 予約語は使えない
特殊な記号も使えない
変数名の例 使用できない変数名の例
変数
変数の宣言
プログラムで変数を利用する場合,プログラムの最初に 変数を宣言する必要がある
変数の型(データ型)も定義(宣言)する必要がある
a
5 25
5.2 10.7 変数宣言の例(一部省略)
1:
2:
3:
4:
5:
6:
int main(void) {
int a;
double jissu;
}
整数型変数 a を宣言
実数型(倍精度)変数 jissu を宣言
jissu 変数宣言の書式
型名 変数名;
整数値を格納する ことができる
実数値を格納することができる
変数の型(データ型)
変数の型 : 値(データ)の種類
変数を宣言するときは,記憶する値の型を決めておく
カテゴリ 種別 型名 格納できる範囲 サイズ
文字型 文字型 char -128 ~ 127 1バイト
符号なし文字型 unsigned char 0 ~ 255 1バイト
整数型
短い整数型 short int -32768 ~ 32767 2バイト
符号なしの短い整数型 unsigned short int 0 ~ 65535 2バイト
整数型 int -2147483648 ~
2147483647
4バイト
符号なしの整数型 unsigned int 0 ~ 4294967295 4バイト
長い整数型 long int -2147483648 ~ 2147483647
4バイト
符号なしの長い整数型 unsigned long int 0 ~ 4294967295 4バイト
浮動 小数点型
単精度浮動小数点型 float 3.4E-38 ~ 3.4E+38 4バイト
倍精度浮動小数点型 double 1.7E-308 ~ 1.7E+308 8バイト
変数への値の代入(一部省略)
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
int main(void) {
int a;
float b;
double jissu;
a = 10;
b = 5.2;
jissu = 2.5 + 1.2;
}
変数の利用
代入
変数へ値(または計算結果)格納する
整数型変数 a に整数値 10 を格納 a
10
2.5
実数型(単精度)変数 b に 実数値 5.2 を格納
実数型(倍精度)変数 jissu に 2.5 + 1.2 の計算結果を格納
b
5.2
1.2 3.7
+
= は「代入」を表す 等号(等しい)ではない
= の右辺の値を 左辺の変数に格納
jissu 代入文の書式
変数名 = 値(または式);
変数の利用
変数の初期化
変数の宣言と同時に値を代入しておくことを
『変数を初期化する』という
初期化を用いると変数の宣言と値の格納を同時に 行える
変数の利用における注意
値を格納しないで利用すると,中に何が入っているか わからないため,エラーの原因となる
データ型 識別子 = 式 ; 初期化の構文
int num = 3;
初期化の例
num
?
変数の値の出力 1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
int main(void) {
int a = 10;
double b = 50.2;
char c = ‘ b’;
char d[] = "f g h";
printf("a = %d b = %lf¥n", a, b);
printf("a %c c d e %s¥n", c, d);
return 0;
}
変数の利用
変数に代入(または初期化)された値を出力
printf 関数,変換仕様を用いて変数に代入(または初期化)
された値を出力することができる
変数の型と変換指定を一致させること
変換仕様 意味
%lf 小数(倍精度実数:double)として出力する
出力結果
a = 10 b = 50.200000 a b c d e f g h
変数の初期化を 行っている
変数の値を変更する 1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
int main(void) {
int num = 3;
printf("変数numの値は%dです.¥n", num);
num = 5;
printf("変数numの値を変更しました.¥n");
printf("変数numの新しい値は%dです.¥n", num);
return 0;
}
変数の値を変更する
プログラムは文が上から1つづつ順番に処理される ので,一度代入した変数の値を新しい値に変更する ことができる
num
num 5 で上書き
される.
変数の利用
3 を代入
(初期化)
3
5 を代入
5 =
実行結果
変数numの値は3です.
変数numの値を変更しました.
変数numの新しい値は5です.
変数の利用
他の変数の値を代入する
代入構文で = の右辺には他の変数が書ける
この場合,右辺に書いた変数の値が代入される
変数の値を変更する 1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
int main(void) {
int num1, num2;
num1 = 3;
printf("変数num1の値は%dです.¥n", num1);
num2 = num1;
printf("変数num1の値をnum2に代入しました.¥n");
printf("変数num2の値は%dです.¥n", num2);
return 0;
} num1
num1 に 3 を代入
3
num2
num2 3
num1の 3 をnum2に代入
実行結果
変数num1の値は3です.
変数num1の値を変数num2に代入しました.
変数num2の値は3です.
num1 3
変数の利用
変数利用の注意
値の代入
データ型が異なる変数への値の代入には注意が必要
3.14などの実数値をint型などの整数を記憶する変数に代入すると,
自動的に型変換が行われて小数点以下が切り捨てられる
値を格納しないまま利用しないこと
⇒ エラーの原因となる
変数の宣言位置
変数の宣言はmain関数のブロック内の先頭に記述する
変数宣言の前に他の文が入らないようにする
⇒ ブロック内の他の文よりも先に変数宣言をする
キーボードからの入力(標準入力): scanf 関数
scanf 関数でキーボード入力した値を読み取る
キーボードで入力した数値や文字を読み取って変数 に格納する
変換仕様 意味
%d 符号付き整数を10進数として入力する
%u 符号なし整数を10進数として入力する
%f 実数を入力する
%lf 倍精度実数(double)を入力する
%c 1文字を入力
%s 文字列を入力する
変数の前に & を付ける scanf関数の書式
scanf("変換仕様", &変数名);
キーボードからの入力(標準入力): scanf 関数
整数を入力
変換仕様は %d を用いる
実数を入力
double 型を用いる場合,変換仕様は %lf を用いる
int num;
scanf("%d", &num);
整数を入力するコード例
キーボードから
整数の値をnumに読み込む
整数を読み込むので変換仕様は %d int型変数を用意しておく
double num;
scanf("%lf", &num);
実数を入力するコード例
キーボードから
実数の値をnumに読み込む 実数を読み込むので変換仕様は %lf
double型変数を用意しておく
キーボードからの入力(標準入力): scanf 関数
プログラム例
キーボードから整数,実数を入力 1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
int main(void) {
int seisu;
double jissu;
printf("整数値を入力してください.¥n");
scanf("%d", &seisu);
printf("%dが入力されました.¥n", seisu);
printf("¥n");
printf("実数値を入力してください.¥n");
scanf("%lf", &jissu);
printf("%lfが入力されました.¥n", jissu);
return 0;
}
実行結果
整数値を入力してください.
100 [Enter]
100が入力されました.
実数値を入力してください.
3.14 [Enter]
3.140000が入力されました.
※[Enter]は, [Enter]キーの入力
※ユーザーからの入力は下線で表している
入力した整数値を int型変数seisuに格納する
入力した実数値を
double型変数 jissu に格納する
キーボードからの入力(標準入力): scanf 関数
複数の値を1つのscanf関数で入力
整数,実数を1つのscanf関数で入力 1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
int main(void) {
int seisu;
double jissu;
printf("整数値と実数値を入力してください.¥n");
scanf("%d %lf", &seisu,&jissu);
printf("%dと%lfが入力されました.¥n", seisu,jissu);
return 0;
} 実行結果
整数値と実数値を入力してください.
100 [Enter]
3.14 [Enter]
100と3.140000が入力されました.
変換仕様と変数のデータ型を 一致させるように
順番に並べること
実際に入力する際も
scanf 関数の中の変換仕様,変数の並びと データ型を一致させるように
順番に入力すること
講義のまとめ
変数
変数名
変数の宣言
変数の型
変数の利用
代入
初期化
変数の値の出力,更新
キーボードからの入力(標準入力)