آموزش: آموزش زبان سی شارپ - قسمت هشتم (بخش چهارم)- آشنایی با دستورات کنترلی و حلقه ها
شنبه, ۱۹ فروردين ۱۳۹۶، ۰۵:۰۱ ب.ظ
ا سلام به دوستان عزیز در وبلاگ neetbook، بخش چهارم از قسمت هشتم سری آموزشی
سی شارپ را با هم آغاز می کنیم. در بخش قبلی به بررسی کلی حلقه ها و دستور
for پرداختیم. در بخش چهارم که بخش آخر قسمت هشتم می باشد، به بررسی
دستورات while و do-while پرداخته و حلقه های نامحدود یا infinite-loops را
با هم بررسی خواهیم کرد.همانطور که در بخش قبلی گفتیم، حلقه ها برای تکرار
اجرای یک یا چند دستور مورد استفاده قرار می گیرند. یکی از دستوراتی که با
آن می توانیم در کد حلقه ایجاد کنیم دستور for می باشد که در بخش قبلی با
این دستور آشنا شدیم. دستور بعدی دستور while می باشد. تفاوت این دستور با
دستور for در این است که در ساختار while عملیات تعریف متغیر انجام نمی شود
و تنها یک شرط را برای خروج از حلقه باید مشخص کنیم. ساختار کلی دستور
while به صورت زیر است:
while({condition}) { // loop syntaxes }
برای دستور while در بخش condition ما باید شرطی که بر اساس آن حلقه به اتمام خواهد رسید را مشخص کنیم. دقت کنید که دستورات داخل بدنه while تا زمانی اجرا خواهند شد که شرط while برابر true باشد. برای آشنایی بیشتر از قسمت قبل مثال چاپ اعداد 1 تا 10 را که با for نوشته بودیم مجدداً مرور می کنیم:
for(int counter = 1; counter <= 10; counter++) Console.WriteLine(counter);
در ادامه قصد داریم حلقه for بالا را با دستور while باز نویسی کنیم:
var counter = 1; while (counter <= 10) { Console.WriteLine(counter); counter++; }
به کد بالا دقت کنید، ابتدا متغیری را خارج از حلقه while تعریف کردیم. سپس حلقه while را نوشتیم. بر اساس شرط حلقه while، کد بدنه حلقه ما تا زمانی اجرا خواهد شد که مقدار counter کوچکتر یا مساوی 10 باشد. مهمترین نکته ای که باید به آن توجه کنید، دستور آخر بدنه while است، بوسیله دستور آخر با هر بار اجرای حلقه ما یک واحد به متغیر counter اضافه می کنیم. در صورتی که این خط نوشته نشود، حلقه ما به صورت بی نهایت اجر خواهد شد و دائماً عدد 1 را در خروجی نمایش می دهد، زیرا مقدار counter اضافه نشده و شرط حلقه while برای همیشه مقدار true بر می گرداند.
ما می توانیم هنگام نوشتن حلقه while، عملیات اضافه کردن یا کم کردن مقدار counter را داخل خود شرط حلقه انجام دهیم:
var counter = 1; while (counter++ <= 10) { Console.WriteLine(counter); }
دقت کنید که عملگر ++ بعد از نام متغیر نوشته شده، به این دلیل که ابتدا باید شرط بررسی شده و سپس مقدار counter افزایش پیدا کند، اگر ++ را قبل از نام متغیر می نوشتیم، ابتدا یک واحد به counter اضافه شده و سپس شرط ما چک می شد، یعنی در خروجی ما اعداد 2 تا 10 را مشاهده می کردیم.
دستورات break و continue که در بخش قبلی بررسی کردیم نیز در حلقه while کاربرد دارند، دستور break باعث خروج از حلقه و دستور continue نیز باعث رفتن به تکرار بعدی حلقه خواهد شد.
حلقه های نامحدود
حلقه های نامحدود، حلقه هایی هستند که تعداد اجرای آن ها بی نهایت می باشد. برای مثال، سیستم عامل زمانی که راه اندازی می شود، یک حلقه نامحدود شکل گرفته و منتظر دستوری از جانب شما می شود. تنها زمانی این حلقه به پایان می رسد که شما سیستم عامل را Shut Down کنید. حلقه های نامحدود در برنامه نویسی نیز به همین صورت عمل می کنند. یعنی شما یک حلقه نامحدود تشکیل داده و در داخل حلقه بر اساس شرایط خاص، با دستور break به حلقه پایان می دهید. ساختار کلی نوشتن حلقه های نامحدود با دستور while به صورت زیر می باشد:
while (true) { // syntaxes }
زمانی که ما به جای شرط عبارت true را می نویسیم، به دلیل اینکه شرط دائماً true خواهد بود حلقه ما هیچ گاه پایان نخواهد یافت. با یک مثال ساده موضوع را بررسی می کنیم. فرض کنید می خواهیم برنامه ای بنویسیم که از کاربر یک نام کاربری و کلمه عبور را پرسیده و در صورت صحیح بودن نام کاربری و کلمه عبور از برنامه خارج شود. در صورت اشتباه وارد کردن نام کاربری یا کلمه عبور مجدداً از کاربر نام کاربری و کلمه عبور را دریافت کند:
Console.WriteLine("Welcome to ITPRO.IR C# Training Course"); Console.WriteLine("******************************************"); while (true) { Console.Write("Username: "); var username = Console.ReadLine(); Console.Write("Password: "); var password = Console.ReadLine(); if(username == "hossein" && password == "itpro") break; Console.WriteLine("Oops! Invalid username or password. Please try again..."); } Console.WriteLine("Congrats! Thank you for choosing itpro.ir..."); Console.ReadKey();
- در خط اول و دوم یک پیغام خوش آمد گویی به کاربر چاپ می کنیم.
- در خط سوم حلقه نامحدود ما شکل میگیرد. (استفاده از عبارت true در شرط while)
- در داخل حلقه با چاپ پیغام های مناسب، نام کاربری و کلمه عبور را از کاربر دریافت می کنیم.
- سپس بوسیله دستور if چک می کنیم اگر نام کاربری برابر hossein و کلمه عبور برابر itpro بود حلقه با دستور break به اتمام برسد. در غیر اینصورت پیغام مناسبی به کاربر نمایش داده و مجدداً نام کاربری و کلمه عبور را از او دریافت می کنیم. این عملیات تا زمانی که کاربر نام کاربری و کلمه عبور صحیح را وارد نکند تکرار خواهد شد.
- در انتها، با خارج شدن از حلقه به کاربر یک پیام خوش آمد گویی یا یک پیام مناسب نمایش داده و با دستور ReadKey منتظر می شویم تا کاربر برای خروج کلیدی را فشار دهد.
حلقه do-while
ساختار حلقه do-while به صورت زیر است:
do { // syntaxes } while({condition});
در بخش condition شرط اتمام حلقه را می نویسیم. تفاوت حلقه while با حلقه do-while در این است که حلقه do-while حداقل یکبار اجرا خواهد شد، به این خاطر که شرط اتمام حلقه را در اتنهای حلقه می نویسیم، اما حلقه while در صورت برقرار نبودن شرط، اصلاً وارد حلقه نمی شویم. همچنین به علامت ; در انتهای دستور بالا دقت کنید.
با پایان این بخش، قسمت مربوط به دستورات کنترلی و حلقه ها به پایان می رسد. به امید خدا در قسمت بعدی با مبحث آرایه ها در زبان سی شارپ آشنا شده و به بررسی دستور foreach خواهیم پرداخت.
منبع:programming.itpro.ir
- ۹۶/۰۱/۱۹