11/1 関数から「計算」へ(2), アルゴリズムと計算量(1)


前回の補足


前回の感想,質問より

Q.
prime(99991)を計算しようとすると動かなかった. これとはべつのコードでprimeを定義すれば99991も処理できるようにんるのでしょうか?
A.
はい.
SystemStackError: stack level too deep
	from sod.rb:6:in `sod'
	from sod.rb:9:in `sod'
       ...
のようなエラーが出ると思いますが,関数 sod が再帰的に定義されていて,実行時に呼び出しの深さが深くなりすぎると(この場合では10万位),このようなエラーが出てしまいます. 関数sodを繰り返しで書き直したり,別の方法で素数かどうかを判定するようにすれば,もっと大きいnについても計算できるようになります.
Q.
matchで本当に調べられているのか、確かめるためにmatch(hogehoge,hoge)と入力してみたらうまくできませんでした。なんでだろうと思って出てきた注意をみてみたらhogehogeなる未定義の変数が存在していると捉えられたようです。文字列はだぶるくおーてーしょんまーくで括らないと文字列だと思ってくれないのですね。まったくコンピュータは頭が固いなあと思いました。
A.
「頭が固い」というのは別の言い方をすると,「書いた通りに動く」という点でメリットにもなりますね.プログラミング言語の文法は「状況によって別の意味で解釈される」ことがないように定められています.

前回の課題について

今日の練習,投票

授業の登録方法


講義資料


講義フォルダの作成



配付プログラムのダウンロード


投票システム

vote.rbをダウンロードして(「リンク先のファイルを別名で保存」で,ホームフォルダの下のalgo17を選択(なければ作る).".txt"を「追加しない」を選ぶ),ホームディレクトリに保存します.ドックからターミナルを起動して,
cd algo17
を済ませてから,
ruby vote.rb 選択肢番号
のように使います.

irbを使いながら(一旦終了せずに),投票システムも使うには,ターミナルのメニューバーの「シェル」->「新規タブ」を選ぶか,[Command]+[T]で別のタブを開いて(あるいは[Command]+[N]で別のウィンドウを開いて),投票システムを使うことをお勧めします.このあたりのことは,「はいぱーワークブック」15.4 ターミナルの便利な使い方に書いてあるので参考にしてください.


テキストの補足


今日の課題



第1-4章まとめ課題


昨年度の作品

昨年度の作品が第1-4章まとめ課題にあります.

自宅で自習をする人のために

アルゴリズム入門共通資料の中に講義で使うRuby言語の処理系のインストール法があります.