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

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

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

最終テスト案内

第9回に説明した内容を再掲します.よく読んで理解して下さい.

【概要】

  • 日時:2026/01/16 第1講時
  • 1-609室にて「対面」で実施します.全員教室に来て下さい.
  • 原則としてオンライン受講はなしです.
  • 疾病・怪我など,対面で受けるのが無理な人はなるべく早いタイミングで小堀・藤井まで連絡をして下さい. その際,理由を明記し,それを証明する書類( 写真可 )を提出して下さい.Teamsチャットで結構です.
  • パソコンの接続番号と座席番号を最初に確認します( 第0問として用意します ).

    ※接続番号とはこのテスト独自の番号です.当日テストページにアクセスしたら表示されます

  • 接続したパソコンを使って解答します.その他タブレット,実習室の大学パソコンの利用は可能です.

    ※ただし,試験の途中で回答に用いるパソコンを変更すると接続番号が変わり, それに対応してテスト問題の内容が変更されます. そうなると最初からやり直すことになりますので注意して下さい.

  • 試験時間は,1講時開始5分後( 9時20分 )から 終了まで( 10時45分 )の85分です.

    ※遅刻入室は認めますが,終了時間は変わりません

  • 当日は開始前・開始直後の説明や回答開始の合図はありません. 時間になってコンテンツが有効になったらすぐに取り掛かって下さい.
  • responによる出席は取りません.テストの解答をもって出席とみなします. ※目視による人数確認はやります
  • トイレによる退室は認めません.用便は事前に済ませてください.

    ※緊急的な体調不良は遠慮せず申し出て下さい

  • 早く終えた人は提出可能です.退出は速やかに,静かにして下さい. 一旦退室したら,試験終了まで入室禁止とします. 忘れ物をした場合は試験終了まで室外で待って下さい.

    ※教室外の廊下で大声での会話はやめて下さい

  • 教科書,本実習コンテンツ,自分のパソコン内のデータを参照するのは可です.
  • ネットで検索するのも可ですが,禁止事項があります( 下記参照 ).

【不正行為】

以下の行為は不正行為とみなします.

  • 試験中に他の人と話をする・相談する
  • 他人のパソコン・ディスプレイを覗く
  • 他人の解答をコピーする
  • 他人に自分の解答をコピーさせる( コピーを許す )
  • ネットの質問掲示板・生成AI等で質問する

     ※検索時に勝手に示されるAI回答を参考にするのは可( 丸写しは不可 )

     ※簡単に言うと「調べる」行為は良い, 「質問する=答えを聞く」行為は禁止

  • スマートフォン,携帯電話の利用
  • 退出時に部屋に残って他の人と話をする

上記不正行為をした場合,最終テストの点数を0点とします.

【配点と回答方法】

  • この科目の点数配分は,最終テスト40点,平常点( ≒出席点 )30点,レポート30点です.

     ※全出席したとしてもレポート点と最終テスト点によっては不合格もある

  • 出席はresponの提出を集計します.
  • レポートは担当教員が評価します.TAさんのコメントは評価には含まれません.
  • 最終テストの問題は全部で7問あります. その中から4問を選んで解答して下さい.

    ※ただし問6は問5の続きのため,問6のみの解答はあり得ません.

  • 最終テストの評価は加算式で計算します.間違えた答えを書いても減点はしません.

    タイポやうっかりミスには部分点を出す場合があります.

  • 問題選択は4問に限定しません.それ以上選んで答えれば評価して加算します. ただし点数は満点で打ち切ります.
  • 解答の順番は問いません.解きやすい問題から解いて構いません..
  • 試験の提出先は,manaba小テスト >「最終テスト」です. 回答を問毎に記入する項目記入式です.
以上です.

最終テスト

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

  • 使用言語は講義で使用したpython( 3系 )とします.
  • プログラム作成課題は,指示通りプログラムを作って下さい.

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

  • プログラム提出の際,指示がない場合はソースを全て提出しなさい.

    ※指示に明示されていなくとも動作に必要な要素( 例えばimport文 )は 適宜補完した上で提出する.

  • 文,リスト,関数,モジュール等,実習で習った範囲を基本として下さい.

    ※特段の理由なく範囲にないモジュールや関数を使えば0点です

第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問

  • 2-1) 次のプログラムを実行したときに,1047,1147,1247と, 100ずつ増えた値を出力するように関数 func2() を作成しなさい.

    ★プログラムは,関数func2 の部分だけを提出しなさい.

    ※関数内での計算は条件分岐を使わず,「100ずつ増やす」方法で作成して下さい.

  • 2-2) なぜそのような動作をするのか説明しなさい.
  • 
    cde etmb1( ):
       ( /* ★この部分を回答する★ */ )
        oqhms( uZktd )
    
    uZktd = 836
    etmb1( )
    etmb1( )
    etmb1( )
    
    

第3問

  • 3-1) キーボードから入力した点数( 0~100 )に応じて以下の評価を画面に出力するプログラムを作り,ソースコード全体を提出しなさい.ただし以下の条件を満たすこと.
    1. 52点から59点の場合は,あと何点あれば60点だったかも出力する
    2. 入力する点数は整数のみとし,それ以外の型( 例えばアルファベットなど )の入力は想定しない
  •  

    点数評価
    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回,以下の動作を繰り返す.
      1. 乱数を用いて0以上1以下の実数を2つ生成し,2つの変数 x と y にそれぞれ代入する.
      2. x の2乗と y の2乗を足した値が1未満であれば,変数「counter」に1を足す.
    • ループが終わったら,counterの値を,繰り返し回数( 57 )で割り,それを4倍した値を画面に出力する.

第6問( 第5問の続き )

第5問のプログラムを作った上で,以下の指示に従いなさい.

  • 6-1) 第5問のプログラムにおいて繰り返し回数を100回( =102 ),1000回( =103 ), 10,000回( =104 ),100,000回( =105 ),1,000,000回( =106 ) と変えたときの出力結果を報告しなさい.

     ※割り算の値( =繰り返しの回数で割る部分 )も変更しましょう.

  • 6-2) このプログラムが何を求めようとしているのか説明しなさい. 特に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 )+ "です." )


  • 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」 を意味します