while文もfor文と同じく命令文をくりかえし実行します

ソーラー 「そう、24時間営業したい!


そんな、activeな、あなたへ、このwhile文


#include <iostream>


using namespace std;


int main() {


while(1)cout<<"ただいま24時間大好評セール中です。";


return 0;

}


はいかがです?


このwhile文は


while( )の( )の中の論理式の値が1のとき


while( )に続く命令文をずっと繰り返しつづけるんだ。


while( )に続く複数の命令文を実行したいときは


その複数の命令文を{ }


でくくるのはif文のときと同じでっす。


このwhile文のプログラムを実行すれば


ずっと


なにも命令をこちらから与えなくても


ただいま24時間大好評セール中です。が


コマンドプロンプト画面に


ひたすら実行表示されつづけます。


大変便利ですね。


デスクトップパソコンのディスプレイに


このプログラムのビルド実行結果を表示した


コマンドプロンプト画面を貼り付けておけば


お客様も


ただいま24時間大好評セール中です。


とすぐに気づいていただけます。


同じ文章表示をくりかえす電光掲示板に最適です。」


マックス「ほう、どうれ


このプログラムを実行すればいいだけなのか?


それっと」



ビルド実行ボタンをおしてみる。



実行されるプログラム

👇

#include <iostream>


using namespace std;


int main() {


while(1)

cout<<"ただいま24時間大好評セール中です。";


return 0;

}


ビルド実行結果


ずたたたたたたたたたたたたたたっ


マックス 「ぉぉぉおおおっ す、凄まじい~~~


 こ、このスピード・・・


画面をおおいつくす


ただいま24時間大好評セール中です。


お、お客様もびっくり、い、いきてるいきてる


なんて斬新なデザイン


ぶるぶるぶるるんぶるるん


このwhile文のビルド実行結果は一味違う・・・」


ソーラー 「そう、アピール度抜群のデスクトップ掲示板です。


また お部屋に飾っておけば一味お味のちがう空間に早代わり(^^)


画面いっぱいに


ただいま24時間大好評セール中です。


が広がってみえるのは


while(1)

cout<<"ただいま24時間大好評セール中です。";


の命令文のところで


while(1)cout<<"ただいま24時間大好評セール中です。\n";と


エスケープシーケンス\n(改行)がかかれていないからなんだね。


だから


コマンドプロンプト画面に


ただいま24時間大好評セール中です。ただいま24時間大好評セール中です。ただいま24時間大好評セール中です。ただいま24時間大好評セール中です。ただいま24時間大好評セール中です。ただいま24時間大好評セール中です。ただいま24時間大好評セール中です。ただいま24時間大好評セール中です。ただいま24時間大好評セール中です。ただいま24時間大好評セール中です。ただいま24時間大好評セール中です。・・・・・・

・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・

・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・



と ただいま24時間大好評セール中です。


が改行されず超高速でつながって表示されているわけなんだ。


だから


次のプログラムのように


エスケープシーケンス\nをかきこんで実行すると


今度は


ただいま24時間大好評セール中です。が


きれいに改行されてcout出力表示されます


👇そのプログラムはこちらです


#include <iostream>


using namespace std;


int main() {


while(1)

cout<<"ただいま24時間大好評セール中です。\n";


return 0;

}


ビルド実行結果


ただいま24時間大好評セール中です。

ただいま24時間大好評セール中です。

ただいま24時間大好評セール中です。

ただいま24時間大好評セール中です。

ただいま24時間大好評セール中です。

ただいま24時間大好評セール中です。




マックス 「for文につづいて

同じく

ずっと命令文を繰り返すwhile文か・・・」


ソーラー 

「while文はfor文と一緒で命令文をずっと繰り返すというシステムとなっているんです


while文の基本形は


for文と同じで


         初期化式、条件式、継続方法の


3つの項目があります。


初期化式int a=2;をまずかく。

次に

while(条件式){

cout<<a<<"\n";(実行したい命令文)

継続処理方法

}

をかく。


という仕様になっています。


実際に

具体例をみていきましょう。」


次のプログラムをご覧ください

👇

#include <iostream>


using namespace std;


int main() {

int a = 2;//👈初期化式

//条件式👇

while (a<5) {

cout << a <<" \n";

a++;//👈継続処理方法

}

return 0;

}


ソーラー「


このプログラムでは


初期化式 int a=2;

条件式 a<5

実行したい命令文 cout << a <<" \n";

継続処理方法 a++


となっています


まず初期化式 

int a=2;

が記述されていますね。


ですので


a=2が


while(a<5)の条件式である論理式a<5に代入される。


論理式a<5の値が2<5=1(真の値)となることによって


while(a<5)👉while(2<5)👉while(1)


となり


while文の実行条件のwhile(1)がみたされているため


cout<<a<<\n;



aに2を代入した


cout<<2<<\n;


が実行されます。


これで1回目のwhile文による命令文の繰り返し実行は終了です。


次に継続方法 a++により


aが今、格納している値2に1をたした


a=3が


while(a<5)の論理式a<5のaに代入される。


論理式a<5の値が3<5=1となることによって


while(a<5👉while(3<5)👉while(1)


となり


while文の実行条件のwhile(1)がみたされているため


cout<<a<<"\n";



aに


3が代入された


cout<<3<<"\n";


が実行されます。


これで2回目のwhile文による命令文の繰り返し実行も終了です。


次に継続方法 a++により


aが今、格納している値3に1をたした


a=4が


while(a<5)の条件式である論理式a<5のaに代入される。


論理式a<5の値が4<5=1となることによって


while(a<5)👉while(4<5)👉while(1)


となり


while文の実行条件のwhile(1)が満たされているため


cout<<a<<"\n";



aに4を代入した


cout<<4<<\n";


が実行されます。


これで3回目のwhile文による命令文の繰り返し実行も終了です。


次に継続方法 a++により


aが今、格納している値4に1をたした


a=5が


while(a<5)の論理式a<5のaに代入されます。


論理式a<5の値が5<5=0(偽の値)となることによって


while(a<5)👉while(5<5)👉while(0)


となり


while文の実行条件のwhile(1)が満たされていないので


ここでプログラムのwhile文の実行はおわります。


プログラムの実行結果は


2

3

4


となります。」


マックス「このwhile文とfor文は


初期化式 条件式 継続方法


をどのようにかくか


見た目がちがうだけでまったくおなじ命令文じゃないか?」


ソーラー 「 そうですね。


見た目は for文とwhile文では ちがってみえますが


翻訳されたコンパイル後の機械語はまったく同じものだったりして・・・


さすがにすこしはちがうかな


それに関しては機械語を勉強すると理解できるようになるかな?


  • Twitterで共有
  • Facebookで共有
  • はてなブックマークでブックマーク

作者を応援しよう!

ハートをクリックで、簡単に応援の気持ちを伝えられます。(ログインが必要です)

応援したユーザー

応援すると応援コメントも書けます

新規登録で充実の読書を

マイページ
読書の状況から作品を自動で分類して簡単に管理できる
小説の未読話数がひと目でわかり前回の続きから読める
フォローしたユーザーの活動を追える
通知
小説の更新や作者の新作の情報を受け取れる
閲覧履歴
以前読んだ小説が一覧で見つけやすい
新規ユーザー登録無料

アカウントをお持ちの方はログイン

カクヨムで可能な読書体験をくわしく知る