آموزش حوضه های CG

آموزش گرافیک، برنامه نویسی و حوضه های CG

آموزش گرافیک، برنامه نویسی و حوضه های CG

آموزش ها مرتبط با حوضه CG هستند

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

در دو بخش قبلی به بررسی دستوران کنترلی پرداختیم. در بخش سوم از قسمت هشتم سری آموزشی، به بررسی حلقه ها و دستور for خواهیم پرداخت. اما حلقه ها چه کاربردهایی دارند؟ خیلی از اوقات، نیاز داریم قطعه ای از کد چندین بار تکرار شود. برای مثال، فرض کنید میخواهیم اعداد 1 تا 100 را چاپ کنیم. راه حل چیست؟ صد بار پشت سر هم دستور Console.WriteLine را بنویسیم؟؟؟!!! صد در صد اینطور نیست. در اینجور مواقع باید از حلقه ها استفاده کنیم. حلقه ها به ما این قابلیت را می دهند که دستوراتی را به تعداد دلخواه تکرار کنیم. حلقه ها را در دو بخش مورد بررسی قرار خواهیم داد. در بخش اول به بررسی دستور for پرداخته و در بخش بعدی به بررسی دستورات while و do-while می پردازیم. در ابتدا، ساختار کلی دستور for را با هم بررسی می کنیم. بوسیله دستور for می توان یک قطعه از کد را تعداد دلخواهی که مد نظر داریم اجرا کنیم. ساختار کلی این دستور به شکل زیر است:

for({init};{condition};{increment})
{
    // loop body
}

خوب، بهتره که به کاربرد و مفهوم هر یک از بخش های دستور بالا بپردازیم:

  1. init: در این بخش باید متغیری که شمارنده بر اساس آن عمل خواهد کرد را تعریف کنیم. هر حلقه for نیاز به یک متغیر شمارنده دارد که در هر تکرار، مقدار آن یک واحد اضافه می شود. این متغیر در بخش init تعریف می شود. این متغیر باید مقدار اولیه نیز داشته باشد.
  2. condition: بعد از تعریف متغیر شمارنده، باید شرطی برای اتمام حلقه مشخص کنیم، برای مثال، می خواهیم شرط ما 10 بار تکرار شود. در این قسمت تعیین می کنیم که حلقه ما در چه حالتی به اتمام می رسد. این قسمت باید مقدار بازگشتی از نوع bool داشته باشد.
  3. increment: در این بخش مقداری که با هر بار تکرار به شمارنده ما اضافه می شود یا کم می شود را مشخص می کنیم.
  4. loop body: بدنه حلقه for یا دستوراتی که می خواهیم با هر بار تکرار حلقه for اجرا شوند را در این قسمت می نویسیم. دقت کنید که بدنه حلقه for با Brace باز و بسته مشخص می شود. در اینجا مانند دستور if، در صورتی که تعداد دستورات حلقه for تنها یک دستور بود می توان از نوشتن Brace ها خودداری کرد.

در ادامه با یک مثال ساده، با کاربرد واقعی دستور for آشنا می شویم. فرض کنید تصمیم داریم اعداد یک تا 10 را در خروجی چاپ کنیم. برای اینکار کافیست یک حلقه for تعریف کرده و داخل آن مقدار مورد نظر را در خروجی چاپ کنیم:

for(int counter = 1; counter <= 10; counter++)
    Console.WriteLine(counter);

همانطور که مشاهده می کنید، داخل دستور if سه بخش داریم که با علامت ; از هم جدا شده اند. در قسمت اول متغیری به نام counter تعریف کرده و مقدار پیش فرض 1 را به آن اختصاص دادیم. در قسمت دوم شرط for را نوشتیم که حلقه تا زمانی اجرا شود که مقدار counter کوچکتر یا مساوی عدد 10 می باشد. در انتها هم گفتیم که با هر بار تکرار، یک واحد به متغیر counter اضافه شود. در داخل بدنه for نیز با دستور WriteLine مقدار متغیر counter را که با هر بار تکرار یک واحد به آن اضافه می شود را در خروجی چاپ می کنیم.

در مثال دوم تصمیم داریم اعداد 10 تا 1 را به صورت معکوس چاپ کنیم:

for(int counter = 10; counter >= 1; counter--)
    Console.WriteLine(counter);

در اینجا، تغیراتی که دادیم، ابتدا مقدار اولیه متغیر counter را برابر 10 قرار دادیم و شرط را نیز جوری تغییر دادیم که دستورات for تا زمانی اجرا شوند که مقدار counter بزرگتر یا مساوی یک می باشد. در انتها نیز گفتیم با هر بار اجرای حلقه for، از مقدار counter یک واحد کم کن. با این کار اعداد 10 تا 1 به صورت معکوس در خروجی چاپ خواهند شد.

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

for(int counter = 1; counter <= 100; counter++)
{
    if(counter % 2 == 0)
        Console.WriteLine(counter);
}

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

در روش بعدی، می توانیم حلقه را جوری بنویسیم که مقدار counter در هر بار تکرار 2 واحد اضافه شود:

for(int counter = 2; counter <= 100; counter = counter + 2)
    Console.WriteLine(counter);

کد بالا نیز کلیه اعداد زوج بین 1 تا 100 را برای ما در خروجی نمایش خواهد داد.

در هنگام استفاده از حلقه for ما می توانیم عملیات تعریف متغیر شمارنده را خارج از حلقه و قبل از شروع آن تعریف کنیم:

var counter = 1;
for(; counter <= 10; counter++)
    Console.WriteLine(counter);

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


حلقه های تو در تو (Nested Loops)


زمانی که ما چند حلقه for را داخل هم بنویسیم، به این حلقه ها، حلقه های تو در تو گفته می شود. برای مثال، فرض کنید که قصد داریم جدول ضرب 9 در 9 را در خروجی چاپ کنیم. برای اینکار ما نیاز به حلقه های تو در تو خواهیم داشت. نمونه کد زیر یک جدول ضرب 9 در 9 را برای ما در خروجی چاپ می کند:

for (int i = 1; i <= 9; i++)
{
    for (int j = 1; j <= 9; j++)
    {
        Console.Write((i*j) + "\t");
    }
    Console.WriteLine();
}

حلقه اول، 9 بار، و با هر بار اجرای حلقه اول، حلقه دوم 9 بار اجرا خواهد شد و خروجی ضرب متغیرهای i و j در خروجی چاپ خواهد شد.


دستور break


بوسیله دستور break می توانیم در شرایطی که مد نظر داریم از حلقه خارج شویم. برای مثال، در حلقه زیر، زمانی که شمارنده به عدد 50 برسد، حلقه for متوقف شده و از حلقه خارج می شویم:

for(int counter = 2; counter <= 100; counter++)
{
    if(counter == 50)
        break;
    Console.WriteLine(counter);
}
Console.WriteLine("End of program!");


دستور continue


به کمک این دستور می توانیم روند اجرای حلقه را متوقف کرده و به ابتدای حلقه برگردیم. فقط به این نکته توجه داشته باشید که این دستور باعث reset شدن حلقه نمی شود و حلقه، تکرار بعدی را اجرا می کند. برای مثال، اگر ما در تکرار 50 امین تکرار، دستور continue را اجرا کنیم، 51 امین تکرار اجرا خواهد شد و روند اجرا به ابتدای حلقه باز خواهد گشت. برای مثال، برنامه ای که اعداد زوج بین 1 تا 100 را در خروجی چاپ می کرد را به صورت زیر نیز می توانیم بنویسیم:

for(int counter = 1; counter <= 100; counter++)
{
    if(counter % 2 != 0)
        continue;
    Console.WriteLine(counter);
}

در کد بالا گفتیم که اگر باقیمانده تقسیم متغیر شمارنده بر عدد 2، مخالف صفر بود، تکرار بعدی اجرا شود، در غیر اینصورت دستور WriteLine اجرا خواهد شد.


چند مثال دیگر از دستور for



1. دریافت دو عدد از کاربر و محاسبه عدد اول به توان عدد دوم و چاپ آن در خروجی:

Console.Write("Enter first number: ");
var firstNumber = int.Parse(Console.ReadLine());
Console.Write("Enter second number: ");
var secondNumber = int.Parse(Console.ReadLine());

var pow = 1;
for (var counter = 1; counter <= secondNumber; counter++)
{
    pow = pow*firstNumber;
}

Console.WriteLine(firstNumber + " ^ " + secondNumber + " = " + pow);
Console.ReadKey();

در کد بالا، ابتدا دو عدد را از کاربر دریافت کرده و عدد های وارد شده را به عدد تبدیل می کنیم و در دو متغیر firstNumber و secondNumber ذخیره می کنیم. سپس برای خروجی متغیری با نام pow تعریف می کنیم و مقدار اولیه آن را برابر 1 قرار می دهیم.

دلیل اینکه مقدار آن را یک قرار دادیم، دستور داخل حلقه for می باشد، در صورتی که مقدار اولیه را صفر قرار می دادیم، نتیجه ضرب عدد اول در صفر، صفر می شد و نهایتاً خروجی ما عددی جز عدد صفر نخواهد بود. سپس حلقه ای تشکیل داده که به تعداد عدد دوم تکرار می شود و در داخل بدنه عدد اول را در pow ضرب کرده و نتیجه را در pow ذخیره می کنیم. پس از تمام حلقه، در خروجی با پیغام مناسب مقدار pow را چاپ می کنیم.

2. محاسبه میانگین جمع اعداد 1 تا 100:

var sum = 0;
for (int counter = 1; counter <= 100; counter++)
{
    sum = sum + counter;
}

Console.WriteLine("Average: " + (sum/100));

در این بخش با دستور if و کاربرد آن آشنا شدیم. در قسمت بعدی به بررسی حلقه های while و do-while خواهیم پرداخت تا مبحث دستورات کنترلی و حلقه ها به پایان برسد.

منبع: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="">
تجدید کد امنیتی