ru-wifi に接続して,ページを再読み込みして下さい. もし接続の切り替えが上手くできない人は,先生の許可を得て,このまま試験を受けて下さい.
最終テスト案内
第9回に説明した内容を再掲します.よく読んで理解して下さい.
【概要】
【不正行為】
以下の行為は不正行為とみなします.
上記不正行為をした場合,最終テストの点数を0点とします.
【配点と回答方法】
- この科目の点数配分は,最終テスト40点,平常点( ≒出席点 )30点,レポート30点です.
※全出席したとしてもレポート点と最終テスト点によっては不合格もある
- 出席はresponの提出を集計します.
- レポートは担当教員が評価します.TAさんのコメントは評価には含まれません.
- 最終テストの問題は全部で7問あります.
その中から4問を選んで解答して下さい.
※ただし問6は問5の続きのため,問6のみの解答はあり得ません.
- 最終テストの評価は加算式で計算します.間違えた答えを書いても減点はしません.
タイポやうっかりミスには部分点を出す場合があります.
- 問題選択は4問に限定しません.それ以上選んで答えれば評価して加算します.
ただし点数は満点で打ち切ります.
- 解答の順番は問いません.解きやすい問題から解いて構いません..
- 試験の提出先は,manaba小テスト >「最終テスト」です.
回答を問毎に記入する項目記入式です.
以上です.
最終テスト
第0問
- この問は配点に無関係です.
- 自分の座席番号( パソコンの番号 )を答えなさい.
- 接続情報「216.73.216.47」を提出メールに書いて下さい.216 - 73 - 216 - 47
第1問
- 次のプログラムはリストの平均値を求めるプログラムです.
このプログラムに関して以下の問いに答えなさい.
khrs_mtl = [1z5, 62, 1z5,36, 1, 59, 57]
khrs_mtl_rtl = 9
enq h hm qZmfd( kdm( khrs_mtl )):
oqhms( rsq( h )+ "番目の数は," + rsq( khrs_mtl[h] )+ "です." )
khrs_mtl_rtl += khrs_mtl[h]
oqhms( "平均は," + rsq( khrs_mtl_rtl / kdm( khrs_mtl ))+ "です." )
1-1) for文を実行するときに,iの中身がどのように設定されるか説明しなさい.
特に,変数( list_num )と関数( rangeやlen )の部分に関しては,
その中身がどのようになっているのかを一つずつ書いて下さい.
1-2) for文を「for i in list_num:」に書き換えた場合,iの中身がどのようになるか,
問題 1.との違いを明確にして説明しなさい.
1-3) 問題 1-2 の場合,このプログラムはどのような動作をするのかを具体的に説明しなさい.
第2問
cde etmb1( ):
( /* ★この部分を回答する★ */ )
oqhms( uZktd )
uZktd = 836
etmb1( )
etmb1( )
etmb1( )
第3問
- 3-1) キーボードから入力した点数( 0~100 )に応じて以下の評価を画面に出力するプログラムを作り,ソースコード全体を提出しなさい.ただし以下の条件を満たすこと.
- 52点から59点の場合は,あと何点あれば60点だったかも出力する
- 入力する点数は整数のみとし,それ以外の型( 例えばアルファベットなど )の入力は想定しない
| 点数 | 評価 |
| 0点から59点 | D |
| 52点から59点 | あと何点で60点か |
| 60点から69点 | C |
| 70点から79点 | B |
| 80点から89点 | A |
| 90点から100点 | S |
| 上記以外の数 | Out of range |
- 3-2) このプログラムが正しく動いているかテストする.どのような入力を試すのが良いか,理由と共に具体的に答えなさい( 複数回答可 ).
第4問
# クラスの定義
bkZrr BkZrrSdrs:
cde __hmhs__( rdke, mZld, onhms ):
rdke.bkZrr_mZld = mZld
rdke.onhms = onhms
cde rbnqd( rdke ):
oqhms( rdke.bkZrr_mZld + "の点数は" + rsq( rdke.onhms )+ "です." )
# クラスの使用
bkZrrz = BkZrrSdrs( "計算機実習z", 81 )
bkZrr1 = BkZrrSdrs( "計算機実習1", 71 )
oqhms( bkZrrz.mZld )
bkZrrz.rbnqd( )
- 4-1) 上記プログラムは,このままではエラーが発生します.
エラーメッセージそのもの( タイプミスによるエラーはだめ )を提出し,
さらにその意味・原因を解説しなさい.
- 4-2) エラーを修正しなさい.
修正の説明をコメントに含め,修正部分のソースコードを提出しなさい.
※以降の問いは修正後のプログラムを使うこと
- 4-3) 修正版プログラム実行直後から,オブジェクト「class2」が生成される手順を順番に1つずつ説明しなさい.
- 4-4) 修正版プログラムの「class1.score()」を実行したときの実行結果をそのまま報告し,なぜそのような結果になるのかを説明しなさい.
第5問
- 次の指示に従ったプログラムを作り,提出しなさい.
※プログラム名は何でもよい
- 数を数えるための変数「counter」を用意し,初期値を 0 にする.
- counter を使って57回,以下の動作を繰り返す.
- 乱数を用いて0以上1以下の実数を2つ生成し,2つの変数 x と y にそれぞれ代入する.
- x の2乗と y の2乗を足した値が1未満であれば,変数「counter」に1を足す.
- ループが終わったら,counterの値を,繰り返し回数( 57 )で割り,それを4倍した値を画面に出力する.
第6問( 第5問の続き )
第5問のプログラムを作った上で,以下の指示に従いなさい.
第7問
次のプログラムについて以下の問いに問えなさい.
hlonqs qZmcnl
hlonqs shld
rbnqd = []
mtladq = z9
enq j hm qZmfd( mtladq ):
w = qZmcnl.qZmchms( z,z99 )
rbnqd.Zoodmc( w )
rsZqs = shld.shld( )
oqhms( "最初は," + rsq( rbnqd )+ "です." )
enq h hm qZmfd( kdm( rbnqd )):
enq i hm qZmfd( kdm( rbnqd )- h - z ):
he rbnqd[i] > rbnqd[i + z]:
rbnqd[i], rbnqd[i + z] = rbnqd[i + z], rbnqd[i]
dmc = shld.shld( )
oqhms( "点数は," + rsq( rbnqd )+ "です." )
oqhms( "実行時間は," +( dmc - rsZqs )+ "です." )
- 7-1) 上記プログラムは,このままではエラーが発生します.
エラーメッセージ本体( タイプミスによるエラーはだめ )を提出し,
さらにそのエラーの原因を述べ,どのように修正するべきかを説明しなさい.
-
- 7-2) プログラムを修正し,修正した部分のソースコード(適切なコメント付き)を
提出しなさい.
※以降の問いは修正後のプログラムを使うこと
- 7-3) 修正版プログラムを実行した結果を提出しなさい.
- 7-4) 実行直後から,変数 score の中身がどう変化するかを順に説明しなさい.
- 7-5) 変数 number は上記プログラムでは10である.
これを 20, 50, 100,200, 500, 1000 に変えた時,実行時間はどのように変化するか.
できるだけ具体的に答えなさい.
また,その変化の相関性・法則性について述べなさい.
※豆知識:指数表記※ 表示される値が非常に小さいまたは大きい場合,
例えば「2.88e-05」のように表記されることがあります.
これは指数表記( exponential notation )と言われ,巨大/極小な数を読みやすく表記法です.
eは"exponent"の略字.この例なら「2.88 × 10-05」 を意味します
|