年齢から「子供」「青年」「大人」の三つに分けるプログラムの考え方

 

まず大雑把な処理の流れを考えよう。

  1. 年齢を計算する
  2. 年齢による判断を行う。

本的にはこの二つのステップに分けて考えられる。

年齢を計算するために必要な情報は、今年と生まれた年である。
これが分かれば基本的には年齢は計算できるはずである。
ここでは簡単にするため、両方とも西暦による年が分かっているとすれば、単純に「今年−生まれた年」で計算できる。

kotoshi = 2004
umare = 入力してもらう
nenrei = kotoshi - umare

年齢による判断であるが、IF文では二手にしか分岐でいないので、更に分解して考える必要がある。

例えば、まず「子供」とそれ以外を区別してしまおう。
そして子供でない場合は、更に青年かそれ以外つまり大人を区別しよう。

このプログラムは単に一つのIF文を用いるだけなので特に問題はないはず。

では次に「子供ではない場合の処理」を考えてみましょう。

既に子供ではない場合であるので、「青年」か否か(大人)かを判断して処理を行えばよいはずです。

これで全体の構成は出来上がりですね。

確認のため、全体を一つのフローチャートにしてみます。

後は条件をどうするのか、各処理をどうするのかを考えればよいだけですね。
IF文は、IFの行で始まり、EndIfの行でおしまいになることを間違えなければ大丈夫ではないでしょうか。。。
 

上記はあくまでも一つの考え方で別の方法もあることは言うまでもありません。
例えば、最初に子供の場合とそうでない場合と分けましたが、大人の場合とそれ以外の場合で分けても全く問題はありません。

他にも効率はよくなく全くお勧めはできませんが、次のように考えることも不可能ではありません。

・あまり良くないが不正解ではない例1)

  1. もし15歳以下だったら
    1. 子供の場合の処理
  2. EndIf(15歳以下の処理終了)
  3. もし15〜20歳だったら
    1. 青年の場合の処理
  4. EndIf(15〜20歳の処理終了)
  5. もし20歳以上だったら
    1. 大人の場合の処理
  6. EndIf(20歳以上の処理終了)

    この例1はスマートさにかけるという意味であまりお勧めできません。フローチャートを描くとわかりやすいとおもいますが、どんな場合でも全て3回比較が行われてしまいます。

・あまり良くないが不正解ではない例2)

  1. もし15歳以下だったら
    1. 子供の場合のしょり
  2. Else(そうではない場合)
    1. もし15〜20歳だったら
      1. 青年の場合の処理
    2. EndIf(15〜20歳の処理終了)
    3. もし20歳以上だったら
      1. 大人の場合の処理
    4. EndIf(20歳以上の処理終了)
  3. EndIf(15歳以下・そうではない処理終了)

    ※この例2では、条件がかなり余分です。不要な条件や不要なIF文があります。

このほかにも似たような感じであまりお勧めできないプログラムはたくさんあります。
少なくとも比較的効率よく間違いの少ないお勧めのプログラムが理解できるようにしてください。

 


[第4回IF文までの総復習のページに戻る] | [「A班」プログラミング基礎のTopに戻る]