情報科学概論(1年生)
2005.12.12

Back to index page



  1. 本日の作業内容

  2. 出席確認

    電子メールで出席確認をします.宛先など以下の情報を用いてメールを作成し, 出席申告してください.なお,キーワードは授業中に紹介します.

    提出形式

    宛先 justice@mag.shimane-u.ac.jp
    件名 AttendA12-12_ruby_s0540**
    AttendB12-12_ruby_s0540**
    (Aクラス)
    (Bクラス)
    本文 学生番号
    氏名
    キーワード
     
    (改行)
    (改行)
    キーワードは授業中に紹介
    注意 「件名」および「添付書類名」の**をそのままにしないで,必ず自分の学生番号 に修正して下さい.また,ABクラス別は指示にしたがって下さい.

  3. インデント見本

    最近複雑な処理が徐々に加わってきたために,インデント(字下げ)に対する注意 が散漫になってきているようです.もう一度きちんとした字下げを確認して下さ い.次のスクリプトは見本です.

    n = 10
    count = 1
    
    for i in 0..n-8
      m = 1
      l = 2
      for j in 1..l
        if j == 1
          printf "%2d行目\n", count
        else
          count += 1
          printf "%2d行目\n", count
        end
      end
    
      for k in m..l
        count += 1
        printf "%2d行目\n", count
      end
      count += 1
    end
    
    printf "これでおしまい\n"
    

  4. エラーメッセージ

    エラーメッセージはプログラム作成において非常に重要な意味を持ちますが,み なさんはメッセージを読もうとしないことが多いように見受けられます.それは, 大きな損失です.そして,英語で書いてあってもパターンはいくつかしかないの で,それに慣れればすぐに分かるようになります.以下のページにいくつか代表 的な例をまとめていますので,参考にしてください.

    http://www.ecs.shimane-u.ac.jp/~nawate/lecture/gairon05/12-12/error.html

  5. while ループ

    注意

    これから扱う while ループは間違ったスクリプトを実行させると永久 に終了しない「無限ループ」となる可能性があります.スクリプトが終わらない 場合,S@pphireの「実行」ボタンがへこんだままになって,応答が無くなります. その場合には,その右隣の「停止」ボタンをクリックしてください.それをしな いで,S@pphire自身を終了させた場合,無限ループはそのまま動作し続けるので, そのようなことをくり返していると,授業の途中でパソコンがフリーズします. 昨年はそれでテストや期末試験が出来なかった人が何人か出ました.

  6. 応用

    while ループの醍醐味である不規則な増分の例を 次の例で試してみましょう.どのような処理を行うものかは,先ずはスクリプト を眺めて考えて下さい.その後で実行して確認して下さい.

    num = rand(10000) + 1
    printf "Cross sum of the number %d becomes ", num
    sum = 0
    
    while num > 0
      sum += num % 10
      num /= 10
    end
    
    printf "%d.\n", sum
    

    このスクリプトの動作に関しては,後程フローチャートと併せて説明するように しますので,アナウンスに注意して下さい.

  7. 演習

    • 先週学習した三重の for ループの内,次のもの while ループに変更してみましょう.

      for i in 1..3
        for j in i..4
          for k in j..5
            printf "i = %d, j = %d, k = %d\n", i, j, k
          end
        end
      end
      

          解答例

    • やはり先週学習した行列表示のスクリプト while ループに変えてみましょう.

      for i in 1..3
        for j in 1..3
          printf "A%d%d ", i, j
        end
        printf "\n"
      end
      

          解答例

    • すごろくのシミュレーションを行いましょう.サイコロを振って出た目の数 だけコマを進めます.「ふりだし」から「上がり」まで,途中にマスが20 あるとします.各回のサイコロの目と自分の進んだコマ数を表示し,上 がるまで続けるスクリプトを作成してみましょう.表示は次のようになる とします.

      スタート
      サイコロの目: 6,進んだコマ数:  6
      サイコロの目: 3,進んだコマ数:  9
      サイコロの目: 4,進んだコマ数: 13
      サイコロの目: 4,進んだコマ数: 17
      サイコロの目: 1,進んだコマ数: 18
      サイコロの目: 4,進んだコマ数: 22
      ゴール!
      

          解答例

    • 三角関数のcos xxが小さいときに,テイラー展開した結果 の高次の項を無視するにより 1 - x と 近似されます.この近似の誤差が1%以内に収まる最大のxを求めて みましょう.xの単位はラジアンで小数点以下3桁(小数第三位)までの数を扱うものと します.

          解答例

      ヒント:xの値を0から順に増やして行き,近似値と真値の差が0.01を越えたら終 了.

  8. 小テスト

    授業の終わりに小テストを実施します.アナウンスに注意していて下さい.

    Aクラス小テスト
    Bクラス小テスト

  9. 宿題

    宿題に関する案内が授業の終わりに紹介されます.注意にしたがって提出してく ださい.

    Aクラス宿題
    Bクラス宿題

  10. 本日の用語

    • while

      条件式が真の間繰り返しを行う形式の処理.

    • 増分

      条件式が比較演算を含む際に,カウンタ変数を変化させることが多く利用される が,その変化量.カウンタ変数を使わないで,不規則に変化させることも可能で, その際には増分としてではなく,より自由な処理を行える.


目次ページに戻る