آموزش برنامه نویسی

آموزش سی شارپ

آموزش سی شارپ

پربیننده ترین مطالب
پیوندهای روزانه

با سلام به همه دوستان عزیزم در وبلاگneetbook .  با قسمت هشتم از سری آموزشی زبان سی شارپ در خدمت شما هستم. در ادامه مباحث مقدماتی سری آموزشی، قصد داریم با دستورات کنترلی، شرط ها و حلقه ها آشنا شویم. به دلیل حجم زیاد مطالب، قسمت هشتم به چهار بخش زیر تقسیم خواهد شد:

  1. بخش اول: آشنایی با دستور if
  2. بخش دوم: آشنایی با دستور switch
  3. بخش سوم: آشنایی با دستور for
  4. بخش چهارم: آشنایی با حلقه های while و do - while

مقدمه ای بر دستورات کنترلی


خیلی از مواقع، زمانی که برنامه ای را می نویسیم، نیاز داریم تا بر اساس شرایط خاص و یا ورودی های کاربر، روند اجرای برنامه را تغییر دهیم. برای نمونه، فرض کنید برنامه ای نوشته اید که در ابتدای اجرای برنامه، از کاربر یک نام کاربری و کلمه عبور دریافت و در صورت صحیح بودن اطلاعات وارد شده، کاربر به سیستم دسترسی خواهد داشت، در غیر اینصورت باید به کاربر پیغام مناسبی نمایش داده و از برنامه خارج شویم. برای این کار باید از شرط ها و دستورات کنترلی استفاده کنیم. در قسمت بررسی متغیرها و انواع داده، نوع داده Boolean را بررسی کردیم که بر اساس یک شرط مقدار True یا False را برمی گرداند. (True به معنی صحیح و False به معنی غلط می باشد). ما در دستورات کنترلی نیز از شرط ها استفاده میکنیم. در بخش اول از قسمت هشتم سری آموزشی زبا سی شارپ با دستور if آشنا می شویم.


دستور if


بوسیله دستور if ما قادر خواهیم بود بر اساس شرط های مختلف کدهای مورد نظر خود را اجرا کنیم. در ابتدا ساختار کلی دستور را بررسی کرده و سپس با ذکر یک مثال عملی با این دستور بیشتر آشنا خواهیم شد. ساختار اولیه دستور if به صورت زیر است:
if(condition)
{
    // statements
}

در قالب دستوری بالا، در قسمت condition شرط مورد نظر خود را می نویسیم. در قسمت statements هم دستوراتی که در صورت درست بودن شرط اجرا خواهند شد را می نویسیم. برای مثال فرض کنید متغیری داریم با نام A که عدد داخل آن 18 می باشد. حالا می خواهیم در صورتی که مقدار A برابر 20 بود پیغامی را به کاربر نمایش دهد:

if(A == 20)
{
    Console.WriteLine("Your Message!");
}

دقت کنید، بدنه دستور if با { و } (به این علامت ها Brace نیز گفته می شود) مشخص می شود. به این بدنه Scope یا فضای دستور if نیز گفته می شود. در صورتی که تعداد دستورات بدنه if تنها یک دستور بود، می توان از نوشتن Brace ها صرفنظر کرد:

if(A == 20)
    Console.WriteLine("Your Message!");

*نکته: در صورتی که Brace ها نوشته نشوند، امکان تعریف متغیر در دستور داخل if وجود ندارد و برای تعریف متغیر باید حتماً Brace ها نوشته شوند:

// invalid
if(A == 20)
    string myVar = "Test";

// valid
if(A == 20)
{
    string myVar = "Test";
}


دستور if else



در بالا، با ساختار اولیه دستور if آشنا شدیم. حالا فرض کنیم شرطی را مشخص کردیم، می خواهیم در صورت برقرار نبودن شرط، قطعه کد دیگری اجرا شود. در اینجا دستور else به کمک ما می آید. دستور else کدی که در صورت برقرار نبودن شرط باید اجرا شود را مشخص می کند. ساختار کلی else به صورت زیر است:

if(condition)
{
    // if body
}
else
{
    // else body
}

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

if(A == 20)
{
    Console.WriteLine("Your Message!");
}
else
{
    Console.WriteLine("Another Message!");
}

بر بخش else نیز می توان در وجود تنها یک دستور، از نوشتن Brace ها صرفنظر کرد.

مثال عملی 1
در این مثال قصد داریم برنامه ای بنویسیم که از کاربر یک کلمه عبور و یک نام کاربری را دریافت کرده و در صورت صحیح بودن اطلاعات وارد شده، پیغام مناسبی را به کاربر نمایش دهد. در صورت صحیح نبودن نام کاربری و کلمه عبور نیز پیغام دیگری نمایش داده خواهد شد. پروژه جدیدی از نوع Console Application با نام CSharp-Course08-01 ایجاد کنید. (در این قسمت شیوه ایجاد پروژه توضیح داده شده است). خوب گفتیم کدهای ما باید داخل متد Main نوشته شود.
1. در ابتدا ما باید یک نام کاربری و یک کلمه عبور از کاربر دریافت کنیم. این ورودی ها باید داخل یک متغیر ذخیره شوند. پس ما باید دو متغیر برای اینکار تعریف کنیم:

string username;
string password;

2. بعد از تعریف متغیرها، باید از کاربر نام کاربری و کلمه عبور را بگیریم. برای اینکار از متد Console.ReadLine استفاده می کنیم. با این دستور، برنامه منتظر ورود یک مقدار از کاربر شده و بعد از زدن کلید Enter، ورودی را برای ما بر میگرداند. خروجی این دستور از نوع string یا رشته می باشد. اما قبل از دریافت ورودی، باید یک پیام مناسب برای گرفتن اطلاعات از کاربر به او نمایش دهیم. برای نمایش اطلاعات از متد Console.Write استفاده می کنیم. در Console، ما دو دستور برای نمایش خروجی داریم، یکی Write و دیگری WriteLine. دستور اول تنها یک پیام را به کاربر نمایش می دهد، اما دستور دوم بعد از نمایش پیام، مکان نما یا Cursor را به خط بعد منتقل می کند. دستورات زیر را در ادامه دستورات قبلی می نویسیم:

Console.Write("Enter username:");
username = Console.ReadLine();
Console.Write("Enter password:");
password = Console.ReadLine();

به خط های دوم و چهارم دقت کنید، ما با Console.ReadLine مقدار را از کاربر دریافت کرده و مستقیماً داخل متغیرهای مربوطه ذخیره می کنیم.
3. در ادامه باید نام کاربری و کلمه عبور بررسی شوند و بر اساس اطلاعات وارد شده، پیغام مناسب به کاربر نمایش داده شود. برای انکار از دستور if استفاده می کنیم:

if(username == "IT" && password == "Pro")
{
    Console.WriteLine("Welcome to ITPro world!");
}
else
{
    Console.WriteLine("Oops! username or passord is invalid!");
}

به شرط داخل if دقت کنید، ما اینجا از عملگر && یا AND استفاده کردیم، به این خاطر که هم نام کاربری و هم کلمه عبور باید برابر با مقدارهای مد نظر ما باشند. برای مثال اگر از || یا OR استفاده می کردیم، کاربر با درست وارد کردن یکی از مقادیر نام کاربری یا کلمه عبور امکان دسترسی به سیستم را داشت، اما با && باید هر دو را صحیح وارد کند.

4. در انتها متد Console.ReadKey را می نویسیم تا برنامه قبل از خارج شدن، منتظر دریافت کلیدی از کاربر شود. در حال حاضر دستورات متد Main به شکل زیر خواهند بود:

string username;
string password;
Console.Write("Enter username:");
username = Console.ReadLine();
Console.Write("Enter password:");
password = Console.ReadLine();
if (username == "IT" && password == "Pro")
{
    Console.WriteLine("Welcome to ITPro world!");
}
else
{
    Console.WriteLine("Oops! username or passord is invalid!");
}
Console.ReadKey();

با زدن کلید F5 برنامه را اجرا کرده و خروجی را مشاهده می کنیم.


دستور if - else if


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

  1. اگر شرط 1 برقرار بود => دستورات اول
  2. در غیر اینصورت اگر شرط 2 برقرار بود => دستورات دوم
  3. در غیر اینصورت اگر شرط n برفرار بود => دستورات n ام
  4. در غیر این صورت => سایر دستورات

ساختار کلی این دستور به صورت زیر است:

if(condition1)
{
    // if body
}
else if(condition2)
{
    // if body
}
else if(conditionN)
{
    // if body
}
else
{
    // if body
}

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

مثال عملی 2
در این مثال عملی، قصد داریم تا یک برنامه ماشین حساب ساده بنویسیم. این برنامه ساده، از کاربر 2 عدد و یک عملگر را دریافت کرده و بر اساس عملگر وارد شده، محاسبه را انجام داده و به کاربر خروجی را نمایش می دهد. برای اینکار یک پروژه از نوع Console با نام CSharp-Course08-02 ایجاد کنید.

1. در ابتدا باید از کاربر سه مقدار را دریافت می کنیم. دو عدد و یک عملگر. برای اینکار نیاز به سه متغیر داریم. دو متغیر اول از نوع int که عددها را داخل آن ذخیره می کنیم و متغیر نوع سوم از نوع string که عملگر را داخل آن ذخیره می کنیم:

int firstNumber;
int secondNumber;
string @operator;

*به متغیر سوم دقت کنید، در ابتدای نام آن از علامت @ استفاده کرده ایم! دلیل اینکار، موجود بودن نام operator در لیست کلمات کلیدی زبان سی شارپ است. اگر شما قصد دارید متغییری تعریف کنید که نام آن در لیست کلمات کلیدی سی شارپ وجود دارد ابتدای نام آن باید از علامت @ استفاده کنید. کلمات کلیدی مانند int یا long یا if و ...

2. بعد از تعریف متغیرها، باید ورودی ها را از کاربر دریافت کنیم. نکته ای که باید در اینجا به آن توجه کرد، دو متغیر اول ما هستند. این متغیرها از نوع int تعریف شدند، در صورتی که متد Console.ReadLine مقداری از نوع رشته به ما بر میگرداند. در اینجا ما باید رشته را به عدد تبدیل کنیم. برای این تبدیل می توایم از متد int.Parse استفاده کیم. این متد یک ورودی از نوع رشته گرفته و آن را تبدیل به عدد می کند. مثال:

int num1 = int.Parse("12");

متد Parse برای سایر نوع های عددی نیز وجود دارید:

long longNumber = long.Parse("32223545212");
decimal decimalNumber = decimal.Parse("223.12");

در ادامه کد قبل، کد زیر را بنویسید. کد زیر عددها و عملگرها را از کاربر دریافت می کند:

Console.Write("Enter first number: ");
firstNumber = int.Parse(Console.ReadLine());
Console.Write("Enter second number: ");
secondNumber = int.Parse(Console.ReadLine());
Console.Write("Enter math operator (+,-,*,/): ");
@operator = Console.ReadLine();

دقت کنید که هنگام استفاده از متغیر operator نیز باید از علامت @ استفاده کرد.

به خط دوم دقت کنید. ترتیب اجرای دستورات، ابتدا دستورات سمت چپ اجرا شده و سپس عملیات انتساب انجام می شود. در قسمت سمت چپ نیز، ابتدا دستور ReadLine اجرا شده، سپس خروجی ReadLine به متد Parse ارسال می شود، متد Parse عملیات تبدیل را انجام داده و عددی را بر می گرداند و سپس این عدد داخل متغیر firstNumber ذخیره می شود.

3. در مرحله بعد، می خواهیم قبل از نمایش خروجی پیغامی مناسب برای کاربر نمایش داده شود. برای مثال "2 + 2 = 4"، دستور زیر را در ادامه وارد کنید:

Console.Write("Result for " + firstNumber + " " + @operator + " " + secondNumber + " = ");

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

if (@operator == "+")
{
    Console.WriteLine(firstNumber + secondNumber);
}
else if (@operator == "-")
{
    Console.WriteLine(firstNumber - secondNumber);
}
else if (@operator == "*")
{
    Console.WriteLine(firstNumber*secondNumber);
}
else if (@operator == "/")
{
    Console.WriteLine(firstNumber/secondNumber);
}
else
{
    Console.WriteLine("Invalid operator!");
}

به else انتهایی دقت کنید، این else در صورتی اجرا خواهد شد که عملگر وارد شده، هیچ از یک مقادیر جمع، تفریق، ضرب یا تقسیم نباشد که پیغام عملگر اشتباه را به کاربر نمایش می دهد. کد نهایی ما باید به صورت زیر باشد:

int firstNumber;
int secondNumber;
string @operator;
Console.Write("Enter first number: ");
firstNumber = int.Parse(Console.ReadLine());
Console.Write("Enter second number: ");
secondNumber = int.Parse(Console.ReadLine());
Console.Write("Enter math operator (+,-,*,/): ");
@operator = Console.ReadLine();

Console.Write("Result for " + firstNumber + " " + @operator + " " + secondNumber + " = ");
if (@operator == "+")
{
    Console.WriteLine(firstNumber + secondNumber);
}
else if (@operator == "-")
{
    Console.WriteLine(firstNumber - secondNumber);
}
else if (@operator == "*")
{
    Console.WriteLine(firstNumber*secondNumber);
}
else if (@operator == "/")
{
    Console.WriteLine(firstNumber/secondNumber);
}
else
{
    Console.WriteLine("Invalid operator!");
}
Console.ReadKey();

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

نمونه اجرای برنامه


تا اینجا، با ساختار دستور if و کاربردهای آن آشنا شدیم، در بخش بعدی با ساختار دستور switch آشنا خواهیم شد.

منبع:programming.itpro.ir
  • متین تیماسی ، مبین خسروی و عمران جودکی

نظرات  (۰)

هیچ نظری هنوز ثبت نشده است
ارسال نظر آزاد است، اما اگر قبلا در بیان ثبت نام کرده اید می توانید ابتدا وارد شوید.
شما میتوانید از این تگهای html استفاده کنید:
<b> یا <strong>، <em> یا <i>، <u>، <strike> یا <s>، <sup>، <sub>، <blockquote>، <code>، <pre>، <hr>، <br>، <p>، <a href="" title="">، <span style="">، <div align="">
تجدید کد امنیتی