テストでバグ発見!(5)電卓プログラムに潜むバグ【出題編】山浦恒央の“くみこみ”な話(147)(2/3 ページ)

» 2021年11月17日 10時00分 公開
※本記事はアフィリエイトプログラムによる収益を得ています

3.2 機能要求

 機能要求を下記に示す。

3.2.1 入力機能

3.2.1.1 整数の入力

 操作エリアから0〜9を入力できる。

3.2.1.2 小数の入力

 操作エリアから「.」を入力することで、小数を表現できる。

3.2.1.3 演算子の入力

 操作エリアから「加算・減算・乗算・除算・剰余」を表す、「+」「−」「*」「/」「%」を入力できる。

3.2.1.4 特殊演算の入力

 四則演算・剰余以外の特殊な演算として、操作エリアから、「平方根」「符号反転」を表す、「√」「+/−」を入力できる。

3.2.1.5 演算実行の入力

 操作エリアから「=」を入力できる。

3.2.1.6 クリアの入力

 操作エリアから入力内容のクリアを表す、「C」を入力できる。

3.2.2 演算機能

 指定の入力に従って式を入力後、操作エリアから「=」を選択することで、下記の演算を実行できる。

3.2.2.1 基本演算

 入力情報に従って、「加算・減算・乗算・除算・剰余」を実行できる。

3.2.2.2 繰り返し演算

 一度演算した後、繰り返し演算が実行できる。

3.2.3 特殊演算

 「平方根・符号反転」を実行できる。

3.2.4 表示機能

 操作エリアからの入力情報や演算結果は、表示エリアに表示できる。なお、入出力する桁数は、最大で整数部3桁、小数部3桁とする(○○○.○○○)。

3.3 詳細設計

3.3.1 状態遷移図・状態遷移表

 状態遷移図(図2)、状態遷移表(表1)を下記に示す。

図2 図2 電卓の状態遷移図[クリックで拡大]
表1 表1 電卓の状態遷移表[クリックで拡大]

3.3.1 初期処理

 プログラムを開始すると、入力待ちモードに遷移する。また、「=」ボタンは無効化する。

3.3.2 数値入力イベント

3.3.2.1 入力待ちモード

 操作エリアから「0〜9」か「.」の入力がある場合は、入力情報を表示エリアに表示し、入力処理1に遷移する。ただし、未入力の状態で「.」を選択した場合は、「0.」を表示する。

3.3.2.2 入力処理1モード、入力処理2モード

 操作エリアから「0〜9」か「.」の入力がある場合は、表示エリアに数値を表示する。ただし、以下のルールがある。

  • 数値が既に存在する場合は、右から連結して表示する
    例:12の状態で1を入力すると、121となる
  • 先頭に0がある場合は、0を2回続けて入力できない。また、0の後に数値を入力した場合は、0を別の数値に上書きする
  • 未入力の状態で「.」を選択した場合は、先頭に0.を付与する
  • 小数は最大で3桁までしか入力できない
  • 入力値の制限は、最大値(999.999)、最小値(−999.999)とする

Copyright © ITmedia, Inc. All Rights Reserved.