広告
↓発売日:2018年09月22日↓
新品価格 |
今回はもう一つのくり返し命令「while」についてみていきましょう!
/*十一日目 プログラム1*/ #include <stdio.h> int main(){ int suji = 0; while(suji < 5){ printf("おはよう\n"); suji++; } return 0; }
前回と同じ「おはよう」を5回表示するプログラムになります!
「while」命令の場合は
while(suji < 5)
と最初に条件を決めるだけで「for」命令の時にあった「初期化」と「進み方」は別の場所に書くという違いがあります。
でも書き方が違うだけでやってる事は一緒な気がしますよね!
気がしますが!「while」命令をあなどってはいけません。何気に良く使われます。というか「for」命令より使われている感じがしない事もないです。
そんなワケでよく見かける「while」命令のカタチを見てみましょう!
/*十一日目 プログラム2*/ #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; }
while(1)
これはよく見かけます。「if」命令の時に学んだ条件が「1」・・・合っている状態です。なのでずっとくり返す無限ループになります。
ここで登場するのが「switch」命令の時に見かけた
break;
「break」命令です!{}カッコを抜ける命令ですね!
そうです。これを書くと一番近いくり返しループから途中で脱出できるのです!
「while(1)」で無限ループ→条件が達成された時に「break」命令で脱出というやり方ですね!
「while」命令だけではなく「for」命令でも同じように途中でくり返しを脱出できます。
広告
/*十一日目 プログラム3*/ #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ケタのパスワードを入力してください>"); (void)scanf("%d",&suji); if(suji == 1)break; else{ printf("パスワードが違います!"); printf("やり直してください\n"); continue; } } printf("パスワードを受付ました!\n"); return 0; }
さきほどと同じく条件が達成されるまでの無限ループ系ですね!
数字1ケタのパスワードを入力してもらってパスワードが合うまで無限ループします。
プログラム中にもありますが数字以外を入れるとプログラムが暴走して無限ループに入る可能性があるので気をつけてください!
そして注目すべきは
新登場!
continue;
これは「break」命令の仲間で{}カッコの先頭に戻る命令になります。
この「continue」命令を使えばパスワードの入力のやり直しをさせる事ができますね!
/*十一日目 プログラム4*/ #include <stdio.h> int main(){ int suji = 10; while(suji--){ printf("%d ",suji); } printf("\n"); printf("変数「suji」が0になったので終了します!\n"); return 0; }
変数「suji」だけ一人さみしく条件式の中でがんばっているように見えるのでぼっち系と名づけてみました。
while(suji--);
式のカタチではないので、はじめはとまどうかと思います。
難しく考えずそのまま「-1」インクリメントされ続けて変数「suji」が「0」になれば条件が合わなくなるので、ループを抜けるというワケです。
「suji」の表示が「9」からになっている所にも注意です!
ここであれ?と思われた方いると思います。
「while(1)」のように条件が「1」の時は実行されるって学んだような気がするけれども今回みたいに他の数字でも実行されるのか!?と
そうなんです。
このへんがややこしいのですがもうそのまま覚えるしかないです。
「while」などの条件式は「0」以外は実行されます。
これが次に学ぶ配列(はいれつ)というテクニックとともによく使われるので覚えておきましょう!
最後に「while」命令の仲間である「do~while」命令をご紹介します。
これは「while」の部分の条件が合っても、合わなくても必ず一度は中身の命令が実行されるという命令になります。
プログラムで確認してみましょう!
/*十一日目 プログラム5*/ #include <stdio.h> int main(){ int suji = 100; do{ printf("必ず一回は実行されます!\n"); }while(suji < 50); return 0; }
使い方は最初に
do
と書いて{}カッコ内に実行する内容を書きます。そしてお尻に
while(suji < 50);
条件を書きます。最初に変数「suji」には「100」が入ったので条件が合わなくても最初の一回が実行されているのがわかりますね!
「do~while」命令はいろいろなプログラムを組まないとどこで使うのかイマイチわかりづらいと思います。
今は軽く心にとめておきましょう!
広告
↓発売日:2016年02月29日↓
12歳からはじめる ゼロからのC言語 ゲームプログラミング教室 新品価格 |
↓発売日:2018年06月22日↓
新品価格 |
↓発売日:2018年03月09日↓
新品価格 |
↓発売日:2017年06月14日↓
新品価格 |
↓発売日:2018年05月21日↓
新品価格 |
↓発売日:2017年12月07日↓
新品価格 |
↓発売日:2017年02月08日↓
新・明解C言語で学ぶアルゴリズムとデータ構造 (明解シリーズ) 新品価格 |
↓発売日:2017年09月26日↓
新品価格 |