آموزش سی‌شارپ C# – بخش ۱۹

آموزش سی‌شارپ C# – بخش ۱۹
  • 1391/11/30
  • Jeff Mosawy
  • 8
  • مقدمه

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

در این بخش، موضوعی را که مطرح می‌کنیم، موضوع حلقه‌ها هست! احتمالاً خیلی از شما عزیزان (خصوصاً اگر زبان برنامه‌نویسی دیگری را بلد باشید) می‌دانید که حلقه‌ها چه هستند و البته، چقدر کاربردی هم می‌باشند!

  • حلقه‌ها (Loops)

حلقه‌ها، که از این به بعد سعی می‌کنیم آن‌ها را با نام Loops صدا بزنیم، یکی دیگر از مهم‌ترین مواردی است که در برنامه‌نویسی بطور بسیار زیادی از آن استفاده می‌شود؛ سی‌شارپ هم از آن‌ها استثنا نشده است. اما حلقه‌ها در واقع چه هستند؟

حلقه در واقع کاری می‌کند که عملی را بارها و بارها آن را تکرار کنید تا به یک شرطی برسد که متوقف شود و دیگر آن عمل بدلیل عدم صحیح بودن شرط، انجام نگیرد.

برای مثال، شما فرض کنید می‌خواهید اعداد ۱ تا ۱۰ را با یکدیگر جمع کنید. اگر بخواهید با اطلاعاتی که تا کنون داشته‌اید، چنین کاری را بکنید، احتمالاً کاری که خواهید کرد به‌شکل زیر خواهد بود:

int answer;

answer = 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10;

اما می‌بینید که چنین کاری اصلاً با عقل آدمی جور در نمی‌آید؛ خصوصاً اگر تعداد ارقام بیشتر باشد؛ برای مثال ۱ تا ۹۹۹. پس برای اینکه خواسته‌ی ما برآورده شود، ما از Loops استفاده می‌کنیم.

  • اولین حلقه: حلقه‌ی For

اولین حلقه‌ای را که شما فرا خواهید گرفت، حلقه For است. حلقه‌های دیگری هم وجود دارند، مانند While و یا Do-While.  اما فعلاً رایج‌ترین و پرکاربرد ترین حلقه، حلقه‌ی For می‌باشد.

یک پروژه‌ی جدیدی از نوع Windows Application را در Visual Studio شروع کنید. یک button به فرم خود اضافه کنید و وارد بخش کد مربوط به button ها شوید.

در میان دو براکت مربوط به button که قبلاً اضافه کردید، راست کلیک کنید و بر روی Insert Snippet کلیک کنید. همانند تصویر زیر:

1-menu_InsertSnippet

وقتی که بر روی Insert Snippet کلیک می‌کنید، همانند تصویر زیر لیستی برای شما نمایش داده می‌شود:

2-menu_InsertSnippet2

کمی پایین بیایید و بر روی For دابل-کلیک کنید. یکسری کد برای شما بصورت خودکار ایجاد و درج خواهد شد:

3-Snippet_Code_For

شاید اگر اولین بار شما باشد که به این کد نگاه کرده باشید، کمی برای شما پیچیده به‌نظر برسد. پس بگذارید قدم به قدم برای شما این کد‌ها را توضیح دهم که ببینید که چقدر ساده است.

ساختار کلی حلقه For به‌شکل زیر است:

for ( )

{

            //SOME CODE

}

پس شما یک For می‌نویسید و جلوی آن دو پرانتز باز و بسته قرار می‌دهید. سپس با استفاده از جفت براکت باز و بسته، محدوده‌ی حلقه For را برای سی‌شارپ مشخص می‌کنید. چیزی که میان دو پرانتز For قرار می‌گیرد، درواقع کدی خواهد بود که به سی‌شارپ بگوید کدهای داخل حلقه For چند بار پشت سر هم اجرا شوند.

به‌صورت پیشفرض، قالب شرطی که Visual Studio برای شما در بین دو پرانتز قرار داد، به‌شکل زیر است:

int = 0; i < length; i++

کد بالا، در واقع از سه بخش که توسط دو Semicolon (;) از هم جدا شده‌اند، ساخته شده است.

۱. از چه شماره‌ای این حلقه شروع به کار کند؟

۲. چندبار می‌خواهید که کد اجرا شود؟

۳. مقدار اولیه را پس از اتمام هر حلقه، چطور باید بروز شود؟

این سه بخش، تعریفی از سه بخش بالاست. به عکس‌های زیر دقت کنید. اولین بخش به‌صورت زیر است:

4-loopStep1

بخش دوم نیز به‌شکل زیر است:

5-loopStep2

و بخش سوم نیز:

6-loopStep3

بخش اول (شماره ۱) به سی‌شارپ می‌گوید که حلقه من از چه شماره‌ای باید شروع شود:

int i = 0;

کاری که در بخش اول می کنید، تعریف یک متغیری است که معمولاً آن‌ها را با نام‌های i، j، k و … نامگذاری می‌کنند. البته هر نامی را می‌توانید انتخاب کنید؛ به‌شرطی که از قوانین نامگذاری متغیرها پیروی کند. البته دقت کنید که می‌توانید متغیر مربوط به حلقه را بیرون از حلقه تعریف کنید. به شکل زیر:

int i;

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

{

}

سپس، بعد از تعریف متغیر، در همان جا آن را مقدار دهی می‌کنیم. مقداری که به آن به‌صورت پیشفرض داده شده، عدد صفر است.

بخش دوم کد (شماره ۲)، نشان‌دهنده شرطی‌ست که به سی‌شارپ می‌گوید که این حلقه چند بار باید اجرا شود! به‌صورت پیشفرض کد زیر قرار داده شده است:

i < length;

اگر مبحث جلسه قبل را به‌خاطر داشته باشید، این کد می‌گوید «زمانی که مقدار i از مقدار length کوچک‌تر باشد.» دقت کنید که جای length باید عدد یا متغیر عددی قرار گیرد؛ پس length یک کلمه‌کلیدی نیست که خواهید بر اساس آن تصمیمی بگیرید. مثلاً کدمان را به‌شکل زیر تغییر می‌دهیم:

int length = 101;

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

{

}

دقت کنید که لازم نیست حتماً نام متغیری که بر اساس آن شرط تعیین می‌شود، length باشد. نام آن می‌تواند به‌دلخواه شما تعیین شود.

بخش سوم کد (شماره ۳)، به سی‌شارپ می‌گوید که پس از هربار که کد داخل حلقه (درصورت برقرار بودن شرط در مرحله قبل) اجرا می‌شود، چه اتفاقی باید بیفتد. ما در کد بالا اینطور نوشتیم که پس از هرباری که حلقه اجرا می‌شود، یک مقدار به مقدار متغیر i اضافه کند ( i++ یعنی اینکه عددی را که i در خود ذخیره می‌کند را با عدد ۱ جمع کند.)

سی‌شارپ تا زمانی که بخش دوم کد (شماره ۲) شرطش درست باشد، حلقه را در حال اجرا قرار می‌دهد و پس از پایان هر بار اجرا، یک مقدار به i اضافه می‌کند.

الان وقت آن است که به‌صورت کاربردی، استفاده از حلقه و مفهوم آن را متوجه شوید. کدهایتان را دقیقاً به‌شکل زیر درآورید:

7-Code_ForLoop

کدی که می‌خواهیم در هر بار در Loop اجرا شود، answer = answer + i است.

ما در کد  بالا، در واقع می‌خواهیم اعداد ۱ تا ۱۰۰ را با یکدیگر جمع کنیم. پس اگر کدهای بالا را اجرا کنیم، دور اولی که حلقه شروع به کار می‌کند، مقادیر زیر را دارد:

8-loopVal

پس از اتمام دور اول، دور دوم شروع می‌شود. این‌بار مقادیر به‌شکل زیر است:

9-loopVal2

دور سوم نیز بدین شکل است:

10-loopVal3

و دور چهارم:

11-loopVal4

دقت کنید که چگونه مقدار i در هر بار اجرا، تغییر می‌کند. این افزایش مقدار i ناشی از بخش سوم کد (شماره ۳) می‌باشد.

کدهایتان را اجرا کنید و بر روی button کلیک کنید. مقداری را که برای شما باید نمایش دهد، عدد ۵۰۵۰  است؛ که جمع اعداد از ۱ تا ۱۰۰ می‌باشد.

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

جهت دریافت این بخش آموزشی به‌صورت یک فایل PDF، اینجا را کلیک کنید.

یکی از دوستان درخواست داده‌بودند که بخشی از کتاب Programming C# 5.0 از انتشارات O’Reilly را به‌عنوان نمونه جهت آشنایی با نحوه نگارش این کتاب قرار دهم. به‌همین دلیل، می‌توانید با استفاده از این لینک (اینجا)، وارد سایت اصلی انتشارات O’Reilly شده و در وسط‌های صفحه، که عکسی با عنوان Free Sampler قرار داده شده، بر روی آن کلیک کرده تا بخشی از کتاب را دانلود نمایید.

دیدگاه خود را وارد کنید
تعداد دیدگاه ها : 8 دیدگاه
  1. ما منتظر قسمت بعدی آموزش هستیم
    خسته نباشی آقای موسوی
    بخاطر زحمتی که می کشید واقعا ممنونم

  2. سلام آقای موسوی
    ببخشید یه سوال داشتم.
    می خواستم بدونم شما XNA هم کار کردید؟
    منبعی برای آموزش میشناسید؟

    1. سلام دوست عزیزم،

      من معذرت می‌خوام از شما، اما متأسفانه تا حالا با Microsoft XNA کار نکردم.

      موفق باشید!

  3. با سلام
    بسیار از شما ممنونم .
    لطف کنید روی مثالهای بیشتری توضیح بدهید که بقولی برایمان جا بیافتد .
    موفق باشید

  4. کد ساده ای بود
    این هم برای کنسول اش
    int ans = 0;
    for (int i = 1; i < 101; i++)
    {
    sum = sum + i;
    }
    Console.WriteLine(sum);
    Console.ReadKey();

  5. سلام میشه در مرود برنامه زیر راهنمایی بکنید
    برنامه ای بنویسید که نام ۵ نفر را دریافت کرده و سپس هرنام را به تعداد کاراکترش چاپ کند
    ممنون میشم راهنمایی کنید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *