آشنایی با نرم افزار C# دارای 152 صفحه می باشد و دارای تنظیمات و فهرست کامل در microsoft word می باشد و آماده پرینت یا چاپ است
فایل ورد آشنایی با نرم افزار C# کاملا فرمت بندی و تنظیم شده در استاندارد دانشگاه و مراکز دولتی می باشد.
این پروژه توسط مرکز مرکز پروژه و مقالات آماده و تنظیم شده است
آغاز كار با C#
در این درس با ارائه چند برنامه و مثال ساده به طرز كار زبان C# میپردازیم. اهداف این درس عبارتند از :
• فهم ساختار پایهای یك برنامه C#
• آشنایی با Namespace
• آشنایی با كلاس (Class)
• آشنایی با عملكرد متد Main()
• آشنایی با ورودی/خروجی یا I/O
لیست 1-1، یك برنامه ساده با عنوان Welcome در زبان C#
// Namespace اعلان
using System;
// كلاس آغازین برنامه
class WelcomeCSS
{
// آغاز كار اجرای برنامه
public static void Main()
{
// نوشتن متن در خروجی
Console.WriteLine("Welcome to the C# Persian Tutorial!");
}
}
برنامه لیست 1-1 دارای 4 پارامتر اصلی است، اعلان Namespace، كلاس، متد Main() و یك دستور زبان C#.
در همین جا باید به یك نكته اشاره كنم، برای زبان C# همانند بیشتر زبانهای برنامهسازی دو نوع كامپایلر وجود دارد. یك نوع كامپایلر كه به كامپایلر Command Line معروف است و نوع دیگر كامپایلر Visual است. كامپایلرهای Command Line محیطی شبیه به محیط DOS دارند و با دادن یك سری دستورات به اجرا در میآیند. كامپایلرهای Visual محیطی همانند ویندوز دارند كه با دارا بودن محیط گرافیكی و ابزارهای خاص، برنامهنویس را در امر برنامهسازی كمك میكنند. از نمونههای هر یك از كامپایلرها، میتوان به Microsoft C# Command Line Compiler كه یك كامپایلر Command Line و Microsoft Visual C# كه یك كامپایلر Visual است، اشاره كرد. البته در حال حاضر بیشتر از كامپایلرهای ویژوال استفاده میشود.
من سعی میكنم در آینده به توضیح محیط Visual C# و Visual Studio.Net بپردازم. اما فعلاً برای اجرای برنامهها میتوانید از Visual Studio.Net استفاده كنید. پس از نصب آن، وارد محیط C# شده و در قسمت انتخاب برنامه جدید گزینه Console را جهت اجرای برنامهها انتخاب نمایید.
برای این درس، فعلاً به توضیحات بیشتر درباره محیط ویژوال نمیپردازم اما در آینده به توضیح كامل محیط Visual Studio.Net خواهم پرداخت.
برای اجرای كد بالا در صورتیكه از محیط ویژوال استفاده میكنید باید بر روی دكمه Run كلیك كنید و در صورتیكه كامپایلر Command Line دارید با دستور زیر میتوانید برنامه را اجرا كنید : csc Welcome.cs
پس از اجرای برنامه، كامپایلر برای شما یك فایل قابل اجرا(Executable) تحت نام Welcome.exe تولید میكند.
نكته : در صورتیكه از Visual Studio.Net(VS.Net) استفاده كنید، پس از اجرای برنامه، یك صفحه برای نمایش خروجی به سرعت باز شده و بسته میشود و شما قادر به دیدن خروخی نخواهید بود. برای اینكه بتوانید خروجی برنامه را ببینید، در انتهای برنامه دستور زیر را وارد نمایید :
Console.ReadLine();
استفاده از این دستور باعث میشود تا برنامه منتظر دریافت یك ورودی از كاربر بماند، كه در این حالت شما میتوانید خروجی برنامه خود را دیده و سپس با زدن كلید Enter برنامه را خاتمه دهید.
نكته دیگری كه در مورد زبان برنامهنویسی C# باید مورد توجه قرار دهید اینست كه این زبان Case Sensitive است، بدین معنا كه به حروف كوچك و بزرگ حساس است یعنی برای مثال ReadLine با readLine متفاوت است به طوریكه اولی جزو دستورات زبان C# و دومی به عنوان یك نام برای متغیر یا یك تابع كه از طرف كاربر تعریف شده است در نظر گرفته میشود.
اعلان Namespace به سیستم اعلان مینماید كه شما از توابع كتابخانهای System جهت اجرای برنامهها خود استفاده مینمایید. دستوراتی مانند WriteLine و ReadLine جزو توابع كتابخانهای System میباشند. اغلب دستورات و توابع مهم و كلیدی استفاده از كنسول ورودی/خروجی در این كتابخانه میباشد. در صورتیكه در ابتدای برنامه از using System استفاده نكنید، یابد در ابتدای هر یك از دستورات برنامه كه مربوط این كتابخانه است، از كلمه System استفاده نمایید. بعنوان مثال در صورت عدم استفاده از using System باید از دستور System.Console.WriteLine() به جای Console.WriteLine() استفاده نمایید.
تعریف كلاس،Class Welcome CSS، شامل تعریف دادهها(متغیرها) و متدها جهت اجرای برنامه است. یك كلاس، جزو معدود عناصر زبان C# است كه بوسیله آن میتوان به ایجاد یك شی (Object) از قبیل واسط ها (Interfaces) و ساختارها(Structures)، پرداخت. توضیحات بیشتر در این زمینه در درسهای آینده ذكر میشوند. در این برنامه كلاس هیچ داده و متغیری ندارد و تنها شامل یك متد است. این متد، رفتار(Behavior) این كلاس را مشخص میكند.
متد درون این كلاس بیان میكند كه این كلاس چه كاری را پس از اجرا شدن انجام خواهد داد. كلمه كلیدی Main() كه نام متد این كلاس نیز میباشد جزو كلمات رزرو شده زبان C# است كه مشخص میكند برنامه از كجا باید آغاز به كار نماید. وجود متد Main() در تمامی برنامههای اجرایی ضروری است. در صورتیكه یك برنامه حاوی متد Main() نباشد بعنوان توابع سیستمی همانند dll های ویندوز در نظر گرفته میشود.
قبل از كلمه Main() كلمه دیگری با عنوان static آورده شده است. این كلمه در اصطلاح Modifier میگویند. استفاده از static برای متد Main() بیان میدارد كه این متد تنها در در همین كلاس قابل اجراست و هیچ نمونهای (Instance) دیگری از روی آن قابل اجرا نمیباشد. استفاده از static برای متد Main() الزامی است زیرا در ابتدای آغاز برنامه هیچ نمونهای از هیچ كلاس و شیای موجود نمیباشد و تنها متد Main() است كه اجرا میشود. (در صورتیكه با برخی اصطلاحات این متن از قبیل كلاس، شی، متد و نمونه آشنایی ندارید، این به دلیل آنست كه این مفاهیم جزو مفاهیم اولیه برنامهنویسی شیگرا (OOP) هستند. سعی میكنم در درسهای آینده به توضیح این مفاهیم نیز بپردازم، ولی فعلاً در همین حد كافی میباشد.)
هر متد باید دارای یك مقدار بازگشتی باشد، یعنی باید مقداری را به سیستم بازگرداند، در این مثال نوع بازگشتی void تعزیف شده است كه نشان دهنده آنست كه این متد هیچ مقداری را باز نمیگرداند یا به عبارت بهتر خروجی ندارد. همچنین هر متد میتواند دارای پارامترهایی نیز باشد كه لیست پارامترهای آن در داخل پرانتزهای جلوی آن قرار میگیرد. برای سادگی كار در این برنامه متد ما دارای هیچ پارامتری نیست ولی در ادامه همین درس به معرفی پارامترها نیز میپردازم.
متد Main() رفتار و عمل خود را بوسیله Console.WriteLine(…) مشخص مینماید. Console كلاسی در System است و WriteLine() متدی در كلاس Console. در زبان C# از اپراتور "." (نقطه dot) جهت جداسازی زیرروتینها و زیرقسمتها استفاده میكنیم. همانطور كه ملاحظه میكنید چون WriteLine() یك متد درون كلاس Console است به همین جهت از "." جهت جداسازی آن استفاده كردهایم.
در زبان C#، برای قرار دادن توضیحات در كد برنامه از // استفاده میكنیم. بدین معنا كه كامپایلر در هنگام اجرای برنامه توجهی به این توضیحات نمیكند و این توضیحات تنها به منظور بالا بردن خوانایی متن و جهت و كمك به فهم بهتر برنامه قرار میگیرند. استفاده از // تنها در مواردی كاربرد دارد كه توضیحات شما بیش از یك خط نباشد. در صورت تمایل برای استفاده از توضیحات چند خطی باید در ابتدای شروع توضیحات از /* و در انتها آن از */ استفاده نمایید. در این حالت تمامی مطالبی كه بین /* */ قرار میگیرند به عنوان توضیحات (Comments) در نظر گرفته میشوند.
تمامی دستورات (Statements) با ";"، سمی كولون، پایان مییابند. كلاسها و متدها با } آغاز شده و با { خاتمه مییابند. تمامی دستورات بین { } یك بلوك را میسازند.
بسیاری از برنامهها از كاربر ورودی دریافت میكنند. انواع گوناگونی از این ورودیها میتوانند به عنوان پارامتری برای متد Main() در نظر گرفته شوند. لیست 2-1 برنامهای را نشان میدهد نام كاربر را از ورودی دریافت كرده و آن را بر روی صفحه نمایش میدهد. این ورودی به صورت پارامتری برای متد Main() در نظر گرفته شده است.
لیست 2-1 : برنامهای كه ورودی را از كاربر، بعنوان پارامتر Main()، دریافت میكند.
// Namespace اعلان
using System;
// كلاس آغازین برنامه
class NamedWelcome
{
// آغاز اجرا برنامه
public static void Main(string[] args)
{
// نمایش بر روی صفحه
Console.WriteLine("Hello, {0}!", args[0]);
Console.WriteLine("Welcome to the C# Persian Tutorial!");
}
}
توجه داشته باشید كه این برنامه، ورودی را به صورت Command-Line دریافت میكند و در هنگام اجرای برنامه باید ورودی را در Command-Line وارد نمایید. در صورتیكه ورودی را وارد ننمایید برنامه دچار مشكل شده و متوقف خواهد شد.
همان طور كه در لیست 2-1 مشاهده مینمایید، پارامتر متد Main() با عنوان args مشخص شده است. با استفاده از این نام در داخل متد میتوان آن استفاده نمود. نوع این پارامتر از نوع آرایهای از نوع رشته (string[]) در نظر گرفته شده است. انواع(types) و آرایهها را در درسهای بعدی بررسی میكنیم. فعلاً بدانید كه آرایه رشتهای جهت نگهداری چندین كاراكتر مورد استفاده قرار میگیرد. [] مشخص كننده آرایه هستند كه مانند یك لیست عمل میكند.
همانطور كه ملاحظه میكنید در این برنامه دو دستور Console.WriteLine(…) وجود دارد كه اولین دستور مقداری با دستور دوم متفاوت است. همانطور كه مشاهده میكنید داخل دستور Console.WriteLine(…) عبارتی به شكل {0} وجود دارد. این آرگومان، نشان میدهد كه به جای آن چه مقداری باید نمایش داده شود كه در این جا args[0] نشان داده میشود. عبارتی كه داخل " " قرار دارد عیناً در خروجی نمایش داده میشود، به جای آرگومان {0}، مقداری كه پس از " قرار دارد، قرار میگیرد. حال به آرگومان بعدی یعنی args[0] توجه كنید. مقدار صفر داخل [] نشان میدهد كه كدام عنصر از آرایه مورد استفاده است. در C# اندیس آرایه از صفر شروع میشود به همین جهت برای دسترسی به اولین عنصر آرایه باید از اندیس صفر استفاده كنیم.(همانطور كه قبلاً نیز كفتم آرایهها را در درسهای آینده توضیح خواهم داد، هدف از این درس تنها آشنایی با C# است.!)
مجدداً به آرگومان {0} بازگردیم. این آرگومان نشان می دهد كه یك مقدار باید در رشته خروجی قرار گیرد، این مقدار همان args[0] است. اگر شما این برنامه را از طریق Command-Line اجرا نمایید خروجی شبیه به زیر خواهید گرفت :
>Hello!, Meysam!
>Welcome to C# Persian Tutorial!
همان گونه كه میبینید، پس از اجرای برنامه نام شما كه از طریق Command-Line آنرا وارد نمودهاید در خروجی ظاهر میشود. استفاده از آرگومان {n}، كه در آن n یك مقدار عددی است، جهت فرمت دادن به متن خروجی است كه بر روی صفحه به نمایش در میآید. مقدار n از صفر آغاز شده و به ترتیب افزایش میباید. به مثال زیر توجه كنید :
Console.WriteLine("Hello! ,{0} ,{1}, {2}",args[0],args[1],args[2]);
این خط از برنامه سه مقدار args[0],args[1],args[2] را در خروجی به ترتیب نمایش میدهد. ملاحظه مینمایید كه چون 3 مقدار را میخواهیم نمایش دهیم، سه بار از آرگومان {n} استفاده كردهایم و هر بار یك واحد به مقدار قبلی افزودهایم. در آینده بیشتر با این مفاهیم آشنا میشویم.
مطلبی كه باید در مورد لیست 2-1 به آن توجه شود آنست كه این برنامه تنها از طریق Command-Lineقابل اجراست و در صورتیكه كاربر از این مطلب كه برنامه باید دارای ورودی به صورت Command-Line باشد، بی اطلاع باشد و ورودی را در Command-Line وارد نكند، برنامه متوقف شده و اجرا نمیشود. پس برای رفع چنین مشكلی باید از روش بهتری جهت دریافت ورودی از كاربر استفاده كرد.
لیست 3-1 : یك برنامه كه قابلیت محاوره با كاربر را دارد.
// Namespace اعلان
using System;
// كلاس آغازین برنامه
class InteractiveWelcome
{
//آغاز اجرای برنامه
public static void Main()
{
// متنی بر روی صفحه نمایش داده میشود
Console.Write("What is your name?: ");
//متنی نمایش داده شده و برنامه منتظر دریافت ورودی میماند
Console.Write("Hello, {0}! ", Console.ReadLine());
Console.WriteLine("Welcome to the C# Persian Tutorial!");
}
}
همانطوریكه در این برنامه دیده می شود، متد Main() دارای پارامتر نیست. در عوض یك خط به متن برنامه لیست 2-1 اضافه شده است. در اولین خط از این برنامه، متنی با عنوان اینكه نام شما چیست؟ بر روی صفحه ظاهر میشود. سپس در خط بعدی پس از نوشتن كلمه Hello, ، برنامه منتظر دریافت ورودی از كاربر میشود. بدین معنی كه این بار تا زمانیكه كاربر متنی را به عنوان نام خود وارد نكند اجرای برنامه به پیش نخواهد رفت و خط بعدی اجرا نمیشود. این برنامه روش ایجاد ارتباط از طریق برنامه با كاربر را نمایش میدهد. در این مثال كاربر دقیقاً متوجه میشود كه چه زمانی باید اطلاعات را وارد نماید و این اطلاعات چه باید باشد در حالیكه در مثال قبل چنین نبود. همانگونه كه میبینید در این برنامه آرگومان {0} مستقیماً از طریق دستور Console.ReadLine() دریافت میشود و بلافاصله در خروجی نمایش داده میشود. دستور ReadLine() نیز یكی از متدهای كلاس Console است كه بوسیله آن رشته ورودی خوانده میشود.
خروجی برنامه فوق به شكل زیر است :
What is your name?:
(سپس برنامه منتظر دریافت متنی از ورودی توسط كاربر میماند)
(پس از اینكه كاربر رشتهای را وارد كرد و كلیدEnter را فشار داد، متن زیر نمایش داده میشود.)
Hello, Meysam!
(سپس اجرای برنامه به دستور بعدی منتقل میشود)
Welcome to the C# Persian Tutorial!
خروجی كامل برنامه :
What is your name?:
Hello, Meysam! Welcome to the C# Persian Tutorial!
توجه كنید كه ReadLine() به عنوان یك متد، مقداری را به سیستم بازمیگرداند. این مقدار در این برنامه به آرگومان {0} برگردانده میشود. این خط از برنامه را میتوان طور دیگری هم نوشت :
string myName=Console.ReadLine();
Console.WriteLine("Hello, {0}!",myName);
در این حالت ما یك متغیر از نوع رشته با نام myName تعریف كردهایم كه مقدار ورودی در آن ذخیره میشود و سپس از این مقدار به عنوان مقداری كه {0} میپذیرد استفاده كردهایم.
در این درس آموختید كه ساختار كلی یك برنامه C# چگونه است. هر برنامه C# از یك كلاس اصلی تشكیل میشود كه این كلاس شامل دادهها و متغیرها و متدهایی میباشد. متد آغازین برنامه كه برنامه با آن شروع به اجرا میكند، متد Main() است. با استفاده از توابع كتابخانهای مینوان به كلاسها و متدهای C# دسترسی پیدا كرد. از جمله این توابع System بود كه یكی از كلاسهای آن Console و چند متد این كلاس، متدهای WriteLine() و ReadLine() بودند.
آموزش زبان #C
1. مفاهیم اولیه زبان #C : فهم ساختار پایهای یك برنامه در #C، آشنایی با Namespace، آشنایی با كلاس و ....
2. متغیرها، عبارات و عملگرها : آشنایی با متغیرها، آشنایی با انواع پیش فرض زبان، آشنایی با عبارات، آشنایی با رشتهها، آشنایی با آرایهها و ....
3. دستورالعملهای كنترلی - شرطی : آشنایی با دستور if ، آشنایی با دستور switch و break ، آشنایی با دستور goto و ....
4. دستورالعملهای كنترلی - حلقهها : آشنایی كلی با حلقهها - حلقه while - حلقه do while - حلقه for و foreach و ....
5. متدها : ساختار یك متد، انواع متدها، ایجاد نمونه جدید از اشیاء، انواع پارامترهای متد، فراخوانی متد، آشنایی با كلمه كلیدی this و ....
6. Namespaces : آشنایی با Namespace - هدایتگر using - هدایتگر alias - اعضای یك Namespace و ....
7. كلاسها : درك كاملتر كلاسها، سازنده و تخریب كننده در كلاسها ، اعضای كلاس و ....
8. ارثبری كلاسها : پیادهسازی كلاس پایه ، كلاسهای مشتق شده، مقدار دهی كلاس پایه، فراخوانی اعضای كلاس پایه، پنهان سازی اعضای كلاس
9. چند ریختی Polymorphism : آشنایی با مفهوم چند ریختی، متدهای مجازی، Override كردن متدها، استفاده از چندریختی در برنامهها و ....
10. ویژگیها (Properties) : موارد استفاده، پیادهسازی و ایجاد property، ایجاد property های فقط خواندنی و فقط نوشتنی و ....
11. اندیكسر (Indexer) : پیادهسازی اندیكسر، سرریزی اندیكسر، اندیكسرهای چند پارامتری، نكات پیشرفته درباره اندیكسرها و ....
12. ساختارها (Structures) : ساختار چیست؟، پیادهسازی و استفاده از یك ساختار، تفاوت ساختار و كلاس و ....
13. واسطها و رابطها (Interfaces) : مفهوم كلی واسطها، تعریف یك واسط، استفاده از interface، پیادهسازی ارثبری در واسطها و ....
14. رخداد (Event) و delegate : درك مفهوم delegate، رخداد چیست؟ پیادهسازی رخدادها و delegate ها و ....
15. Exception Handling : درك مفهوم استثناء و چگونگی برخورد با آن، بررسی بلوكهای try/catch برای مقابله با استثناء و بلوك finally ....
16. صفتها (Attribute) : صفتها چه هستند و چگونه از آنها استفاده میكنیم، پارامترهای صفتها و انواع آنها، ساخت صفتهای شخصی و ....
17. انواع شمارشی (Enum) : انواع شمارشی چه هستند، چگونه تولید شده و چگونه مورد استفاده قرار می گیرند، موارد استفاده از آنها و ....
18. Overload کردن عملگرها : در این بحث با نحوه Overload کردن عملگرها آشنا خواهید شد.
19. ساختمان دادهها در سی شارپ (1) : در این بحث با مفاهیم اولیه ساختمان داده آشنا میشوید. همچنین به معرفی ساختمان دادههای مهم و رایج نظیر آرایه و لیست نیز پرداخته شده است.
دستورالعملهای كنترلی و شرطی
در این درس با دستورالعملهای كنترل و انتخاب در C# آشنا میشوید. هدف این درس عبارتست از :
• یادگیری دستور if
• یادگیری دستور switch
• نحوه بكارگیری دستور break در دستور switch
• درك صحیح از نحوه بكارگیری دستور goto
بررسی دستور if و انواع مختلف آن
در درسهای گذشته، برنامههایی كه مشاهده میكردید از چندین خط دستور تشكیل شده بودند كه یكی پس از دیگری اجرا میشدند و سپس برنامه خاتمه مییافت. در این برنامهها هیچ عمل تصمیمگیری صورت نمیگرفت و تنها دستورات برنامه به ترتیب اجرا میشدند. مطالب این درس نحوه تصمیمگیری در یك برنامه را به شما نشان میدهد.
اولین دستور تصمیمگیری كه ما آنرا بررسی مینماییم، دستورالعمل if است. این دستور دارای سه فرم كلی : تصمیمگیری ساده، تصمیمگیری دوگانه، تصمیمگیری چندگانه میباشد.
مثال 1-3 – فرمهای دستورالعمل if
using System;
class IfSelect
{
public static void Main()
{
string myInput;
int myInt;
Console.Write("Please enter a number: ");
myInput = Console.ReadLine();
myInt = Int32.Parse(myInput);
//تصمیمگیری ساده و اجرای عمل داخل دو كروشه
if (myInt > 0)
{
Console.WriteLine("Your number {0} is greater than zero.", myInt);
}
//تصمیمگیری ساده و اجرای عمل بدون استفاده از دو كروشه
if (myInt < 0)
Console.WriteLine("Your number {0} is less than zero.", myInt);
// تصمیمگیری دوگانه
if (myInt != 0)
{
Console.WriteLine("Your number {0} is not equal to zero.", myInt);
}
else
{
Console.WriteLine("Your number {0} is equal to zero.", myInt);
}
// تصمیمگیری چندگانه
if (myInt < 0 || myInt == 0)
{
Console.WriteLine("Your number {0} is less than or equal to zero.", myInt);
}
else if (myInt > 0 && myInt <= 10)
{
Console.WriteLine("Your number {0} is between 1 and 10.", myInt);
}
else if (myInt > 10 && myInt <= 20)
{
Console.WriteLine("Your number {0} is between 11 and 20.", myInt);
}
else if (myInt > 20 && myInt <= 30)
{
Console.WriteLine("Your number {0} is between 21 and 30.", myInt);
}
else
{
Console.WriteLine("Your number {0} is greater than 30.", myInt);
}
} //Main()پایان متد
} //IfSelectپایان كلاس
برنامه 1-3 از یك متغیر myInt برای دریافت ورودی از كاربر استفاده مینماید، سپس با استفاده از یك سری دستورات كنترلی، كه همان دستور if در اینجاست، عملیات خاصی را بسته به نوع ورودی انجام میدهد. در ابتدای این برنامه عبارت Please enter a umber: در خروجی چاپ میشود. دستور Console.ReadLine() منتظر میماند تا كاربر ورودی وارد كرده و سپس كلید Enter را فشار دهد. همانطور كه در قبل نیز اشاره كردهایم، دستور Console.ReadLine() عبارت ورودی را به فرم رشته دریافت مینماید پس مقدار ورودی كاربر در اینجا كه یك عدد است به فرم رشتهای در متغیر myInput كه از نوع رشتهای تعریف شده است قرار میگیرد. اما میدانیم كه برای اجرای محاسبات و یا تصمیمگیری بر روی اعداد نمیتوان از آنها در فرم رشتهای استفاده كرد و باید آنها را بصورت عددی مورد استفاده قرار داد. به همین منظور باید متغیر myInput را به نحوی به مقدار عددی تبدیل نماییم. برای این منظور از عبارت Int32.Parse() استفاده مینماییم. این دستور مقدار رشتهای متغیر داخل پرانتزش را به مقدار عددی تبدیل كرده و آنرا به متغیر دیگری از نوع عددی تخصیص میدهد. در این مثال نیز همانطور كه دیده میشود، myInput كه تز نوع رشتهای است در داخل پرانتز قرار گرفته و این مقدار برابر با myInt كه از نوع int است قرار گرفته است. با این كار مقدار عددی رشته ورودی كاربر به متغیر myInt تخصیص داده میشود. (توضیح كاملتری در مورد Int32 و سایر تبدیلات مشابه به آن در درسهای آینده و در قسمت نوعهای پیشرفته مورد بررسی قرار میگیرند.)حال ما متغیری از نوع مورد نظر در دست داریم و میتوانیم با استفاده از دستور if بر روی آن پردازش انجام داده و تصمیمگیری نماییم.
دستور if
اولین دستور بصورت if (boolean expression) {statements} آورده شده است. دستور if با استفاده از كلمه كلیدی if آغاز میشود. سپس یك عبارت منطقی درون یك زوج پرانتز قرار میگیرد . پس از بررسی این عبارات منطقی دستورالعمل/دستورالعملهای داخل كروشه اجرا میشوند. همانطور كه مشاهده مینمایید، دستور if یك عبارت منطقی را بررسی میكند. در صورتیكه مقدار این عبارات true باشد دستورهای داخل بلوك خود را اجرا مینماید(قبلا توضیح داده شد كه دستورهایی كه داخل یك زوج كروشه {} قرار میگیرند در اصطلاح یك بلوك نامیده میشوند.) و در صورتیكه مقدار آن برابر با false باشد اجرای برنامه به بعد از بلوك if منتقل میشود. در این مثال همانطور كه ملاحظه مینمایید، عبارت منطقی دستور if بشكل if(myInt > 0) است. در صورتیكه مقدار myInt بزرگتر از عدد صفر باشد، دستور داخل بلوك if اجرا میشود و در غیر اینصورت اجرای برنامه به بعد از بلوك if منتقل میگردد.
دومین دستور if دراین برنامه بسیار شبیه به دستور اول است، با این تفاوت كه در این دستور، دستور اجرایی if درون یك بلوك قرار نگرفته است. در صورتیكه بخواهیم با استفاده از دستور if تنها یك دستورالعمل اجرا شود، نیازی به استفاده از بلوك برای آن دستورالعمل نمیباشد. استفاده از بلوك تنها زمانی ضروری است كه بخواهیم از چندین دستور استفاده نماییم.
دستور if-else
در بیشتر موارد از تصمیمگیریهای دوگانه یا چندگانه استفاده میشود. در این نوع تصمیمگیریها، دو یا چند شرط مختلف بررسی میشوند و در صورت true بودن یكی از آنها عمل مربوط به آن اجرا میگردد. سومین دستور if در این برنامه نشان دهنده یك تصمیمگیری دوگانه است. در این حالت درصورتیكه عبارت منطقی دستور if برابر با true باشد دستور بعد از if اجرا میشود و در غیر اینصورت دستور بعد از else به اجرا در میآید. در حقیقت در این حالت میگوئیم " اگر شرط if صحیح است دستورات مربوط به if را انجام بده و درغیر اینصورت دستورات else را اجرا كن".
فرم كلی دستور if-else بصورت زیر است :
if (boolean expression)
{statements}
else
{statements}
كه در آن boolean expression عبارت منطقی است كه صحت آن مورد بررسی قرار میگیرد و statements دستور یا دستوراتی است كه اجرا میگردند.
دستور if-else if … else یا if تودرتو
در صورتیكه نیاز باشد تا چندین حالت منطقی مورد بررسی قرار گیرد و دستورات مربوط به یكی از آنها اجرا شود، از فرم تصمیمگیری چندگانه استفاده مینماییم. این نوع استفاده از دستور if در اصطلاح به if تودرتو (Nested If) معروف است چراكه در آن از چندین دستور if مرتبط به یكدیگر استفاده شده است. چهارمین دستور if در مثال 1-3 استفاده از if تودرتو را نشان میدهد. در این حالت نیز دستور با كلمه كلیدی if آغاز میگردد. شرطی بررسی شده و در صورت true بودن دستورات مربوط به آن اجرا میگردد. اما اگر مقدار این عبارت منطقی false بود آنگاه شرطهای فرعی دیگری بررسی میشوند.این شرطهای فرعی با استفاده از else if مورد بررسی قرار میگیرند. هر یك از این شرطها دارای عبارات منطقی مربوط به خود هستند كه در صورت true بودن عبارت منطقی دستورات مربوط به آنها اجرا میگردد و در غیر اینصورت شرط بعدی مورد بررسی قرار میگیرد. باید توجه كنید كه در ساختار if تودرتو تنها یكی از حالتها اتفاق میافتد و تنها یكی از شرطها مقدار true را بازمیگرداند.
فرم كلی if تودرتو بشكل زیر است :
if (boolean expression)
{statements}
else if (boolean expression)
{statements}
…
else
{statements}
عملگرهای OR و AND (|| و &&)
نكته دیگری كه باید در اینجا بدان اشاره كرد، نوع شرطی است كه در عبارت منطقی دستور if آخر مورد استفاده قرار گرفته است. در این عبارت منطقی از عملگر || استفاده شده است كه بیانگر OR منطقی است. عملگر OR زمانی مقدار true بازمیگرداند كه حداقل یكی از عملوندهای آن دارای مقدار true باشد. بعنوان مثال در عبارت (myInt < 0 || myInt == 0)، در صورتیكه مقدار متغیر myInt كوچكتر یا مساوی با صفر باشد، مقدار عبارت برابر با true است. نكته قابل توجه آنست كه در زبان C#، همانطور كه در درس دوم به آن اشاره شد، دو نوع عملگر OR وجود دارد. یكی OR منطقی كه با || نمایش داده میشود و دیگری OR معمولی كه با | نشان داده میشود. تفاوت بین این دو نوع OR در آنست كه OR معمولی هر دو عملگر خود را بررسی مینماید اما OR منطقی تنها در صورتیكه عملگر اول آن مقدار false داشته باشد به بررسی عملگر دوم خود میپردازد.
عبارت منطقی (myInt > 0 && myInt <= 10) حاوی عملگر AND شرطی (&&) میباشد. این عبارت در صورتی مقدار true بازمیگرداند كه هر دو عملوند AND دارای مقدار true باشند. یعنی در صورتیكه myInt هم بزرگتر از صفر باشد و هم كوچگتر از 10، مقدار عبارت برابر با true میگردد. در مورد AND نیز همانند OR دو نوع عملگر وجود دارد. یكی AND معمولی (&) و دیگری AND شرطی (&&). تفاوت این دو نیز در آنست كه AND معمولی (&) همیشه هر دو عملوند خود را بررسی مینماید ولی AND شرطی (&&) تنها هنگامی به بررسی عملوند دوم خود میپردازد كه مقدار اولین عملوندش برابر با true باشد. عملگرهای منطقی (|| و &&) را در اصطلاح عملگرهای میانبر (short-circuit) مینامند چراكه تنها در صورت لزوم عملوند دوم خود را بررسی مینمایند و از اینرو سریعتر اجرا میشوند.
بررسی دستور switch
همانند دستور if، دستور switch نیز امكان تصمیمگیری را در یك برنامه فراهم مینماید.
مثال 2-3 – دستورالعمل switch
using System;
class SwitchSelect
{
public static void Main()
{
string myInput;
int myInt;
begin:
Console.Write("Please enter a number between 1 and 3: ");
myInput = Console.ReadLine();
myInt = Int32.Parse(myInput);
// بهمراه متغیری از نوع صحیح switch دستور
switch (myInt)
{
case 1:
Console.WriteLine("Your number is {0}.", myInt);
break;
case 2:
Console.WriteLine("Your number is {0}.", myInt);
break;
case 3:
Console.WriteLine("Your number is {0}.", myInt);
break;
default:
Console.WriteLine("Your number {0} is not between 1 and 3.", myInt);
break;
} //switchپایان بلوك
decide:
Console.Write("Type "continue" to go on or "quit" to stop: ");
myInput = Console.ReadLine();
// بهمراه متغیری از نوع رشتهای switch دستور
switch (myInput)
{
case "continue":
goto begin;
case "quit":
Console.WriteLine("Bye.");
break;
default:
Console.WriteLine("Your input {0} is incorrect.", myInput);
goto decide;
} //switchپایان بلوك
} //Main()پایان متد
} //SwitchSelectپایان كلاس
مثال 2-3 دو مورد استفاده از دستور switch را نشان میدهد. دستور switch بوسیله كلمه كلیدی switch آغاز شده و به دنبال آن عبارت دستور switch قرار میگیرد. عبارت دستور switch میتواند یكی از انواع زیر باشد : sbyte, byte, short, ushort, int, uint, long, ulong, char, string, enum .(نوع enum در مبحث جداگانهای مورد بررسی قرار خواهد گرفت.) در اولین دستور switch در مثال 2-3، عبارت دستور switch از نوع عددی صحیح (int) میباشد.
به دنبال دستور و عبارت switch، بلوك switch قرار میگیرد كه در آن گزینههایی قرار دارند كه جهت منطبق بودن با مقدار عبارت switch مورد بررسی قرار میگیرند. هر یك از این گزینهها با استفاده از كلمه كلیدی case مشخص میشوند. پس از كلمه كلیدی case خود گزینه قرار میگیرد و به دنبال آن ":" و سپس دستوری كه باید اجرا شود. بعنوان مثال به اولین دستور switch در این برنامه توجه نمایید. در اینجا عبارت دستور switch از نوع int است. هدف از استفاده از دستور switch آنست كه از بین گزینههای موجود در بلوك switch، گزینهای را كه مقدارش با مقدار عبارت switch برابر است پیدا شده و عمل مرتبط با آن گزینه اجرا شود. در این مثال مقدار متغیر myInt بررسی میشود. سپس اگر این مقدار با یكی از مقادیر گزینههای داخل بلوك switch برابر بود، دستور یا عمل مربوط به آن گزینه اجرا میگردد. توجه نمایید كه در این مثال منظور ما از گزینه همان عدد پس از case است و منظور از دستور عبارتی است كه پس از ":" قرار گرفته است. بعنوان مثال، در دستور زیر :
برای دریافت پروژه اینجا کلیک کنید