● ループ変数のさまざまな使用法[for]
(1) 単純な繰り返し
以下は、文字列 Hello を
n回繰り返し表示するプログラム部である。
for (i=1; i<=n; i++) {
printf("Hello");
}
このプログラム部ではループ変数 i
は内部的に使用されるのみである。
(2) ループ変数を利用した繰り返し計算
(a) ループ変数の利用
ループ変数をそのループ内で用いることは頻繁に行われる。
以下のプログラム部は偶数を表示するもの(2〜2nまで)である。
for (i=1; i<=n; i++) {
g=2*i;
printf("g=%d\n",g);
}
(b) 実数の繰り返し
実数の繰り返しはfor文によって行うことも可能である。
しかし、本講義では整数のループ変数を利用することを勧める。
(配列変数を用いる際の添え字が整数であることにも関連する)
0.3から1.5まで0.1刻みまで表示するプログラム部の例を以下に示す。
この用い方は重要なので必ず使いこなせるようにしよう。
st=0.3;
ed=1.5;
dx=0.1;
n=(ed-st)/dx+1.1;
/* 繰り返しの総数(整数)はこの計算で求まる
(数値誤差を考慮) */
for (i=1; i<=n; i++) {
x=st+dx*(i-1);
/* 現在の値はこの計算で求まる */
printf("x=%f\n",x);
}
(3) ループ変数と配列
ループ変数と配列(変数)は、密接な関係にある。
この場合、ループ変数は配列の要素を決める重要な役割を果たす。
(a) 直接的利用
以下のプログラム部は、ループ変数 i
を用いて配列の要素を順次表示するものである。
for (i=1; i<=n; i++) {
printf("%f\n",x[i-1]);
}
(b) 間接的利用
以下のプログラム部は、ループ変数 i
を利用し、変数 k
を用いて配列の要素を逆順に表示するものである。
for (i=1; i<=n; i++) {
k=n-i+1;
printf("%f\n",x[k-1]);
}
● 2重ループ、3重ループ、n重ループについて
繰り返しは数学の括弧のように何重にもすることができる。
以下のプログラム部は、2重ループの例である(九九が表示される)。
3重ループ、n重ループも同様の表現である。
ループ変数は一般にその都度、違うものを用いる(i,j,kがよく用いられる)必要がある。
この多重ループは、理工系の計算ではよく用いられるので覚えておこう。
nx=9;
nk=9;
for (i=1; i<=nx; i++) {
for (k=1;
k<=nk; k++) {
printf("%d\n",i*k);
}
}
|