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