講習No5

一定回数を繰り返す反復処理の考え方(復習)
復習
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 キーを押す)