第 3 章 ゲーム製作でも大事な分岐!! ~条件分岐 if , switch ~
DESCRIPTION
第 3 章 ゲーム製作でも大事な分岐!! ~条件分岐 if , switch ~. A なら B をやって、 C なら D をやって・・・、という感じ。これが分かればゲーム作りも目じゃない. 前回やったこと. 何らかの数値などを格納する ( 入れる ) 変数 使うためには 宣言 ( 変数の種類、大きさの決定 ) が必要 プログラミングにおける計算の記号 ( 演算子 ) の扱いをやりました scanf は文字を実行した後で入力させる関数. 今日 の予定. true と false と いう考え方 条件に よって処理を分岐させる文 - PowerPoint PPT PresentationTRANSCRIPT
第 3 章ゲーム製作でも大事な分岐!!
~条件分岐 if , switch ~A なら B をやって、 C なら D をやって・・・、という感じ。これが分かればゲーム作りも目
じゃない
第 3 章 条件分岐 1
第 3 章 条件分岐 2
前回やったこと
何らかの数値などを格納する ( 入れる ) 変数使うためには宣言 ( 変数の種類、大きさの決定 ) が必
要
プログラミングにおける計算の記号 ( 演算子 )の扱いをやりました
scanf は文字を実行した後で入力させる関数
まず条件ってのがあり、その内容を満たすと true で、満たさないと false と呼ぶ ( 表す )
つまりはこういうこと
第 3 章 条件分岐 4
true と false の概念 (1)
条件 : 40 ヤード走のタイム 5.0 秒未満
K 君 : 4.2 秒 ← true
H 君 : 5.1 秒 ← false
そして、 true のことを「真」とも言うし、「 1 」と表すこともある
また false のほうも「偽」と言ったり、「 0 」と表すこともあるよ
条件と真偽を合わせて、命題というらしいがまた別の話
第 3 章 条件分岐 5
true と false の概念 (2)
条件とその真偽 ( true か false か ) で作業を分岐させることができる
それが条件分岐ってやつ
今回は if 文による条件分岐をやってみよう
第 3 章 条件分岐 6
条件による分岐 (1)
if 文の書き方はこう
この () の中に条件を 書き ( 条件式という ) 、 {} 内でやってもらう 作業を書く
else とは条件を満たさなかったときの分岐のこと
第 3 章 条件分岐 7
条件による分岐 (2)
if( num > 5){printf(“Hello\n”);
}else{
printf(“World\n”);}
条件式には特殊な記号を使わないといけない
『 == 』は等しい
『 != 』は等しくない を表す
他にも『 > 』はより大きい、『 < 』はより小さい、『 >= 』は大なりイコール、『 <= 』は小なりイコールの意味
まだまだいくつかあるけど、今はこれだけ第 3 章 条件分岐 8
条件による分岐 (3)
とりあえず以下のプログラムを実行してみよう
第 3 章 条件分岐 9
条件による分岐 (4)
#include <stdio.h>void main(){
int num;printf(“ 数値を入力してください > ”);scanf(“%d”,&num);if(num < 10){
printf(“num の値は 10 未満です \n”);}else{
printf(“num の値は 10 以上です \n”);}
}
実行結果例がこんな感じ
実行して欲しい作業が 1 行で済むなら以下もOK
第 3 章 条件分岐 10
条件による分岐 (5)
if(num < 10)printf(“num の値は 10 未満です” );
elseprintf(“num の値は 10 以上です” );
さらに、 else if というものを使うと条件分岐をいくつも設定できる!
さっきのプログラムをこれに書き換えてみよう 第 3 章 条件分岐 11
条件による分岐 (6)
if(num < 10){printf(“num の値は 10 未満です \n”);
}else if(num == 10){
printf(“num の値は 10 です \n”);}else{
printf(“num の値は 10 より大きいです \n”);}
変数 c を使っているのがポイント
第 3 章 条件分岐 14
練習問題 回答例
#include <stdio.h>void main(){
int a,b,c;printf(“a の数値を入力してください > ”);scanf(“%d”,&a);printf(“b の数値を入力してください > ”);scanf(“%d”,&b);
if(a > b) c = a – b;else c = b – a;printf(“a と b の差の絶対値は %d です \n”,c);
}
複数の分岐を設定したいなら switch 文というのも実に使える!
if 文ほど細かい条件は作れないけど、一度に多くの分岐を作れるのが魅力 ( 書くことも少なめ )
使い方は次頁に
第 3 章 条件分岐 15
条件による分岐 (7)
このように、 () 内の変数の 値を case の横 の条件で判定 して分岐する
case の後は『 ; 』ではなく『 : 』なので注意!
『 break; 』も必須なのでよろしく
第 3 章 条件分岐 16
条件による分岐 (8)switch( num ){
case 0:printf(“ 私は L です \n”);break;
case 1:printf(“ 僕がキラだ \n”);break;
}
ためしに以下のプログラムを実行してみよう
第 3 章 条件分岐 17
条件による分岐 (9)
#include <stdio.h>void main(){
int num;printf(“num の数値を入力してください > ”);scanf(“%d”,&num);switch(num / 100){
case 0: printf(“num は 100 未満です \n”); break;
case 1: printf(“num は 100 以上 200 未満です \n”); break;
default: printf(“num は 200 以上か負の数ですね \n”); break;
}}
なんか知らない文字もあるけど、気にしないで・・・
switch の () 内に多少の計算が入っても大丈夫
『 default: 』は if 文でいう else に相当するものらしい
ところで、『 num 』は number の略です
第 3 章 条件分岐 18
条件による分岐 (10)
以下の実行結果と同じ感じになるようにプログラムを組んでみよう (switch 文を使ってね )
想定されていない数値が入力された時、それをはじく記述を加えるのがミソ
第 3 章 条件分岐 19
練習問題
第 3 章 条件分岐 20
練習問題 回答例#include <stdio.h>void main(){
int a,b,c;printf(“a の数値を入力してください” );scanf(“%d”,&a);printf(“b の数値を入力してください” );scanf(“%d”,&b);printf(“ 計算方法を決めてください \n”);printf(“1: 足し算 2: 引き算 3: 掛け算 4: 割り算 > ”);scanf(“%d”,&c)switch(c){case 1: printf(“%d + %d = %d\n”,a,b,a+b); break;case 2: printf(“%d - %d = %d\n”,a,b,a-b); break;case 3: printf((“%d × %d = %d\n”,a,b,a*b); break;case 4: printf((“%d ÷ %d = %d 余り %d\n”,a,b,a/b,a%b); break;default : printf(“ 想定されていない数値です \n”); printf(“ プログラムを終了します \n”); break; } }
記述が多かったので、改行すべきところでしてなかったり、かなり書き方が汚いです。くれぐれも自分で書くときは見易く
if 文の中に if 文を書くことで、分岐をさらに細かくできる
{} の数に注意しよう
第 3 章 条件分岐 21
条件分岐 補足 (1)
if(num1 >= 10){if(num2 >= 200){
printf(“num1 が 10 以上で num2 は 200 以上” );}else{
printf(“num1 が 10 以上で num2 は 200 より小” );}
}
if 文の条件式に && 、 || 、 ! を使うことで、条件の組み合わせをすることができるよ
&& は「 A かつ B 」、 || は「 A または B 」の意味
第 3 章 条件分岐 22
条件分岐 補足 (2)
if(num1>=10 && num2>=200){printf(“num1 は 10 以上で、 num2 は 200 以上 \n”);
}
if(num1>=10 || num2>= 10){printf(“num1 か num2 どちらかが 10 以上 \n”);
}
! は「 A でない」を表すよ
上では (num == 10) ではないよ、という意味。ただ『 !num 』だけなら『 num == 0 』の意味になる ( 最初はわかりづらいかもね )
また、『 if(num) 』は『 if(num != 0) 』の意味になる
第 3 章 条件分岐 23
条件分岐 補足 (3)
if( !(num == 10) ){printf(“num は 10 ではないよ \n”);
}
作業を決まった回数繰り返させるための文繰り返しの while 文の登場
うまくいけば for 文も説明できるかも・・・ ( 次回以降に回す可能性大 )
できる限り早めにスライド作ります・・・ ( 遅くてすまぬ )
第 3 章 条件分岐 24
次回予告