プログラミング入門 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
© Copyright 2024 ExpyDoc