一定回数を繰り返す反復処理の考え方(復習) 復習 i をループ変数と 呼ぶ i=0 「ループ」と 呼ぶ i=0 true i<3 「何かの処理」 を3回反復する場合 false 何かの処理 i の値を1増加 i=1 i=2 i=3 for文のパターン(ある回数だけ文を実行する場合) int i; 実行回数 注意! この三つの項目に複雑 な式は書かない for ( i = 0 ; i < 3 ; i++ ) { この中が3回 printf(“A”); 実行される } AAA 復習 i=0 true i<3 false 何かの処理 int a; for (a = 0; a < 5; a++) { printf(“B\n”); } B B B B B i の値を1増加 復習 ループ変数(3) ループ変数の値が減っていく反復はどう書く? int i; for (i = 7; i >= 3; i--) { printf(“%d\n”, i); } 7 6 5 4 3 ループ変数の 初期値は7 ループ変数が3より 大きいか等しい間は 繰り返す! a++ → 変数aの値を1増やす a-- → 変数aの値を1減らす a++ a=a+1 a-- a=a-1 全く同じ結果 ループ変数の利用(1) 1から5の整数値の和を求める 1+2+3+4+5=15 int a,sum = 0; for (a = 1; a <= 5; a++) { sum = sum + a; printf("a=%d sum=%d¥n", a, sum); } printf("和は%d\n", sum); 代入前のsumの値 aの値 足し算の結果 a=1 sum=1 a=2 sum=3 a=3 sum=6 a=4 sum=10 a=5 sum=15 和は15 sum sum sum sum sum ← ← ← ← ← 0 + 1(=0+1) + 3(=0+1+2) + 6(=0+1+2+3) + 10(=0+1+2+3+4)+ sum=(0+1+2+3+4)+5 1 2 3 4 5 ループ変数の利用(2) 0から10の偶数の和を求める int a,sum = 0; for (a = 0; a <= 10; a = a+2) { sum = sum + a; printf("a=%d sum=%d¥n", a, sum); } printf("和は%d\n", sum); 代入前のsumの値 a=0 sum=0 a=2 sum=2 a=4 sum=6 a=6 sum=12 a=8 sum=20 a=10 sum=30 和は30 sum sum sum sum sum sum ← ← ← ← ← ← 0 + 0(=0+0) + 2(=0+0+2) + 6(=0+0+2+4) + 12(=0+0+2+4+6) + 20(=0+0+2+4+6+8)+ aの値 0 2 4 6 8 10 ループ変数を利用しない計算 入力された5個の整数の和を求める int i, x, sum = 0; for (i = 0; i < 5; i++) { printf("値は?"); scanf("%d", &x); sum = sum + x; } printf("合計は%dです\n", sum); 代入前のsumの値 値は? 3 値は? 2 値は? 7 値は? 1 値は? 12 合計は25です sum sum sum sum sum ← ← ← ← ← 0 3(=0+3) 5(=0+3+2) 12(=0+3+2+7) 13(=0+3+2+7+1) + + + + + xの値 3 2 7 1 12 反復処理(反復制御文) プログラムにおける反復処理→ (a) ある処理を定められた回数繰り返す処理 (b) 一定の条件を満たすまで繰り返す処理 ループ変数を利用 するループ C言語における反復処理 → 3種類 ループ変数を利 用しないループ (a) ある定められた回数だけ反復処理を行う for 文 (b)ある条件が成り立つ間だけ反復処理を行う i)反復処理の初めに条件を調べる場合 ii)反復処理の終わりに条件を調べる場合 while 文 do while 文 while文(1) while ( 条件 ) 文 偽 条件 真 ・ 条件が真の間ずっと文(複文 も可)を反復する ・ ループ変数は必要ない 文 while文(2) 【注意】初めからaが0だと 一度も実行されない カッコが必要 int a = 1; while ( a != 0 ) 条件 { printf("整数値を入力してください: "); scanf("%d", &a); } printf("終了します"); 整数値を入力してください:5 整数値を入力してください:6 整数値を入力してください:10 整数値を入力してください:15 整数値を入力してください:0 終了します 真(true)なら この中が繰り返し 実行される 無限ループ(1) int i, j = 1; while ( j != 0) { printf("i = ? "); scanf("%d", &i); } i i i i i i i = = = = = = = ? ? ? ? ? ? ? 10 5 6 15 0 0 0 ループが終 了しない! 常に真! プログラムミスによる無限ループの例 while ( 3 >= 2 ) { printf("A\n"); } C言語では while (1) 0以外の定数 { 値は真を意 printf("A\n"); 味する } プログラムミスによる無限ループからの強制脱出 → Ctrl-C ( Ctrl キーを押しながら C キーを押す)
© Copyright 2024 ExpyDoc