プログラムを作る場合、正しく動作するかどうかテストを行います。
プログラムを勉強し始めの間は、「テスト」とは「とりあえず実行すること」で問題ないと思いますが、
入力するデータによって、実行結果が変わってきますので、「どんなデータを入力するか」が問題になります。
例えば、「入力した整数が、ゼロかプラスかマイナスか」を調べるプログラムを作ったとします。
あなたは、どんなデータを入力し、「テスト」を行いますか?
ゼロだけ入力してみて、うまく結果が出たら、他の全ての部分も正しいプログラムだとは考えていませんよね。
「プラス」の時は正しく動くのか?「マイナス」の時は?
等々色々なパターンを試して見なければならないはずです。
下のプログラムで言えば、とりあえず「0」「1」「−1」の3つは最低限試して見るべきでしょう。
<sample program col006-01>
#include <stdio.h> int main(void) { int input; printf("整数を入力してください:"); scanf("%d", &input); if (input < 0) { printf("入力データは負の数です。\n"); } if (input > 0) { printf("入力データは正の数です。\n"); } if (input == 0) { printf("入力データはゼロです。\n"); } return 0; } |
上のプログラムで、1つ「テスト」を行ってみましょう。
入力データを「-3000000000」(マイナス30億)にしてみてください。
<実行結果>
整数を入力してください:-3000000000 入力データは正の数です。 続行するには何かキーを押してください・・・
マイナスの数値を入力したのに、「入力データは正の数です。」と表示されます。
※あくまでも、私個人の環境で実行した結果ですので、異なる場合があります。
これは、以前「変数の話」で書いたことにヒントがあります。
私の環境では、int型は32ビット(4バイト)です。
32ビットということは、(signed)long型と同じサイズですから、
表現可能な数値の範囲は「約-20億 から 約+20億」です。
今回入力した「-30億」という数値は、表現可能な範囲からはみ出しています。
表現可能な範囲からはみ出した数値は「わけの分からない数値」になります。
(本当はきちんと理由がありますが、今は書きません)
ですから、テストを行うために数値を入力しても、正しい結果が出ない場合、プログラムが間違っていないかどうか確かめるのはもちろんですが、入力するデータにも注意を払ってください。
ブラウザの戻るボタンで戻ってください。