JScript+WSHでプログラミング基礎100本ノック その32~その33 continueとbreak

その32 continueでスキップする

課題

0~99までの整数を昇順で一つずつプロンプトに表示して下さい。
ただし、2の倍数と3の倍数は表示しないでください。

仕様

・for文を用いること
・for文のイテレータは変数 i を用いること

ヒント

・confinue文は下記のような文法となる。

for (var i = 0; i < 100; i++) {
    if(条件式){
        continue;  // 次のループに行く
    }
    繰り返す処理
}

※コード上の // はコメントアウトで、 //の後ろに好きにコメントを書けます

コード例

main.js
--------

for(var i = 0; i < 100; i++){
	if( i % 2 == 1){
        continue;  // 奇数はスキップ
    }
	WScript.echo(i);
}

出力結果

0
2
4
(略)
94
96
98
続行するには何かキーを押してください . . .

解説

前述のfor(var i = 0; i < 100; i = i +2)と比べると、スキップする条件を柔軟にしやすいです。例えば、2か3か5の倍数はスキップする場合下記に用に書けます。

for(var i = 0; i < 100; i++){
	
	// 2,3,5の倍数はスキップ
	if( i % 2 == 0 || i % 3 == 0 ||  i % 5 == 0 ){
		continue;
	}

	WScript.echo(i);
}

スキップ条件が多く、処理の速さを気にしない場合、個人的には下記のように書くこともあります。(案件によっては怒られそうではある)

for(var i = 0; i < 100; i++){
	
	if( i % 2 == 0 ) continue;	// 2の倍数はスキップ
	if( i % 3 == 0 ) continue;	// 3の倍数はスキップ
	if( i % 5 == 0 ) continue;	// 5の倍数はスキップ


	WScript.echo(i);
}


その33 for文 breakで処理を終了

課題

0~99までのうち、2,3,5の倍数以外の整数を昇順で一つずつプロンプトに表示して下さい。
ただし、数字が小さい順に5つだけ表示してください。

仕様

・for文を用いること
・for文のイテレータは変数 i を用いること
・表示した文字のカウントは変数cnt (countの短縮形)を用いること

ヒント

・break文は下記のような文法となる。

for (var i = 0; i < 100; i++) {
    if(条件式){
        break;  // for文の処理を終了する
    }
    繰り返す処理
}


コード例

main.js
--------

var cnt = 0;

for(var i = 0; i < 100; i++){
	
	// 2,3,5の倍数はスキップ
	if( i % 2 == 0 || i % 3 == 0 ||  i % 5 == 0 ){
		continue;
	}

	
	WScript.echo(i);
	cnt++;			// 表示したらカウントを1つ足す

	// カウントが4になったら繰り返し処理を終了
	if(cnt == 4){
		break;
	}

}

出力結果

1
7
11
13
続行するには何かキーを押してください . . .

解説

だんだん難しくなってきました。コメントを残すとわかりやすくなるので、コードを書く際はコメントを書くようにしましょう。

コメントは様々なお作法があると思いますが、下記のような文化があると思っています。

・1行に対するコメントは、行の末尾に書く

	WScript.echo(i);
	cnt++;			// 表示したらカウントを1つ足す

・複数行のブロックに対するコメントは、ブロックの冒頭に書く

	// iを表示してカウントを1つ足す
    WScript.echo(i);
	cnt++;

また、分かり切ったコメントは書かない方が読みやすいっていう文化もあるようです。極端な例ですが下記のような例など。

// for文を使って i を 0 ~ 99 まで1ずつ加算して繰り返し処理を行う
for(var i = 0; i < 100; i++){
	WScript.echo(i);
}


この記事が気に入ったらサポートをしてみませんか?