C プログラミング 入門 第6回 — C 言語の初歩 (4):繰り返し (2) — 早稲田大学 創造理工学部 –建築・経営・資源– 第 6 回— C 言語の初歩 (4) — C プログラミング 入門 1 / 22 本日の目標 繰り返し文が適切に使える. for 文の復習 while, do while break, continue 多重ループ (小レポート課題) 第 6 回— C 言語の初歩 (4) — C プログラミング 入門 2 / 22 前回の復習:for 文 for 文の使い方 for(初期設定式;条件式;繰り返し式){ 繰り返し実行させたいこと } 【for 文の流れ】 初期設定式 繰り返し式 for 文は( )の中に,2つの 「;」で区切り3つの式を記述 実行させたい事 Yes 第 6 回— C 言語の初歩 (4) — 注意: 条件式 No 初期設定式は最初に1回だけ 実行される(通常,最初の値 を代入しておく) C プログラミング 入門 3 / 22 for 文使用プログラム例1 1から 100 までの合計を求める #include <stdio.h> int main(void){ int Sum = 0, i; /*Sum に入っている値を出力*/ printf("Sum=%dYn",Sum); for (i=1; i<=100; i=i+1){ Sum = Sum+i ; /*1つ1つ加算する*/ printf("+[%d] =%d Yn",i,Sum); /*足されている?*/ } printf("Answer is %d.Yn", Sum); return 0; } 変数の宣言は最初にまとめて,初期化もやってよい for 後の {} 内は,i = 1, 2, ..., 100 と繰り返し実行 「i=i+1」は「i++」と書いても同じ意味 繰り返し実行させたいことが1つだけの場合,{} は省略可 「Sum=Sum+i」は「Sum+=i」としてもよい 第 6 回— C 言語の初歩 (4) — C プログラミング 入門 4 / 22 for 文使用プログラム例2 1から 100 までの合計を求める #include <stdio.h> int main(void){ int Sum =0, i; printf("Sum=%dYn",Sum); for (i=100; i>=1; i--){ Sum = Sum+i ; /*1つ1つ加算する*/ printf("+[%d] =%d Yn",i,Sum); } printf("Answer is %d.Yn", Sum); return 0; } for 後の {} 内は,i = 100, 99, · · · , 1 と繰り返し実行 「i--」は「i=i-1」と書いても同じ意味 第 6 回— C 言語の初歩 (4) — C プログラミング 入門 5 / 22 便利な演算子 複合代入演算子:代入とセットになっている四則 演算 「a+=b: 「a=a+b」と同じ意味. 「a-=3」 : 「a=a-3」と同じ意味. インクリメント・デクリメント 「i++」 : 「i=i+1」と同じ意味(インクリメント) 「i--」 : 「i=i-1」と同じ意味(デクリメント) 例:インクリメント for(i=1; i<=100; i++) printf("%dYn",i); 第 6 回— C 言語の初歩 (4) — C プログラミング 入門 6 / 22 第 5 回小レポート課題 問題:次のファイルを作成し,Course N@vi から提出せよ. SN を以下で定義する: SN N ∑ (−1)k =4∗ 2k + 1 k=0 自然数 N を入力し,SN を計算するプログラムを作れ. 表示は小数第 6 位まで出力せよ. 表示は以下のようにする: Input positive integer:1000【Enter】 Sum is 3.14????. 第 6 回— C 言語の初歩 (4) — C プログラミング 入門 7 / 22 第 5 回小レポートの解答例(1) pifor1.c #include<stdio.h> int main(void){ int N,k; double Sum = 0.0; printf("Input positive integer:"); scanf("%d",&N); for(k=0; k<=N; k++){ if (k%2) Sum -= 1.0/(2*k+1); else Sum += 1.0/(2*k+1); } Sum *= 4; printf("Sum is %.6f\n",Sum); return 0; } 第 6 回— C 言語の初歩 (4) — C プログラミング 入門 8 / 22 第 5 回小レポートの解答例(2) pifor2.c #include<stdio.h> int main(void){ int N,k; double Sum = 0.0, t=-1.0; printf("Input positive integer:"); scanf("%d",&N); for(k=0; k<=N; k++){ t *= -1.0; Sum += t/(2*k+1); } Sum *= 4; printf("Sum is %.6f\n",Sum); return 0; } 第 6 回— C 言語の初歩 (4) — C プログラミング 入門 9 / 22 本日の目標 繰り返し文が適切に使える. for 文の復習 while, do while break, continue 多重ループ (小レポート課題) 第 6 回— C 言語の初歩 (4) — C プログラミング 入門 10 / 22 while 文 sum4.c #include <stdio.h> int main(void){ int Sum =0, i; i=1; /* 初期設定が必要 */ while (i<=100){ /* while 文による繰り返し */ Sum +=i; /* 繰り返し式も必要 */ i++; } printf("Answer is %d.Yn", Sum); return 0; } プログラムを写し,実行せよ.プログラム名は sum4.c とせよ. while 文は,for 文の初期設定式,繰り返し式がないもの 次のように書いても1から 100 までの合計を求めることができる 第 6 回— C 言語の初歩 (4) — C プログラミング 入門 11 / 22 do while 文(参考) sum5.c #include <stdio.h> int main(void){ int Sum =0, i=1; do { Sum +=i; /* 1つ1つ加算する */ i++; } while(i<=100); /* while() の後の「;」を忘れずに */ printf("Answer is %d.Yn", Sum); return 0; } do while 文は,条件式が最初はチェックされない do の後の{ }の中身が,最初は無条件で実行される while の後の( )内の条件式が真なら, { }内が繰り返し実行さ れる. 最初の1回は条件が必ず真と分かっている場合 第 6 回— C 言語の初歩 (4) — C プログラミング 入門 12 / 22 while, do while 文のまとめ while 文の使い方 while (条件式){ 繰り返し実行させたいこと } 条件式がチェックされ,偽なら while 文が終了 { }内の命令が実行される 条件チェックに戻る 第 6 回— C 言語の初歩 (4) — C プログラミング 入門 13 / 22 while, do while 文のまとめ do while 文の使い方 do { 繰り返し実行させたいこと } while(条件式); { }内の命令が実行される 条件式がチェックされ,偽なら do while 文を終了 { }内の命令の実行に戻る 第 6 回— C 言語の初歩 (4) — C プログラミング 入門 14 / 22 演習1 課題:以下のプログラムを作れ. 先週作った下記のプログラムを while 文を用いて書き直せ.SN を以下で 定義する: SN N ∑ (−1)k =4∗ 2k + 1 k=0 自然数 N を入力し,SN を計算するプログラムを作れ. 表示は小数第 6 位まで出力せよ. ファイル名は “piwhile.c” とすること. 表示は以下のようにする: Input positive integer:1000【Enter】 Sum is 3.14????. 第 6 回— C 言語の初歩 (4) — C プログラミング 入門 15 / 22 break プログラム例 for (i=1; i<=100; i++){ if(i==5) break; printf("%d,",i); } ループまたは switch 文から脱出する文 ループの中で,break を実行すると,そのループを強制的に終了する 多重ループの場合は,break 文が存在するループのみを終了する このプログラムでは以下のように表示される 1,2,3,4, 第 6 回— C 言語の初歩 (4) — C プログラミング 入門 16 / 22 continue プログラム例 for (i=1; i<=100; i++){ if(i==2) continue; if(i==5) break; printf("%d,",i); } ループにおいて,その回のみスキップさせる文 ループの中で,countinue を実行すると,そのループを繰り返す { } 内の残りの命令を実行せず,繰り返し式にジャンプする このプログラムでは以下のように表示される 1,3,4, 第 6 回— C 言語の初歩 (4) — C プログラミング 入門 17 / 22 演習2 課題:以下のプログラムを作れ. SN を以下で定義する: SN = 4 ∗ N ∑ (−1)k 2k + 1 k=0 誤差 error を入力し,|SN − 3.1415| < error となるような最小の N を表 示するプログラムを作れ. ファイル名は”piwhile2.c”とすること. 表示は以下のようにする: Input error :0.01【Enter】 N is 99. 第 6 回— C 言語の初歩 (4) — C プログラミング 入門 18 / 22 演習のヒント piwhile.c をコピーして編集すること 条件が満たされるまでループを回すには無限ループを用いるのが一 般的である.無限ループは例えば,以下のようにして使うこと: while(1){ やりたいことをかく. } |SN − 3.1415| < error は −error < SN − 3.1415 < error と同じ意味であることに注意せよ. 最小の N を表示するには最終的に何を表示させればよいか? 第 6 回— C 言語の初歩 (4) — C プログラミング 入門 19 / 22 第 6 回小レポート レポート提出について 次の指示されたプログラムを作成せよ ソースファイルは「06-1W1XXXXXX.c」とせよ タイトルは「第 06 回小レポート」とする 本文には(必要があれば)講義内容や成績に対する質問を書くこと 課題を提出するときには Course N@vi から提出(課題のソースファ イルを添付)せよ 提出するソースファイルはコンパイルが成功し所望の結果を得られ ることを確認してから提出すること 提出期限:5/19 14:00 ∼ 5/23 17:00 第 6 回— C 言語の初歩 (4) — C プログラミング 入門 20 / 22 本日のレポート課題 問題:次のファイルを作成し,Course N@vi より提出せよ 九九の表の中身を計算して,表示させるプログラムを作れ 表示は以下のようにする 1 2 3 4 5 6 7 8 9 2 4 6 8 10 12 14 16 18 3 6 9 12 15 18 21 24 27 4 8 12 16 20 24 28 32 36 第 6 回— C 言語の初歩 (4) — 5 10 15 20 25 30 35 40 45 6 12 18 24 30 36 42 48 54 7 14 21 28 35 42 49 56 63 8 16 24 32 40 48 56 64 72 9 18 27 36 45 54 63 72 81 C プログラミング 入門 21 / 22 本日のレポート課題(ヒント) 二重ループを使う.変数は2つ必要になる. int i, j; for (i=1;...;...){ for(j=1;...;...){ .... } .... } 整数の桁を揃えて表示するには,printf で”%3d” はじめは1行目を出力するプログラムを作り,それができたら2行 目を出力するプログラムを作ろう 123456789 第 6 回— C 言語の初歩 (4) — C プログラミング 入門 22 / 22
© Copyright 2024 ExpyDoc