2024年度 電子情報通信課程 計算機実習II

ru-wifi に接続して,ページを再読み込みして下さい.

もし接続の切り替えが上手くできない人は,先生の許可を得て,このまま試験を受けて下さい.

総合問題

試験について

基本的に「対面」で実施します. 対面で受けるのが無理な人は1月15日までに植村まで連絡をして下さい. その際,通常の試験と同様に理由書とそれを証明する書類を提出して下さい(教務課に提出する必要性はありませんが,教務課に提出するのと同様の書類が必要と考えて下さい.ただし「保証人記入欄」は不要です).

試験は,1講目が終わるまで(10時45分)です.

ネットワークトラブル等の危険性も考慮して,少し早い目に提出することを薦めます.

早く終えた人は,提出可能です.静かに退室して下さい.

教科書,講義のページ,webページ,過去の提出レポートやメールを参照するのはかまいませんが,ネットの質問掲示板等で他の人に質問するのはカンニング行為とみなします.

簡単に言うと「調べる」行為は良いですが,「質問する」行為は禁止です.

ChatGPTの利用は「質問する」行為になります.

また,問題の内容を理解できていない場合は,その問の点数は0点になりますので,調べた結果をそのまま流用した時は0点になる可能性が高いことに気をつけて下さい.

なお,スマートフォン,携帯電話の利用は禁止とします.ノートパソコン,タブレット,(備え付けの)パソコンの利用は可能です.

不正行為をしないようにして下さい.

試験の注意事項

1講時目は,簡単な小テストを実施します. 今までの課題を理解していればすぐにできる問題ばかりです. 以下の注意点をしっかりと守ってください.

  • 他の人としゃべったり相談しないで下さい.
  • トイレによる退室は認めていません.
  • 相談などカンニングとみなされる行為をした場合は, 今回のテストの点数は0点とします.他人の解答を写した場合も, もちろん0点です.解答を写させた方も0点とするので, そういう行為をしないようにして下さい.
  • この科目の点数配分は,試験40点,平常点(≒出席点)30点,レポート30点です.オンライン講義でしたので,締切までにレポートが提出できていた場合を出席として扱います(レポート点とは異なります). また,他人のレポートを写していた場合は,平常点から減点します. テストの点数が悪い場合は,不合格もありうります.
  • 問題は,7問あります(ただし問6は問5の続きです).その中から4問を選んで解答して下さい.

    • なお,点数は加算式で計算します.間違えた答えを書いても減点はしません.
      ただし必要事項が足りていない解答や理解できていない解答は0点とします. 内容が理解できており,かつ,うっかりミスなどの場合は, 部分点を出す場合があります.
    • また選択数は,4問に限定しません.それ以上選んで答えても構いません.
      もし,点数の上限を超えた場合は,試験の点数は満点で打ち切ります.
    • 解答の順番は問いませんので,解きやすい問題から解いていって下さい.
      ただし,どの問題かわかるように問題番号必ず書いて下さい.
    • また,自分のパソコンの接続番号と座席番号も,最初に書いて下さい(第0問として用意します).
    • 試験の提出方法は,メールとします.
      提出先は,com02@elec.ryukoku.ac.jpです.
      件名は,Exam-com02 (半角英字)です.
      これを間違えた場合やメールの書き方が悪い場合は,それぞれ減点しますので 気をつけて提出して下さい.
    • 終了間際に提出しようとして,失敗しないように気をつけて下さい.
      そういうメールの使い方も含めて試験として評価しますので, 余裕を持って提出するようにして下さい.
    • 時間までに終わり,先にメールで提出した人は,速やかに退出して下さい.
      部屋に残って他の人に答えを教えたりしないで下さい.

総合問題

以下の問いに答えなさい.

使用言語は講義で使用したpython(3系)とします.

プログラムを作るように指示している課題の場合は,指示に従ってプログラムを作りなさい.

提出物の指示がない場合は,ソースを全て提出しなさい.

※指示に含まれていない項目(例えばimport文など)も適宜補完して,動作するプログラムを提出すること.

なお,指示以外の動作をするプログラムは0点です.

講義で習った範囲を基本として考えて下さい.

第0問

  • この問は,配点0です.
  • 自分の座席番号(パソコンの番号)を答えなさい.
  • 接続情報「18.218.61.200」を提出メールに書いて下さい.18 - 218 - 61 - 200

第1問

  • 次のプログラムはリストの平均値を求めるプログラムです.このプログラムに関して以下の問いに答えなさい.
  • khrs_mtl = [z7, 1z7, 5z,199, 9, 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. for文を実行するときに,iの中身がどのように設定されるか説明しなさい.特に,変数(list_num)と関数(rangeやlen)の部分に関しては,その中身がどのようになっているのかを一つずつ書いて下さい.
    2. for文を「for i in list_num:」に書き換えた場合,iの中身がどのようになるか説明しなさい.1.の問題との違いが明確になるように書いて下さい.
    3. また,その場合(「for i in list_num:」に書き換えた場合),このプログラムはどのような動作をするのかを説明しなさい.

第2問

  • 次のプログラムを実行したときに,1200,1300,1400と100ずつ増えた値を出力するように関数func2 を作成しなさい.
    また,なぜそのような動作をするのか説明しなさい.
    プログラムは,関数func2 の部分だけを提出しなさい.
    ※関数内での計算は条件分岐を使わず,「100ずつ増やす」方法で作成して下さい.
  • cde etmb1():
            (この部分を考えなさい)
            oqhms(uZktd)
    
    uZktd = zz99
    etmb1()
    etmb1()
    etmb1()
    
    

第3問

  • キーボードから入力した数字(点数)に応じて以下の評価を画面に出力するプログラムを作りなさい. ただし,50点から59点の場合は,あと何点あれば60点だったかも出力して下さい.
    そして,このプログラムをテストする際に,どのような入力を試せば良いのか考えて答えなさい(複数回答可).その際には,その入力を選んだ理由も答えなさい.
    点数評価
    0点から59点D
    60点から69点C
    70点から79点B
    80点から89点A
    90点から100点S
    上記以外の数Out of range
  • なお,入力する点数は整数のみとし,それ以外の型(例えばアルファベットなど)の入力は考えなくて良い.

第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", 89)
bkZrr1 = BkZrrSdrs("計算機実習1", 79)
oqhms(bkZrrz.mZld)
bkZrrz.rbnqd()
  1. 上記プログラムは,このままではエラーが発生します.どのようなエラーが起こるか答えなさい.
    そして,そのエラーの原因を答え,どのように修正するのが良いか説明しなさい.
    (以降の問いは,上記修正をしたプログラムについて考えること)
  2. 本プログラム(修正版)において,class2のオブジェクトがどのように生成されるか,手順を順番に1つずつ説明しなさい.
  3. 本プログラム(修正版)の「class1.score()」を実行したときの実行結果を答え,なぜそのような結果になるのかを説明しなさい.

第5問(第6問目に続きます)

  • 次の指示に従ったプログラムを作り,提出しなさい.
    • 数を数えるための変数(counter)を用意しなさい.初期値は0です.
    • 82回,以下の動作を繰り返しなさい.
      • 2つの変数xとyにそれぞれ乱数を用いて0から1までの実数を代入しなさい.
      • xの2乗の値とyの2乗の値を足した値が,1未満であれば変数(counter)を1足しなさい.
    • counterの値を繰り返しの回数(82)で割って4倍した値を,画面に出力しなさい.
  • 第6問目に続きます.

第6問(第5問目の続きです)

  • 第5問目のプログラムを作った上で,以下の指示に従いなさい.
    • 繰り返しの回数を100回(=102),1000回(=103),10,000回(=104),100,000回(=105),1,000,000回(=106)と変えたときの出力結果を報告しなさい.
      ※割り算の値(=繰り返しの回数で割る部分)も変更しましょう.
    • このプログラムが何を求めようとしているのか説明しなさい.特にcounterの値を繰り返した回数で割った後「4倍」するのが何を意味しているのか書くようにして下さい.

第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) + "です.")
  1. 上記プログラムは,このままではエラーが発生します.どのようなエラーが起こるか答えなさい.
    そして,そのエラーの原因を答え,どのように修正するのが良いか説明しなさい.
    (以降の問いは,上記修正をしたプログラムについて考えること)
  2. 本プログラム(修正版)を実行したときの実行結果を答え,scoreの中身がどのように変化するのかを説明しなさい.
  3. numberの値を10から,20, 50, 100,200, 500, 1000に変えた時に,実行時間がどのように変化したかを答え,その理由(関係性)を説明しなさい.
    (なお,数字が小さい時は,「2.88e-05」のように「e」とマイナスの数字(この例では-05)が後ろにつく時がある.これは,元の数字(2.88)に対して10-05倍した値を意味する.)