Presentation is loading. Please wait.

Presentation is loading. Please wait.

プログラミングⅡ 第2回.

Similar presentations


Presentation on theme: "プログラミングⅡ 第2回."— Presentation transcript:

1 プログラミングⅡ 第2回

2 今日の内容 前回の課題説明 制御文 for文 while文 do while文

3 前回の課題 10月2日の課題(No.1 – No.3) pdfファイル

4 前回の課題 課題No.1 整数値15から37を引いた値を計算して「15から37を引いた値はー22です.」と表示するプログラムを作れ。

5 前回の課題 課題No.2 x,yをキーボードから入力し,以下の式を計算・表示するプログラムを作成せよ(演算の優先順位に注意

6 前回の課題 課題No.3 テストの点数をキーボードから入力させて,その値が 100点以下80点以上ならば,「素晴らしい」,
 100点以下80点以上ならば,「素晴らしい」,  79点以下70点以上ならば,「Goodです」,  69点以下60点以上ならば,「OKです」  60点未満ならば,「がんばりましょう」 と判定・表示するプログラムを作成せよ.

7

8 繰り返し制御 ある処理を繰り返し行う 開始 開始 処理1 処理1 処理2 処理2 処理3 処理3 終了 終了 n回 繰り返す
ある条件の間,繰り返す 処理3 処理3 終了 終了

9 繰り返し制御の方法 for文を使う方法 while文を使う方法 do-while文を使う方法

10 for文 希望する回数だけ処理を繰り返し行う for (初期設定式; 継続条件式; 再設定式) { 文1; 文2; … } (例)
for ( i = 0; i < 10; i++ ) { 文; }

11 for文 for (初期設定式; 継続条件式; 再設定式) 初期設定式:最初のみ実行される式 継続条件式:繰り返し行うための条件式
(この条件式が真の間は繰り返す) 再設定式:一回のループ終了時に実行される式

12 for文 for ( i = 初期値; i < iの上限値; iの増加量) 初期値:変数iの初期値

13 for文 for ( i = 0; i < 3; i++ ) { 文A; } 文B; 0→ i i < 3 文A
次行に書いてもOK for ( i = 0; i < 3; i++ ) { 文A; } 文B; 0→ i FALSE 3回繰り返す i < 3 TRUE 文A iを1増やす i + 1→ i 文B

14 for文のプログラム int i; printf(“--- for文開始\n”); for (i = 0; i < 10; i++) { printf(“iの値は%d\n”,i); } printf(“--- for文終了\n”); --- for文開始 iの値は0 iの値は1 iの値は2   … iの値は9 --- for文終了 iの値は10

15 for文のプログラム int i; printf(“--- for文開始\n”); for (i = 0; i <= 10; i++) { print(“iの値は%d\n”,i); } printf(“--- for文終了\n”); printf(“iの値は%d\n”,i); ループが1回増える(11回) --- for文開始 iの値は0 iの値は2   … iの値は8 iの値は9 iの値は10 --- for文終了 iの値は11

16 for文のプログラム int i; printf(“--- for文開始\n”); for (i = 0; i < 10; i+=2) { print(“iの値は%d\n”,i); } printf(“--- for文終了\n”); printf(“iの値は%d\n”,i); iは2ずつ増えている --- for文開始 iの値は0 iの値は2 iの値は4   … iの値は8 --- for文終了 iの値は10

17 for文のプログラム int i; printf(“--- for文開始\n”); for (i = 3; i < 10; i+=2) { print(“iの値は%d\n”,i); } printf(“--- for文終了\n”); printf(“iの値は%d\n”,i); iの初期値は3になった iは2ずつ増えている 最終的にiは11 --- for文開始 iの値は3 iの値は5 iの値は7 iの値は9 --- for文終了 iの値は11

18 for文のプログラム int i; printf(“--- for文開始\n”); for (i = 10; i > 0; i--) { print(“iの値は%d\n”,i); } printf(“--- for文終了\n”); printf(“iの値は%d\n”,i); iの初期値は10 iは1ずつ減少 最終的にiは0 --- for文開始 iの値は10 iの値は9   … iの値は1 --- for文終了 iの値は0

19 1から10までの和を求めよう 開始 0 → sum 1→ i i <= 10 sum + i → sum i + 1→ i 終了
10回繰り返す FALSE i <= 10 sumにiを加える TRUE sum + i → sum iを1増やす i + 1→ i 終了

20 1から10までの和を求めてみよう int i; int sum; sum = 0; for ( i = 1; i <= 10; i++ ) { sum = sum + i; printf(“ i = %d sum = %d\n”,i,sum); } printf(“1から10までの和は%dです\n”,sum); sumとiの和を,sumに代入 sum += i;

21 1から10までの奇数だけの和を求めてみよう int i; int sum; sum = 0; for ( i = 1; i <= 10; i+=2 ) { sum += i; printf(“ i = %d sum = %d\n”,i,sum); } printf(“1から10までの奇数の和は%dです\n”,sum);

22 1から10までの奇数だけの和を求めてみよう int i; int sum; sum = 0; for ( i = 1; i <= 10; i++ ) { if ( i % 2 == 1 ) sum = sum + i; printf(“ i = %d sum = %d\n”,i,sum); } printf(“1から10までの奇数の和は%dです\n”,sum);

23 多重ループ 九九の表を表示するプログラムを作りたい

24 1の段 for ( i = 1; i <= 9; i++) { printf(“%d ”, i); }

25 2の段 for ( i = 1; i <= 9; i++) { printf(“%d ”, i*2); }

26 1から3までの段をまとめて表示 問題3: 『 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』 と表示するプログラムを作りなさい.

27 多重ループ ×3 int i; for (i = 1; i <= 9; i++) { printf(“%d “, i*?); }
int i; for (i = 1; i <=9; i++) { printf(“%d “, i); } printf(“\n”); printf(“%d “, i*2); printf(“%d “, i*3); int i; for (i = 1; i <= 9; i++) { printf(“%d “, i*?); } printf(“\n”); ×3 まとめる! 「?」は1回目は1,2回目は2,3回目は3、という具合に変化すれば良い

28 多重ループ for (j = 1; j <= 3; j++) { for (i = 1; i <= 9; i++) {
printf(“%d “, i*?); } printf(“\n”); i*j); }

29 多重ループ for (j = 1; j <= 9; j++) { for (i = 1; i <= 9; i++) {
printf(“%2d “, i*j); } printf(“\n”); }

30 多重ループ for (… ) { for (…) { 文; }

31 while文のプログラム while (継続条件式) { 文1; 文2; … } 継続条件式が真(0以外) ⇒ 文1,文2,…を繰り返す
継続条件式が真(0以外) ⇒ 文1,文2,…を繰り返す 継続条件式が偽にならないと,ループから抜け出せない

32 while文のプログラム int n; n = 1; while (n < 10) { printf(“好きな数を入力してください”); scanf(“%d”,&n); printf(“入力値は%d\n”,n); } printf(“やっとwhile文を抜けましたね\n”);

33 while文のプログラム(無限ループ) TRUE while (1) { printf(“好きな数を入力してください”); scanf(“%d”,&n); printf(“入力値は%d\n”,n); } printf(“やっとwhile文を抜けましたね\n”); 無限ループ (いつまで経っても抜けられないループ)

34 while文のプログラム(break) 無限ループ while (1) { printf(“好きな数を入力してください”); scanf(“%d”,&n); printf(“入力値は%d\n”,n); if ( n == 1192 ) break; } printf(“やっとwhile文を抜けましたね\n”); ループを強制的に抜ける

35 while文のプログラム(break) while (1) { printf(“暗証番号は?”); scanf(“%d”,&n); if ( n == 1192 ) break; else printf(“暗証番号が間違っています\n”); } printf(“暗証番号を確認しました\n”);

36 繰り返し制御(1からnまでの和) 開始 0 → sum 1→ i i <= n sum + i → sum i + 1→ i 終了
FALSE i <= n sumにiを加える TRUE sum + i → sum iを1増やす i + 1→ i 終了

37 繰り返し制御(1からnまでの和) for文を使う方法 sum = 0; for ( i=1; i <= n; i++ ) {
n回繰り返す (for文実行条件) for文を使う方法 sum = 0; for ( i=1; i <= n; i++ ) { sum += i; // sum = sum + iでも同じ } 初期値 増加量

38 繰り返し制御(1からnまでの和) while文を使う方法 sum = 0; i = 1; while ( i <= n ) {
sum += i; // sum = sum + iでも同じ i++; } 初期値 n回繰り返す (while文実行条件) 増加量

39 繰り返し制御(1からnまでの和) for文を使う方法 for (式1;式2;式3) { 文; } while文を使う方法 式1;
文; 式3;

40 繰り返し制御(1からnまでの和) 開始 開始 0 → sum 0 → sum 1→ i i <= n sum + i → sum
合計 i : 1, 1, n FALSE i <= n sum + i → sum TRUE sum + i → sum 合計 i + 1→ i 終了 終了

41 繰り返し制御(1からnまでの和) 合計 i : 1, 1, n 開始 0 → sum ループ端 sum + i → sum 終了 合計
増加量 0 → sum ループ端 合計 i : 1, 1, n 合計 i : 1, 1, n sum + i → sum 変数名 n回繰り返す 合計 初期値 終了

42 繰り返し(do-while文) int main() { int i, n; int sum = 0; printf(“n = “); scanf(“%d”,&n); 負の値が入力されたときは,繰り返す nに負の値を入力されると,計算できない nに正の値が入力されるまで,入力状態とする

43 繰り返し(do-while文) 入力部分のフローチャート nを入力 n <=0 FALSE TRUE

44 nの値によっては,while文に入らないこともある!
繰り返し(do-while文) int main() { int i, n; int sum = 0; while ( n <= 0 ) { printf(“n = “); scanf(“%d”,&n); } nの値によっては,while文に入らないこともある! while文 ⇒ ループの最初に条件判定が行われる

45 繰り返し(do-while文) int main() { int i, n; int sum = 0; while ( n <= 0 ) { printf(“n = “); scanf(“%d”,&n); } do { printf(“n = “); scanf(“%d”,&n); } while (n <= 0); while文 ⇒ ループの最初に条件判定が行われる do-while文 ⇒ ループの最後に条件判定が行われる

46


Download ppt "プログラミングⅡ 第2回."

Similar presentations


Ads by Google