90 likes | 232 Views
2.1 式. コードのほとんどすべて. 式?. 式ってどれのこと? コード内に存在する 値を表すあらゆる記述 のこと 値を返す 関数も式に含める ことが出来る. 10. count + 1. x. sin(0.05). cos(rad ) + x. 実際のコードでは. 実際のコードでは 複雑な式 が登場する ただの代入でも 関数と変数が入り乱れたり・・・ どんな様子で処理が進むのか見てみよう. // ニュートン法を用いて、 // 実数 d の平方根を取得する関数 double Sqrt( double d) { double x = d;
E N D
2.1式 コードのほとんどすべて
式? • 式ってどれのこと? • コード内に存在する値を表すあらゆる記述のこと • 値を返す関数も式に含めることが出来る 10 count + 1 x sin(0.05) cos(rad) + x 2.1 式
実際のコードでは • 実際のコードでは複雑な式が登場する • ただの代入でも関数と変数が入り乱れたり・・・ • どんな様子で処理が進むのか見てみよう // ニュートン法を用いて、 // 実数 d の平方根を取得する関数 double Sqrt(double d) { double x = d; for (int i = 0; i < 10; i++) { x = (pow(x, 2) + d) / (2 * x); } return x; } 2.1 式
実際のコードでは • Sqrt(2.0)として呼んだ時のことを考える • dは 2.0なので、x = dで xも 2.0になるよね • ループ1回目での、この行の処理を考えよう // ニュートン法を用いて、 // 実数 d の平方根を取得する関数 double Sqrt(double d) { double x = d; for (int i = 0; i < 10; i++) { x = (pow(x, 2) + d) / (2 * x); } return x; } 2.1 式
式評価の流れ(1) • まず xに代入したいけど、右辺が分からない • 右辺を左から順に解釈してゆく • 関数 powを実行したいが xが分からない • x の内容を読み込んで置き換える • 関数 pow を実行し、戻り値に置き換える x=(pow(x,2)+d)/(2*x); x=(pow( 2.0 ,2)+d)/(2*x); x=( 4.0 +d)/(2*x); 2.1 式
式評価の流れ(2) • 今度は dが分からない • d の内容を読み込んで置き換える • ただの定数になったので計算する • 続いて xが分からない • xの内容を読み込んで置き換える x=( 4.0 + 2.0 )/(2*x); x=6.0 /(2*x); x=6.0/(2* 2.0 ); 2.1 式
式評価の流れ(3) • ただの定数になったので計算する • ただの定数になったので計算する • 全体が完全に定数になったので代入 x=6.0/ 4.0 ; x=1.5 ; x= 1.5 ; 2.1 式
流れを把握する意義 • バカバカしいみたいだけども重要 • いざ自分で書くときに自然にできるようになろう • 特に関数を式に含めるのに慣れよう • いちいち変数に代入していては非効率だよね // こういう風にも書けるけど double a = pow(x, 2) + d; double b = 2 * x; x = a / b; // こっちのがスッキリしてるよね x = (pow(x, 2) + d) / (2 * x); 2.1 式
補足事項 • 見やすいコードを書こう(式編) • Wikiを見てね http://nanzanmmc.net/pc/lecture/game/add 2.1 式