10/12 配列による画像の表示, 条件分岐と繰り返し(1)
前回の補足
- 理由があって他クラス聴講が必要な人は,「履修認定カード」に担当教員がサイン
する必要があるので,講義の前後か,途中の5分間の休みの間に「履修認定カード」
を持って担当教員まで申し出てください.
- 演習室内は飲食禁止です.ペットボトル等を持ち込む場合も,バッグの中にしまってください.
前回の感想,質問より
- Q.
- include(Math)を挿入しても当初sqrtが認識されなかったが、これはsqrtの直前のスペースが全角であるためであった。
- A.
- 全角スペースは見ただけでは分からないので分かりくいですね.プログラムを入力する時は,日本語入力をOFFにしての入力をお勧めします.
- Q.
- この式の虚数解となった場合にどのようなものが出てくるのか興味がわいた。また、判別式から実数解と重解、虚数解の判別をするプログラミングがどのようなものか気になった。
- A.
-
Ruby言語では,複素数を扱うComplexクラスというものも用意されています.
irb(main):001:0> require 'mathn'
=> true
irb(main):002:0> include(Math)
=> Object
irb(main):003:0> sqrt(-1)
=> (0+1i)
上の例のように mathn ライブラリというものを使うと計算の際に複素数で計算してくれます.
- Q.
- sqrtなどの関数を定義に入れる際に最初にinclude(Math)を入れてなくてチェックにひっかかってしまいました。これは必ず必要なのでしょうか、それともload後ターミナル上で使うまでにinclude(Math)をしておけばいいのでしょうか?
- A.
- 実は sqrt と書く代わりに必ず Math.sqrt と書くようにすれば
inlcude(Math)
は不要なのですが,講義ではsqrtと書ける方のメリットを重視して教材では
inlcude(Math)
を使うように統一しています.あと,irb上で実行するには,load後にターミナル上で使うまでに,
inlcude(Math)
を実行すれば良いのですが,check.rb でPASSするには,ファイルの先頭で書いておく必要があります.
- Q.
- 一番最後の行に書かれている値が返り値になるのでしょうが、調べたところreturnを書いてもいいそうなので次からはreturnを書こうと思いました。
- A.
- この教科書は,「一番最後の行に書かれている値を返り値とする」スタイルで統一的に書かれていますが,return を書いても構いません(Ruby言語としてはそう書くのが普通です).
前回の課題について
- 教材のダウンロード,課題の提出のため,ITC-LMSへのコース登録が必要になります.ITC-LMSへの登録方法に従ってコース登録してください.10/12 9:00現在 84名が登録しています.
- ITC-LMSの掲示板10/5課題,質問への書き込みは 10/12 9:0現在で 58名が済ん
でいます.
- distance.rb, yard_pound.rb, quadratic.rb を提出してくれた人が多かったのですが,自分で先の分の練習問題を解いた人もいました.
- 「2*a」のように乗算記号「*」が必要なのに「2a」と書いたというミスをしたという書き込みが目立った.
- 目立った誤りは,改行コード(が「LF(Unix)」ではなく「CR(Mac)」でファイル保存されていた),整数同士の除算(余りを切り捨てる除算で計算されてしまう),include(Math)忘れでした.
今日の練習,投票
授業の登録方法
- 教材のダウンロード,課題の提出のため,ITC-LMSへのコース登録が必要になります.ITC-LMSへの登録方法に従ってコース登録してください.
- Utask-Webでの履修登録は別に必要になります.
講義資料
- 教科書は情報科学入門 2700円(税込み) になります.正誤表が公開されているので,そちらも参照してください.また,電子版も発売されています(書籍版よりも若干安くなっているようです).
- 講義スライドはITC-LMSで「アルゴリズム入門(水4)」を選んで「教材」を選択するとダウンロードできるようにする予定です.
講義フォルダの作成
- 講義に関連したファイルはホームフォルダ直下に置くのではなく,講義専用のフォルダをalgo16 という名前で作成してください.ターミナルでフォルダを作るには,
mkdir algo16
のようにします.そして,ターミナルを開くたびに
cd algo16
と入力してからirbを動かしてください.詳しくは,はいぱーワークブック「14.4 コマンドを使ったファイル操作」を参照してください.
配付プログラムのダウンロード
投票システム
vote.rbをダウンロードして(「リンク先のファイルを別名で保存」で,ホームフォルダの下のalgo16を選択(なければ作る).".txt"を「追加しない」を選ぶ),ホームディレクトリに保存します.ドックからターミナルを起動して,
cd algo16
を済ませてから,
ruby vote.rb 選択肢番号
のように使います.
irbを使いながら(一旦終了せずに),投票システムも使うには,ターミナルのメニューバーの「シェル」->「新規タブ」を選ぶか,[Command]+[T]で別のタブを開いて(あるいは[Command]+[N]で別のウィンドウを開いて),投票システムを使うことをお勧めします.このあたりのことは,「はいぱーワークブック」の15.4 ターミナルの便利な使い方に書いてあるので参考にしてください.
テキストの補足
- ターミナルでは,メニューバーから,「シェル」->「新規ウィンドウ」あるいは,「コマンドキー(⌘)」+「N」で新た
なターミナルウィンドウを開くことができます.
ウィンドウが多くなるのが面倒な人は,「シェル」->「新規タ
ブ」あるいは「コマンドキー(⌘)」+「T」で同じウィンドウ内に新しいタブでターミナルを開くことができます.
ターミナルを開くたびに
cd ~/algo16
と入力してください.これらの機能を使うと,irbを抜けずにvoteできます.
ターミナルの基本的な使い方は,はいぱーワークブックの15.2 ターミナルの基本的な使い方を,より高度な使い方は,15.4 ターミナルの便利な使い方を参照してください.
cdというコマンドと「~」の意味は,はいぱーワークブックの14.4 コマンドを使ったファイル操作の14.4.1 ディレクトリを読むと分かります.
- miを使う場合に改行コードがCR(Mac)になっている場合は,LF(UNIX)にしてから保存してください.
- Webブラウザ上で,ターミナルの実行,Ruby関数の実行,ファイルの編集ができる iruby が利用可能になっています.ターミナル上で,
iruby notebook
を実行すると,Webブラウザ上で対応するタブが開きます.
- 第1章で,irbを起動直後に,
include(Math)
を入力するように書いています.
毎回入力するのが面倒な場合は,ホームディレクトリの下に「.irbrc」というテキストファイルを作り,その中に
include(Math)
と書いておくと,irb起動時にこのファイルの中身を実行してくれるので,毎回指定しなくても大丈夫です.ただし,このファイルの実行中にエラーが出ないように正しく記述剃る必要があります.また,
Math.sqrt(2)
のような形で指定すれば,
include(Math)
は不要です.
- ある程度大きなプログラムを作る場合は,テキストエディタを使って入力してファイルに保存しておくと,後から修正したり再利用が容易におこなえます.テキストエディタの説明は,はいぱーワークブック「8. テキストエディタ」を参照してください.
- この講義で作成したプログラムのファイルは自分のホームディレクトリ(ホームフォルダ)の下に「algo16」という名前のディレクトリ(フォルダ)を作って,その下に置くようにしています.スライドや教科書でファイル名が指定されている場合もあるので,その場合は指定されたファイル名を使うようにしてください.
- miのRubyモードが現在標準では利用できないようです.mi 用モード(今野滋さんのページ)から自分でインストールしても良いのですが,講義受講者は,一度miを起動して終了後に,ターミナルで
cp -rp /home/5320954122/Ruby ~/Library/Application\ Support/mi/mode/
を実行してからmiを立ち上げるとRubyモードが利用可能なモードとして加わります.
- miの改行コードの変更は,miを立ち上げてメニューバーから「mi」->「モード設定」を選んでください.
の画面が出るので,モードを「Ruby」にして,改行コードを「LF(UNIX)」にして,ウィンドウを閉じてください.以降は,ファイル作成のさいに,「ファイル」->「新規」->「Ruby」で作成すると正しい改行コードが設定されているはずです.
- Finderの中でダブルクリックするだけでmiを起動できるようにしたい人は,Rubyソースファイルをmiと関連付けするを読んで設定してください.
- 情報科学入門: Rubyを使って学ぶ / 配付プログラムの中には練習問題のチェックプログラムが含まれています.たとえば,第1章の練習問題をテストする時には,同じディレクトリに,練習問題で作成したプログラムを教科書で指定されたファイル名で置いて,
ruby check.rb ex01.rb
と実行すると,関数を与えた時の入力と出力があっていることが確認できます.
詳しくは,補足説明 (練習問題確認プログラムの使い方)を御覧ください.
今日の課題
- 講義中に投票を求められるので,投票システムを使って投票をしてください.
- ITC-LMSの掲示板10/25の課題,質問に以下の内容を書き込んでください.プログラムを除いて100文字以上は書き込みをお願いします.
- 講義で用いた練習問題に対して自分が書いたプログラムと説明.プログラムが正しく動かなかった場合も,動かないプログラムとエラーメッセージを書きこんでください.講義で用いなかった教科書の練習問題に対して書きたい人は書きこんでも構いません.
自宅で自習をする人のために
アルゴリズム入門共通資料の中に講義で使うRuby言語の処理系のインストール法があります.