いろいろな変数型(2) 復習 char 1バイト → 英数字1文字を入れるのにぴったり アスキーコード → 付録 int 4バイト もっとも標準的な整数型 float 2進法で10進実数を表わすので誤差がある (有効数字8桁程度) 4バイト 単精度実数型(単精度浮動小数点型) double floatより高精度(有効数字15桁程度) 8バイト 倍精度実数型(倍精度浮動小数点型) 復習 浮動小数点数の代入と表示 int型で表す ことができ ない数値は おかしな結 果になる int bb = 1300.5; printf("bb = %d\n", bb); int型に不動小数点数を代入する と,少数以下は切り捨て bb = 1300 int cc = 10.56e20; printf("cc = %d\n", cc); コンパイラからの メッセージ warning = 警告 1344274432 warning C4244: '=' : 'double' から 'int' に変換しました。データが失われているかもしれません。 float xx = 100.56e-20, yy = 10000; printf("xx = %f, yy = %f\n", xx, yy); xx = 0.000000, yy = 10000.000000 printf("xx = %e, yy = %e\n", xx, yy); xx = 1.005600e-018, printf("xx = %g, xx = 1.0056e-018, 変換文字%fは小数点形 式で表示 変換文字%eは指数形式 で表示 yy = 1.000000e+004 yy = %g\n", xx, yy); yy = 10000 変換文字%gは適切と思 われる形式を自動的に 選んで表示 scanf()関数による数値の入力 int x; printf("値を入力してください."); scanf("%d", &x); printf("入力された値は,%dです.¥n", x); 値を入力してください. 15 入力された値は,15です. int aa; scanf(" %d ", & aa ); キーボードから入力 整数値の入力では%dとする. 変数名の前には&をつける float bb; scanf("%f", &bb ); 復習 scanf()関数の補足 復習 ダブルクォーテーション内に%d や%f以外の文字を入れてはダメ 値はいくらですか?15 int x; scanf("値はいくらですか?%d\n", &x); int x; printf("値はいくらですか?\n"); 15 scanf("%d\n", &x); 値はいくらですか? 15 int x; printf("値はいくらですか?"); scanf("%d", &x); 値はいくらですか?15 \nで改行して、次の行で 入力されるのでダメ ダブルクォーテーション内に%d や%f以外の文字を入れてはダメ 一つの値の入力には, 一つのscanf()を使う. (複数の変数に一気に入 力することはできない) いろいろな演算子(2) 復習 算術演算子 + * / % 足し算 引き算 掛け算 割り算 剰余算 (例) x = 5 % 3 → x=2 ++ インクリメント演算子 aa++ は aa = aa+1 と同じ → aaの値を1増やす デクリメント演算子 aa-- は aa = aa-1 と同じ → aaの値を1減らす -aa = 10; aa++; /* aaの値は11になる */ フローチャート(1) フローチャート→ プログラム処理の流れを示す図 矢印で処 理の順序 を表す 処理1 四角形は 一つの処理 a=10 処理2 b=a*2 処理3 b=a*b 処理4 bを表示 形式 実例 フローチャート(2) 条件分岐→ プログラム処理の流れを変える ひし形 は条件 分岐 No false 処理1 条件 偽 Yes true 真 処理2 aの値を入力 true a >10 ? false aを2倍する 処理3 aの値を表示 形式 実例 if ~ 選択制御文(条件分岐) aの値を入力 true a >10 ? false int a; aを2倍する scanf("%d", &a); カッコが必要 if ( a > 10 ) { a = 2*a; } 条件 真(true)なら この中が 実行される printf(“aの値は%d\n”, a); aの値を表示 if ~ else~選択制御文(条件分岐) aを入力 a >10 ? false int a; true aを2倍する aを3倍する aを表示 scanf("%d", &a); if ( a > 10 ) { a = 2*a; } else { a = 3*a; } 偽(false)なら この中が 実行される printf("aの値は%d\n", a); いろいろな条件式と関係演算子 Cのソース 半角 文字 a>b if (a > b) a≧b if (a >= b) a<b if (a < b) a≦b if (a <= b) a=b if (a == b) a≠b if (a != b) 10 > a かつ a > 5 if (10>a && a>5) 10 > a または 15 < a if (10>a || 15<a) 10 > a ではない if ( !(10 > a) ) または 否定 !注意! 等号が二つ かつ 選択制御文の例 dataを入力 data<0 false 正の数です と表示 true #include <stdio.h> int main(void) { int data; scanf("%d", &data); if ( data < 0 ) printf("負の数です¥n"); else printf("正の数です¥n"); 負の数です と表示 } 終了 カッコ { } が無い! 単文と複文 単文 文 → 単文 or 複文 printf("負の数です¥n"); Cの文法まとめ a = 2*a; 複文 セミコロンが必要 { b = 10; a = 2*b; printf("aは%dである¥n",a); } if (条件) 文1 else 文2 これらの文1と 文2は単文で も複文でもOK { a = 2*a; } a = 2*a; と単文で書いても同じ 単文と複文(2) if (条件) 文1 else 文2 if文も全体で一 つの文である. int main(void) { int x; printf("整数値xを入力してください:"); scanf("%d", &x); if (x < 5) { printf("xの値は5未満です\n"); } else if (x >= 5 && x < 10) { printf("xの値は5以上10未満です\n"); } else { printf("xの値は10以上です\n"); } } 複文 if (条件1) 文1 else if (条件2) 文2 else 文3 整数値xを入力してください:3 xの値は5未満です 整数値xを入力してください:8 xの値は5以上10未満です 整数値xを入力してください:12 xの値は10以上です
© Copyright 2024 ExpyDoc