電卓プログラムの考え方、書き方例
2つの数値の加減乗除をする電卓のようなプログラムを作ります。
簡単なようですが、多くの話題(データ型の選択、入力、判断や繰り返しなど)を含んでおり、学習に役立つ例題です。
今回は、プログラムをつくる流れも分かるように、どんなプログラムにするか検討するところから始めます。 それを処理手順に書き、C言語のコードに直します。
プログラムの機能を考える
まずは、どんなプログラムにするかを考え、前提とすることや制約についても検討します。
- 数や演算の指定はどうする?
たとえば「2 + 5」のように、「数値1 演算記号 数値2」の順に入力すると計算結果が表示されるようにする。
演算記号は、+, -, *, / のみとする。 - 繰り返して計算できるようにする
繰り返しの終了は、指定が上記の書式でなかったときとしよう。 - 他に考えておくことは?
(1) 浮動小数点数でも計算できるようにする
(2) 加減乗除以外の演算記号が指定されたらどうする?
(3) 割り算で、ゼロ割しようとしたときはどうする?
(4) 電源ON の代わりに指定の書式を示すメッセージを表示しよう。電源OFF のメッセージも表示しよう
(2) と (3) のケースは、エラー・メッセージを表示して、指定し直せるようにしよう。
処理手順として書く
上の検討結果を踏まえて、処理内容を具体的かつ端的に書きます。 判断や繰り返し、データの入出力も分かるようにします。
下記では、チャートを使わずに書きます。
【 電卓プログラムの処理手順 】
指定の書式を示すメッセージを表示する
<繰り返し>
| 「数値1 演算記号 数値2」の指定を受け取る –> 変数 a, op, b へ
| 指定の書式でなかったとき) 繰り返しを抜ける
| 演算記号 op に応じた計算をする –> ans へ結果を入れる
| + のとき) a + b を求める
| - のとき) a – b を求める
| * のとき) a * b を求める
| / のとき) b がゼロでないかチェックする
| ゼロのとき) エラー・メッセージを表示して繰り返しの先頭に戻る
| a / b を求める
| それ以外) エラー・メッセージを表示して繰り返しの先頭に戻る
- 答え ans を表示する
電源OFF のメッセージを表示する
プログラムコードに直す
上記の手順を素直にC言語で書きます。
【 電卓プログラムの書き方例 】
#include <stdio.h> main() { double a, b, ans; char op; printf( "加減乗除(+,-,*,/)ができます。指定例:2+5、終了時はq\n" ); while( 1 ) { printf( "ready : " ); if( scanf( "%lf %c %lf", &a, &op, &b ) != 3 ) break; switch( op ) { case '+': ans = a + b; break; case '-': ans = a - b; break; case '*': ans = a * b; break; case '/': if( b == 0.0 ) { printf( "Error!(ゼロでの割算はできません)\n" ); continue; } ans = a / b; break; default: printf( "Error!(演算記号の指定が誤りです)\n" ); continue; } printf( "--> %g\n", ans ); } printf( ".... Power OFF\n" ); }
実行例
加減乗除(+,-,*,/)ができます。指定例:2+5、終了時はq ready : 6.5 * 3 --> 19.5 ready : 7 % 4 Error!(演算記号の指定が誤りです) ready : 123 / 2 --> 61.5 ready : 7 + 16 --> 23 ready : q .... Power OFF
One thought on “Calculator”