第 3 章 ゲーム製作でも大事な分岐!! ~条件分岐 if , switch ~

25
第3第 第第第第第第第第第第第第!! 第第第第 if , switch A なな B ななななC なな D ななななな な な なななななな な 、。 ななななななななななななななななな な3な なななな 1

Upload: joseph-collins

Post on 01-Jan-2016

56 views

Category:

Documents


3 download

DESCRIPTION

第 3 章 ゲーム製作でも大事な分岐!! ~条件分岐 if , switch ~. A なら B をやって、 C なら D をやって・・・、という感じ。これが分かればゲーム作りも目じゃない. 前回やったこと. 何らかの数値などを格納する ( 入れる ) 変数 使うためには 宣言 ( 変数の種類、大きさの決定 ) が必要 プログラミングにおける計算の記号 ( 演算子 ) の扱いをやりました scanf は文字を実行した後で入力させる関数. 今日 の予定. true と false と いう考え方 条件に よって処理を分岐させる文 - PowerPoint PPT Presentation

TRANSCRIPT

第 3 章ゲーム製作でも大事な分岐!!

~条件分岐 if , switch ~A なら B をやって、 C なら D をやって・・・、という感じ。これが分かればゲーム作りも目

じゃない

第 3  章 条件分岐 1

第 3  章 条件分岐 2

前回やったこと

何らかの数値などを格納する ( 入れる ) 変数使うためには宣言 ( 変数の種類、大きさの決定 ) が必

プログラミングにおける計算の記号 ( 演算子 )の扱いをやりました

scanf  は文字を実行した後で入力させる関数

true  と false  という考え方

条件によって処理を分岐させる文

 なんだかたいそうな名前をしてるけど、大したことないよ ( 多分 )

第 3  章 条件分岐 3

今日の予定

まず条件ってのがあり、その内容を満たすと 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”);}

今のを実行するとこうなる

第 3  章 条件分岐 12

条件による分岐 (7)

次のような実行結果になるようにプログラムを組んでみよう

絶対値は必ず正だから、差の計算に工夫が必要

第 3  章 条件分岐 13

練習問題

変数 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

次回予告

テンプレ

第 3  章 条件分岐 25

テンプレ