偶奇を判定してみよう

 整数が偶数か奇数かを判定するプログラムを作ってみよう。

 開発手順

  1. 要求定義を確認する
    キー入力された整数が偶数か奇数かを判定する
  2. 仕様を決める
     外部仕様・・・利用者から見たプログラムの振る舞い
    1. 整数をキー入力(入力要求のメッセージを出す)させ、偶数か奇数に応じてメッセージを表示する
    2. 各メッセージ
      入力要求整数を入力して下さい。
      偶数の時○○は偶数です。
      奇数の時○○は奇数です。
      (但し、○○は入力された整数)
    3. (整数以外のものが入力された時に実行時エラーとなっても良しとする。)
     内部仕様・・・アルゴリズムの選択やフローチャート(各ブロック)の実現方法
    1. 偶奇の判定は剰余演算子(割り算の余り)を用い、
    2. 分岐構造としてはif文を使う
  3. アルゴリズム(問題を解決する手法)を決める
    剰余演算と条件分岐で実現する(今回のような簡単な問題では考えるまでもない)
  4. フローチャート(流れ図)を描く


      → → → → →  
    判定結果によって、
    表示が異なるから、
      → → → → →  
    詳細化する
  5. コーディングする(C言語のソースプログラムを書く)
    /* 偶数か奇数かを判定するプログラム */
    #include <stdio.h>
    
    main()
    {
    	int	n;
    
    	printf("整数を入力して下さい:");
    	scanf("%d", &n );
    
    	/* if 文を使って実現する */
    	if( n % 2 == 0 )
    		/* n が偶数の時 */
    		printf("%d は偶数です。\n", n );
    	else
    		/* n が奇数の時 */
    		printf("%d は奇数です。\n", n );
    }
    /* end of eo0.c */
    
  6. コンパイルしてテストする
    1. 分岐している2つの流れの両方をテストする為に、テストデータとして偶数と奇数を与え、
    2. 仕様通りのメッセージがそれぞれ表示されるかどうかを確認する。

条件の書き方を変えてみる

  1. フローチャート(流れ図)を書いてみよう
  2. if( n%2 != 0 )if( n%2 ) でも良い。何故か?

偶奇を判定する関数を作ってみよう!

/* 偶数か奇数かを判定するプログラム */
#include <stdio.h>

/* i が偶数なら 0 を、奇数なら 1 を返す */
int	eo( int i )
{
	/* if 文を使って実現してみよう! */
	if(	)
		return( 0 );
	else
		return( 1 );
}

main()
{
	int	n;

	printf("整数を入力して下さい:");
	scanf("%d", &n );

	/* switch 文を使って実現してみよう! */
	switch( eo( n ) )
	{

		printf("%d は偶数です。\n", n );


		printf("%d は奇数です。\n", n );

	}
}
/* end of eo2.c */
  1. 上のプログラムの空白を埋めて完成しなさい
  2. 関数 eo(i) は i を 2 で割った余りを返しているとも考えられる。
    この関数を if文を用いないで実現してみよ
  3. 関数 eo(i) が真理値を返していると捉えたら、
    eo に代えて、どの様な名前を付けるのが適当か?