Contents
forを使った繰り返し条件(ループ)
ある条件まで繰り返せ【 for 】を勉強してみたいと思います。【 for 】を使って繰り返し処理するには、具体的には整数を使用して、任意の数字で繰り返し処理させ、定めた条件に達すると停止すると言うものです。
【 for 】分も前回勉強した【 if 】分と同様、条件の後ろには【 ; 】セミコロンをつける必要はありません。
サンプル 変数【 a 】に整数『1』を代入し、【 a<=10 】で『10』以下なら繰り返し【 a=a+1 】で変数『a』に『1』を加え、そのつど『こんにちわ』を表示する。と言う繰り返し条件(ループ)です。
for(a=1; a<=10; a=a+1){ print(“こんにちわ\n”); } |
サンプルソース 【 こんにちわ 】を繰り返し10回表示させるサンプルです。
#include <stdio.h> main() { int a;for(a=1; a<=10; a=a+1){ printf(“こんにちわ\n”); } } |
【 for 】の条件は必ずかっこ内に指定しします。for(a=1; a<=10; a=a+1) aに1を代入し、その数字が1以下なら毎回aに1を足しなさい。a=1とa<=10の後ろにはセミコロン【 ; 】がそれぞれ必要です、最後の条件a=a+1の後ろは不要です。この条件判断が『真』なら【 printf 】関数を実行すると言う具合になります。
実行結果
while文を使った繰り返し条件(ループ)
whileを使った繰り返し条件(ループ)を勉強してみたいと思います。
【for】 と 【 while 】の違いは、例 for(i=1; i<=10; i++) 【 for 】を使った場合は繰り返す条件をあらかじめ決めた回数をループします。【 while 】の場合は繰り返す回数がわからない場合に使います。
数字の合計を繰り返し計算するサンプルです。
#include <stdio.h> main() { int a,b; a=-1; b=0;while(a != 0){ printf(“?”); scanf(“%d”,&a); b=b+a; }printf(“合計%d\n”,b); } |
ソースの解説
変数【 a 】と【 b 】を宣言し、【 a 】にはループ回数条件にし『 0 』が代入されればループを停止するようにします。その為『 -1 』を代入(特に他の数字でもOK)【 scanf 】で初期化されます。【 b 】には加算させる為『 0 』を代入して初期化。
【 while 】繰り返し条件に『aが0以外なら実効せよ』と条件を書きます。これでキーボードから『 0 』が入力されれば、【 b 】に加算された結果が【 printf 】に出力される事になります。
実行結果
do { } while 最低一度実行させるループ条件
While条件ループについて勉強しました。今回は最低一回はループする条件【 do { } while 】について勉強して見たいと思います。
【 while 】との違いは、whileの場合条件によってループしない場合があります。【 do { } while 】の場合は必ず最低一回はループする。と言う違いになります。
do { } whileを記述する場合の注意点としては式の後にセミコロンが必要になります。
do { } whileを使ったソースサンプル
#include <stdio.h>
int main(void) char ss[] = “ABCDE”; printf(“%s\n”,ss); n = -1; do { }while(ss[n] != ‘\0’); printf(“\n”); return 0; |
解説 長さを省略した配列 【 char ss[] 】にABCDEを代入します。
するとコンパイラでss0~ss5までの変数が用意されます。
※【 char ss[5] 】と同じ意味になります。
ss0 | ss1 | ss2 | ss3 | ss4 | ss5 |
A | B | C | D | E | 0 |
do { } whileの条件にss[n]!=’\0’ ssが0以外ならと言う条件を使用しています’\0’は0と同じです。上記表のss[5]が0になっておりますのでss5までループすると言うことになります。
do{ からの条件 ++n はnに1づつを加えていくインクリメントです。 n=-1 はループ条件の初期化の為です。
n=0にしてしまうと 配列のss[1] Bの文字コードから出力されてしま為 -1 にて初期化しています。
実行結果
インクリメント・デクリメントの説明
インクリメント・デクリメント演算子を勉強してみましょう。
変数に1づつ加算していくのがインクリメント。変数に1づつ減算していくのがデクリメント。
インクリメント:【 ++a 】 【 a++ 】 処理内容は【 a=a+1 】と同じです。
デクリメント:【 –b 】 【 b– 】 処理内容は【 b=b-1 】と同じです。
インクリメント&デクリメントが二種類の書き方がありますが内容が少し異なるので覚えておきましょうね。
変数aに2を代入した場合
【 b = ++a 】の場合だと、bは3 aも3になります。
通常の記述の場合 【 a = a+1; b = a; 】となります。
【 b = a++ 】の場合だと、bは2 aは3になります。
通常の記述の場合 【 b = a; a=a+1; 】となります。
インクリメント・デクリメントの処理サンプルソースコード。
#include <stdio.h> main() { int a,b; a=2; ++a; printf(“aの値=%d\n”,a);b=2; –b; printf(“bの値は=%d\n”,b);} |
【 a 】に2を代入しインクリメント(1を加算)させて出力 【 b 】に2を代入してデクリメント(1を減算)し出力
実行結果
次にインクリメントを使って一番最初に書いたループを書いてみたいと思います。
ちなみにループする回数は【 scanf 】関数を使って指定できるようにして見ますね。
#include <stdio.h> main() { int a,b; printf(“ループ回数を指定=”); scanf(“%d”,&b);for(a=1; a<=b; ++a){ printf(“%d回目\n”,a); }} |
上記ソースの解説
【 for 】条件に 【 a<=b 】としbを任意の数字としました。bには【 scanf 】関数を使い、キーボードからして出来るようにしております。
【 for 】の実行条件に【 printf 】関数を使いaに加算される数字の状況を表示させるようにしております。
実行結果
※もしコードを誤って記載してしまい無限ループになってしまった場合は、キーボードの「Ctrl」キーを押しながら「C」キーを同時押しして下さい。
ループをbreakで終了させる
ループをbreakで終了させる方法を勉強してみたいと思います。
#include <stdio.h>
int main(void) printf(“☆☆☆【for】ループ\n”); |
解説 【 for(i=0; I<10; i++) 】にてi が10回繰り返すと終了する条件を作成し、実行分の中に【 scanf(“%d”,&dt{i}) 】にてさらに条件を追加【 dt[i] == 0 】 配列dtに代入された数字が0の場合は【 break 】にてループを終了
実行結果
次は無限ループを「break」にて終了するサンプルです。
#include <stdio.h>
int main(void) printf(“☆☆☆【while】無限ループ\n”); i=1; return 0; |
上記ソースの解説
無限ループ【 while(1) 】分を作成しその条件に【 i = i * 2 】ループする毎にiを二倍にしていき、【 if(i > 1000)break 】iが1000を超えたら break分で終了させます。
実行結果です。
continue文を使ってループをスキップ
break文でループを終了する方法に付いて勉強しました。今度は「continue」文を使ってループをスキップする方法に付いて勉強してみたいと思います
多重ループ と 【 contiune 】文サンプルです。
#include <stdio.h>
int main(void) printf(“終了文 break のテスト\n”); printf(“スキップ文 continue のテスト\n”); return 0; } |
解説
【 for(i=1; i<=4; i++) 】にてiが4回ループする条件に置いて、【 i==2 】 i が二回目のループで代入される整数2で【 break 】し【 printf 】を実行してループを終了する条件。 【 continue 】でスキップし、ループ条件の【 printf 】の2終了を実行せずに再びループに戻る出力を比べています。
実行結果
コメント