授業資料/02 の変更点


#contents

* Ruby の簡単なガイド: イントロダクション [#ye3b4297]

Ruby とは,結構良くできているスクリプト言語,といえばいいのか.
とりあえず簡単なことを簡単にできる,コンピュータ言語と思っていただけばよい.
何かを数える,なんていう用途にはピッタリだ. 

以下,まずは簡単にガイドするので,実際に動かしながら試してみよう.

* ごく簡単な使い方: 初めてを試してみよう [#v71b6ec4]

Ruby では,プログラムをテキストファイルとして作成して,それを読み込むという形を
とるのがまずは簡単だ.
そこでそのようにガイドしよう.

&ref(./notes.png); 次の手順に従って,実際にやってみよう.

+ ''まずは Ruby が動く環境'' が必要だ.
阪大教育用端末では,cygwin が Unix環境の代用として使えるので,cygwin を立ち上げよう.
こいつは一旦立ち上げたら授業が終わるまで使いっぱなしで構わない.
&br;&br;
+ これから作業するディレクトリ(フォルダ)を決めよう.
これから作るファイルが消えたりしないところにしよう.
また,フォルダ名に日本語が入っていると cygwin がとても面倒なことになるので,
そうでない場所にしよう.
&br; 
&ref(./warning.png); 残念ながら,コンピューティングにおいて日本語は「支障」となることがある. こうした作業はなるべくアルファベットでするよう,気をつけておこう.
&br; 
そして,cygwin の作業ディレクトリもそこに一致させよう.
具体的には,cygwin の中で~
  cd "フルpathでのフォルダ名"
とすればよい.
&br;&br;
+ 次にテキストエディタを立ち上げよう.
windows だとノートパッドでもよい.
Emacs が使えるという人は Meadow がよいね.~
&ref(./warning.png); 良いエディタに習熟すると,作業効率がとても高くなる. これからのことを考えると,「良いエディタ」を選ぶことは実はとても重要だ.  空いた時間を使って調べておこう.
&br;&br;
+ &size(18){''初めてのプログラムを書こう''};
テキストエディタで次のように一行だけ書いてみよう. ~
  p 3+5
&ref(./warning.png); この行をきちんと「改行」しておくこと! 改行してない行は認識されずにプログラムとして読み込まれないかもしれない…
&br;&br;
+ せっかく書いたプログラムだ,名前をつけて保存しよう.
エディタの機能で「save」とか「保存」を選べば名前をつけてファイルとして保存できる.
ファイル名は今回は ''test.rb'' としておこう.
&br;&br;
+ &size(18){''プログラムを動かしてみよう''};
cygwin の中で,~
  ruby -w test.rb
と打ってみよう. うまくいけば
> 8
<という答えが返ってくるだろう.
&br;&br;
+ あとはこの場合,''test.rb'' ファイルの中身を適当に書き換えてまた~
  ruby -w test.rb
としてみることを繰り返せばいろいろチャレンジできる.

* 超簡素な Ruby 文法解説 [#oa58fbe8]

| 名称 | 解説,注意 | サンプル |h
| 数学したい | 数学計算を行なう準備(1度でよい) | &color(blue){include Math}; |
|  - | &color(blue){pp}; を使うための準備(1度でよい) | &color(blue){require 'pp'}; |
| 表示1 | 画面に内容を出す | &color(blue){p ほにゃらら}; |
| 表示2 | &color(blue){p}; より見やすい  | &color(blue){pp ほにゃらら}; |
| 表示3 | 丁寧に表示したい | &color(blue){print ほにゃらら}; |
| 代入 | 変数に数字などを入れる | &color(blue){a = 3.5}; |
| 掛け算 | - | &color(blue){a*b}; |
| べき乗 | - | &color(blue){2**3 }; (8になる)|
| 絶対値 | - | &color(blue){a.abs }; (a の絶対値)|
| 切り上げ | - | &color(blue){a.ceil }; (a の切り上げ)|
| 対数 | 自然対数 | &color(blue){log(a)}; |
| 指数 | -  | &color(blue){exp(a)}; |
| 乱数 | 0以上1未満 | &color(blue){rand()}; |
| 変数に足す | - | &color(blue){a += 1}; (a に1足す)|
| 変数をコピー | - | &color(blue){a = b}; (a に b の中身をコピー)|
| 文字列をコピー | 文字列はちと特殊だよ | &color(blue){a = b.dup};(a に b の中身をコピー) |
| 文字数 | 全部で何文字? | &color(blue){s.length}; |
| 単なる集合 |  -  |  &color(blue){[a,b,3] };など |
| 集合の要素数 | - | &color(blue){group.size}; |
| 集合の要素 |  数え方が1ずれる  |  &color(blue){a[3] };は4番目の要素を指す |
| 集合に要素追加 | - | &color(blue){group.push(a)}; |
| 最大, 最小値 | 集合の中身の最大, 最小値 | &color(blue){[3,5,2].min }; など|
| 数えながら繰返す | ループだね | &color(blue){for i in 1..5 do ほにゃらら end}; |
| もしも | 条件があうなら動作 | &color(blue){if ほにゃらら then ほい else ほい2 end}; |
| もしもループ | 条件があう間はループ動作 | &color(blue){while ほにゃらら do ほい end}; |
| 一致してる? | 比較する | &color(blue){a == b}; |
| 関数作成 | できると便利 | &color(blue){def ほにゃらら(引数) 中身 end}; |
| 関数の出力は | 関数定義の中で使おう  | &color(blue){return 出力};|
| 動作時のパラメータ | &color(blue){ruby test.rb 3 10}; とするなど| &color(blue){ARGV[i]}; で i+1個目  |
| | |  |
| コメント | メモ書きができるよ | &color(blue){# ほにゃらら}; |
| ''注意'' | 大文字小文字は区別あるよ |  |
| ''注意'' | 変数名を大文字で書くと中身変更不可 |  |
| ''注意'' | 大域変数は \verb+$+ で始める |  |
| ''注意'' | 大域変数は $ で始める |  |

* 超簡単なサンプル [#db19e9d4]

** 平均を計算してみる [#o4e59372]

次の数字の平均をとってみよう(答えは 1.3 になるはずだ).
1.2 -3.0 3.3 4.1 0.9

特に難しいアルゴリズムや仕組みを考える必要はないだろう.

全部足して,要素数で割る. それから表示する.

それだけである.
&ref(./notes.png); まずは,自分でプログラムを組んでみることにトライしてみよう.

例えば,(上に紹介した文法だけで組んでみると)次のようなプログラムがサンプルとして挙げられるだろう.
#highlighter(language=ruby,number=off,cache=on){{
include Math

a = [1.2, -3.0, 3.3, 4.1, 0.9]

sum = 0.0
for i in 1..a.size do
  sum += a[i-1]
  end

average = sum/a.size

p average
}}
どうだろうか. 自分でうまくできただろうか.

おそらく,「全部足す」ところが初学者には難しかったりするだろう.
ぱっとわからなくてもよいから,上のサンプルの該当部分をじっくりみるなどして,
CENTER:&size(24){''何が起きているか,なんとなくでも理解しておこう''};

** 分散を計算してみる [#j5458e9f]

今度は次の数字の分散をとってみよう(答えは 6.1 になるはずだ).
1.2 -3.0 3.3 4.1 0.9

&ref(./notes.png); まずは,自分でプログラムを組んでみることにトライしてみよう.

サンプルプログラムはあえて載せないでおこう.
初学者がこの分散がうまく計算できるようなら,だいぶ筋はよいと思う.

* レポート [#s3db570d]

本日受けた講義および行った実習について,簡単にまとめた報告をせよ.
もちろん各自の

+ 所属(学部,学科)
+ 学籍番号
+ 学年
+ 氏名
+ 日時
+ 肝心のレポート内容(得た知見,作業について気づいたこと等も)

を書くのを忘れないように. 

* about Icons, ClipArts [#q0a6c0c1]
Some icons in this page are downloadable at [[ICONFINDER:http://www.iconfinder.net/]].

The "note" icon &ref(./notes.png); designed by [[Marco Martin:http://www.notmart.org/]] is distributed with the LGPL licence,
the "warning" icon &ref(./warning.png); designed by [[Alexandre Moore:http://nuovext.pwsp.net/]] with the GPL licence
and the "triangle" icon &ref(JNorth_arrow-right-sm.png); designed by [[Joseph North:http://sweetie.sublink.ca/]] is distributed with the [[Creative Commons (Attribution-Noncommercial-Share Alike 3.0 Unported):http://creativecommons.org/licenses/by-nc-sa/3.0/]] licence.

Some clip arts used in this page are downloadable at [[Open Clip Art Library:http://www.openclipart.org/]].
We deeply appreciate their superb works. With licence, they describe that "the actual clipart content on open clipart library is Public domain" in the web.

// ━┃┏┓┛┗┣┳┫┻╋


// コマンドライン入力は「行頭をブランクで始める」.
// コマンドライン出力は「行頭を > で始める」.

// 実習アイコン
// &ref(./notes.png); 

// 注意アイコン
// &ref(./warning.png);

// Link アイコン
// &ref(JNorth_arrow-right-sm.png);