C言語 入門 小学生でもわかるC言語

十一日目 繰り返し「while」命令

「わかりやすく!」がテーマです!

HOME/小学生でもわかるC言語 目次/十一日目 繰り返し「while」命令/

広告

↓2016年02月29日発売↓

12歳からはじめる ゼロからのC言語 ゲームプログラミング教室

新品価格
¥2,462から
(2016/5/10 22:16時点)

もっと!C、C++言語本

目次へ戻る

?と思ったら

わからなそうな用語集

くり返し「while」命令

今回はもう一つのくり返し命令「while」についてみていきましょう!

自由な「while」命令

/*プログラム30*/
#include <stdio.h>

int main(){
	int suji = 0;

	while(suji < 5){
		printf("おはよう\n");
		suji++;
	}
	return 0;
}

■実行結果■

実行結果(b-11-1)

■説明■

前回と同じ「おはよう」を5回表示するプログラムになります!

「while」命令の場合は

while(suji < 5);

と最初に条件を決めるだけで「for」命令の時にあった「初期化」と「進み方」は別の場所に書くという違いがあります。

でも書き方が違うだけでやってる事は一緒な気がしますよね!

気がしますが!「while」命令をあなどってはいけません。何気に良く使われます。というか「for」命令より使われている感じがしない事もないです。

そんなワケでよく見かける「while」命令のカタチを見てみましょう!

無限ループ系

/*プログラム31*/
#include <stdio.h>

int main(){

	int suji = 0;

	while(1){
		if(suji == 100){
			printf("suji = %d\n",suji);
			printf("変数「suji」が100になりました!\n");
		}
		if(suji == 200)break;
		suji++;
	}
	printf("suji = %d\n",suji);
	printf("変数「suji」が200になったので終了します!\n");

	return 0;
}

■実行結果■

実行結果(b-11-2)

■説明■

while(1);

これはよく見かけます。「if」命令の時に学んだ条件が「1」・・・合っている状態です。なのでずっとくり返す無限ループになります。

ここで登場するのが「switch」命令の時に見かけた

break;

「break」命令です!{}カッコを抜ける命令ですね!

そうです。これを書くと一番近いくり返しループから途中で脱出できるのです!

「while(1)」で無限ループ→条件が達成された時に「break」命令で脱出というやり方ですね!

「while」命令だけではなく「for」命令でも同じように途中でくり返しを脱出できます。

無限ループ系その2

/*プログラム32*/
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>

int main(){
	int suji;
	
	while(1){
		printf("■パスワード入力時の注意■\n");
		printf("数字以外を入力すると\n");
		printf("プログラムが暴走する危険性があります!\n");
		printf("必ず数字1ケタだけを入力してください!\n\n");
		printf("数字1ケタのパスワードを入力してください>");
		scanf("%d",&suji);
		if(suji == 1)break;
		else{
			printf("パスワードが違います!");
			printf("やり直してください\n");
			continue;
		}
	}
	printf("パスワードを受付ました!\n");

	return 0;
}

■実行結果■

実行結果(b-11-3)

■説明■

さきほどと同じく条件が達成されるまでの無限ループ系ですね!

数字1ケタのパスワードを入力してもらってパスワードが合うまで無限ループします。

プログラム中にもありますが数字以外を入れるとプログラムが暴走して無限ループに入る可能性があるので気をつけてください!

そして注目すべきは

新登場!

continue;

これは「break」命令の仲間で{}カッコの先頭に戻る命令になります。

この「continue」命令を使えばパスワードの入力のやり直しをさせる事ができますね!

ぼっち系

/*プログラム33*/
#include <stdio.h>

int main(){
	int suji = 10;

	while(suji--){
		printf("%d ",suji);
	}

	printf("\n");
	printf("変数「suji」が0になったので終了します!\n");

	return 0;
}

■実行結果■

実行結果(b-11-4)

■説明■

変数「suji」だけ一人さみしく条件式の中でがんばっているように見えるのでぼっち系と名づけてみました。

while(suji--);

式のカタチではないので、はじめはとまどうかと思います。

難しく考えずそのまま「-1」インクリメントされ続けて変数「suji」が「0」になれば条件が合わなくなるので、ループを抜けるというワケです。

「suji」の表示が「9」からになっている所にも注意です!

ここであれ?と思われた方いると思います。

「while(1)」のように条件が「1」の時は実行されるって学んだような気がするけれども今回みたいに他の数字でも実行されるのか!?と

そうなんです。

このへんがややこしいのですがもうそのまま覚えるしかないです。

「while」などの条件式は「0」以外は実行されます。

これが次に学ぶ配列(はいれつ)というテクニックとともによく使われるので覚えておきましょう!

「do〜while」命令

最後に「while」命令の仲間である「do〜while」命令をご紹介します。

これは「while」の部分の条件が合っても、合わなくても必ず中身の命令が実行されるという命令になります。

プログラムで確認してみましょう!

/*プログラム34*/
#include <stdio.h>

int main(){
	int suji = 100;

	do{

		printf("必ず一回は実行されます!\n");

	}while(suji < 50);

	return 0;
}

■実行結果■

実行結果(b-11-5)

■説明■

使い方は最初に

do

と書いて{}カッコ内に実行する内容を書きます。そしてお尻に

while(suji < 50);

条件を書きます。最初に変数「suji」には「100」が入ったので条件が合わなくても最初の一回が実行されているのがわかりますね!

「do〜while」命令はいろいろなプログラムを組まないとどこで使うのかイマイチわかりづらいと思います。

今は軽く心にとめておきましょう!

次回

十二日目 配列(はいれつ)

□ページの先頭へ□

□目次へ戻る□

広告

↓2014年06月20日発売↓

14歳からはじめるC言語わくわくゲームプログラミング教室 Visual Studio 2013編

新品価格
¥2,500から
(2016/5/10 22:17時点)

↓2014年10月25日発売↓

超本格! サンプルで覚えるC言語 3Dゲームプログラミング教室

新品価格
¥3,110から
(2016/5/10 22:18時点)

↓2013年07月25日発売↓

小学生からはじめるわくわくプログラミング

新品価格
¥2,052から
(2016/5/10 22:21時点)

↓2016年05月13日発売↓

小学生からはじめるわくわくプログラミング2

新品価格
¥2,052から
(2016/5/10 22:22時点)

もっと!C、C++言語本

□ページの先頭へ□

□HOME□