آموزش C++ قسمت هفتم

مصطفی دادخواه 1394/11/7 3079

حالا میخوام داستان زندگی این جناب if رو براتون تعریف کنم . این if یه روز که تو یه کافه میشینه به یه دختری بر میخوره زیبا رو . قد بلند و ...

وقتی میبینتش . یه دل نه 100 دل عاشقش میشه . میبینه که بدون اون اصلا نمیتونه زندگی کنه اصلا انگار بدون اون یه چیزی در وجود خودش کم داره . اسم دختره بود الس. اما دوستاش بهش میگفتن السا . با کلی پرس و جو آدرس دختره رو در میاره و کلی کلنجار با خودش میره و خواستش رو به الس میگه . الس میبینه که طرف کار داره . ( if در شرکت شرط بندی کار میکرد ) تیپ داره و ... پس بله رو میگه میرن سر زندگیشون این جوری بود if else به وجود اومد .

اما if else دقیقا چیکار میکنه ؟

این ساختار زمانی استفاده میشود که میدونیم برای برنامممون دو حالت بیشتر رخ نمیده . یا این حالت رخ میده یا یه حالت دیگه . در این صورت از ساختار انتخابی ifelse استفاده میشه

نحوه کارش هم به این صورت هست

if (  شرط مورد نظر ){

دستورات;

}

Else{

دستورات ;

}

اجازه بدید با مثالی بهتر قضیه رو واستون روشن کنم :

مثلا در مجموعه اعداد طبیعی اعداد یا زوج هستند یا فرد . کلا دو حالت وجود داره براشون

یا باز در همین مجموعه اعداد ، اعداد یا مثبت هستند یا منفی. ) اگه از من میخواین این ایراد رو بگیرید که صفر نه مثبت نه منفی باید بگم که صفر عموما مثبت محسوب میشه )

یا حتی در واحد های درسی، شما یا واحدی رو پاس می کنید یا اینکه میفتید . و هزاران مثالی دیگه ای که میشه زد .

حالا برای این که به نحوه استفاده اش هم تو برنامه ها آشنا بشید . مثال اعداد زوج رو مینویسیم .

#include

using namespace std;

void main()}

  int number;

  cout << "Enter your number : ";

  cin >> number;

  if (number % 2 == 0)

    cout << "You number is even " << endl;

  else

    cout << "Your number is odd" << endl;   

{

خب برنامه رو توضیح میدم . خط های اولش که چیزی نداره . از قسمت if به بعد توضیح میدم.

گفتم که

if (number % 2 == 0)

    cout << "You number is even " << endl;

این یعنی چی ؟ یعنی اینکه اگه حاصل باقیمانده عدد ما بر 2 برابر با صفر شد بیا عبارت

You number is even

رو در خروجی چاپ کن بعد برو خط بعد .

حالا چرا number %2 ==0 ؟

جواب : چون تمامی اعداد زوج رو شما بر 2 تقسیم کنیم باقی مانده اش صفر میشه . شما این به این معنی است که عدد ما حتما مضربی از 2 بوده که باقی مانده اش صفر شده .

حالا در خط بعدی گفتم که

else

    cout << "Your number is odd" << endl;

یعنی خوب اگه حالت اول برقرار نبود یعنی اگه عددمون زوج نبود پس در غیر این صورت حتما باید فرد باشه دیگه . برای همین گفتم

else

    cout << "Your number is odd" << endl;

خب اینم از ساختار انتخابی if else میریم سراغ ساختار بعدی :

بعد از مدتی که از زندگیشون گذشت . اولین ثمره زندگیشون بدنیا اومد . و اون هم کسی نبود جز if else if

این بچه همه ویژگی های پدر و مادرش رو به ارث برده بود . کم کم بزرگ شد و پا به اجتماع گذاشت . اون دوست داشت مثل پدرو مادرش راه اونا رو ادامه بده . پس مثل همونها شد اما رفت دانشگاه مدرک گرفت با علمش پیشرفته تر عمل کرد

اما if else if کجا به کار میاد ؟

این ساختار زمانی بکار میره که حالت هایی که برای برنامه ما ممکنه پیش بیاد از دو حالت بیشتر باشه . نحوه نوشتنش هم به این صورت هست :

if ( شرط مورد نظر ){

دستورات ;

}

else if ( شرط مورد نظر )}

دستورات;

{

else {

دستورات ;

{

نکته اول : شما میتونید تا nبار این ساختار رو تکرار کنید . این حالت پیچیده ساختار if else هست . من چون شککل کلیش رو میخواستم توضیح بدم تا 3 حالت رو نوشتم .

نکته دوم : نوشتن else در آخر الزامی نیست . بسته به اینکه حالت های برنامه شما چه جور میخوان باشند و شرط ها چگونه بررسی میشن . ساختار else در انتها میتونه قرار بگیره یا قرار نگیره . پس فکر نکنید مشکلی از این بابت پیش میاد .

حالا میخوام با استفاده از این ساختار مثالی رو که درباره ی مثبت یا منفی بودن اعداد بود رو بنویسم .

#include> number;

  if (number < 0)

    cout << "You number is less than zero " << endl;

  else if (number > 0)

    cout << "Your number is more than zero" << endl;

  else

    cout << "Your number is zero"<

خب ساختار if else if هم معرفی شد

if بعد از این که مدرکش رو گرفت دید ننه باباش به این فکر افتادن که دیگه باید برای این آستین بالا بزنن . وقتشه . پس ازش پرسیدن کسی رو نمیخوای ؟ اونم با پررویی تمام گفت آره . میخوام

گفتن کییی ؟!؟! گفت switch . گفتن switch دیگه کیه ؟گفت چند وقتیه باهم تو یه گروپ آشنا شدیم . حالا این if و else بدبخت میگن ول کن این کارها رو یعنی چی ؟ این کارها آخر عاقبت نداره . گوش نمیکنه . میگه نه الا و بلا همین . من یکی رو میخوام مثل خودم ساختار انتخاب باشه .

حالا فعلا نمیدونم بحثشون کجا رسید اما وقت نداریم . شما رو با switch عزیز آشنا میکنم .

switch یک ساختار چند انتخابیه با این محدودیت که حالت هایی که براش اتفاق میفته حتما باید ثابت و مشخص باشه .

فرم کلیش رو باهم ببینیم :


switch ( متغیر )}

case حالت مشخص 1  :

    دستور 1;

    دستور 2 ;

      .

      .

      . 

دستور   n;

break;

case حالت مشخص 2 :

دستور 1;

    دستور 2 ;

      .

      .

      . 

دستور   n;

break;

  .

  .

  .

case حالت مشخص n : ام  

دستور 1;   

    دستور 2 ;

      .

      .

      . 

دستور   n;

break;

default :

دستور 1;

    دستور 2 ;

      .

      .

      . 

دستور   n;

}

خب گفتم حالت مشخص . اگه دقت کرده باشید در برنامه های قبلی که مثال زدم ما دقیق به سیستیم نمیگفتیم با این عدد چه کار کن . یه حالت عمومی واسش در نظر میگرفتیم که هر عددی وارد شد این کارهارو کن . مثلا ببین بزرگتر از صفر هست یا نه بعد بیا یه سری کارهارو بکن . اما در ساختار سویچ دیگه نمیتونیم بگیم که اگه عدد بزرگتر از صفر بود . متغیر ( عدد ) باید دقیقا مشخص باشه که چی هست . واسه همین میگم حالت مشخص . اگه هنوز متوجه نشدید نگران نباشید . مثال میزنم .

اما چند کلمه جدید اینجا میبینید .

case یعنی مورد - حالت . قبل از اینکه حالتمون رو بخوایم مشخص کنیم باید بنویسیمش بعد جلوش حالت مورد نظرمون رو . آخر سر هم دو نقطه میگذاریم .

دقت کنید که دو نقطه اینجا حکم همون آکلاد رو داره ولی به جای آکلاد اینجا دو نقطه استفاده میکنیم .

اما کلمه بعدی break هست . break در هر ساختار کنترلی میتونه استفاده بشه . وظیفش هم بیرون آوردن برنامه از اون قسمتی که در حال اجرا هست .


default

. ما برای ساختار انتخابمون در حالت سویچ همیشه یه حالت پیش فرضی در نظر میگیرم که اگه هیچ کدوم از اتفاق هایی که قرار بود بیفته نیفتاد بیا این کارهارو بکن .

اجازه بدید با مثالی توضیح بدم :

میخوام یه برنامه بنویسمم که عددی رو از بین 1 تا 5 دریافت کنه و معادل انگلیسیش رو تو خروجی چاپ کنه .


#include

using namespace std;

void main(){

  int number;

  cout << "Enter your number : ";

  cin >> number;

  switch (number)

  {

  case 1 :

    cout << "One" << endl;

    break;

  case 2 :

    cout << "Two" << endl;

    break;

  case 3:

    cout << "Three" << endl;

    break;

  case 4 :

    cout << "Four" << endl;

    break;

  case 5 :

    cout << "Five" << endl;

    break;

  default:

    cout << "your input is wrong!" << endl;

}
}

خب میبینید که در ساختار سوویچ چیزی که بهش دادیم مورد بررسی قرار بگیره متغیر number هست .

در خط اول گفتیم زمانی که عددمون برابر با 1 بود


case 1 :

دقت کنید الان عدد من دیگه مشخصه . برابر با 1 هست . واسه همین میگم مشخص . دیگه نگفتم اگه از 0 بزرگتر بود یا چیزی دیگه . دقیقا ذکر کردم که عدد من اگه 1 بود حالا این کارو انجام بده . حالا چه کاری ؟

تو خروجی بنویس one . بعد break . یعنی دیگه از این ساخار switch بیا بیرون و برو دستورات بعدی رو اجرا کن .

برای case 2 هم همین طور تا میرسیم به default.


default

کی اجرا میشه ؟ زمانی اجرا میشه که عددی دادیم بین 1 تا 5 نبود .

اون موقع است


default

اجرا میشه و میگه که


your input is wrong!.

سوال : اگه break نگذارم چی میشه ؟

جواب : همه دستورات اجرا میشن . بیاین کد بالا رو به این صورت تغییربدید .


#include

using namespace std;

void main(){

  int number;

  cout << "Enter your number : ";

  cin >> number;

  switch (number)

  {

  case 1 :

    cout << "One" << endl;

  case 2 :

    cout << "Two" << endl;

    break;

  case 3:

    cout << "Three" << endl;

    break;

  case 4 :

    cout << "Four" << endl;

    break;

  case 5 :

    cout << "Five" << endl;

    break;

  default:

    cout << "your input is wrong!" << endl;

  }

}

حالا اگه عدد 1 رو وارد کنید میبینید که هم مینویسه one هم مینویسه two

چرا ؟ چون هیچ چیزی نبوده که سوییچ رو اونجا متوقف کنه . برای همین کامپایلر این توهم به سرش میزنه که لابد برای case 1 و case 2 قراره یه دستورات مشترکی براشون اعمال بشه ، واسه همین break ندارند . و میاد دستورات هر دو تا رو انجام میده . اگه case 2 هم break ش رو بردارید . میاد دستورات تا case 3 انجام میگیره . این دستورات همیشه تا جایی انجام میگیره که به break برسه. این یادتون باشه.

حالا بیاین برای مطلب آخر یه ماشین حساب ساده بنویسیم . برنامه ای که همه عالم در عین سادگی درگیرن باهاش. نمیدونم چرا اما خیلی ها از نوشتنش وحشت دارند .


#include

using namespace std;

void main(){

  float number1 =0, number2 =0;

  char operand;

  cout << "Enter your number1:";

  cin >> number1;

  cout << "Enter your number2:";

  cin >> number2;

  cout << "Enter your operand ( you can use + - * / ) ";

  cin >> operand;

  switch (operand)

  {

  case '+' :

    cout << number1 + number2 << endl;

    break;

  case '-' :

    cout << number1 - number2 << endl;

    break;

  case '*':

    cout << number1 * number2 << endl;

    break;

  case '/' :

    cout << number1 / number2 << endl;

    break;

  default:

    cout << "Invalid Operator!" << endl;

}

}

خب میبینیم که برای نوشتن یک ماشین حساب ساده باید روی عملگری که قراره اون عملیات ریاضی رو برای ما انجام بده ساختار سوویچ ببندیم . پس نوشتم


switch ( operand )

اما خب در مورد case ها . چرا بین حالت هام ‘ ‘ گذاشتم ؟

دلیلش خیلی واضحه . جلسه سوم گفتم . گفتم که برای متغیر های کاراکتری باید از نماد ‘ ‘ در دو طرف اون کاراکتر استفاده کنیم . برای همین برای عملگرهام اومدم این کارو کردم چون کاراکترن. اگه نمیخواستم این کارو کنم باید کد اسکی این کاراکتر ها رو پیدا میکردم به جاش عدد کد اسکیشونو میگذاشتم .

چیز خاصی تو این برنامه نمیبینیم تا اینکه به default میرسه . اگه عملگری که انتخاب شده با هیچکدوم از اونهایی که تعریف شده برابر نبود قسمت default اجرا میشه و عبارت Invalid Operator! رو چاپ میکنه . و برنامه به پایان میرسه .

با به پایان رسیدن برنامه ، آموزش ما هم به پایان خودش میرسه

امیدوارم مطالب امشب واضح و مفید بوده باشه . از توجه و همراهیتون متشکرم . خدانگهدار

آیکن دانلود دانلود PDF قسمت هفتم آموزش C++

قسمت بعدی قسمت هشتم آموزش C++

قسمت بعدی قسمت قبلی