ساختار تکرار while

   ساختار تکرار (حلقه تکرار) به برنامه نويس اين امکان را می دهد که برنامه ، قسمتی از دستورات را تا هنگامی که شرط خاصی برقرار است، را تکرار کند. به عنوان مثال :

تا وقتی که مورد ديگری در ليست خريد من هست.
آن را بخر و از ليست خريد حذفش کن.

   مورد فوق روال يک خريد را انجام می دهد. شرط مورد نظر " مورد ديگری در ليست خريد من هست" می باشد، که ممکن است درست يا نادرست باشد. اگر شرط برقرار باشد (يعنی مورد ديگری در ليست خريد باشد) عمل "خريد آن و حذفش از ليست" انجام می گيرد. اين عمل تا وقتی که شرط برقرار باشد ادامه می يابد. هنگامی که شرط برقرار نباشد (يعنی تمام موارد ليست خريد حذف شده باشند)، ساختار تکرار به پايان می رسد و اولين دستور بعد از حلقه تکرار، اجرا می گردد. ساختار تکرار while به صورت زير می باشد.

while (شرط مورد نظر )
      {  
         مجموعه دستورات
      }

   تا وقتی که شرط داخل پرانتز برقرار باشد مجموعه دستورات اجرا خواهند شد. برای درک بهتر شيوه کاربرد حلقه های تکرار فرض کنيد می خواهيم اولين توانی از عدد 2 که بزرگتر از 1000 می باشد را بيابيم. برنامه به صورت زير خواهد بود.

#include <iostream.h>
int main( )
 { 
  int product = 2;
  while (product <= 1000)
       product = 2 * product;
    
  cout << "The first power of 2 larger than 1000 is "
       <<product <<endl;
  return 0;
 }

   در برنامه فوق ابتدا متغيری به نام product را با مقدار اوليه 2 مقدار دهی کرديم. در حلقه تکرار while با هر بار اجرای دستور product=2*product مقدار متغير product دو برابر می شود بدين ترتيب با پايان يافتن حلقه متغير product حاوی عدد 1024 يعنی اولين توانی از 2 که بزرگتر از 1000 می باشد، خواهد بود.

The first power of 2 larger than 1000 is 1024

   نکته : در مثال فوق در حلقه while چون تنها از يک دستور استفاده شده بود از {} استفاده نشد، ولی اگر بيش از يک دستور داشتيم ملزم به استفاده از {} بوديم.

مثال : برنامه ای بنويسيد تا مجموع اعداد يک تا صد را محاسبه کند.

#include <iostream.h>
int main( )
  {  
    int n=1, sum=0;
    while (n <= 100)
      { 
        sum += n;       // sum = sum + n;
        ++n;            // n = n + 1;
      }
    cout << "1 + 2 + ... + 100 =" <<sum << endl;
    return 0;
  }

   در مثال فوق حلقه 100 بار اجرا می گردد و هر بار عدد n به متغير sum اضافه می گردد و عدد n نيز يک واحد افزايش می يابد تا در يکصدمين بار اجرای  حلقه  مقدار  متغير  n برابر 101 می شود  و هنگام  بررسی  شرط  (n <=100) توسط حلقه while شرط نادرست می شود و اولين دستور بعد از حلقه يعنی دستور خروجی cout اجرا می گردد.

1 + 2 + ... + 100 =5050

   نکته :

  •    در مثال فوق متغير n به عنوان شمارنده دفعات تکرار حلقه بکار گرفته شد. برحسب مورد شمارنده ها معمولاً با يک يا صفر مقدار دهی اوليه می شوند.
  • متغير sum حاوی مجموع حاصلجمع بود. چنين متغيرهايی که برای محاسبه يک حصلجمع به کار می روند معمولاً با صفر مقدار دهی اوليه می شوند.

    مثال : برنامه ای بنويسيد که تعداد نامشخصی عدد مثبت را از ورودی دريافت نمايد و ميانگين آنها را محاسبه نمايد. عدد 1- را برای مشخص کردن انتهای ليست اعداد در نظر بگيريد.

#include <iostream.h>
int main( )
{ int num, counter = 0;
  float average, sum = 0;
 
  cout << "Enter a number (-1 to end):";
  cin >>num;
 
  while (num != -1){
    sum += num ; // sum = sum + sum;
    ++counter;
    cout << "Enter a number (-1 to end):";
    cin >> num;
  }
 
  if (counter != 0){
    average = sum / counter;
    cout << "The average is " << average << endl;
  }
  else
    cout << "No numbers were entered." << endl;
 
  return 0;
}

   خروجی برنامه به صورت زير خواهد بود.

Enter a number (-1 to end):20
Enter a number (-1 to end):50
Enter a number (-1 to end):65
Enter a number (-1 to end):70
Enter a number (-1 to end):90
Enter a number (-1 to end):100
Enter a number (-1 to end):1
Enter a number (-1 to end):6
Enter a number (-1 to end):-1
The average is 50.25

   در برنامه مثال قبل عدد 1- به عنوان يک مقدار کنترلی به کار می رود و با وارد کردن اين عدد اجرای برنامه به پايان می رسد و ميانگين اعداد در خروجی به نمايش در می آيد. متغير num اعداد را از ورودی دريافت می کند. متغير counter وظيفه شمارش تعداد اعداد وارد شده را دارا می باشد و متغير sum مجموع حاصلجمع اعداد را در خود قرار می دهد و در نهايت متغير average، ميانگين را در خود قرار می دهد. ساختار کنترلی if به کار رفته در برنامه، جلوی بروز خطای زمان اجرای تقسيم بر صفر را می گيرد ، يعنی اگر در اولين دستور cin به کار رفته عدد 1- وارد شود خروجی برنامه به صورت زير خواهد بود :

Enter a number (-1 to end): -1
No numbers were entered.


 

 

 

   معرفی کامپيوتروبرنامه نويسی

   ساختارهای کنترلی

   توابع

   آرايه ها

   اشاره گر ها و رشته ها

   کلاسها

   گرانبار کردن عملگر ها

 
 
 
   
 
 
 

حق کپی رایت محفوظ می باشد