C言語講座 四則演算 if , switch 制御文
ファイルの作り方(復習) 「ファイル」→「新規作成」→「プロジェクト」 「Win32コンソールアプリケーション」になっていることを確認、 保存場所も確認し、プロジェクト名を入れて「OK」 アプリケーションウィザードで「コンソールアプリケーション」と「空のプロジェクト」にチェック入れて「完了」 ソースファイルを右クリック→「追加」→「新しい項目」 「C++ファイル」を選択して、ファイル名をつけて「追加」
算術演算子 二項演算子 ■+ 加算a = 5 + 2; ■- 減算a = 5 -2; ■* 乗算a = 5 * 2;
算術演算子 ● 代入演算子 (右辺から左辺に代入する) ■ = a = b; ■ += a += b; ⇒ a = a + b;
算術演算子 ● 単項演算子 ■ ++ インクリメント a++; ++a; ⇒ a = a + 1; ■ -- デクリメント ■ - 符号の反転 b = -a;
a++と++aの違い a++は「b=a++」のような場合、 「aの値をbに代入した後、1増やす」 ++aは「b=++a」のような場合、
結果を予想しよう #include <stdio.h> void main() { int a = 1; printf("a = %d\n", a); printf("a = %d\n", a++); printf("a = %d\n", ++a); }
算術演算子 ● 演算の精度 double > float > long (int) > short > char ■ 精度が混在する場合は、精度の高い方に合わせて演算が行われる。 ■ 例) 割り算(5÷2) 5 / 2 → 2 5.0 / 2 → 2.5 5 / 2.0 → 2.5 5.0 / 2.0 → 2.5
いろいろ試してみよう #include <stdio.h> void main() { printf(“ %f \n ", 5.0/2 ); }
キャスト演算子 演算の精度を変えたいときに使用 ■ 使用方法 ( 型) 変えたい数値や変数 ■ 例) 割り算(5÷2) (double) 5 / 2 → 2.5 5 / (double) 2 → 2.5 5 / (int) 2.0 → 2 (int) 5.0 / 2 → 2
例 #include <stdio.h> void main() { int a = 2; int b = 5; printf ( "%f\n", (double) b/a ); }
比較演算子、論理演算子 ● 比較演算子(1:True か0:False を返す) == (等しい) != (等しくない) <,<=,>,>= (大小関係) ● 論理演算子 ! (否定NOT) && (論理積AND) || (論理和OR) x y ! x x&&y x| |y 1
if (2または多分岐)選択制御 if(条件文){…} 条件文を満たすときのみ{….}内の処理を行う。 if(条件文) { 処理1 } else { 処理2 } 条件文を満たすとき処理1、そうでない時 に処理2を行う。 if(条件a && 条件b) 条件a かつ条件b if(条件a || 条件b) 条件a または条件b 条件a Yes No 処理1
例 あなたのやる気を表示しよう #include<stdio.h> int main(void){ int a; 例 あなたのやる気を表示しよう #include<stdio.h> int main(void){ int a; printf("あなたのやる気を1~100までで入力:"); scanf("%d",&a); if(a<0 || a>100){ printf("0~100までの整数を入力してください\n"); }else if(a>50){ printf("やる気あるね!\n"); }else{ printf("やる気ないね!\n"); } return 0;
説明 if(a<0 || a>100) No a<0,100<a if(a<0 || a>100)でなく かつif(a>50) if(A){処理X }else if(B){処理Y }else { 処理Z } Yes a>50 No Yes 処理2 処理1 Aを満たす →処理X Aは満たさずBを満たす→処理Y AもBも満たさない →処理Z
ちょっとした問題 さっきのプログラムにa>40の時と、 a>20の時にも条件分岐をして何か表示するようにしてみましょう。 ヒント: なし } else if(……) { printf(“任意の文”); } とかをどこかに入れると・・
解答例 #include<stdio.h> int main(void){ int a; printf("あなたのやる気を~までで入力:"); scanf("%d",&a); if(a<0 || a>100){ printf("0~までの整数を入力してください\n"); }else if(a>50){ printf("やる気あるね!\n"); }else if(a>40){ printf(“任意の文\n"); }else if(a>20){ printf("任意の文\n"); }else{ printf("やる気ないね!\n"); } return 0;
if文の中にif文を書く 入力した3つの数を比較するプログラム a>bかつa>c b>aかつb>c #include <stdio.h> int main(void){ int a,b,c; printf("1つ目の整数を入力して下さい。:"); scanf("%d",&a); printf("2つ目の整数を入力して下さい。:"); scanf("%d",&b); printf("3つ目の整数を入力して下さい。:"); scanf("%d",&c); if( a > b ){ if(a > c){ printf("最大値は%d\n",a); }else{ printf("最大値は%d\n",c); } if(b > c){ printf("最大値は%d\n",b); return 0; a>bかつa>c b>aかつb>c
switch 多方向分岐 switch(式または値){ case 値x : ←コロン 処理1; break; case 値y : 処理2; default : 処理3; } 式(値) 値x 値y default 処理1 処理2 処理3
a,b,cを入力してそれに対応した文字を 出力するプログラム #include <stdio.h> int main(void){ char input; printf("a,b,cのどれかを入力:"); scanf("%c",&input); switch (input){ case ‘a’: //文字は(‘ ’)で囲みましょう printf("apple\n"); break; case 'b': printf("bad\n"); case 'c': printf("car\n"); default: printf("a,b,cを入力してください\n"); } return 0;
例 8と入力 → August と出力 早速やってみよう 整数(int 型)を入力して 1~12を入力したときにそれぞれ1月~12月 1~12を入力したときにそれぞれ1月~12月 と出力されるようにしてみよう。 例 8と入力 → August と出力
解答例 #include <stdio.h> int main(void){ int input; printf("整数を入力:"); scanf("%d",&input); switch (input){ case 1: printf("1月\n"); break; 中略 case 8: printf("August\n"); 中略 case 12: printf("12月\n"); default: printf("登録外の整数です\n"); } return 0;