■ step26. switch文を扱おう[1] ■


■ 1、はじめに
  前回はif else文を使って多分岐を実現してみました。今回は、switch文を使うことによってもっとスマートな多分岐を実現してみます。が、その前にswitch文の基本的な動きを説明します。


■ 2、switch文について
 switch文にはcase文というswitch文の条件式を判定する文が必要です。簡単に言えば、「switch文の条件式が、どのcase文の定数式と一致するかを求め、一致したcase文以下を実行する」という動きをします。
 ▼一般形(1)
 switch(条件式){
    case(定数式):文1  /*左の定数式と一致したときに実行される*/
    case(定数式):文2  /*左の定数式と一致したときに実行される*/
                ・
                ・
    case(定数式):文3  /*左の定数式と一致したときに実行される*/
    }


■ 3、サンプルプログラム
 説明はあれくらいにして、具体例をあげればswitch文の動き方は簡単です。
File Name:program032.c
#include<stdio.h>	 /*おまじない*/
main()
{
	int ans = 1, n = 4; 

	switch(n){
	case 5: ans = ans << 1;	/*nが5のときここから実行される*/
	case 4: ans = ans << 1;	/*nが4のときここから実行される*/
	case 3: ans = ans << 1;	/*nが3のときここから実行される*/
	case 2: ans = ans << 1;	/*nが2のときここから実行される*/
	case 1: ans = ans << 1;	/*nが1のときここから実行される*/
	}
	printf("n = %d,  2^%d = %d\n", n, n, ans);	
}


■ 4、プログラムの説明【流れ図】
 流れ図を使って上のプログラムの実行の流れを書いておきます。
【流れ図】(流れ図記号一覧表)
流れ図【nagare006.png】

■ 解説
 流れ図を見てもらえればわかると思いますが、switch文の条件式は(n)で、case文はこの(n)の値が5〜1までのときの動きが書いてあります。

 ただ注意してほしいところは、case文の書き方で、

case (定数式) : 定数式が満たされたときに実行

という形式であり、1度定数式が満たされれば、その後のcase文も実行されてしまうというところです。
(流れ図を見てもらえればわかると思います。)

【例】nが3のときは「ans = ans << 1」が3回実行される。



■ 5、実行結果
実行結果【c_032.jpg】


←このプログラムは累乗を計算するプログラムです。



■ 6、次回に向けて
 今回switch文では、多分岐どころか、余り有効ではないswitch文の使い方を書いてしまいました。(;^_^A
 上の解説でも書きましたが、本来のswitch文の目的は「多分岐を行う」ものであり、それぞれの定数式(case文)を満たしたときに、それぞれ独立した動きをするのが目的であります。
 次回は、定数式を満たしたcase文のみを実行したい場合について説明します。(break文の登場!!)

左やじるし  右やじるし

管理者:enoppi  作成日時:2000/8/17
Home Page Copyright(C)2000 by Enoppi All rights reserved.