آموزش سی شارپ c# درس اول

 
ارسال شده در تاریخ 1392/7/16 توسط admin در زمینه آموزش سی شارپ
 
آموزش زبانهای برنامه نویسی کامپیوتری

آموزش زبان C#

1. مفاهیم اولیه زبان : C# فهم ساختار پایه ای یک برنامه در C# ، آشنایی با Namespace ، آشنایی با کلاس و ....

2. متغیرها، عبارات و عملگرها : آشنایی با متغیرها، آشنایی با انواع پیش فرض زبان، آشنایی با عبارات، آشنایی با رشته ها، آشنایی با آرایه ها و ....

.3 دستورالعمل های کنترلی - شرطی : آشنایی با دستور if ، آشنایی با دستور switch و break ، آشنایی با دستور goto و ....

.4 دستورالعمل های کنترلی - حلقه ها : آشنایی کلی با حلقه ها - حلقه - while حلقه - do while حلقه for و foreach و ....

.5 متدها : ساختار یک متد، انواع متدها، ایجاد نمونه جدید از اشیاء، انواع پارامترهای متد، فراخوانی متد، آشنایی با کلمه کلیدی this و ....

: Namespaces .6 آشنایی با - 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 ها و ....

: Handling Exception .15 دری مفهوم استثناء و چگونگی برخورد با آن، بررسی بلوکهای try/catch برای مقابله با استثناء و بلوی .... finally

.16 صفتها : (Attribute) صفتها چه هستند و چگونه از آنها استفاده می کنیم، پارامترهای صفتها و انواع آنها، ساخت صفتهای شخصی و ....

.17 انواع شمارشی : (Enum) انواع شمارشی چه هستند، چگونه تولید شده و چگونه مورد استفاده قرار می گیرند، موارد استفاده از آنها و ....

Overload .18 کردن عملگرها : در این بحث با نحوه Overload کردن عملگرها آشنا خواهید شد .

.19 ساختمان داده ها در سی شارپ : (1) در این بحث با مفاهیم اولیه ساختمان داده آشنا میشوید . همچنین به معرفی ساختمان دا ده های مهم و رایج نظیر آرایه و لیست نیز پرداخته شده است .

www.cPorOje.ir

درس اول : آغاز کار با 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 محیطی شبیه به محیط

www.cpOroje.ir

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() استفاده نمایید .

www.Cporoje.ir

تعریف کلاس، Class Welcome CSS ، شامل تعریف داده ها ) متغیرها ( و متدها جهت اجرای برنامه است . یک کلاس، جزو معدود عناصر زبان

C# است که بوسیله آن می توان به ایجاد یک شی (Object) از قبیل واسط ها (Interfaces) و ساختارها (Structures) ، پرداخت . توضیحات بیشتر در این زمینه در درس های آینده ذکر می شوند . در این برنامه کلاس هیچ داد ه و متغیری ندارد و تنها شامل یک متد است . این متد، رفتار (Behavior) این کلاس را مشخص می کند .

www.iranProje.com

متد درون این کلاس بیان می کند که این کلاس چه کاری را پس از اجرا شدن انجام خواهد داد . کلمه کلیدی 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# ، برای قرار دادن توضیحات در کد برنامه از // استفاده می کنیم . بدین معنا که کامپایلر در هنگام اجرای برنامه توجهی به این توضیحات نمی کند و این توضیحات تنها به منظور بالا بردن خوانایی متن و جهت و کمک به فهم بهتر برنامه قرار می گیرند . استفاده از // تنها در مواردی کاربرد دارد که توضیحات شما بیش از یک خط نباشد . در صورت تمایل برای استفاده از توضیحات چند خطی باید در ابتدای شروع

www.iRanproje.com

توضیحات از /* و در انتها آن از */ استفاده نمایید . در این حالت تمامی مطالبی که بین /* */ قرار می گیرند ب ه عنوان توضیحات (Comments) در نظر گرفته می شوند .

تمامی دستورات (Statements) با ";" ، سمی کولون، پایان مییابند . کلاس ها و متد ها با { آغاز شده و با } خاتمه مییابند . تمامی دستورات بین { } یک بلوی را می سازند .

بسیاری از برنامه ها از کاربر ورودی دریافت می کنند . انواع گوناگونی از این ورودی ها می توانند به عنوان پارامتری برای متد Main() در نظر گرفته شوند . لیست 1-2 برنامه ای را نشان می دهد نام کاربر را از ورودی دریافت کرده و آن را بر روی صفحه نمایش می دهد . این ورودی به صورت پارامتری برای متد Main() در نظر گرفته شده است .

لیست : 1-2 برنامه ای که ورودی را از کاربر، بعنوان پارامتر 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 وارد نمایید . در صورتیکه ورودی را وارد ننمایید برنامه دچار مشکل شده و متوقف خواهد شد .

www.cporoje.ir

همان طور که در لیست 1-2 مشاهده می نمایید، پارامتر متد Main() با عنوان args مشخص شده است . با استفاده از این نام در داخل متد می توان آن استفاده نمود . نوع این پارامتر از نوع آرایه ای از نوع رشته (string[]) در نظر گرفته شده است . انواع (types) و آرایه ها را در درس های بعدی بررسی می کنیم . فعلاً بدانید که آرایه رشت ه ای جهت نگهداری چندین کاراکتر مورد استفاده قرار می گیرد [] . مشخص کننده آرایه هستند که مانند یک لیست عمل میکند .

www.iranproJE.com

 

همانطور که ملاحظه می کنید در این برنامه دو دستور 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} استفاده کرده ایم و هر بار یک واحد به مقدار قبلی افزوده ایم . در آینده بیشتر با این مفاهیم آشنا می شویم .

مطلبی که باید در مورد لیست 1-2 به آن توجه شود آنست که این برنامه تنها از طریق Command-Line قابل اجراست و در صورتیکه کاربر از این مطلب که برنامه باید دارای ورودی به صورت Command-Line باشد، بی اطلاع باشد و ورودی را در Command-Line وارد نکند، برنامه متوقف شده و اجرا نم یشود . پس برای رفع چنین مشکلی باید از روش بهتری جهت دریافت ورودی از کاربر استفاده کرد .

www.cporoje.ir

www.cporoje.ir

 

Copyright © 2014 icbc.ir