第25講 様々なループ文
第3話 do...while文

第2話問題解答
#pragma endregion
  private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e) {
           int a,b,c,w;
           a=int::Parse(textBox1->Text);
           b=int::Parse(textBox2->Text);
           c=int::Parse(textBox3->Text);
           w=a;
           do{
             w+=b;
           }while(w<=c-b);

           textBox4->Text=w.ToString();
        }
};
}

この例だと
#pragma endregion
   private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e) {
           int a,b,c,w;
           a=int::Parse(textBox1->Text);
           b=int::Parse(textBox2->Text);
           c=int::Parse(textBox3->Text);
           w=a;
           while(w<=c-b){
             w+=b;
           }
           
           textBox4->Text=w.ToString();
         }
   };
}
前判定と後判定で特に変わりありません。
前判定と後判定の違いが出るプログラミングを考えてみてください。
解答例は30行下。



















Form1

コード例
while文の場合
#pragma endregion
  private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e) {
           int a[4],b[4],i;
           String^ w=L"";
           for(i=0;i<4;i++){
             a[i]=-(i+1);
           }
           for(i=0;i<4;i++){
             b[i]=2*i+11;
           }
           w=L"b= ";
           for(i=0;i<4;i++){
             w+=b[i]+L" ";
           }
           label1->Text=w;
           i=0;
           while(a[i]>=0){
             b[i]=a[i];
             i++;
           }
           w=L"a= ";
           for(i=0;i<4;i++){
             w+=a[i]+L" ";
           }
           label2->Text=w;
           w=L"b= ";
           for(i=0;i<4;i++){
             w+=b[i]+L" ";
           }
           label3->Text=w;
        }
  };
}
do...while文の場合
#pragma endregion
  private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e) {
           int a[4],b[4],i;
           String^ w=L"";
           for(i=0;i<4;i++){
             a[i]=-(i+1);
           }
           for(i=0;i<4;i++){
             b[i]=2*i+11;
           }
           w=L"b= ";
           for(i=0;i<4;i++){
             w+=b[i]+L" ";
           }
           label1->Text=w;
           i=0;
           do{
             b[i]=a[i];
             i++;
           }while(a[i]>=0);
           w=L"a= ";
           for(i=0;i<4;i++){
             w+=a[i]+L" ";
           }
           label2->Text=w;
           w=L"b= ";
           for(i=0;i<4;i++){
             w+=b[i]+L" ";
           }
           label3->Text=w;
        }
  };
}
実行結果
while文の場合

do...while文の場合

違いは、a[0]が
while文の場合b[0]に代入されないのに対して、
do...while文の場合b[0]に代入されている点です。
理由は、while文場合は前判定であるためwhile(a[i]>=0)から1回も処理が行わないのに対して、
do...while文の場合は、後判定であるため1回は処理が行われるからです。
結局、条件を満たさなければwhile文の場合1回も処理が行われないのに対して、
do...while文では1回は処理が行われるという違いです。


while文とdo...while文の違いがお分かりになりましたでしょうか。

では、次にwhile文とdo...while文により、2次元ループに挑戦してみましょう。
Form1を
として、
実行結果が

となるようなプログラミングを考えてみてください。3番目の行列は、1,2番目行列の和です。

第2話へ 第4話へ

戻る

VC++講義第1部へ
vb講義へ
VB講義基礎へ
初心者のための世界で一番わかりやすいVisual C++入門基礎講座
初心者のための世界で一番わかりやすいVisual Basic入門基礎講座