場合分け処理を行う

2つの場合分け

MMGames

else文、真、偽



偽の場合の処理


前章ではif文を使い、条件に応じて特定の処理の実行を制御する方法を説明しました。
しかし、この方法は、処理を実行するかどうかの選択しかありません。
前章の始めに、金がある->焼肉定食、金がない->ざるソバ、という例を書きましたが、
前章の方法は、金がある->食べる、金がない->何もしない、だったのです。

条件に一致した時だけでなく、条件に一致しなかった時にも文を実行させたい場合、
if文と一緒に、else(エルス)文を使用することが出来ます。
else文は、次のようにして使用します。

if (条件式) 真の場合に実行する文; else 偽の場合に実行する文 ;
else文の次の文は、条件が偽であった場合に実行されます。
真の場合に実行する文と偽の場合に実行する文が両方実行されることはありえません。
条件に応じて、必ず、どちらか片方のみが実行されます。


使い方は同じ


else文をつけた場合でも、if文の使い方自体は全く同じです。
ただ、偽の場合に実行する文がオプションとしてつけられただけです。
次のプログラムは、前章で作成したプログラムを、else文で書き直した例です。

#include <stdio.h>

int main(void)
{
	int suuti;
	scanf("%d",&suuti);
	if (suuti == 10) printf("入力値は10です。\n"); else printf("入力値は10ではありません。\n");
	return 0;
}
このプログラムを実行させて10を入力した場合の結果は、次の通りになります。

10 入力したデータ
入力値は10です。
このプログラムを実行させて10以外を入力した場合の結果は、次の通りになります。

135 入力したデータ
入力値は10ではありません。
結果を見ればわかるように、偽の場合には2番目の文が実行されています。
しかし、このプログラムでは、if~else文を1行に書いているため、
1行が横に長くなってしまい、読みにくくなっています。


読みやすくする


if~else文を読みやすく書くには、複数の行に分け、インデントを追加します。
具体的には、次のような書き方をすると見やすくなります。

#include <stdio.h>

int main(void)
{
	if (suuti == 10)
		printf("入力値は10です。\n");
	else
		printf("入力値は10ではありません。\n");
}
また、if~else文で複文を使う場合には、次のように書きます。

#include <stdio.h>

int main(void)
{
	if (suuti == 10) {
		printf("入力値は10です。\n");
	} else {
		printf("入力値は10ではありません。\n");
	}
}
この書き方を使うと、if文とelse文との対応関係が一目でわかり、
非常に見やすくなるので、普段からこの書き方を使用することをお勧めします。
なお、これ以外にも、次のような書き方を使用する人も多くいるのですが、
無駄に長くなるような気がするので筆者はあまり好きではありません。

#include <stdio.h>

int main(void)
{
	
	if (suuti == 10)
	{
		printf("入力値は10です。\n");
	}
	else
	{
		printf("入力値は10ではありません。\n");
	}
}

サイト目次


第0部:プログラム概要編

  1. プログラムとは何か?

2章:プログラムの書き方

  1. 書き方のルール
  2. 書き方の慣習
  3. 練習問題2

3章:画面への表示

  1. 文字列の表示
  2. 改行文字
  3. 練習問題3

6章:キーボードからの入力

  1. 入力用の関数
  2. 入力の恐怖
  3. 練習問題6

9章:回数が決まっている繰り返し

  1. 繰り返しを行う文
  2. ループ動作の仕組み
  3. 練習問題9

10章:回数がわからない繰り返し

  1. 回数不明ループ
  2. 入力チェック
  3. 練習問題10

13章:複数の変数を一括して扱う

  1. 複数の変数をまとめて扱う
  2. 配列の使い方
  3. 練習問題13

20章:複数のソースファイル

  1. 最小限の分割
  2. 分割の定石
  3. 練習問題20