第50回
プログラミング・クイズで腕試し~簡易積算プログラムを作ろう

今回はクイズ形式で

本コラムでは、これまで「目的と仕様を明確にして、それを満たすプログラムを作る過程」を紹介することはありました。しかし今回は少し趣向を変えて、クイズ形式でソースを考えていただこうと思います。

積算プログラムを作る

販売、在庫、勤怠……などなど、事務処理では手元のデータを一括して加算したり、その中から減算したりする作業がよくあります。プリンタで打ち出された一覧表や束になった伝票から、金額や数量、日数などを合計する処理です。

そのような事務処理は、値を連続して加算していくだけの単純な作業となります。場合によっては一部減算も必要になるでしょう。こういった加算が基本で時々減算、特殊な場合を想定して乗算が基本で時々除算、といった計算――いわゆる積算処理のためのプログラムを作ってみようと思います。

「目的と仕様を明確に」するところまではこれまでと変わりませんが、そこから先は読者であるあなたに考えていただき、ソースを書いてもらおうと思います。

解答と同じでなくてもOK

まず全体の仕様を紹介し、さらにmain関数の仕様、そこから呼び出される下請け関数の仕様……と、全体の外枠を紹介します。それらをヒントに、main関数をはじめとする各関数のソースを、エディタで記述してみてください。

でき上がるプログラムは同じでも、ソースレベルではプログラマごとに個性が発揮されます。そこで、以下のようなルールを定めておきます。

  1. プログラムの動作結果は、前提となる仕様と同じであること。
    計算プログラムですから、これは当然です。
    ただし、処理内容を複雑にしないため、ここでは整数の扱いだけを重視することとします。除算で生じる小数の丸め誤差などは、意識しなくて構いません。
  2. プログラムの画面表示は完全に同じでなくても構わない。
    ユーザーインターフェイスに関わる部分は、各自の判断で変更しても構いません。
    ここで重要なことは、基本となる仕様を満たすことです。
  3. ソースコードの書き方が正解と同じである必要はない。
    例えばループ処理の書き方など、同じ結果を得るための手法がいく通りも存在することがあります。それらに関しては、結果が同じならソースレベルでの書き方が正解と同一である必要はありません。
    変数などのシンボル名も、当然、正解と同じである必要はありません。