課題 (05:スプレッドシート)

作業について

今回の課題は以下のパッケージに作成してください。

パッケージの名前
j1.lesson05

作成するクラスの名前は問題ごとに指示があります。下記を参照してください

課題の提出方法については下記を参照してください。

また、別のコンピューター上に移動する際には、下記を参考にプログラムを持ち帰ってください。

新しい内容

今回、スプレッドシートに関する新しい内容はありません。

問題

作成するクラスの名前
GradingS1

4人の出席、中間試験、期末試験に関する得点の一覧を元に、様々な成績を算出するプログラムを作成してください。この一連の課題では、db05-1.txtのファイルからデータを読み出して利用してください。

また、同じ構造で得点だけ異なるdb05-2.txt, db05-3.txtを利用してプログラムの動作を確認してください。

名前 出席 中間 期末  
Alice 70.0 80.0 65.0  
Bob 0.0 100.0 100.0  
Charley 40.0 60.0 79.0  
David 100.0 80.0 20.0  

a. 平均点の計算

出席、中間試験、期末試験に関する4人の平均点をそれぞれ列ごとに計算してください。それを利用して、Davidの次の行にそれぞれの列の平均点を表示してください。正しく動作すると次のようになるはずです。

名前 出席 中間 期末  
Alice 70.0 80.0 65.0  
Bob 0.0 100.0 100.0  
Charley 40.0 60.0 79.0  
David 100.0 80.0 20.0  
平均 52.5 80.0 66.0  

ヒント

「X列目の平均点を計算する」というメソッドをひとつ作成すると楽です。たとえば出席の平均点はX=2となって、2行目から5行目までの2列目(X列目)の合計を計算したあとに、さらにそれを4で割ると平均点が求まります。

b. 総合点の計算

次に、出席、中間試験、期末試験を総合した得点を計算してください。これは単純に合計すればいいのではなく、それぞれに係数を掛けてから合計します。係数は出席が0.2, 中間試験が0.3, 期末試験が0.5で、それぞれの得点が順に50.0, 70.0, 40.0である場合、「50.0 * 0.2 + 70.0 * 0.3 + 40.0 * 0.5 = 66.0」と計算できます。

このとき、「指定した行の総合点を返す」というメソッドを作成しておいてください(あとで使います)。それを利用して、期末の次の列にそれぞれの行の総合点を表示してください。正しく動作すると次のようになるはずです。

名前 出席 中間 期末 総合
Alice 70.0 80.0 65.0 70.5
Bob 0.0 100.0 100.0 80.0
Charley 40.0 60.0 79.0 65.5
David 100.0 80.0 20.0 54.0
平均 52.5 80.0 66.0  

c. 合否の判定

次は、総合点の代わりに合否を表示するように書き換えて下さい。先ほど計算した総合点が60点以上ならば合格、そうでなければ不合格となります。このとき、「指定した行の人が合格ならtrue、不合格ならfalseを返す」というメソッドを作成しておいてください(あとで使います)。

それを利用して、期末の次の列(先ほど総合点を表示していた行)に合格の場合のみ「合格」と表示してください (不合格の場合はなにも表示しないでください)。正しく動作すると次のようになるはずです。

名前 出席 中間 期末 合否
Alice 70.0 80.0 65.0 合格
Bob 0.0 100.0 100.0 合格
Charley 40.0 60.0 79.0 合格
David 100.0 80.0 20.0  
平均 52.5 80.0 66.0  

d. 合格者数の表示

最後に、全体の合格者数をメッセージダイアログに表示してください。たとえば、db05-1.txtでは「合格者は3人でした」と表示します。

ヒント

「合否の判定」で宣言したメソッドを活用しましょう。合格者を見つけるたびに「total = total + 1;」というように変数に1ずつ加算していくと、全員の判定が終わったころには上記の「total」には合格者数が計算されています。