چکِیده: از حدود سالهای 1375 مبحث آموزش مجازی در کشور مورد توجه قرار گرفته است و طرح ملی توسعه آموزش مجازی در وزارت علوم تحقیقات و فناوری با حمایت دانشگاه های بزرگی مانند دانشگاه صنعتی شریف آغاز شده است.
در حال حاضر بسیاری از دانشگاه های کشور آموزش مجازی را شروع نموده اند و این جدای از دانشگاه پیام نور است که کلا با سیاست آموزش از راه دور تشکیل شده است و امروزه تا مقاطع دکترا در رشته های مختلف دانشجو میپذرد.
و بسیاری از دانشگاه ها و موسسات آموزش عالی در کنار آموزش معمول خود دانشگاه مجازی نیز تاسیس نموده اند و تا مقطع کارشناسی ارشد دانشجو میپذیرند.
درس مجازی بمعنای ایجاد یک سری محتواهای درس و ارائه در سامانه آموزش مجازی و رها نمودن دانشجویان تا خود مطالب را بهر صورتی که میخواهند مطالعه نمایند، نیست و بایستی تعامل مناسبی میان استاد و دانشجویان در طول ترم برقرار باشد.
در همین راستا اعضای هیات علمی موظفند شرایط زیر را در ارائه یک درس مجازی رعایت نمایند: تایید ابتدایی محتواهای تولید شده توسط کمیته علمی یا مسوول آموزش مجازی دانشگاه از نظر رعایت حداقل ها رهگیری مناسب دانشجویان در طی درس براساس تقدم و تاخر مطالب درسی ایجاد تکالیف برای دانشجویان و بررسی و ارزیابی نتایج و اعلام نظر به دانشجو مقدمه: اگرچه سالهاست کامپیوتر درتمام سطوح علمی وصنعتی مورداستفاده قرار میگیرد اما درسال های اخیر این علم بسیار پیشرفت کرده و در تمامی شاخه ها نفوذ کرده است بطوریکه عدم استفاده ازآن مشکلات زیادی را درپیشبرد اهداف ایجاد خواهد کرد.
با توجه به اینکه علم انفورماتیک به حدی در دنیای امروز پیشرفت کرده که در تمامی سازمانها ادارات شرکت ها و محیط های دیگر سیستم ها مکانیزه شده است لذا سعی کردیم از طریق سایت مذکور در مورد آموزش مجازی اطلاعاتی را برسانیم مقدمه ای بر C# سی شارپ در سال 2001 توسط شرکت مایکروسافت به همراه بسته دات نت برای اولین بار مطرح و ارائه شد.
که بعد ها به عنوان یک زبان برنامه نویسی استاندارد توسط ECMA و ISO مورد تائید قرار گرفت.
زبان برنامه نویسی سی شارپ توسط تیمی به مدیریت اندرز هایلزبرگ که قبلا تجربه ارائه زبان های برنامه نویسی موفقی همچون توربو پاسکال و دلفی رو داشت ایجاد شد.
هایلزبرگ سی شارپ را یک زبان برنامه نویسی شی گراء که از زبان های برنامه نویسی بزرگ (همچون دلفی , جاوا و اسمال تاک( تاثیر پذیری داشته معرفی میکند Syntax زبان سی شارپ شبیه به C++ میباشد والبته تفاوت های بسیاری هم دارد.
دات نت فریم ورک (NET Framework) یه بسته نرم افزاری شامل راه حل بسیاری از نیازهای توسعه نرم افزاری (Base Class Library) و همچنین امکان توسعه و اجرای برنامه های تولید شده برای این فریم ورک میباشد.
برنامه های تولید شده برای دات نت فریم ورک توسط Common Language Runtime اجرا میشوند CLR یا همان Common Language Runtime سرویس هایی مهمی از قبیل Garbage Collection , Memory Managementو Exception Handlingرا ارائه میدهد.
Garbage Collection: در زبان برنامه نویسی سی شارپ دیگر نگرانی از جهت مدیریت اشیاء در حافظه وجود ندارد به این معنی که وقتی شما شیء ایجاد میکنید بعد از اینکه دیگر از آن شی ء استفاده نکردید آن شیء به طور اتوماتیک از حافظه پاک خواهد شد.
این کار توسط GC یا همان Garbage Collectoانجام میشود.روش کار GC به این ترتیب است که تا موقعی که Referenceی به یک object وجود داشته باشد آن شیء در حافظه باقی خواهد ماند اما در صورتیکه Referenceی به آن شیء وجود نداشته باشد بعد از یک بازه زمانی نامشخص آن شیء به صورت اتوماتیک از حافظه پاک خواهد شد.
برخلاف زبان های برنامه نویسی دیگر وقتی کد شما در زبان برنامه نویسی سی شارپ (یا هریک از زبان های دیگر دات نت) کامپایل میشود به یک زبان دیگری به نام Intermediate Language یا همان IL تبدیل میشود.
و در موقعی که درخواست برای اجراء آن داده میشود توسط یک مکانیزمی به نام Just In Time Compiler که در CLR موجود است به زبان خاص آن ماشین تبدیل شده و اجراء میگردد.
سی شارپ یک زبان شیء گراست به این معنی که هرآنچه که در سی شارپ وجود دارد در غالب دو مفهوم کلاس (Class) و شیء (Object) و روابط بین آنها خلاصه میشود.
کلاس(Class): در واقع یک ایده (Concept) یا ذهنیت میباشد.
مثلا یک نجار چه ذهنیتی نصبت به یک "میز" دارد؟
خوب مسلما یه صفحه , چهار پایه و....
این ذهنیتی است که یک نجار نسبت به "میز" دارد.
این دقیقا مفهوم کلاس است.
یعنی تا موقعی که آن میز ساخته نشه فقط یک ذهنیت یا در واقع کلاس است.
شیء(object): اشیاء موجودیت هایی هستند که از کلاس ها (ذهنیت) ساخته میشوند.
باز برای مثال همان نجار وقتی ذهنیتش رو به واقعیت تبدیل میکنه در واقع یک میز میسازه یا یک شیء(object) ایجاد کرده است.
کلاس های پایه دات نت (dot net base class library): دات نت فریم ورک حدود 2500 کلاس دارد.
Namespace چیست؟
پیدا کردن یک کلاس بین 2500 کلاس پایه و احتمالا کلاس هایی که خودتان نامگذاریشان میکنید احتمالا کار سختی خواهد بود!
Namespace ها در حقیقت این امکان رو به شما میدهند که بتوانید کلاس های خودتان را دسته بندی کنید و هر کلاس را داخل دسته مورد نظر خودشان قرار بدهید.
به عنوان مثال ما کلاسی داریم به نام SqlConnection و همینطور کلاس دیگری به نام SqlDataAdapter و غیره برای همین یک Namespace به نام System.Data.SqlClient ایجاد شده که کلاس هایی که مربوط به System و کار با داده ها (Data) و در نهایت مختص Sql Server هستند رو داخل این namespace قرار میدهیم.
توی این تصویر تعدادی از namespace های عمومی دات نت نشان داده شده اند.
این نکته را هم بیاد داشته باشید که اسم کامل یک کلاس شامل اسم به همراه نام namespace آن است.
System.Data.SqlClient.SqlConnection اسم کامل آن (qualified name) کلاس sql connection میباشد.
using اما اگر قرار باشد برای استفاده از یک کلاس همیشه اسم کاملش را بنویسیم.
برای همین شما میتوانید با یکبار نوشتن اسم Namespace آن کلاس (یا کلاس هایی که میخواهید استفاده کنید) با استفاده از یک keyword به نام using از تکرارآن جلوگیری کنید.
به عنوان مثال ما در یک مثال میخواهم ده ها بار از کلاس Console و دستوراتش استفاده کنیم.
برای همین بالای کدمان یک بار using System را ذکر میکنیم تا از نوشتن کلمه System برای دفعات مکرر جلوگیری کنیم.
Visual studio.net 2005: نسخه 8 Visual Studio شرکت مایکروسافت که خیلی راحت میتوانید از بازار تهیه کنید.
بعد از اینکه مراحل نصب تمام شد.
از منوی Start --> All Programm --> Microsoft Visual Studio 2005 روی Microsoft Visual Studio 2005 کلیک کنید تا پنجره مقابل برایتان باز شود.
مطابق شکل زیر Start page میباشد نسخه 8 Visual Studio شرکت مایکروسافت که خیلی راحت میتوانید از بازار تهیه کنید.
مطابق شکل زیر Start page میباشد اگر دقت کنید سمت چپ بالا دو تا گزینه Open و Create که امکان ایجاد یا باز کردن پروژه یا وب سایت را به شما میدهد وجود دارد.
روی گزینه Create Project کلیک کنید(می توانید این کار رو با استفاده از کلید های Shift + Ctrl + N هم انجام بدهید).
در پنجره مقابل روی گزینه Visual CSharp کلیک کنید تا انواع پروژه هایی که میشود با زبان سی شارپ تولید کرد را ببینید.
در قسمت پائین صفحه داخل قسمت Name نام پروژه خود را بنویسید و در قسمت Location مسیر پروژه خود را مشخص کنید و در نهایت اسم Solution را وارد نمائید.
به صورت پیش فرض اسم Solution همان اسم پروژه شماست.
دقت کنید که در دات نت برای هر پروژه یک Folder ایجاد خواهد شد.
البته در صورتیکه شما گزینه Create directory for solution را هم تیک بزنید یک Folder هم برای Solution ایجاد خواهد شد.
Solution چیست؟
Solution یا به معنای فارسی راه حل بالاترین سطح دسته بندی در محیط ویژوال استودیو دات نت است.
یک Solution میتواند یک یا چند پروژه و هم این طور فایل را در کنار هم دسته بندی نماید.اصولا وظیفه Solution نگهداری اطلاعات روابط بین پروژه هاست که یک فایل با پسوند sln میباشد.
و دارای تاثیر در خروجی پروژه نخواهد بود.
در مقابل Project یا همان پروژه ها دارای خروجی مستقیم با توجه به نوعشان هستند.
به عنوان مثال Console Application ها دارای خروجی با پسوند exe به معنای executable یا همان فایل های قابل اجراء میباشند.
بعد از اینکه کلید OK را کلیک کردید پروژه شما ایجاد میشود و برای شما یک فایل به نام Programm.cs را باز مینماید.
این فایل به صورت پیش فرض محلی است که نرم افزار شما از داخل آن شروع خواهد شد.
حالا فقط برای اینکه شروع کرده باشیم داخل این فایل و مطابق شکل زیر شروع به تایپ کردن نمایید.
Console.WriteLine("Hello World - C# Tuning!"); و در نهایت برای اینکه نرم افزار را بتوانید تست کنید کافی است که کلید Ctrl + F5 رو بزنید تا این نتیجه مقابل را بگیرید: ابتدا کدی را که قبلا نوشتیم را بررسی کنیم.
Console.WriteLine("Hello World - C# Tuning"); این خط در حقیقت همان جمله Hello World - C# Tuning را برای ما چاپ میکند.
در حقیقت کلاس Console دارای یک رفتار (Method) میباشد که امکان چاپ بر روی صفحه رو به ما میدهد.
این متد writeline میباشد.
پس اگر شما هر چیز دیگری داخل پرانتز و بین " " قرار دهید همان را برای شما چاپ خواهد کرد.
Method چیست؟
در واقع Method ها همان رفتار هایی هستند که ما از کلاس ها انتظار داریم.
در مثال بالا نوشتن بر روی تصویر را میتوانیم با استفاده از متد WriteLine بر روی کلاس Consol استفاده کنیم.
ایجاد متغییر ها در c#: برای ایجاد یک متغییر در سی شارپ باید ابتدا نوع داده ای آن و سپس نام متغییر را وارد نمائیم و در انتها ; را تایپ کنیم: کد: int MyNumber = 1000; Console.WriteLine(MyNumber); در مثال بالا از نوع داده ای int که یک نوع داده ای عددی است استفاده شده است.
پس میتوانیم مقادیر عددی رو داخل این متغییر قرار دهیم.
و مثل کد بالا با استفاده از WriteLine چاپش کنیم.
نوع های داده ای در c#: نوع های داده ای را میتوان بسته به محل قرار گیریشان در حافظه به سه دسته تقسیم کرد: Values Types Reference Types Pointer Types اگرحافظه را به دو قسمت Stack و Heap تقسیم کنیم.
مقادیر تمامی متغییر های نوع اول در حافظه Stack قرار میگیرد و به همین جهت دارای رفتارهای خاصی میشود مقادیر متغییر های نوع دوم در حافظه Heap قرار میگیرند.
:Value Types همان طور که گفتیم مهمترین خاصیت این نوع متغییر ها قرارگیری مقادیر آن ها در حافظه Stack میباشد که به همین دلیل رفتارهای خاصی خواهند داشت.
این نوع متغییر ها شامل Primitive Types یا همان نوع های بدوی Enum ها و Structها میباشند.
umeric Types , Boolean , Char نوع هایی هستند که به آن ها Primitive Types میگوییم.
نوع های عددی شامل int , double decimal, long , short , byte و...
که مقادیر مختلفی از اعداد را داخل خودشان نگه میدارند.boolean ها متغییر هایی هستند که فقط مقدار True و False به معنی مثبت یا منفی رو داخل خوشان نگه میدارند.
و در نهایت Char ها همان کاراکتر ها هستند.
کد: bool married = false; int myNumber = 1000; char c = 'c'; دقت داشته باشین که برای مقدار دهی char از ' یا همان Single Quotation استفاده کردیم.
و برای bool فقط مقدار true یا false امکان پذیر است.
گفتیم که ValueType ها دارای رفتار خاصی هستند.
اما چه رفتاری؟
وقتی یک متغییر از یکی از نوع های Value Type مثل int ایجاد میکنیم مقدار آن داخل حافظه Stack قرار میگیرد و وقتی از آن متغییر یک کپی میگیریم مقدار متغییر قبلی داخل متغییر جدید کپی شود.یعنی اگر مقدار متغییر دوم را عوض کنیم تاثیری روی مقدار متغییر اول نخواهد گذاشت.
این رفتار در مورد تمامی ValueType ها صدق مینماید: وقتی مقدار متغییر دوم را تغییر دهیم مقدار متغییر اول دست نخورده باقی ماند Enumerations: فرض بفرمائید که شما میخواهید یک کلاس تعریف کنید به نام انسان.
وقتی خواص انسان رو تحت بررسی دارین به جنسیت میرسید.
حالا میخواهیم روی کلاس انسان یک متغییر برای نشان دادن جنسیت تعریف کنیم.
به نظر شما جنسیت رو از چه نوعی باید در نظر گرفت؟
bool یا int؟اگر bool در نظر گرفتیم false به معنی مرد خواهد بود یا true؟
اگر int در نظر گرفتیم چه عددی بیانگر مرد و چه عددی بیانگر زن میباشد؟
و اگر کاربر شماعددی به غیر اعداد انتخابی شما وارد کرد چه طور؟
گاهی اوقات در توسعه نرم افزار ها ما به جنس (Type)هایی نیاز داریم که بتوانیم مقدار شان را محدود کنیم.
مثلا همین جنسیت.
با استفاده از Enumeration ها میتوانیم مقدار متغییر جنسیت رو به مرد یا زن محدود کنیم.
برای ایجاد یک Enumeration باید در یک فایل با پسوند cs که بیانگرسی شارپ است از