9/30 数の計算と関数(3)・配列による画像の表示(1)


緊急連絡

センターからメールで連絡があったと思いますが,7/1以降パスワードを変更していない人は,ITC-LMS, UTask-Webを利用できなくなっています.また,明日から端末も利用できなくなります.ログインしたら,すぐに 学生: 学生共通アカウント / UTokyo Student Account のサイトを見てパスワードを変更してください.1時間以内にITC-LMS, UTask-Webが利用できるようになります. なお,パスワードを複数回変更して昔使ったパスワードに戻す行為は危険なのでやめてください.

なお,パスワード変更後にログインすると「キーチェーンのロック解除」というダイアログが頻繁に表れるようになります.教育用計算機システムのページの「問い合わせ」->「よくある質問」をたどるとパスワードを変更したら「キーチェーンのロック解除」が出るようになったに対処法が書かれています.古いパスワードを忘れていることが多いと思うので,その場合はページの一番下の「古いパスワードを忘れてしまった場合は,キーチェーンを削除して作り直す」の説明に従って下さい.

これでも治らない場合は,http://www.sodan.ecc.u-tokyo.ac.jp/?page_id=2614も参照してください.


前回の感想,質問より

Q.
sqrtのかわりに**(1/2)としたらエラーをはいた。**0.5にしたら動いたのでおそらくintとかそういう系のエラーであったと思われる。
A.
はい.1/2 は整数同士の割り算なので,0 になります.x**0は1なので一般にはsqrt(x)とは異なる結果になりますね.自分で気がついたのは素晴らしいと思います.

「エラーをはいた」と書いてありますが,

ruby check.rb ex01.rb
の実行で結果が合わなかったということでしょうか?
Q.
distanceのプログラムを作成しましたが、以下のようなエラーメッセージが表示されました。
irb(main):001:0> distance(x,y,u,v)
NameError: undefined local variable or method `x' for main:Object
from (irb):1
from /usr/bin/irb:12:in `
'
A.
distanceは2次元上の点(x,y)と(u,v)の間の距離を「計算する」関数を作成すれば良いということで,正しく定義されているようです.

ここでは「計算」をさせるのでdistanceの引数としては具体的な数値を与える必要があります.たとえば,点 (2,3)と点(4,5)の間の距離を計算するために,

distance(2,3,4,5)
のような入力を与えてみると期待する結果が返ると思います.
Q.
algo15にdistance,.rbとして保存して
load("./distance") 
を使っていたターミナルで入力しましたが、ファイルが展開されなかった。別タブで入り直してから入力するとちゃんと展開できたが、なぜそのようなことが起きたか疑問だった。
A.
rb の中から
load("distance.rb")
を実行して(質問では「.rb」が抜けていましたが) distance.rb をロードするには, という条件が満たされている必要があります.症状から考えて,2番めの条件が満たされていない時にロードに失敗したのだと思われます.このあたりは,はいぱーワークブックの14.4 コマンドを使ったファイル操作を読んで理解しておいてください.
Q.
irb(main):046:0> load ("./distance.rb")
SyntaxError: /home07/8176398389/algo15/distance.rb:1: syntax error, unexpected keyword_def, expecting end-of-input
endqrt((u-x)**2+(v-y)**2)
                ^
from (irb):46:in `load'
from (irb):46
from /usr/bin/irb:12:in `
'
このようなエラーが出て動きませんでした。
A.
これは,テキストエディタmiでファイルを作成した際に改行コードが「CR(Mac)」になっている時の症状ですね.前回の講義ページに改行コードを「LF(UNIX)」にして保存する方法を書いてあるので,そこを参照してファイルを保存し直してください.

前回の課題について


補足


投票システム

vote.rbをダウンロードして,ホームディレクトリに保存してください.ドックからターミナルを起動して,
ruby vote.rb 選択肢番号
のように使います.

今日の練習,投票

関連リンク


教科書の補足


今日の課題