آموزش سی شارپ C# قسمت هشتم

1396/7/19 محمد احمدی 6664

به نام خدا . با عرض سلام و وقت بخیر خدمت دوستان عزیز

محمد احمدی هستم . با جلسه 8 آموزش سی شارپ در خدمتتون خواهم بود .

توی جلسه قبل خیلی مختصر حلقه ی شرطی while رو توضیح دادیم . گفتیم که بعد از نوشتن دستور while , یک مقدار رو توی پرانتز به اون میدیم ( این مقدار میتونه یک متغیر از نوع بولین Boolean یا یک یا چند عبارت شرطی باشه )

در صورتی که نتیجه نهایی اون مقدار برابر true باشه , این حلقه شروع میشه و اگه دفعات بعدی همچنان مقدار برابر true باشه , دستورات درون حلقه مجددا تکرار میشه !

خب اگه حلقه while رو به شکل روبرو بنویسیم , احتمالا سیستم هنگ میکنه و مجبور به بستن برنامه میشیم :

While(true){}

While(true);

 

دستور بالا یک حلقه بینهایت رو میسازه که هیچ پایانی نداره ( چون هیچ دستوری درون حلقه نیست , هردو خط با هم برابر هستن ) .

 

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

حلقه for :

یک حلقه با تعداد دفعات مشخص , دارای شروع و پایان , دارای شمارنده و ... .

ساختار کلی حلقه for :

for ( init; condition; increment )

{

 Code ;

Code ;

….. ;

}

 

بطور معمول ما میتونیم توی حلقه for سه بخش ورودی تعیین کنیم :

 

1. Init تعریف و مقدار دهی یک شمارنده ( برای شمردن تعداد دفعات حلقه . مثلا یک متغیر به اسم i تعریف میکنیم و برابر 1 قرار میدیم )

2. Condition تعریف شرط حلقه ( برای مثال میگیم که اگه شمارنده از 10 کوچکتر بود )

3. Increment تعریف گام های حلقه ( برای اینکه حلقه بینهایت نشه , هربار یک عدد به i اضافه بشه ! )

مثال :

int i;

for(i = 0 ; i < 10 ; ++i )

{

 MessageBox.Show(i.ToString());

}

 

اگه دستور بالا رو اجرا کنید , احتمالا به عنوان نتیجه اعداد 0 تا 9 بهمون نشون داده میشه !

 

چون ما توی بلاک حلقه فور فقط یک دستور داریم , میتونیم از نوشتن {} خودداری کنیم و حلقه رو بصورت یک خطی بنویسیم و اگه بخوایم حلقه بالا رو یکم بهتر بنویسیم , به شکل زیر عمل میکنیم :

for(int i = 0 ; i < 10 ; ++i)

 MessageBox.Show(i.ToString());

 

در صورت اجرا میبینید که نتیجه دقیقا مثل دفعه ی قبل هست . با این تفاوت که الان توی دو خط دستورات رو نوشتیم !

 

برای درک بهتر یک پروژه Console Application ایجاد کنید . ( نحوه ساخت پروژه کنسول سی شارپ تقریبا مثل پروژه های ویندوز و به شکل زیر هست ) :

سی  شارپ

عکس 1 - آموزش ساخت پروژه کنسول در سی شارپ

پروژه های کنسول یک سری تفاوت های بزرگی با پروژه های ویندوز فرم دارن . برای مثال ما دیگه فرم و بخشی برای طراحی فرم نداریم . ساختار سی شارپ تغییر نمیکنه ولی توی کنسول به یک سری از کلاس ها مثل قبل دسترسی نداریم .

برای مثال دیگه نمیتونیم از کلاس MessageBox استفاده کنیم و یا نمیتونیم از textbox و Button و ... استفاده کنیم .

خب دلیل استفاده از کنسول با امکانات به این پایینی این هست که توی این محیط یکم بهتر میشه حلقه ها رو درک کرد !

در حال حاضر ما فقط یک بخش نوشتن کد داریم و درون اون , یک کلاس Program و یک متد Main داریم و کد های مورد نظر رو باید توی متد Main بنویسیم .

دستور زیر رو توی متد Main بنویسید و اجرا کنید :

Console.ReadKey();

خب در حال حاضر فقط یک صفحه سیاه اجرا میشه و منتظر میمونه تا کاربر یکی از کلید های کیبورد رو فشار بده تا برنامه بسته بشه !

سی شارپ

برای نمایش پیام Hello World در محیط کنسول به شکل زیر عمل میکنیم :

Console.WriteLine("Hello World “);

البته میتونیم بجای hello world مقدار یک متغیر رو به کاربر نمایش بدیم :

string msg = "Hello World ";

Console.WriteLine(msg);

int id = 12;

Console.WriteLine(id);

bool flag = false;

Console.WriteLine(flag);

 

اگه یادتون باشه قبلا برای نمایش یک متغیر از نوعی به جزء string , اول با متد .ToString() مقدار اون رو به رشته تبدیل میکردیم . ولی اینجا نیازی به این کار نیست و با استفاده از متد WriteLine میتونیم انواع زیادی از متغیر ها رو نمایش بدیم .

 

نکته مهم : محیط کنسول یک خاصیت داره و اونم این هست که پایدار نیست . یعنی بلافاصله بعد از اجرا دستورات رو انجام میده و بعدش بسته میشه . برای اینکه از بسته شدن جلوگیری کنیم , در انتهای متد Main و قبل از { حتما باید کد Console.ReadKey(); رو بنویسیم .

سی شارپ

در صورتی که بخوایم یک مقدار رو از کاربر دریافت کنیم به شکل زیر عمل میکنیم :

 

توی قطعه کد بالا , دو متغیر رو تعریف کردیم و مقدارشون رو از کاربر گرفتیم و در نهایت جمع اون دوتا متغیر رو به کاربر نشون دادیم !

 

و البته با Console.ReadKey(); از بسته شدن برنامه جلوگیری کردیم .

نکته مهم : متد Console.ReadLine() یک عبارت رشته ای رو برمیگردونه . بنابران قبل از مقدار دهی num1 و num2 باید اون رو به شکل زیر به عدد از نوع int تبدیل کنیم :

int num1;

num1 = Convert.ToInt32(Console.ReadLine());

int num2 = Convert.ToInt32(Console.ReadLine());

Console.WriteLine(num1 + num2);

Console.ReadKey();

 

برای پایان جلسه , یک مثال از حلقه میزنم :

 

num1 = Convert.ToInt32(Console.ReadLine());

int i = 0;

while (num1 > i)

 Console.WriteLine(i);

 

در صورت اجرای کد بالا حتما فقط 0 رو به عنوان نتیجه مشاهده میکنید !!

 

باید یک خط به دستورات بالا اضافه بشه که متغیر i رو رو به بالا افزایش بده :

num1 = Convert.ToInt32(Console.ReadLine());

int i = 0;

while (num1 > i)

}

 Console.WriteLine(i);

 i++;

}

 

خب الان به عنوان نتیجه 0 تا 9 چاپ میشه !

 

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

در صورت اجرای کد بالا حتما فقط 0 رو به عنوان نتیجه مشاهده میکنید !!

باید یک خط به دستورات بالا اضافه بشه که متغیر i رو رو به بالا افزایش بده :

num1 = Convert.ToInt32(Console.ReadLine());

int i = 0;

while (num1 > i)

{

 Console.WriteLine(i);

 i++;

}

 

آیکن دانلود دانلود PDF قسمت هشتم آموزش سی شارپ C#

کانال تلگرام