مفهوم ثابتها
اگه حجم برنامه بالا باشه کار بسیار سخت و خسته کننده وطولانی باید انجام دهید
با استفاده ثابت ها در برنامه می تونید از بروز این مشکلات جلوگیری کنید و همچنین ثابت ها باعث افزایش خوانایی برنامه می شوند
مفهوم شمارنده
استفاده از شمارنده ها:
با استفاده از شمارنده ها می توان نوع داده ای جدیدی بر اساس نوع داده ای موجود از قبیل short .long .int ویا byte بسازید متغییرهایی که از نوع داده ای جدید ایجاد می شوند فقط می توانند مقداری را داشته باشند که شما مشخص می کنید به این ترتیب می تونید در برنامه از ورود اعداد غیر منطقی جلوگیری کنید
همچینی استفاده از شمارنده در کد باعث افزایش خوانایی می شود
مقدار دهی اولیه به آرایه ها

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

روش دوم: استفاده از متد Reverse در کلاسArray است این متد یک آرایه را به صورت معکوس در آرایه قرار می دهد. مانند کد زیر:

مرتب سازی آرایه ها
تمرین مرتب سازی آرایه ها:
یه button دیگر به فرم برنامه قبلی اضافه کنید و روش دابل کلیک کرده و کد زیر را وارد کنید

ایم متد آرایه را به صورت الفبایی مرتب می کند (چون متغییر از نوع رشته ای است) اگر به صورت عددی (اعشاری - صحیح) بود بر حسب عددی مرتب می کرد
اضافه کردن دوستان بیشتر

در این مثال آرایه ای به طول ۲ ایجاد کردیم و آن را به متد AddItemsToList فرستادیم تا به لیست اضافه شود
انتقال آرایه ها به عنوان پارامتر
تمرین انتقال آرایه به عنوان پارامتر:
یه button دیگر به فرم برنامه قبلی اضافه کنید و روش دابل کلیک کرده و کد زیر را وارد کنید

حالا متد AddItemsToList را به صورت زیر در کلاس تعریف کنید

وقتی که در تعریف پارامتر یک متدآرایه ای را تعریف می کنید ولی طولش را مشخص نمی کنید در حقیقت به کامپایلر #C می گویید که هر آرایه ای از این نوع می تواند به این متد فرستاده شود (اندازه ی متد فرستاده شده به این آرایه مهم نیست)
استفاده از حلقه foreach در آرایه

به قسمت طراحی فرم برگردید و روی Form1 دابل کلیک کنید و کد زیر را وارد کنید

به قسمت طراحی فرم برگردید و یه button به فرم اضافه کرده و روش دابل کلیک کند و کد زیر را وارد کنید

در قسمت اول دیدید که متغییر (آرایه) را در کلاس تعریف کردیم در این صورت در تمامی متدها ی کلاس قابل استفادست یعنی نیازی به تعریف دوباره نیست
تمرین تعریف و استفاده از یک آرایه ساده

برنامه را اجرا کنید و روی button کلیک کنید Robbin به لیست اضافه میشه
در هنگام تعریف آرایه باید نوع داده ای و اندازه آن را مشخص کنید در اینجا آرایه از نوع رشته ای است و طول آرایه ۵ است
اندیس ها در آرایه از ۰ شروع می شوند
مفهوم آرایه ها
آرایه ها لیستی از متغییرها می باشند که همه از یک نوع اند برای مثال ممکن است بخواهید سن تمامی دوستان خود را در یک آرایه عدد صحیح یا نام تمام دوستانتون رو در یک آرایه رشته ای قرار بدین
تعریف و استفاده از آرایه ها
وقتی در برنامه آرایه ای را تعریف می کنید در حقیقت متغییری تعریف کرده اید که بیش از یک عنصر را در خود نگهداری می کند
آرایه باعث ایجاد نوعی حالت افزایشی در متغییر می شوند به این ترتیب بیشتر از یک مقدار را می توننند در یه متغییر ذخیره کنند برای تعریف یک متغییر به صورت آرایه از روش زیر استفاده می کنیم

کارکردن با ساختارهای داده ای
ساختارهای داده ای به یک گروه از اطلاعات مرتبط به می گویند و در یک واحد مجزا قرار می گیرند
حلقه های بی نهایت

وقتی حلقه اجرا می شه شمارنده برابر ۱ است و از ۰ بزرگتر است و بعد از اجرا دستورات به شمارنده یکی اضافه می شه (شمارنده برابر ۲ می شه ) باز هم از ۰ بزرگتر است همین طور شمارنده زیاد تر می شه و همیشه از ۰ بزرگتر است و هیچ گاه به عدد کوچکتر از ۰ نمی رسد شرط حلقه همواره درست است اسن حلقه بی نهایت بار اجرا می شه ممکن است این برنامه توقف نکند اما به کیلک های بعدی هم پاسخ نمی دهد و شرط داخل حلقه اجرا می شود
برای نجات از حلقه های بی نهایت! اگر در ویژوال استادیو برنامه را اجرا کرده اید از منوی Debug گزینهStop Debugging را انتخاب کنید این گزینه اجرا برنامه را فورا متوقف می کند
اگر از برنامه کامپایل شده در ویندوز استفاده می کنید برای بستن برنامه باید از Task Manager استفاده کنید
دستور continue
تمرین دستور continue:
یه button به فرمتون اضافه کنید و روش دابل کلیک کرده و کد زیر را وارد کنید

دستور continue با عث خروج کامل از حلقه نمی شه بلکه در هر قسمتی که استفاده بشه باعث بقیه دستورات بعد این دستور در نظر گرفته نشوند و حلقه دوباره اجرا بشه
عملگر ٪ برای محاسبه باقی مانده تقسیم به کار می ره
خروج زود هنگام از حلقه ها
تمرین خروج زود هنگام از حلقه:
یه button به فرمتون اضافه کنید و روش دابل کلیک کرده و کد زیر را وارد کنید

هر بار که حلقه اجرا می شود تابع string.Compare بررسی می کند که نام فولدر برابر C:\\program files است یا نه در صورت پیدا شدن کادر پیغام نمایش داده می شه و دستور break باعث خروج از حلقه می شود
خروج زود هنگام از حلقه ها
تمرین خروج زود هنگام از حلقه:
یه button به فرمتون اضافه کنید و روش دابل کلیک کرده و کد زیر را وارد کنید

هر بار که حلقه اجرا می شود تابع string.Compare بررسی می کند که نام فولدر برابر C:\\program files است یا نه در صورت پیدا شدن کادر پیغام نمایش داده می شه و دستور break باعث خروج از حلقه می شود
خروج زود هنگام از حلقه ها
تمرین خروج زود هنگام از حلقه:
یه button به فرمتون اضافه کنید و روش دابل کلیک کرده و کد زیر را وارد کنید

هر بار که حلقه اجرا می شود تابع string.Compare بررسی می کند که نام فولدر برابر C:\\program files است یا نه در صورت پیدا شدن کادر پیغام نمایش داده می شه و دستور break باعث خروج از حلقه می شود
خروج زود هنگام از حلقه ها
تمرین خروج زود هنگام از حلقه:
یه button به فرمتون اضافه کنید و روش دابل کلیک کرده و کد زیر را وارد کنید

هر بار که حلقه اجرا می شود تابع string.Compare بررسی می کند که نام فولدر برابر C:\\program files است یا نه در صورت پیدا شدن کادر پیغام نمایش داده می شه و دستور break باعث خروج از حلقه می شود
حلقه های تودرتو
تمرین استفاده از حلقه های تودرتو:
یه button به فرمتون اضافه کنید و روش دابل کلیک کرده و کد زیر را وارد کنید

در هر بار اجرای حلقه بیرونی(loop1) حلقه داخلی یک دور کام اجرا می شود
در مثال می بینید که وقتی loop1 برابر ۱ شده loop۲ یک دور کامل اجرا شده و بعد loop1 برابر ۲ شده و دوباره loop۲ یک دور کامل اجرا شده
شرطهای قابل قبول برای حلقه های do وwhile
به عنوان مثال به کدهای زیر نگاه کنید

حلقه while
تمرین استفاده از حلقه while:
یه button به فرمتون اضافه کنید و روش دابل کلیک کرده و کد زیر را وارد کنید

همین طور که میبینید فرق زیادی با تمرین قبل نداره فقط در حلقه while اول شرط بررسی می شه بعد دستورات اجرا می شه ولی در دستور do اول دستورات اجرا می شه بعد شرط
حلقه های do
در این حلقه اول دستورات داخل حلقه بررسی می شه بعد شرط بررسی می شه و اگه شرط درست باشه دستوارات حلقه یک بار دیگر اجرا می شوند در غیر این صورت دستورات حلقه اجرا نمی شود و اجرای برنامه به خط بعد از حلقه منتقل می شود
تمرین استفاده از حلقه do:
یه button به فرمتون اضافه کنین روش دابل کلیک کرده و کد زیر را وارد کنید

برنامه را اجرا کنید و روی button کلیک کنید هر بار که رویش کلیک می کنید اعداد داخل listBox تغییر می کند
توی این تمرین اول یه متغییر (به عبارت دیگه یک شی) از کلاس Random ایجاد می کند این متغییر توابع مورد نیاز برایتولید عدد تصادفی را در اختیار قرار می دهدکلمه کلیدی new باعث مقدار دهی به این اشیا می شود
Clear باعث پاک شدن اطلاعات از list می شود
در حلقه do بزرگترین عددی که می شود ایجاد کرد عدد ۲۵ است یعنی باید عددی در بازه ۰ تا ۲۴ ایجاد کند
در انتها بررسی می شود که عدد مربوطه برابر ۱۰ بود یا نه اگه برابر ۱۰ بود برنامه متوقف می شود در غیر این صورت به دستور do بر می گردد
تمرین استفاده از حلقه foreach
به تمرین قبل یک button اضافه کنید و روی آن دابل کلیک کرده و کد زیر را وارد کنید
در این تمرین می خواهیم برنامه نام تمام فولدر های موجود در درایو c را به ما برگرداند

برای بدست آوردن تمام لیست دایرکتوری یه مسیر از تابع GetFirectories مربوط به کلاس Directoryدر فضای نام System.IOاستفاده می کنیم این تابع یه آرایه رشته ای از نام تمام دایرکتوری های موجود در مسیری که برای آن مشخص شده را بر می گرداند
شمارش معکوس در حلقه
یه button دیگر به فرم برنامه قبلی اضافه کنید و روش دابل کلیکرده و کد زیر را وارد کنید

همین طور که در قسمت سوم می بینید -- یکی از شمارنده کم می کنه و شمارندمون از ۱۰ شروع می شه و تاوقتی که از ۱ بزرگتر باشه حلقه ادامه پیدا می کند
انعطاف پذیری حلقه for

فکر نکنم نیازی به توضیح باشه در اینجا شمارش گر حلقمون از عدد ۴ شروع می شه و همین طور متغییر را در داخل حلقه تعریف کردیم و شمارشگر حلقمون ۷ تا ۷ تا حرکت می کنه
تمرین ایجاد یک حلقه for

در اول یه متغییر عدد صحیح تعریف کردیم
حلقه for به این صورت است که در جلوی آن باید ۳مورد را مشخص کنید هر کدام از این مقدارها به وسیه ; از هم جدا می شوند قسمت اول مشخص می کند که حقه از چه عددی شروع شود قسمت دوم مشخص می کنه تا چه وقتی حلقه اجرا بشه در اینجا تا وقتی که شمارنده حلقه کوچکتر ویا مساوی عدد ۵ باشد حلقه اجرا می شه در قسمت سوم مشخص می کنه شمارنده حلقه چند تا چندتا حرکت کنه کاه در اینجا یکی یکی به جلو حرکت می کنه( یا می شه گفت یکی یکی به متغییرمون اضافه کی کنه )
در اینجا به جای a += 1 می تونیم عبارت ++a را نوشت
در حلقه for اجباری نیست که شمارنده از ۱ شروع شود یا از عدد دیگر و یا شمارنده هر حلقه (قسمت سوم) را ۱ در نظر بگیریم
حلقه ها
حلقه for: این حلقه معمولا به تعداد مشخصی اجرا می شه(مثلا به تعداد ۱۰بار)
حلقه while: این حلقه تا وقتی که شرطش درست باشد اجرا می شود
حلقه do: این حلقه ماننید حلقه while است با این تفاوت که درستی شرط در آخر حلقه بررسی می شود
دستور defult
تمرین (استفاده از دستورdefult ):
به لیست تمرین قبل یک نام اضافه کنید و کد آن را به صورت کد زیر تغییر دهید

برنامه را اجرا کرده و روی نام جدید کلیک کنید
انتخابهای چندگانه
کد تمرین قبل را به صورت زیر تغییر بدین

این تمرین کاملا مشابه تمرینای قبلیه فقط چند تا case را با هم مقایسه کردی هر کدومشون درست بود دستور اجرا می شه(کادر پیغام نمایش داده می شه)
این حالت مشابه دستور or در دستورات ifاست
استفاده از switch بدون حساسیت به نوع حروف
کد تمرین قبل را به صورت زیر تغییر دهید

انتخاب بین حالتها با استفاده از switch
آیا نام مشتری برابر Bryan است؟ در این صورت A انجام بشه
آیا نام مشتری برابر stephanie است؟ در این صورت B انجام بشه
آیا نام مشتری برابر cathy است؟ در این صورت C انجام بشه
آیا نام مشتری برابرBetty است؟ در این صورت D انجام بشه
آیا نام مشتری برابرEdward است؟ در این صورت E انجام بشه
......
اگر بخواین این کار رو با استفاده از دستور if انجام بدین باید از کدی مشابه کد زیر استفاده کنید

این روش خوانایی برنامه را کم می کند و اصلاح کد در این روش هم وقتگیر است
تمرین استفاده از دستور switch برای مثال قبل:
یه پروژه جدید باز کنید و یه listBox به فرمتون اضافه کنید
وقتیکه listBox در فرم در حالت انتخاب شده است به پنجره ی Proprtties برید و خاصیت Items را انتخاب کیندو بر روی دکمه سمت راست کلیک کنید پنجره ای به نام String Collection Editor باز می شه اسمها را در آن وارد کرده و روی ok کلیک کنیدتا نامها به listBox اضافه بشه و روش دابل کلیک کرده وکد زیر رو وارد کنید

قبل از هرکاری دو تا متغییر رشته ای تعریف کردیم و به متغییر دوم مقدار اولیه دادیم چون می خوایم در آن مقادیر دیگری را بریزیم اگه بهش مقدار ندیم برنامه هنگام کامپایل با خطا مواجه می شه
قسمت یعد یعنی آیتم انتخاب شده در لیست در متغییر اول ذخیره می شه
وقتی که نام انتخاب شده در لیست را به دست آوردید می تونید حالتهای مختلف آن را با دستور switch بررسی کنید برای استفاده از این دستور نام متغییری رو که می خواهید بررسی کنید باید در پرانتز روبروی دستور switch بنویسید
برای هر دستوری که می خواین بررسی کنید بایدآن را در یک دستور case جدا بنویسید توی این تمرین ۵ دستور case جدا داریم که هر کدوم به یکی از نامها مربوطه
باید در انتهای هر یک از دستورات یک دستور break بنویسید تا دستورات به خط بعدی منتقل شوند
در آخر هم که یه پیغام مناسب به کاربر نشون داده می شه


