課題1 レポート課題

演習課題 (必須)

  1. クラスを用いたBMI値計算プログラム」を作成せよ。
    但し、下記の仕様を満たすこと。
    • メンバ変数は非公開とし、名前、身長、体重、BMI値、理想の体重の変数を含むこと。この他にもメンバ変数が必要な場合は追加してもよい。
      • 名前は無記名にも対応すること(cf. デフォルト引数)。このとき,名前として空白文字さえ与ないオブジェクト (インスタンス) を1つ以上作成し,動作を確認すること。

    • メンバ関数には、名前、身長、体重をセットおよびその値を返す関数、BMI値、理想の体重値を計算およびその値を返す関数を含むこと。この他にもメンバ関数が必要な場合は追加してもよい。
      • 必須のメンバ関数名は下記の通りとすること。これ以外に追加したメンバ関数の名前は任意とする。
        • SetName
        • Name (名前を返す)
        • SetHeight
        • GetHeight
        • SetWeight
        • GetWeight
        • CalculateBMI (BMIを計算する)
        • BMI (BMIを返す)
        • CalculateIdeal (理想体重を計算する)
        • Ideal (理想体重を返す)

    • コンストラクタ、デストラクタを使用すること。

    • 実行結果として、表1を参考に、名前、身長、体重、BMI値、肥満の判定、理想値での体重、何キロやせると(または太ると)理想値となるか、を表示すること。
      • ヒント:実行結果を表示するための関数(またはメンバ関数)を用意するとよい。

    • クラスのオブジェクト(インスタンス)を複数個作成し、結果を表示すること。

    • クラスの定義は、ヘッダファイルに記述すること(勿論、クラスの実現部は別ファイルにする)。

     BMI値

    BMI値は、(体重 kg)/(身長 m×身長 m)によって計算される値である。
    この値によって以下のような判定となる。

    表1 : BMIと肥満の判定
    判定 やせ 普通
    肥満
    肥満度1 肥満度2 肥満度3 肥満度4
    BMI値 18.5未満 18.5以上25未満 25以上30未満 30以上35未満 35以上40未満 40以上

    BMIの理想値は22で、この値のとき最も病気になりにくいとされています。


  2. 音で雷までの距離を推測し,距離減衰を求めるプログラム」を作成せよ。
    但し、下記の仕様を満たすこと。
  3.  音速

    与えられた気温における音速を計算し,距離の計算に用いる。
    音速v [m/s] の計算式は以下で与えられる。
    $v = 331.5 + 0.6*T$
    このとき,Tは温度 [℃] である。

     距離減衰

    雷を点音源 (十分に小さい音源) とみなした場合,雷の発生地点をd1 [m],雷の観測地点をd2 [m]とすると,雷の観測地点における音圧レベルL2 [dB]は,雷の発生地点での音圧レベルL1 を用いて以下の式で求められる。なお,式中のlogは常用対数であり,底は10であるため省略している。
    $L_2 = L_1 - 20*log \big(\frac{d_2}{d_1}\big)$
    このように距離に比例して音の音圧レベルは低くなる。これを距離減衰と呼ぶ。
    雷の発生地点における雷の音圧レベルL1 と,雷の観測地点での音圧レベルL2 の差であるLd は単純にそれらの減算によって求められる。
    $L_d = L_1 - L_2$

    例えば,d1 が1 m,d2 が3,000 m,L1 が90 dBであれば,雷の観測地点d2 における音圧レベルは
    $L_2 = 90 - 20*log \big(\frac{3000}{1}\big)$ $= 20 \ dB$
    であり,雷の発生地点における雷の音圧レベルL1と,雷の観測地点での音圧レベルL2の差Ldは以下のように求められる。
    $L_d = 90 - 20 = 70\ dB$
    なお,雷の発生地点の距離d1 を0とするとゼロ除算になり,正しく計算が行われないので注意すること。通常d1 は1 mとされることが多いことから,d1 の値を1に固定しても構わない。

     実行例

    プログラムの実行例

考察課題 (必須)

オブジェクト指向プログラミングについて調べ、どのような概念かを 1000字以上で述べよ。
ただし、以下の7つのキーワードを含み、本文中で1つ以上の参考文献を参照すること。
※Webからのコピペ禁止!コピペが発覚次第,課題1のレポートは不可とします。

キーワード:C言語との違い,手続き型言語,クラス,構造体,情報隠蔽,カプセル化,オブジェクト (もしくはインスタンス)

オプション課題

int型の整数のみを扱うスタックを実現するクラスを作成せよ。ただし、下記の条件を満足すること。