おさらい!for構文 ややこしさは天下一品 使いやすさも天下一品 まずは基本 書けるようになろう! おさらい!for構文 2 for文の前にwhile文の話 while 文は覚えているかな? ►いわゆる for じゃない方のループ構文だったよね ►while はループするための最低限の仕組み while ( 続ける条件 処理 } ) { ここが TRUE なら ループが続く ►これが while 文の基本形だね (単純すぎて基本もクソもないけど) おさらい!for構文 3 while文で数をカウント じゃあ while 文で数をカウントしてみよう (例えば配列を使う時はそうするよね?) ►とりあえず簡単に 0 から 9 まで表示しよう int i = 0; while ( i < 10 ) { printf("%d\n", i); i++; } ►この辺は簡単だね おさらい!for構文 0 1 2 3 4 5 6 7 8 9 続行するには何かキー 4 while文で数をカウント じゃあ while 文で数をカウントしてみよう (例えば配列を使う時はそうするよね?) ►とりあえず簡単に 0 から 9 まで表示しよう int 準備 i = 0; while ( i続ける条件 < 10 ) { 処理 printf("%d\n", i); カウンタ更新 i++; } 準備 続ける条件 処理 カウンタ更新 続ける条件 ►抽象化するとこんな感じになるね おさらい!for構文 処理 5 while文で数をカウント じゃあ while 文で数をカウントしてみよう (例えば配列を使う時はそうするよね?) ►とりあえず簡単に 0 から 9 まで表示しよう int i = 0; 回数 ) { while ( i < 10 処理 printf("%d\n", i); i++; } 0 から 回数 回だけ繰り返す ►特にカウントのときはこんな感じだね おさらい!for構文 6 while文の欠点 while 文でもループは作れるけど・・・ ►ただのカウントなのにゴチャゴチャしている ►よく使うんだから簡単にならないかなぁ ゴチャゴチャしているので・・・ ►ちゃんと読まないと分からない 良いコードというのは・・・ ►パッと見だけで分かるモノ いわゆる 読まなくても分かる コード おさらい!for構文 7 そこでfor文 まずは基本形をマスターしよう! (ややこしいから基本が大切だね!) ►さっきの while 文を for 文で書いてみよう for (int i = 0; i < 10 ; printf("%d\n", i); } i++ ) { ►こんな感じになるよね (場所が変わるだけなので難しく考え過ぎないこと) おさらい!for構文 8 そこでfor文 まずは基本形をマスターしよう! (ややこしいから基本が大切だね!) ►さっきの while 文を for 文で書いてみよう for (int 準備 i = 0; i続ける条件 < 10 ; 処理 printf("%d\n", i); } i++ カウンタ更新 ) { 準備 続ける条件 処理 カウンタ更新 ►さっきのように抽象化するとこんな感じ 続ける条件 処理 おさらい!for構文 9 そこでfor文 まずは基本形をマスターしよう! (ややこしいから基本が大切だね!) ►さっきの while 文を for 文で書いてみよう 回数 ; for (int i = 0; i < 10 処理 printf("%d\n", i); } 0 から i++ 回数 ) { 回だけ繰り返す ►特にカウントのときはこんな感じだね これが for 文の基本形だよ おさらい!for構文 10 基本形の注意点 初期値は 0 にすること ※ 1 にすると回数が減ってしまう ※配列は 0 から始まるので不等号で調整しない 回数 ; for (int i = 0; i < 10 処理 printf("%d\n", i); } 比較演算子は i++ ) { < にすること ※ <= にすると回数が増えてしまう ※配列は 0 から始まるので初期値で調整しない おさらい!for構文 11 基本形に慣れると コードが人間の言葉に見えるようになってくる ►熟練するというのはそういうことの積み重ねだね! (※断じて幻覚じゃないよ!幻覚はまた別のだよ!) 回数 ;回繰り返す for (int i = 0; 0から i < 10 i++ ) { 処理 printf("%d\n", i); } ►最初はこの形にトコトン慣れよう おさらい!for構文 12 適材適所 どこで使うの? どっちを使うの? おさらい!for構文 13 forとwhileの使い分け ここまでで使い方は分かったかな? ►たくさん書いて身に付けよう! while と for は、式の配置が違うだけ ►じゃあ片方要らない? より見やすくするために 使い分けよう! おさらい!for構文 14 forを使う場面 回数や数値が重要 かつ 数値の変化が単調 な場面 例えば・・・ ►n人の成績データの出力(配列の添字が1ずつ増える) ►10万回同じ処理を実行して時間を測る おさらい!for構文 15 whileを使う場面 回数や数値が重要でない あるいは 条件が複雑 な場面 例えば・・・ ►ファイルの終わりまで読み込む(長さが分からない) ►ループ終了の条件が3個くらいある(まとめると複雑) おさらい!for構文 16 スラスラ書くために コードを組み立てる戦略 おさらい!for構文 17 実際の問題例 現実に遭遇する問題を例に考えよう 問題 整数配列 と その長さ を与えると、 配列内の整数の平均値 を返す関数を作れ みんなも考えながら聞いてね おさらい!for構文 18 まずは関数の枠組みを作る 関数の枠組みを作ると ►引数などの前提条件がハッキリする ►最終的にどうしたいのかハッキリする 今回は・・・ ►整数配列 と その長さ が引数 ►平均値 が戻り値 double average(int array[], int length) { // // こんな感じになるね この中身に集中できる // } おさらい!for構文 19 いきなり頭から書かない どういう流れで答えまで行くのか考える なんとかして合計を求める とりあえず total という 変数にしようかな 配列の長さで割る これが答えだー! double average(int array[], int length) { int total; // // なんとかする部分 平均を求める問題が // 合計を求める問題に return (double)total / length; 変わった! } おさらい!for構文 20 問題を単純化する 前のページでやったことも単純化だね 配列の内容の合計を出したい すべての要素に アクセスすれば良いね 添字の数字を順に増やしたい これってループ? ここでは配列の全要素にアクセスしたいので ►回数や数値が重要(length 回アクセスする) ►数値の変化が単純(1つずつアクセスする) 15ページ でやった ここでは for 文を使うと良さそう! おさらい!for構文 21 最後まで抜け目なく for 文の基本形を覚えているかな? (忘れちゃった人は 10ページ あたりを復習しよう) double average(int array[], int length) { int total = 0; // 合計を求める for (int i = 0; i < length; i++) { total += array[i]; } // 合計を長さで割って返す return (double)total / length; } よく見ると total の初期値を設定している ►その変数自身との計算をする時は気を付けよう おさらい!for構文 22 おつかれさま これで for 文のおさらい講習はおしまい! 最後まで聞いてくれてありがとう! おさらい!for構文 23
© Copyright 2024 ExpyDoc