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