جلسه پنجم(برنامه جمع دو عدد و ساختار if & else)
برنامه جمع دو عدد
در مبحث قبلی برنامه ای را نوشتيم که در آن تنها از دستور cout استفاده شده بود و رشته ای را بر روی صفحه نمايش چاپ می کرد. برای اينکه با نحوه کاربرد متغيرها و شيوه مقدار دهی به آنها و نيز دستور cin آشنا شويد، در اينجا برنامه جديدی را می نويسيم که دو عدد را از ورودی دريافت کرده و سپس آنها را جمع نموده و حاصل را در خروجی نمايش می دهد.
// Addition program.
#include
// function main begins program execution
int main()
{
int integer1; // first number to be input by user
int integer2; // second number to be input by user
int sum; // variable in which sum will be stored
cout << "Enter first integer\n"; // prompt
cin >> integer1; // read an integer
cout << "Enter second integer\n"; // prompt
cin >> integer2; // read an integer
sum = integer1 + integer2; //assignment result to sum
cout << "Sum is " << sum << endl; // print sum
return 0; // indicate that program ended successfully
} // end function main
همانطور که در اين برنامه نيز می بينيد، تعدادی از دستورات برنامه قبلی تکرار شده اند. در اينجا به بررسی و توضيح دستورات جديد می پردازيم:
int integer1; // first number to be input by user
int integer2; // second number to be input by user
int sum; // variable in which sum will be stored
سه دستور فوق وظيفه تخصيص حافظه به سه متغير integer1 و integer2 و sum از نوع عدد صحيح را دارند. انواع داده در مبحث مفاهيم حافظه و انواع داده توضيح داده شده اند. در ضمن به جای استفاده از سه دستور فوق می توانستيم از دستور زير نيز استفاده کنيم:
int integer1, integer2, sum;
نکته :
· بعضی از برنامه نويسان ترجيح می دهند که هر متغير را در يک خط تعريف کنند و توضيحات لازم را در جلوی آن بنويسند.
· متغير را می توان در هر جايی از برنامه تعريف کرد، ولی حتماً اين کار بايد قبل از اولين استفاده از متغير صورت گيرد، به عنوان مثال برنامه فوق را می توان به صورت زير نوشت:
· #include
·
· int main()
· {
· cout << "Enter first integer\n";
·
· int integer1;
· cin >> integer1;
·
· cout << "Enter second integer\n";
·
· int integer2;
· cin >> integer2;
·
· int sum;
· sum = integer1 + integer2;
·
· cout << "Sum is " << sum << endl;
·
· return 0;
· }
· اگر تعريف متغير را در بين دستورات اجرايی برنامه انجام می دهيد، يک خط خالی قبل از آن بگذاريد تا تعريف متغير مشخص باشد. اينکار به وضوح برنامه کمک می کند.
· اگر تعريف متغيرها را در ابتدای برنامه انجام می دهد، يک خط خالی بعد از آنها بگذاريد تا از دستورات اجرايی جدا شوند. اينکار نيز به وضوح برنامه و سهولت اشکال زدايی کمک می کند.
cout << "Enter first integer \n";
دستور فوق رشته Enter first integer را بر روی صفحه نمايش نشان می دهد و به ابتدای سطر جديد می رود.
cin >> integer1;
دستور فوق با وارد کردن هر عدد و فشردن کليد Enter عدد وارد شده را در متغير integer1 قرار می دهد.
cout << "Enter second integer \n";
cin >> integer2;
دو دستور فوق نيز ابتدا عبارت Enter second integer را بر روی صفحه نمايش چاپ کرده و سپس در خط بعد عدد وارد شده از صفحه کليد را پس از فشردن کليد Enter در متغير integer2 قرار می دهد.
sum = integer1 + integer2;
دستور فوق حاصل جمع متغيرهای integer1 و integer2 را محاسبه و نتيجه را توسط عملگر انتساب (=) در متغير sum قرار می دهد.
cout << "Sum is " << sum << endl;
و در نهايت دستور فوق باعث نمايش حاصل جمع بر وی صفحه نمايش می شود.
نحوه اجرای برنامه به صورت زير می باشد:
ساختار انتخاب if
در برنامه نويسی مواردی پيش می آيد که بخواهيم دستور يا دستوراتی، هنگامی که شرط خاصی برقرار است، توسط برنامه به اجرا در آيد. اين مورد در زندگی روزمره نيز ديده می شود؛ به عنوان مثال " اگر فردا باران نيايد، من به کوه خواهم رفت." شرط مورد نظر نيامدن باران است و عملی که قرار است انجام شود رفتن به کوه می باشد. شيوه پياده سازی ساختار انتخاب if به صورت زير می باشد:
if ( شرط مورد نظر )
دستور مورد نظر ;
به مثال زير توجه کنيد:
if (x == 50)
cout << "x is 50";
اگر از دستور فوق در برنامه استفاده کنيم، اگر مقدار متغير x قبل از رسيدن به شرط فوق برابر 50 باشد عبارت "x is 50" بر روی صفحه نمايش ظاهر خواهد شد وگرنه دستور cout << "x is 50" ; ناديده گرفته می شود و برنامه خط بعدی را اجرا می کند.
توجه داشته باشيد که شرط مورد استفاده در دستور if هر عبارت منطقی می تواند باشد. در مبحث عبارات منطقی ، اينگونه عبارات و شيوه کاربرد آنها را به طور کامل بررسی کرديم.
اگر بخواهيم هنگامی که شرط برقرار می شود، بيش از يک دستور اجرا شود، بايد دستورات مورد نظر را با علامت { } دسته بندی کنيم، به مثال زير توجه کنيد:
if ( x==50 )
{
cout << "x is ";
cout << x;
}
قطعه کد فوق هنگامی که مقدار x عدد 50 باشد، عبارت "x is 50" را در صفحه نمايش چاپ می کند.
ولی در دستورات زير:
if ( x == 50)
cout << "x is ";
cout << x ;
خط آخر برنامه به هر جهت اجرا می شود. به عنوان مثال اگر فرض کنيم x برابر 50 است برنامه به درستی عبارت "x is 50" را چاپ می کند، اما اگر مثلاً x برابر 20 باشد عدد 20 بر روی صفحه نمايش ظاهر خواهد شد. چون عبارت ;cout <<x جز دستورات if قرار ندارد و يک دستور مجزا می باشد.
مورد اخير که توضيح داده شد يکی از مواردی است که بعضی از برنامه نويسان به اشتباه مرتکب آن می شوند. پس در هنگام نوشتن برنامه های خود به دسته بندی دستورات دقت کنيد.
گاهی اوقات نياز داريم که در صورت برقرار بودن شرط خاصی يک سری دستورات اجرا و در صورت برقرار نبودن شرط دسته ای ديگر از دستورات اجرا گردند. به عنوان مثال اگر فردا باران بيايد من به کوه نمی روم در غير اين صورت من به کوه خواهم رفت؛ زبان ++C برای پياده سازی چنين ساختاری شيوه زير را در اختيار ما قرار داده است.
if (شرط مورد نظر)
دستور1 ;
else
دستور2 ;
اگر شرط برقرار باشد دستور1 اجرا می گردد و در غير اين صورت دستور2 اجرا می شود. به مثال زير توجه کنيد:
if ( x = = 50 )
cout << "x is 50";
else
cout << "x is not 50";
اگر مقدار متغير قبل از رسيدن به شرط فوق برابر 50 باشد عبارت "x is 50" برروی صفحه نمايش چاپ می شود در غير اين صورت عبارت "x is not 50" چاپ می شود.
بياد داشته باشيد اگر می خواهيد از بيش از يک دستور استفاده کنيد، حتماً آنها را با { } دسته بندی نماييد. به عنوان مثال:
if ( x > 50 )
{
cout << x;
cout << "is greater than 50";
}
else
{
cout << x;
cout << "is less than 50";
}
اگر متغير x حاوی عدد 100 باشد خروجی به صورت زير می باشد:
100 is greater than 50
و اگر متغير x عدد 10 باشد خروجی به صورت زير است:
10 is less than 50
از ساختارهای if/else های تو در تو می توان برای بررسی حالتهای چندگانه استفاده کرد. برنامه زير در همين رابطه است:
#include
int main( )
{
int x;
cout << "Please enter a number:";
cin >> x;
if ( x > 0 )
cout << x << "is positive.";
else
if ( x < 0 )
cout << x << "is negative.";
else
cout << "The number that you entered is 0.";
return 0;
}
برنامه فوق را سه بار با سه عدد مختلف اجرا می کنيم. خروجی ها به صورت زير می باشند:
Please enter a number : 10
10 is positive.
Please enter a number : -5
-5 is negative.
Please enter a number : 0
The number that you entered is 0.
نکته : برای وضوح برنامه پيشنهاد می شود همانند برنامه فوق هنگام استفاده از if يا if/else و يا ديگر ساختارهای کنترلی از تورفتگی های مناسب استفاده کنيد. يعنی به عنوان مثال دستور if را به صورت زير:
if ( x > 0 )
cout << x << "is positive.";
بنويسيم و نه به صورت زير :
if ( x > 0 )
cout << x << "is positive.";