0

آموزش ++C - بخش چهارم

 
reza1371
reza1371
کاربر برنزی
تاریخ عضویت : مهر 1388 
تعداد پست ها : 168
محل سکونت : لرستان

آموزش ++C - بخش چهارم
یک شنبه 29 فروردین 1389  11:01 PM

در اين قسمت به معرفي ساختار if             در C++     مي‌پردازيم كه بر مبناي برقرار بودن يا نبودن برخي از شرط‌ها اقدام به تصميم‌گيري مي‌كند. عبارت موجود در يك ساختار if    ، شرط ناميده مي‌شود. اگر شرط مورد قبول واقع شود (شرط true    باشد) عباراتي كه در داخل بدنه ساختار if       قرار گرفته‌اند اجرا مي‌شوند و اگر شرط مورد قبول واقع نشود عبار ا ت داخل بدنه اجرا نخواهند شد. براي آشنائي شما با چنين ساختاري به بررسي يك مثال خواهيم پرداخت.

 

شرط‌هاي كه در ساختار    if بكار مي‌روند مي‌توانند از عملگرهاي مقايسه‌اي و رابطه‌اي كه در جدول شكل 12-2 آورده شده‌اند، استفاده كنند. تمام عملگرهاي رابطه‌اي داراي اولويت يكسان بوده و از سمت چپ به راست ارزيابي مي‌شوند. عملگرهاي مقايسه‌اي به نسبت عملگرهاي رابطه‌اي از اولويت پايين‌تري برخوردار هستند و آنها هم از سمت چپ به راست ارزيابي مي‌شوند.

 

 

انجمن بزرگ راسخون |‌تالار برنامه نويسي |‌www.rasekhoon.net

                    شكل 11-2 | ترتيب اجراي عملگرهاي محاسباتي در يك چند جمله‌اي درجه دوم.
 

 

 

انجمن بزرگ راسخون |‌تالار برنامه نويسي |‌www.rasekhoon.net

شكل 12-2 | عملگرهاي مقايسه‌اي و رابطه‌اي.

خطاي برنامه‌نويسي  

 

در صورتيكه مابين هر كداميك از عملگرهاي    ==    ،    !=    ،    >=    و    <=    فاصله قرار دهيد با خطاي نحوي مواجه خواهيد شد.

 

خطاي برنامه‌نويسي  

 

معكوس نوشتن عملگرهاي    !=    ،    >=    و    <=    بصورت    =!    ،    =>    و    <    = خطاي نحوي بدنبال خواهد داشت . در برخي از موارد نوشتن عملگر      !=    بصورت    =!    خطاي نحوي تلقي نمي‌شود اما بصورت يك خطاي منطقي و در زمان اجراي برنامه تاثير خود را نشان مي‌دهد.

 

خطاي برنامه‌نويسي  

 

اشتباه گرفتن رفتار عملگر رابطه‌اي    ==    با عملگر تخصيص    =    مي‌تواند خطاي منطقي بدنبال داشته باشد.

 

برنامه زير از شش عبارت      if براي مقايسه بين دو عدد ورودي از سوي كاربر استفاده مي‌كند. اگر شرط موجود در هر كداميك از عبارات    if برقرار باشد ( true    )، خروجي مرتبط با آن عبارت به اجرا درخواهد آمد. برنامه شكل 13-2 نشاندهنده برنامه و كادرهاي ورودي و خروجي از اجراي نمونه برنامه است    .  

 
 

 
 

 

انجمن بزرگ راسخون |‌تالار برنامه نويسي |‌www.rasekhoon.net
 
انجمن بزرگ راسخون |‌تالار برنامه نويسي |‌www.rasekhoon.net
 

 

 
انجمن بزرگ راسخون |‌تالار برنامه نويسي |‌www.rasekhoon.net
 

شكل 13-2 | عملگرهاي رابطه‌اي و مقايسه‌اي.

در خطوط    6-8  

 


 

از عبارات using    استفاده شده است كه نياز به تكرار پيشوند std::    را برطرف مي‌كند. پس از بكارگيري عبارات using    ، مي‌توانيم cout    را بجاي std::cout    ، cin    را بجاي std::cin    و endl    را بجاي std::endl    در مابقي برنامه بنويسيم.    ] توجه: از اين نقطه به بعد در كتاب، در هر مثال از يك يا چند عبارت using    استفاده شده است.    [      

 

برنامه‌نويسي ايده‌ال  

 

ترجيحاٌ بلافاصله پس از    #include      از عبارت using    استفاده كنيد. 

 

در خطوط    13-14      

 

 

متغيرهاي مورد نياز برنامه اعلان شده‌اند. بخاطر داريد كه متغيرها مي‌توانند در يك خط يا چند خط اعلان شوند.

 

برنامه در خط    17    از روش آبشاري براي دريافت داده به منظور دريافت دو عدد صحيح استفاده كرده است. بخاطر داريد كه امكان نوشتن cin    را به توجه به خط    7    فراهم آورده‌ايم (بجاي std::cin    ). اولين مقدار قرائت شده و در متغير number1    قرار داده مي‌شود و سپس مقدار دوم قرائت شده و در متغير number2    ذخيره مي‌گردد.

 

ساختار      if در خطوط    19-20  

 

مبادرت به مقايسه متغيرهاي number1    و number2    براي تست برابر بودن مي‌كند. اگر مقادير برابر باشند، عبارت موجود در خط    20    جمله مبني بر اينكه اعداد با هم برابر هستند به نمايش در مي‌آورد. اگر شرطي در يك يا چند ساختار if    كه در خطوط    23, 26, 29,32    و    36    قرار دارند برقرار شود، عبارت متناظر توسط cout    در خروجي به نمايش در مي‌آيد.
 

دقت كنيد كه هر ساختار if    در برنامه شكل 13-2 داراي يك عبارت در بدنه خود بوده و بدنه تمام ساختارها بفرم دندانه‌دار نوشته شده‌اند. با دندانه‌دار نوشتن ساختار هر if    وضوح و خوانائي برنامه را افزايش داده‌ايم. در فصل چهارم نشان خواهيم داد كه چگونه مي‌توان در ساختارهاي if    از چند عبارت استفاده كرد ( به كمك جفت كاراكتر    { }    ).

 

برنامه‌نويسي ايده‌ال  

 

دندانه‌دار نوشتن عبارت يا عبارات موجود در درون ساختار if    سبب مي‌شود تا بدنه ساختار بخوبي آشكار شده و بدنبال آن خوانائي برنامه افزايش يابد.

 

برنامه‌نويسي ايده‌ال  

 

نبايستي بيش از يك عبارت در هر خط برنامه قرار دهيد.

 

خطاي برنامه‌نويسي  

 

قرار دادن سيمكولن بلافاصله پس از شرط يك عبارت (پس از پرانتزها) ساختار if    ، خطاي منطقي بدنبال خواهد داشت (اگرچه خطاي نحوي به حساب نمي‌آيد). سيمكولن سبب مي‌شود، تا بدنه ساختار if    خالي بنظر برسد، از اينرو ساختار if    هيچ عملي انجام نمي‌دهد، صرفنظر از اينكه شرط برقرار باشد يا نباشد. علاوه بر اين، بدنه اصلي ساختار if    بصورت يك عبارت مجزا از if    عمل مي‌كند و هميشه اجرا شده و در اكثر مواقع نتايج اشتباه توليد مي‌نمايد.

 

به نحوه استفاده از فاصله‌ها در برنامه شكل 13-2 دقت كنيد. در عبارات C++    ، كاراكترهاي white-space    همانند تب‌ها، خطوط جديد توسط كامپايلر در نظر گرفته نمي‌شوند. (اگر در درون رشته بكار گرفته شوند در نظر گرفته خواهند شد.) از اينرو، امكان دارد عبارات بر روي چند خط تقسيم شده و برطبق نظر برنامه‌نويس از هم فاصله پيدا كنند. جدا كردن هويت‌ها يا مشخصه‌ها، رشته‌ها (همانند    “hello”    ) و ثابت‌ها (همانند عدد    1000    ) بر روي چند خط خطاي نحوي خواهد بود.

 

خطاي برنامه‌نويسي  

 

جدا كردن يك مشخصه‌ از هم بوسيله كاراكترهاي white-space    خطاي نحوي بدنبال خواهد داشت ( براي مثال نوشتن main    بصورت ma in    ).

 

برنامه‌نويسي ايده‌ال  

 

مي‌توانيد ‌يك عبارت طولاني را بر روي چند خط قرار دهيد. اگر مي‌بايست يك عبارت به چند خط تقسيم شود، نقطه تقسيم را از مكاني همانند ويرگول در ليست ويرگول‌ها، يا پس از يك عملگر در عبارات طولاني قرار دهيد.

 

در جدول شكل 14-2 تقدم عملگرهاي معرفي شده در اين فصل بطور يكجا آورده شده‌اند. اولويت عملگرها از بالا به پايين كاهش مي‌يابد. دقت كنيد كه تمام اين عملگرها بجر از عملگر تخصيص    =    ، از سمت چپ به راست ارزيابي مي‌شوند.

 

 

 

 

انجمن بزرگ راسخون |‌تالار برنامه نويسي |‌www.rasekhoon.net

 

 

 

شكل 14-2 تقدم عملگرهاي معرفي شده تا بدين مرحله.

 

برنامه‌نويسي ايده‌ال  

 

اگر عبارتي مي‌نويسيد كه از عملگرهاي متعددي تشكيل شده، بهتر است به جدول تقدم عملگرها مراجعه كنيد. اگر از ترتيب عملگرها در عبارتي پيچيده مطمئن نيستيد، از پرانتزها استفاده كرده و ترتيب اجرا را در دست گيريد.  

 

 

تشکرات از این پست
دسترسی سریع به انجمن ها