آموزش سی شارپ C# قسمت هشتم
به نام خدا . با عرض سلام و وقت بخیر خدمت دوستان عزیز
محمد احمدی هستم . با جلسه 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++;
}
نظرات کاربران