プログラミング初級 - 東北学院大学mmt1.cs.tohoku-gakuin.ac.jp/cprog/slide04.pdf ·...
Transcript of プログラミング初級 - 東北学院大学mmt1.cs.tohoku-gakuin.ac.jp/cprog/slide04.pdf ·...
![Page 1: プログラミング初級 - 東北学院大学mmt1.cs.tohoku-gakuin.ac.jp/cprog/slide04.pdf · 2017-05-01 · 5 7.3 if文を使う 条件処理の例 ・定価が10000円以上なら1000円引き](https://reader033.fdocuments.net/reader033/viewer/2022050211/5f5d82ad6cab8a6c1d773d0a/html5/thumbnails/1.jpg)
プログラミング初級
第4回 2017年5月1日
条件文
1
![Page 2: プログラミング初級 - 東北学院大学mmt1.cs.tohoku-gakuin.ac.jp/cprog/slide04.pdf · 2017-05-01 · 5 7.3 if文を使う 条件処理の例 ・定価が10000円以上なら1000円引き](https://reader033.fdocuments.net/reader033/viewer/2022050211/5f5d82ad6cab8a6c1d773d0a/html5/thumbnails/2.jpg)
第7章 条件文
2
![Page 3: プログラミング初級 - 東北学院大学mmt1.cs.tohoku-gakuin.ac.jp/cprog/slide04.pdf · 2017-05-01 · 5 7.3 if文を使う 条件処理の例 ・定価が10000円以上なら1000円引き](https://reader033.fdocuments.net/reader033/viewer/2022050211/5f5d82ad6cab8a6c1d773d0a/html5/thumbnails/3.jpg)
3
7.2 条件選択の必要性
「もし雨なら、傘をさせ」というのは条件選択処理の例
i f
選択 if
処理1
処理2
もし・・・・なら処理1を、そうでなければ処理2を行う
![Page 4: プログラミング初級 - 東北学院大学mmt1.cs.tohoku-gakuin.ac.jp/cprog/slide04.pdf · 2017-05-01 · 5 7.3 if文を使う 条件処理の例 ・定価が10000円以上なら1000円引き](https://reader033.fdocuments.net/reader033/viewer/2022050211/5f5d82ad6cab8a6c1d773d0a/html5/thumbnails/4.jpg)
if文の書式の基本形
4
もし ~ ならあれをやれ
そうでなければ ←必要に応じ
これをやれ ←必要に応じ
書式if (条件) {文1
}else {文2
}
制御式
制御式を満たすと文1を実行
そうでないときは文2を実行何もさせないときは省略可
![Page 5: プログラミング初級 - 東北学院大学mmt1.cs.tohoku-gakuin.ac.jp/cprog/slide04.pdf · 2017-05-01 · 5 7.3 if文を使う 条件処理の例 ・定価が10000円以上なら1000円引き](https://reader033.fdocuments.net/reader033/viewer/2022050211/5f5d82ad6cab8a6c1d773d0a/html5/thumbnails/5.jpg)
5
7.3 if文を使う条件処理の例・定価が10000円以上なら1000円引き
定価を入力
10000円以上なら定価を1000円引き
定価を出力
流れ
定価が10000円以上かを判断
条件が成り立たない場合は何もしない
選択
![Page 6: プログラミング初級 - 東北学院大学mmt1.cs.tohoku-gakuin.ac.jp/cprog/slide04.pdf · 2017-05-01 · 5 7.3 if文を使う 条件処理の例 ・定価が10000円以上なら1000円引き](https://reader033.fdocuments.net/reader033/viewer/2022050211/5f5d82ad6cab8a6c1d773d0a/html5/thumbnails/6.jpg)
6
if文の書き方
もし・・・なら ⇒ if (…)
ブロック { と } で処理される文の範囲を指定する=制御範囲が明確になる
1:#include <stdio.h>2:3:int main(void){4: int teika;5: printf("定価=");6: scanf("%d",&teika);7:
8: if (teika >= 10000)9: teika = teika - 1000;10: 11: printf("代金は=%d¥n",teika);12: return 0;13:14:}
もし10000円以上なら定価を1000円引き
if (teika >= 10000)teika = teika - 1000;
関係演算子
A >= B : AがBより大きいか等しい
if (teika >= 10000) {teika = teika - 1000;
} //ブロックを用いた書き方
![Page 7: プログラミング初級 - 東北学院大学mmt1.cs.tohoku-gakuin.ac.jp/cprog/slide04.pdf · 2017-05-01 · 5 7.3 if文を使う 条件処理の例 ・定価が10000円以上なら1000円引き](https://reader033.fdocuments.net/reader033/viewer/2022050211/5f5d82ad6cab8a6c1d773d0a/html5/thumbnails/7.jpg)
7
elseを使う条件処理の例・定価が10000円以上なら1000円引き・そうでないときは0円にする
定価を入力
10000円以上なら定価を1000円引き そうでないならタダ(0円)にする
定価を出力
流れ
定価が10000円以上かを判断
選択
![Page 8: プログラミング初級 - 東北学院大学mmt1.cs.tohoku-gakuin.ac.jp/cprog/slide04.pdf · 2017-05-01 · 5 7.3 if文を使う 条件処理の例 ・定価が10000円以上なら1000円引き](https://reader033.fdocuments.net/reader033/viewer/2022050211/5f5d82ad6cab8a6c1d773d0a/html5/thumbnails/8.jpg)
8
if-else文の書き方
もし・・・なら ⇒ ifそうでないなら ⇒ else
ブロック { と } で範囲を指定する
1:#include<stdio.h>2:3:int main(void){4: int teika;5: printf("定価=");6: scanf("%d",&teika);7:
8: if (teika >= 10000) {9: teika = teika - 1000;10: }11: else {12: teika = 0;13: }14:15: printf("代金は=%d¥n",teika);16: return 0;17:18:}
もし10000円以上なら定価を1000円引き
そうでないなら定価を500円引き
if (teika >= 10000) {teika = teika - 1000;
}
else {teika =0;
}
関係演算子
A >= B : AがBより大きいか等しい
![Page 9: プログラミング初級 - 東北学院大学mmt1.cs.tohoku-gakuin.ac.jp/cprog/slide04.pdf · 2017-05-01 · 5 7.3 if文を使う 条件処理の例 ・定価が10000円以上なら1000円引き](https://reader033.fdocuments.net/reader033/viewer/2022050211/5f5d82ad6cab8a6c1d773d0a/html5/thumbnails/9.jpg)
関係演算子を覚えよう9
演算子 説明 記述例
< 小さい if (a < b)
<= 小さいか等しい if (a <= b)
> 大きい if (a > b)
>= 大きいか等しい if (a >= b)
演算子 説明 記述例
== 等しい if (a == b)
!= 等しくない if (a != b)
![Page 10: プログラミング初級 - 東北学院大学mmt1.cs.tohoku-gakuin.ac.jp/cprog/slide04.pdf · 2017-05-01 · 5 7.3 if文を使う 条件処理の例 ・定価が10000円以上なら1000円引き](https://reader033.fdocuments.net/reader033/viewer/2022050211/5f5d82ad6cab8a6c1d773d0a/html5/thumbnails/10.jpg)
10
奇数・偶数を判別
#include<stdio.h>
int main(void){
int n;
printf("n==");scanf("%d", &n);
if (n % 2 == 0) {printf("偶数です¥n");
}else {
printf("奇数です¥n");}
return 0;
}
←もし nを2で割った余りが0ならば←「偶数です」と表示
←そうでなければ=余りが0でなければ←「奇数です」と表示
教科書P104 例題1
![Page 11: プログラミング初級 - 東北学院大学mmt1.cs.tohoku-gakuin.ac.jp/cprog/slide04.pdf · 2017-05-01 · 5 7.3 if文を使う 条件処理の例 ・定価が10000円以上なら1000円引き](https://reader033.fdocuments.net/reader033/viewer/2022050211/5f5d82ad6cab8a6c1d773d0a/html5/thumbnails/11.jpg)
11
else ifを使う
条件の変更①定価が10000円以上なら1000円引き②そうでなく、定価が1000円以上なら500円引きする③そうでないとタダにする
if (teika >= 10000) { teika = teika -1000;
}else if (teika >= 1000) {
teika = teika -500;}else {
teika =0;}
←10000円以上なら
←1000円引き
←500円引き
←そうではなく、1000円以上なら
←そうでないときは (1000円未満)
←タダにする
<ポイント>
■else ifを用いると条件処理を次々と重ねて記述できる
最初の条件を満たさないものが処理される:
10000円未満で1000円以上なら
![Page 12: プログラミング初級 - 東北学院大学mmt1.cs.tohoku-gakuin.ac.jp/cprog/slide04.pdf · 2017-05-01 · 5 7.3 if文を使う 条件処理の例 ・定価が10000円以上なら1000円引き](https://reader033.fdocuments.net/reader033/viewer/2022050211/5f5d82ad6cab8a6c1d773d0a/html5/thumbnails/12.jpg)
12
論理演算子(論理積)整数型の変数 a (int a;)条件A:aの値が10より大きいか等しい(a>=10)
条件B: aの値が20より小さいか等しい(a<=20)
条件AとBの両方を満たす数は?「a>=10」かつ「a<=20」⇔10以上20以下
もしaが「a>=10」かつ「a<=20」をみたすなら
⇒ if (a >= 10 && a <= 20)
論理積:
←論理積を表す演算子
![Page 13: プログラミング初級 - 東北学院大学mmt1.cs.tohoku-gakuin.ac.jp/cprog/slide04.pdf · 2017-05-01 · 5 7.3 if文を使う 条件処理の例 ・定価が10000円以上なら1000円引き](https://reader033.fdocuments.net/reader033/viewer/2022050211/5f5d82ad6cab8a6c1d773d0a/html5/thumbnails/13.jpg)
13
論理演算子(論理和)整数型の変数 a (int a;)条件A:aの値が 10以下である(a<=10)
条件B: aの値が 20以上である(a>=20)
条件AとBのどちらかを満たす数は?「a<=10」または「a>=20」⇔10以下か20以上
もしaが「a<=10」または「a>=20」を満たすならば
⇒ if (a <= 10 || a >= 20)
A B
←論理和
←論理和を表す演算子
![Page 14: プログラミング初級 - 東北学院大学mmt1.cs.tohoku-gakuin.ac.jp/cprog/slide04.pdf · 2017-05-01 · 5 7.3 if文を使う 条件処理の例 ・定価が10000円以上なら1000円引き](https://reader033.fdocuments.net/reader033/viewer/2022050211/5f5d82ad6cab8a6c1d773d0a/html5/thumbnails/14.jpg)
14
西暦から「うるう年」かどうかを判定するうるう年とは、・4で割り切れ、かつ、100で割り切れない年・400で割り切れる年のどちらかにあてはまる年です。
if (n % 4 == 0 && n % 100 != 0) {printf("うるう年です¥n");
}else if (n % 400 == 0) {
printf("うるう年です¥n");}else {
printf("うるう年ではありません¥n");}
if ( (n % 4 == 0 && n % 100 == 0) || n % 400 == 0) {printf("うるう年です¥n");
}else {
printf("うるう年ではありません¥n");}
論理演算子を用いて
教科書P98
![Page 15: プログラミング初級 - 東北学院大学mmt1.cs.tohoku-gakuin.ac.jp/cprog/slide04.pdf · 2017-05-01 · 5 7.3 if文を使う 条件処理の例 ・定価が10000円以上なら1000円引き](https://reader033.fdocuments.net/reader033/viewer/2022050211/5f5d82ad6cab8a6c1d773d0a/html5/thumbnails/15.jpg)
15
「でない」の表現
論理演算子には「でない」という否定表現の機能もあります。これは「否定」と呼びます。
例えばaの値が100以上、でないならという条件は、
if ( !(a >= 100) )
となります。
A !A
内側のかっこ( )は「aの値が100以上」
という条件全体を否定するために必要!
![Page 16: プログラミング初級 - 東北学院大学mmt1.cs.tohoku-gakuin.ac.jp/cprog/slide04.pdf · 2017-05-01 · 5 7.3 if文を使う 条件処理の例 ・定価が10000円以上なら1000円引き](https://reader033.fdocuments.net/reader033/viewer/2022050211/5f5d82ad6cab8a6c1d773d0a/html5/thumbnails/16.jpg)
16
「でない」の表現(2)
例えば「bの値が10または100以上」でないならという条件は、
if ( !(b == 10 || b >= 100) )
となります。
!(A || B)
内側のかっこ( )は「bの値が10または100以上」
という条件全体を否定するために必要!
A B
![Page 17: プログラミング初級 - 東北学院大学mmt1.cs.tohoku-gakuin.ac.jp/cprog/slide04.pdf · 2017-05-01 · 5 7.3 if文を使う 条件処理の例 ・定価が10000円以上なら1000円引き](https://reader033.fdocuments.net/reader033/viewer/2022050211/5f5d82ad6cab8a6c1d773d0a/html5/thumbnails/17.jpg)
17
論理演算子のまとめ
「a>10」 かつ 「a<100」なら ⇒ if (a > 10 && a < 100)
「a==100」 または 「a==200」なら ⇒ if (a == 100 || a == 200)
「a >= 10000」でないなら ⇒ if (!(a >= 10000))
演算子 説明 記述例 記述の意味
&& 論理積(かつ,and) if(a==3 && b==4) aが3かつbが4なら
|| 論理和(または,or) if(a==3 || b ==4) aが3またはbが4なら
! 否定(でない,not) if(!(a==3 && b==4)) aが3かつbが4,でないなら
![Page 18: プログラミング初級 - 東北学院大学mmt1.cs.tohoku-gakuin.ac.jp/cprog/slide04.pdf · 2017-05-01 · 5 7.3 if文を使う 条件処理の例 ・定価が10000円以上なら1000円引き](https://reader033.fdocuments.net/reader033/viewer/2022050211/5f5d82ad6cab8a6c1d773d0a/html5/thumbnails/18.jpg)
18
優先処理の指定論理演算子でも( )をつけて優先順位を指定する#include <stdio.h>
int main(void){
int c;
printf("文字");c = getchar();
if (('0'<=c && c<='9') || ('A'<=c && c<='F') || ('a'<=c && c<='f')) {
printf("16進数文字です¥n");}else {
printf("16進数文字ではありません¥n");}
return 0;}
もし① cが'0'以上かつ'9'以下
または② cが'A'以上かつ'F'以下
または③ cが'a'以上かつ'f'以下
ならば‥
( )が優先されるのは数式の場合とおなじですね!
教科書P105 例題2
![Page 19: プログラミング初級 - 東北学院大学mmt1.cs.tohoku-gakuin.ac.jp/cprog/slide04.pdf · 2017-05-01 · 5 7.3 if文を使う 条件処理の例 ・定価が10000円以上なら1000円引き](https://reader033.fdocuments.net/reader033/viewer/2022050211/5f5d82ad6cab8a6c1d773d0a/html5/thumbnails/19.jpg)
switch文を使う
19
■switch文は整数の値によって処理を分けるときに用いる。
■一致する値を記述したcaseラベルにジャンプし、そこに記述された文を実行する。
■break文に出会うと、その処理を終了する。
■どのcaseとも一致しない文を実行させたいときは、defaultラベルを使う。
教科書P101
![Page 20: プログラミング初級 - 東北学院大学mmt1.cs.tohoku-gakuin.ac.jp/cprog/slide04.pdf · 2017-05-01 · 5 7.3 if文を使う 条件処理の例 ・定価が10000円以上なら1000円引き](https://reader033.fdocuments.net/reader033/viewer/2022050211/5f5d82ad6cab8a6c1d773d0a/html5/thumbnails/20.jpg)
20
「nは3です」と出力 「other」と出力
switch文で分岐変数(整数型) n
n
n==3なら それ以外なら
switch (n) {case 1:printf("nは1です¥n");break;case 3:printf("nは3です¥n");break;default: printf("other¥n");
}
「nは1です」と出力
n==1なら
プログラムでは右のように書くcase **: には必ず整数式「:」(コロン)も忘れずに
注意:case ”abcd”は文字列だから×case 5.6は小数点数だから×
← n = 1のとき実行される文← case文の終了
←どのcaseとも一致しない場合=それ以外のとき実行される文
![Page 21: プログラミング初級 - 東北学院大学mmt1.cs.tohoku-gakuin.ac.jp/cprog/slide04.pdf · 2017-05-01 · 5 7.3 if文を使う 条件処理の例 ・定価が10000円以上なら1000円引き](https://reader033.fdocuments.net/reader033/viewer/2022050211/5f5d82ad6cab8a6c1d773d0a/html5/thumbnails/21.jpg)
なにもしない
switch文で分岐(複数ラベルを用いる)変数(整数型)
n
それ以外なら
switch (n) {case 1: case 5: case 8:dt = 0;break;
}
「dt=0」を代入
n=1か5か8なら
プログラムでは右のように書く
どのcaseとも一致しない場合に何もしないのであればdefaultは省略可能
![Page 22: プログラミング初級 - 東北学院大学mmt1.cs.tohoku-gakuin.ac.jp/cprog/slide04.pdf · 2017-05-01 · 5 7.3 if文を使う 条件処理の例 ・定価が10000円以上なら1000円引き](https://reader033.fdocuments.net/reader033/viewer/2022050211/5f5d82ad6cab8a6c1d773d0a/html5/thumbnails/22.jpg)
22
#include<stdio.h>int main(void){
int c
printf("実行するならYを、実行中止ならNを入力して下さい: ");c = getchar();
switch (c) {case 'Y': case 'y':
puts(“実行します");break;
case 'N': case 'n':puts(“中止します");
break;
default:puts("不正な入力です");
}
return 0;}
switch文を使う
← C = ‘Y’または‘y’のとき実行される文← case文の終了
以上に当てはまらないとき実行される文
cで分岐⇒
← C = ‘N’または‘n’のとき実行される文← case文の終了
教科書P105 例題3