ファイルの作成

プログラミング入門
Copyright © the University of Tokyo
エディタ – Emacsの起動
ドックにあるLaunchpad
をクリック
赤枠で囲まれたEmacsをクリック
Copyright © the University of Tokyo
ファイルの作成
Emacs起動画面 赤枠で囲まれているFileをクリック
出てきた選択肢の中からVisit New Fileをクリック
Copyright © the University of Tokyo
ファイルの作成
赤枠で囲んだボタンをクリック
デスクトップをクリックしてから
New Folderをクリック
Copyright © the University of Tokyo
ファイルの作成
rubyと入力して
Createをクリック
ファイル名を指定する
ここではhello.rbとする
rubyフォルダが
作成される
Copyright © the University of Tokyo
ファイル作成
プログラムを入力(ここでは説明のため文字を大きくしている)
Copyright © the University of Tokyo
ファイル作成
赤枠で囲まれたボタンを押してファイルを保存
赤枠で囲まれているのが保存ボタ
青
ン 枠は別のファイル名にして新しいファイルを作る
(前のファイルは元のファイル名で残る)
Copyright © the University of Tokyo
ファイル作成
Emacsを終了するためには赤枠で囲まれている場所を
クリック
Copyright © the University of Tokyo
プログラムの実行
赤枠で囲まれたターミナルをクリック
cdコマンドでrubyディレクトリへ移動する
lsコマンドでrubyディレクトリ内のファイルを確認する
Copyright © the University of Tokyo
プログラムの実行
catコマンドでファイルの中身を確認
rubyコマンドでプログラムを実行
Copyright © the University of Tokyo
プログラムの間違い バグ
たとえば,puts ”Hello, ruby!” の代わりに,
putx ”Hello, ruby!” としてプログラムを実行すると
次のようなメッセージが出る
エラーの内容に従ってプログラムの間違いを修正する
作業 (デバッグ)を行う
Copyright © the University of Tokyo
出力文
出力命令:puts
puts の直後の項目が出力される
number.rb
puts 1
puts 2
puts 1+2
Copyright © the University of Tokyo
文字列
文字列:” ”で囲まれると文字列定数になる
string.rb
puts ”1+2”
puts 1+2
Copyright © the University of Tokyo
型と演算
型:値の種類
整数型, 実数型, 文字列型などがある
整数型:整数(小数点を含まない数)を表す型
実数型:浮動小数点数を表す型
小数点を含む数を近似的に表現する
二項演算子:2つの値の間の計算を表す
+(和), -(差), *(積), /(商), %(剰余)
演算子の優先順:*, /, %は+, -に優先する
左の演算子は右の演算子に優先する
()で囲まれた部分は優先される
Copyright © the University of Tokyo
型の演算
実数型と整数型で計算すると実数型になる
operator.rb
puts
puts
puts
puts
puts
5+3
5/3
5%3
5.0*3+2
5.0/3.0
Copyright © the University of Tokyo
文字列の結合
文字列型:文字の並びを表す型
文字列の結合演算子(+):2つの文字列を結合する
stringAdd.rb
puts
puts
puts
puts
文字列+文字列
12+34
34+12
”12”+”34”
”34”+”12”
Copyright © the University of Tokyo
文字列の結合
文字列と数値の結合はできない
stringError.rb
puts ”12”+34
実は Fixnum が整数型,String が文字列型で,
両方とも文字列型になれば + で文字列を結合できるが,
Fixmun を String に変換する方法が非明示的には
わからないと文句を言っている
Copyright © the University of Tokyo
文字列への変換
明示的な文字列への変換
文字列変換(.to_s):数値を文字列に変換する
数値.to_s
stringConvert.rb
puts ”1+2=”+3.to_s
puts ”12+34=”+(12+34).to_s
.to_sの処理が
優先される
Copyright © the University of Tokyo
変数と制御構造
変数:値を格納する名前付きの器
代入:変数に値を入れること
代入演算子:右辺の式を計算し, 結果の値を左辺の変数
に代入
変数名=式
制御構造:特定の条件に応じて実行を変える仕組み
真理値型:真偽(true, false)を表す型
Copyright © the University of Tokyo
変数と制御構造
関係演算子:2つの値の関係を判定し,真理値を返す
a==b: a=bならば真, そうでなければ偽
a!=b: a≠bならば真, そうでなければ偽
a>b: a>bならば真, そうでなければ偽
a<b: a<bならば真, そうでなければ偽
a>=b: a≧bならば真, そうでなければ偽
a<=b: a≦bならば真, そうでなければ偽
Copyright © the University of Tokyo
変数と制御構造
while文:条件が成立する間, 反復実行する
while 式 do 文 end
式が正しい場合は, 文を実行し, 再び式を評価す
る
式が正しくない場合には, 次に進む
Copyright © the University of Tokyo
1から10の和
sumUpTo10.rb
sum=0
i=10
while i!=0 do
sum=sum+i
i=i-1
end
puts sum
sumには総和が入る
(そのため0に初期化)
i=10として-1づつ減らし,10,9,8,7…1
として足し算をしている
sum=sum+iは代入を行い,sumの値を
更新
Copyright © the University of Tokyo
階乗の計算
factorial.rb
fact=1
i=1
while i<16 do
fact=fact*i
puts i.to_s+"! = "+fact.to_s
i=i+1
end
factには階乗の結果が入る
(そのため1に初期化)
iは階乗を求めたい数が入る
(今回は初期値1から15まで)
Copyright © the University of Tokyo
階乗の計算
Copyright © the University of Tokyo
変数と制御構造
if文:条件が成立した/しなかったときに実行する
if 式 then 文1 end
式が正しいときに文1が実行される
if 式 then 文1 else 文2 end
式が正しいときに文1が実行され,
正しくない場合に文2が実行される
Copyright © the University of Tokyo
絶対値の計算
absolute.rb
x = -5
if x>0 then
y=x
else
y=-x
end
puts "absolute(" + x.to_s + ")= " + y.to_s
x=-5をx=5に変更してプログラムを動かしてみよう
Copyright © the University of Tokyo
配列に対する計算
配列:複数個のデータ(要素)を数字で区別できる変数
サイズ:配列の全要素の個数 変数名.length
添字:配列の要素を区別するための数字(0から数字
が
与えられる) 変数名[添字]
配列の初期化:配列の全要素への代入
変数名=[値, 値, …]
Copyright © the University of Tokyo
配列の代入と値の確認
array.rb
a=[20, 12, 7, 10, 14, 40]
puts a.length
i=0
while i<a.length do
puts "a["+ i.to_s + "]=" +a[i].to_s
i=i+1
end
Copyright © the University of Tokyo
平均値の計算
average.rb
a=[20, 12, 7, 10, 14, 40]
sum=0.0
i=0
while i<a.length do
sum=sum+a[i]
i=i+1
end
puts "sum =" + sum.to_s
puts "average =" + (sum/a.length).to_s
sumには
総和が入り,
また小数点を
扱いたい
(そのため0.0
に初期化)
Copyright © the University of Tokyo
最小値と最大値の計算
minmax.rb
a=[20, 12, 7, 10, 14, 40]
minとmaxの初期値に関して
min=1000
max=-1
minの初期値に配列に現れる
i=0
要素のいずれよりも大きな数を
while i<a.length do
入れておけば、if文の条件によ
if a[i] < min then
り配列の最初の要素が入り全
min=a[i]
要素を比較できる
end
if a[i] > max then
maxも同様に配列に現れる
max=a[i]
要素のいずれよりも小さい数
end
を初期値に入れ、if文の条件
i=i+1
により配列の最初の要素が入
end
り、全要素を比較できる
puts "min =" + min.to_s
puts "max =" + max.to_s
Copyright © the University of Tokyo
最小値と最大値の計算
Copyright © the University of Tokyo
数値計算のアルゴリズム
教科書p.123~p.125に載っている平方根を求め
るプログラムをRubyで実行する
アルゴリズム1 反復による平方根の計算
アルゴリズム2 二分法による平方根の計算
アルゴリズム3 ニュートン・ラフソン法による平方根の
計算
Copyright © the University of Tokyo
反復による平方根の計算
sqrtIteration.rb
擬似コード
x=2.0
delta=0.0001
y=0.0
while (y+delta)*(y+delta)<x
do
puts y
y=y+delta
end
puts y
2の平方根を求めているのでx=2.0
精度を決めるdelta=0.0001とする
while内のputs yでyを更新する前の値を途中経過として出力
Copyright © the University of Tokyo
反復による平方根の計算
Copyright © the University of Tokyo
二分法による平方根の計算
sqrtBisection.rb
x=2.0
delta=0.0001
a=0.0
b=x
while (b-a)>delta do
puts a.to_s + " " +
b.to_s
c=(a+b)/2
if c*c > x then
b=c
else
a=c
end
end
puts a
擬似コード
x=2.0delta=0.0001は反復
によるプログラムと同様
while内のputsで更新する前
のaとbの値を途中経過として
出力
Copyright © the University of Tokyo
二分法による平方根の計算
Copyright © the University of Tokyo
ニュートン・ラフソン法による平方根の計算
擬似コード
曲線との接線
接線と軸との交点はaについて式変形する
と青矢印で示した式になる
Copyright © the University of Tokyo
ニュートン・ラフソン法による平方根の計算
sqrtNewtonRaphson.rb
x=2.0
delta=0.0001
y=x
while (x-y*y).abs / (2.0*y)>delta do
puts y.to_s + " " + ((x-y*y).abs/(2.0*y)).to_s
y = (y*y + x) / (2.0*y)
end
puts y
数値.absによって数値の絶対値に変換可能
x=2.0delta=0.0001は反復によるプログラムと同様
while内のputsで更新する前のyとwhileの条件の値を途中経過
として出力
Copyright © the University of Tokyo
ニュートン・ラフソン法による平方根の計算
Copyright © the University of Tokyo