در قسمت قبل اندکی با تاریخچه سی شارپ و توضیحات مختصری در مورد آن و در مورد این سری از مقالات آموزشی آشنا شدیم. در این قسمت قصد داریم بیشتر با کد نویسی و محیط برنامه Visual Studio IDE آشنا شویم. ویژوال استودیو، IDE شرکت مایکروسافت است و IDE مخفف Integrated Development Environment (محیط یکپارچه توسعه نرم افزار) است.
Visual Studio به شما اجازه ویرایش، کامپایل، اجرا و خطایابی (Debug) برنامه های سی شارپ را میدهد پس برای دنبال کردن این سری مقالات و یادگیری #C نیاز دارید که یک نسخه از ویژوال استودیو را روی سیستم خود نصب کنید و پیشنهاد من نسخه ی ۲۰۱۰ به بعد است چرا که ممکن است در برخی از موارد از ویژگی های C# 4.0 استفاده کنیم. همچنین میتوانید نسخه ی رایگان را از وبسایت مایکروسافت دریافت کنید. دیگر وقت آن رسیده است که اولین برنامه سی شارپ را بنویسیم. برای این منظور باید یک پروژه برای سی شارپ در ویژوال استودیو بسازیم. پس مراحل زیر را برای ساخت یک پروژه خالی سی شارپ که در اینجا از Visual Studio 2010 Professional استفاده شده است دنبال کنید.
۱. ویژوال استودیو را اجرا کنید و از منوی بالا به File => New => Project بروید، سپس Windows را از لیست قالب های نصب شده انتخاب کنید، بعد از آن Console Application را انتخاب کنید:
سپس نام پروژه خودتان را در قسمت Name وارد کنید و روی OK کلیک کنید تا پروژه شما ساخته شود.
۲. زمانی که پروژه شما ساخته شد، ویژوال استودیو بدین شکل به نظر میرسد:
اگر به هر دلیلی پنجره Solution Explorer را در سمت راست مشاهده نکردید میتوانید از منوی View با انتخاب Solution Explorer آن را فعال کنید.
تا اینجا شما توانستید پروژه خودتان را که هم اکنون آماده برای کد نویسی است تهیه کنید. همانطور که مشاهده میکنید مقداری کد به صورت پیشفرض در پنجره Program.cs قرار دارد که در ادامه به شرح مختصر آنها میپردازیم.
using System;
این خط کد مشخص میکند که برنامه شما از فضای نام System استفاده میکند که یکی از فضاهای نام (namespaces) پایه ای در Net Framework. است. احتمالاً هنوز نمیدانید Net Framework. چیست، پس حتماً مقاله ی چهار چوب دات نت را در ویکیپدیا مطالعه بفرمایید.
Namespace روشی برای مدیریت کد و گروه بندی کلاس های مرتبط به هم است.
using System.Collections.Generic; using System.Linq; using System.Text;
توضیح این چند خط کد در مقالات بعدی و در جای خود دنبال خواهد شد.
class Program
این خط کد از کلمه کلیدی class برای اعلان یک کلاس جدید که از قبل در Net Framework. تعریف شده است استفاده میکند. Program نام این کلاس است. تعریف کلاس با آکولاد باز } شروع و با آکولاد بسته { تمام میشود که عناصر بین آکولاد، اعضای کلاس هستند. از آنجا که سی شارپ یک زبان برنامه نویسی تماماً شی گرا است و همه ی سر و کارش با کلاسها است باید در نحوه ی تعریف کلاس و استفاده از آنها تسلط کافی داشته باشیم که این کار را در مقالات آینده انجام خواهیم داد.
static void Main(string[] args)
متد ()Main در اینجا قسمتی است که عملیات اصلی برنامه در آن انجام میشود. بدون متد ()Main برنامه های سی شارپ قابل اجرا نخواهند بود، متد ()Main هم با آکولاد باز و بسته محدوده خودش را مشخص میکند. در مورد Method و Class بعداً مفصل توضیح خواهیم داد پس اصلاً نگران نباشید زیرا تا اینجا فقط یک توضیح مختصر در مورد کدهای پیشفرضی بود که در ابتدا میدیدید.
اکنون اندکی با برنامه Visual Studio IDE و نحوه ی پروژه ساختن آشنا شدید. همینطور کدهای پیش فرضی که در ابتدا میدیدید را تاحدی شناختید. اکنون قصد داریم با چند کد ساده شروع به برنامه نویسی کنیم، ممکن است در ابتدا چیزی ببینید که اصلاً از آن سر در نمیآورید اما اصلاً نترسید چون همه چیز را تا حدی که مفهوم مطلب بیان شود و اطمینان حاصل شود که شما خوانندگان عزیز آن موضوع را درک کردهاید، توضیح خواهیم داد. فقط از خواندن باز نایستید! همانطور که گفته شد عملیات اصلی برنامه در متد ()Main نوشته میشود و فعلاً با بقیهی قسمتها کاری نداریم چرا که در جای خود به آنها میرسیم و به شرح آنها میپردازیم.
اکنون که با ساختن پروژه آشنا شدید، یک پروژه جدید بسازید.
به کد زیر نگاه کنید:
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace Project1 { class Program { // A C# program begins with a call to Main(). static void Main(string[] args) { /* This is a simple C# program. Green lines are comments. */ Console.WriteLine("A Simple C# Program."); } } }
همانطور که مشاهده میکنید مقداری از کدها به صورت پیش فرض در صفحه ما بودهاند و فقط این چند خط جدید است:
// A C# program begins with a call to Main(). /* This is a simple C# program. Green lines are comments. */ Console.WriteLine("A Simple C# Program.");
خطوط سبز رنگی که در بالا مشاهده می کنید comment (توضیح) هستند. در سی شارپ ما همانند سایر زبان های برنامه نویسی اجازه داریم که از کامنت استفاده کنیم. همانطور که میبینید به دو طریق میتوانیم comment بگذاریم. یکی نوشتن جلوی دو اسلش // و دیگری نوشتن مابین ستاره و اسلش /* */ محتوای کامنت ها توسط کامپایلر نادیده گرفته میشوند، کامنت ها فقط برای این منظور توسط برنامه نویس نوشته میشوند که هرکس در حال خواندن کد و برنامه است آن قسمت از کد را بفهمد زیرا کامنت ها اکثراً توضیح و شرحی در مورد کد هستند و نوشتن آنها اختیاری است.
Console.WriteLine("A Simple C# Program.");
خط کدی که در بالا مشاهده میکنید، رشتهی “.A Simple C# Program” را در یک خط جدید در خروجی نمایش میدهد. فعلاً در همین حد بدانید که ()Console.WriteLine در این مثال یک String (رشته ای از کاراکترها) را در خروجی نمایش میدهد. بعداً متوجه خواهید شد که چطور این اتفاق میافتد. پس دانستید که String رشته ای از کاراکترها است که حتماً باید بین این علامت ” ” (بخوانید دابل کوتیشن، Double quotation) قرار بگیرد و ()Console.WriteLine برای چاپ کردن اطلاعات و پیغام در خروجی است و آنچه را که میخواهید در خروجی نمایش دهید باید بین () قرار دهید، درست طبق مثال. در انتهای آن نقطه و ویرگول بدین شکل ; قرار میگیرد که اصطلاحاً به آن Semicolon (بخوانید سمی کالن) گفته می شود. بدین صورت:
Console.WriteLine();
علامت semicolon در پایان هر دستور قرار میگیرد و هر دستور به صورت جداگانه در قسمت پایانی خودش از semicolon استفاده میکند. در طول دوره آموزش با این روند آشنا خواهید شد که در چه جاهایی باید از semicolon استفاده کنید.
توجه داشته باشید که سی شارپ به حروف بزرگ و کوچک حساس و اصطلاحاً case-sensitive است و این بدین معنی است که اگر فراموش کنید کجا باید از حروف بزرگ و کوچک استفاده کنید برنامه شما دچار خطا میشود. برای مثال اگر نام یک متغیر را phoneNum انتخاب کرده باشید و در جای دیگر برای استفاده از آن بنویسید PhoneNum یا Phonenum آنگاه برنامه شما دچار مشکل میشود. دستور ()Console.WriteLine هم به همین روال است همینطور بقیه دستورها، هرچند که کامپایلر سی شارپ فوق العاده قدرتمند است و در صورت بروز کوچکترین خطا شما را با خبر میکند، به جز خطاهای منطقی. در مورد خطاهای منطقی بعداً بیشتر صحبت خواهیم کرد. تا اینجا با یک سری از اصطلاحات و مفاهیم آشنا شدید، بعد از اینکه یک سری از مطالب را با هم مورد بررسی قرار دادیم سراغ یک مثال درست و حسابی میرویم.
static void Main(string[] args) { Console.WriteLine("A Simple C# Program."); }
پس طبق کد بالا دستور چاپ یک string را بنویسید و سپس Ctrl + F5 را باهم بگیرید تا خروجی برای شما نمایش داده شود: (به جای فشردن Ctrl + F5، از منوی Debug با انتخاب Start Without Debugging هم میتوانید اینکار را انجام دهید)
همانطور که میبینید A Simple C# Program در پنجره خروجی نمایش داده شد.
هدف از این سری مقالات آموزشی یادگیری سی شارپ به طور گام به گام و تقریباً کامل برای هر مبحث است. هرچند مجبوریم بعضی از مسائل را فعلاً به صورت کامل باز نکنیم تا در فهم موضوع دچار مشکل نشوید اما در آینده به آنها پی خواهید برد. اگر این سری مقالات را همیشه دنبال کنید کم کم هر قسمت از زبان سی شارپ را به طور مفهومی آموزش میبینید. اگر در مورد مطلب هر قسمت سوالی برایتان پیش آمد و مشکلی داشتید میتوانید در قسمت نظرات سوالات خود را مطرح کنید یا از شبکههای اجتماعی که در پروفایل من در همین سایت موجود است با من تماس بگیرید.
در قسمت بعدی با value type، متغیرها و عملگرها آشنا میشویم.
به یاد داشته باشید آنکه میخواهد روزی پریدن آموزد، نخست میباید ایستادن، راه رفتن، دویدن و بالا رفتن آموزد. پرواز را با پرواز آغاز نمیکنند!
سمیه
10 September 2012
خیلی خوب توضیح دادین. عالی بود.
داوود
10 September 2012
با سلام؛ من که از خوندن آموزشهاتون دارم لذت می برم، فقط خدا کنه ادامه بدید و در وسط راه ما رو تنها نذارید.
امکانش هست اگه سوالی داشتیم همین جا مطرح کنیم؟
پس اولین سوال!
شما در خط پنجم برنامه اینگونه نوشته اید:
namespace Project1
آیا اگه ما کلاسی تو این برنامه تولید کنیم که قابلیت عمومی بودن رو بهش بدیم، بعدش اشخاص دیگه میتونن با دادن namespace در ابتدای برنامه هاشون از کلاسهای ما استفاده کنن؟
مسعود درویشیان
11 September 2012
سلام
ممنون که دنبال میکنید.
مطمئن باشید مقالات تا انتها با موفقیت پیش میره.
حتماً سوالات خودتون رو مطرح کنید چون باعث میشه هم شما و هم بقیه دوستان بهتر مطلب رو درک کنند.
البته سوالی که شما پرسیدید از بحث الان ما خیلی جلوتر هست و مربوط به کلاسها و آبجکتهاست که طی مقالات آینده به طور کامل بررسی میشه
بله کلاسی که شما میسازید میتونید با اضافه کردن using و اسم namespace کلاس از اون استفاده کنید.
تو مقالات بعدی مفصل در این مورد بحث میکنیم.
مریم
11 October 2012
سلام
توضیحات واقعا” روان و ساده بود.
منکه از دیدنشون خیلی خوشحال شدم و همه رو دانلود کردم. دستتون درد نکنه. عالی بود
محمد
11 October 2012
بسیار خوب و روان توضیح می دید مرسی
رضا
14 October 2012
سلام هم دانشگاهی دست تو پنچت طلا عالیه………………
Praise
21 October 2012
سلام
من وقتی میخوام برنامه رو اجرا کنم تو قسمت خطاها این خطا رو میده :
Error 1 A problem occurred while trying to set the “References” parameter for the IDE’s in-process compiler. Error HRESULT E_FAIL has been returned from a call to a COM component. C shrp
در ضمن اون دستوراتی که باید قاعدتا رنگی باشن (مث using و …) برای من رنگی نیستن!
ایا به جز Microsoft visual studio لازم به نصب چیز دیگری هست؟!
من Microsoft visual studio 2010 ultimate رو از قبل نصب داشتم !
با تشکر از ایثارگری ها و فداکاری های شما ! (یاد دادن یدون هیچ چشمداشتی خودش یه نوع فداکاریه دیگه !)
مسعود درویشیان
21 October 2012
سلام
مرسی از لطفتون
تا حالا با این مشکلی که میفرمایید برخورد نکردم ولی میتونید این لینک رو ببینید که مشکلی مشابه شما رو داشتن و مشکلشون حل شده.
اگه بعد از دیدن این لینک بازهم مشکلتون حل نشد یهبار دیگه ویژوال استودیو رو نصب کنید شاید مشکل برطرف بشه
Praise
24 October 2012
اقا خیلی ممنون که اینقد سریع پاسخ دادین !
یه بار دیگه از اول نصبش کردم (Repair) جواب داد ممنون !
None
27 November 2012
سلام. من ویژوال استودیو رو نصب کردم ولی گزینه Console Application وجود نداره (با توجه به تصیر اولی که در بالاست)
و تنها چیزی که من میبینم تصویری است که در لینک زیر قرار دادم.
http://uplod.ir/bgjqy48iksy7/Capture.JPG.htm
None
27 November 2012
http://trainbit.com/files/2126199884/Capture.jpg
مسعود درویشیان
1 December 2012
دوست عزیز، شما توی قالبهای نصب شدتون windows رو ندارید. فکر کنم اگه مجدداً ویژوال استودیو رو بهصورت full نصب کنید مشکلتون حل بشه
حبیب
20 December 2012
بسیار عالی توضیح دادین – خط به خط و این یعنی به کاری که انجام می دین ایمان دارین . ایول و امیدوارم همیشه تو کارتون موفق باشید
بیگ
23 December 2012
سلام خیلی ممنون از تلاشتان
من تازه شروع به مطلاعه اموزش هایتان کردم تا قسمت 17 که ارائه دادید امکانش هست که از نسخه ی2008 استفاده کنم؟به مشکلی بر نمی خورم؟چون فعلا امکان نصب 2010 را ندارم؟
مسعود درویشیان
23 December 2012
سلام، نه مشکلی نداره فعلاً از 2008 استفاده کنید ولی در صورت امکان بعداً 2010 یا 2012 رو نصب کنید.
na30m
28 January 2013
خسته نباشید خیلی عالیه.
Navi8D
28 January 2013
فقط میخواستم بگم دستتون درد نکنه…
خیلی با انرژی و جدی داری توظیح میدی!
من تک تک آموزشاتو دارم می خونم…
کوثر
14 April 2013
سلام
خسته نباشید
من تازه سایت شمارا پیدا کردم
خیلی خوبه
ممنون
victor
10 May 2013
سلام
بيزحمت لينک مستقيم بدين برا دانلود
تو اون صفحه 20تا نرم افزار هست
؟؟؟
مسعود درویشیان
10 May 2013
سلام، لینکی که هست، لینک مستقیمه
شما کجا کلیک میکنید؟
victor
10 May 2013
http://www.microsoft.com/visualstudio/en-us/products/2010-editions/express
الان شما يه سر برين اينجا شونصدتا لينک هست دقيقا کدومشون بايد دان بشه
مسعود درویشیان
10 May 2013
شما باید Visual Studio Express 2012 for Windows Desktop رو دانلود کنید اما پیشنهاد میکنم که دیویدی این نرمافزار رو تهیه بفرمایید.
محمد
20 May 2013
من این خط رو می نویسم و دقیقا مثل شما کارو انجام میدم ولی به محض اینکه کنسولم باز میشه بسته میشه
مسعود درویشیان
20 May 2013
Ctrl و F5 رو باید با هم بگیرید :)
ابراهیم
6 January 2014
اخر اید کد زیر بنویسی تا زمانی که از صفحه کلیدی نزدید صفحه باقی می مانه
Console.ReadKey();
رها
4 July 2013
سلام
بابت زحماتی که برای گرداوری و نشر اینگونه آموزشها میکشید از شما صمیمانه تقدیر وتشکر ومیکنم
میخواستم بپرسم من بتازگی با سایت شما اشنا شدم و میخوام این سری برنامه اموزشی c# رو از اینجا تمرین کنم اما وقتی ویژوال استادیو رو در منوی فایل برای باز کردن یه نیو پراژکت زدم گزینه ای بنام windows در قسمت نصب شده ها نداره و فقط ویندوز استور داره که اونهم در برابرش گزینه ای بنام consol نداره ایا فایلهای نصبی جداگانه ای هم داره که باید نصب بشن یا مشکل از نرم افزاره ؟
با تشکر وارزوی توفیق
مسعود درویشیان
4 July 2013
دوباره نصبش کنید و دقت کنید که موقع نصب تیک همهی گزینههای مربوط خورده باشه
رها
4 July 2013
راستی نرم افزار Visual Studio 2012 Expresion هست و روی ویندوز 8.1 هم نصب شده ایا امکان این هست که بخاطر ویندوز باشه چون نسخه پیش نمایش هست یا از نرم افزار میشه ؟
مسعود درویشیان
4 July 2013
نه فکر نمیکنم بهخاطر ویندوز باشه
رها
4 July 2013
ببخشید آقای درویشیان مزاحم شدم اول بخوبی سرچ نکردم اما بعد از سرچ در قسمت visual c# و در این زیر مجموعه گزینه مورد نظر رو پیدا کردم واولین اموزش رو بخوبی از شما استاد عزیز فرا گرفتم امیدوارم تا اخرش بتونم در کنار شما باشم
موفق وپاینده باشید
مسعود درویشیان
4 July 2013
مرسی، من هم امیدوارم این آموزشها براتون مفید واقع بشه :)
رها
4 July 2013
یقینا همینطوره
اموزشی تا این حد شکافته و بصورت کلی حتما مفید و مثمر ثمر هست و این رو حتی از نظرات کار بران و راهنمایی های شما استاد بزرگوار هم میشه فهمید
باز هم برای شما ارزوی بهترین ها رو دارم
موفق وپاینده باشید
شهرام
5 July 2013
با سلام
واقعا عالیه
دستتون درد نکنه
مرسی
ممنون
متشکر
محمد
2 August 2013
با درود
من Visual Studio Express 2012 for Windows Desktop دانلود کردم که یه فایل با پسوند iso هست این رو باید روی دیسکت رایتش کنم؟
آخه برنامه winrar بازش می کنه و محتویاتش رو نشون می ده
ممنون می شم کامل راهنماییم کنید.
سپاس
مسعود درویشیان
3 August 2013
این لینک رو ببینید.
مهرناز
11 August 2013
سلام وقتتون بخیر من یه وب سایت طراحی کردم حالا چطوری میتونم اونو تبدیل به یک سایت دینامیک کنم ؟منظور از سایت دینامیک همون برنامه های jquery?ممنون میشم اگه جواب رو به ایمیلم بفرستید
بازم ممنون از مطالب عااالیتون
مسعود درویشیان
11 August 2013
سلام. وقتی یه سایت رو با HTML و CSS طراحی کردید (استاتیک) و بعد خواستید اون رو داینامیک کنید باید توسط PHP یا ASP.NET یا هر زبان برنامهنویسی (یا تکنولوژی دیگه) ای که سمت سرور کار میکنه سایت رو داینامیک کنید. منظور از داینامیک کردن سایت این هست که یه سیستمای پیاده بشه تا برای بهروز کردن محتوای وبسایت نیازی به دانش خاصی نباشه (مثل بلاگفا و میهنبلاگ) و دیگه کاری به کد نداشته باشید. jQuary هم همون javaScript هست و هم سمت سرور و هم کلاینت میتونه ازش استفاده بشه.
محمد
21 August 2014
می خواستم بگم دستتون درد نکنه. همه رو دنبال می کنم
محمد
21 August 2014
یه سوال اینای مالِ من فرق داره می شه توضیح بدین 2013 :
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
}
}
}
محمد
21 August 2014
الان که فکر می کنم خیلیم فرق نداره لطفا این دوتا کامنت آخریو پاک کنید
mojtaba
6 September 2014
salam
. vaqean mrc o khaste nabashid
kheili aaliee
mohammad
10 September 2014
با سلام و تشکر،
من وقتی می خوام پی دی اف رو دانلود کنم متن پی دی اف خراب هست یعنی که حروف به شکل مربع دیده میشه. اگه لطف گنین و این مشکل رو حل کنید.
تشکر
arash
22 October 2014
سلام خسته نباشید خیلی عالیه اگه بچه معلم نبودیم حتما به سایتتون کمک میکردم.تشکر
mahdi
1 November 2014
سلام متشکرم من می خواستم بدونم چگونه در ویندوز فرمی که می سازیم کد وردی بگزاریم که قابل عوض کردن ان دست کاربر باشد
مهدی
20 February 2015
سلام و خسته نباشید.برای اینکه این آموزش ها رو دنبال کنم حتما باید نرم افزار ویژیال استادیو رو داشته باشم؟؟
مهدیه
19 September 2015
سلام و خسته نباشید
ببخشید در چاپ با استفاده از Console.WriteLine نمیشه کاراکتر فارسی چاپ کرد؟
من امتحان کردم ولی علامت سوال نمایش داد.
بعد یه سوال دیگه کاربرد محیط Console فقط برای آموزشه؟
منظورم اینه که خروجیه برنامه هاش رو چطور میشه استفاده کرد؟!
نسبت بهش دیدی ندارم، ممنون میشم توضیح بدید.
الینا
9 November 2015
سلام ممنون از مطالبتون اما یه سوال دارم که خیلی مهمه و اون هم اینکه که عایا به جز ویزال استدیو کامپایلر دیگری برای زبان سی شارپ هست یا نه ؟؟؟
ممنون میشم اگه جوابو به ایمیلم ارسال کنید
معصومه
24 May 2016
مطالب بسیار مفید و آموزنده بود.
mehdi
25 August 2016
سلام تروخداااااا
بگین چطوری باید برنامشو دانلود کنم
نمیتونم یا یه اموزش بزارید یا لینک دانلود مستقیمشو بزارین???
mehdi
30 August 2016
سلام لطفا بگین چطوری ویژوال استدیو رو دانلود کنم؟
عاقا سایتش اینگلیسیه هیچی نفهمیدم
اگه میشه لینک دانلود مستقیمو برام بفرستید
محمد
31 December 2017
سلام خوبید اموزشاتون خیلی عالی و گام به گام هست یه چیزی رو من این جلسه نفهمیدم اونجا که زدید
Static void mian(string [ ])… چرا نوشتید من متوجه نشدم شرمنده ❤️
siamak
21 April 2018
سلام خدمت استاد بزرگوار
سپاس از شما برای اینکه علم خودتون رو در دسترس دیگران قرار میدید.
سوال داشتم درباره یک جمله ای ک شما در این قسمت از این مجموعه نوشتین .
شما درباره جمله :()void Main نوشتین ک نوع متد Main در اینجا
void است ک یعنی متد Main خروجی ندارد.
حالا میرسیم به سوال بنده : خروجی ندارد یعنی چی دقیقا ؟
از آنجایی ک بنده تازه وارد دنیای برنامه نویسی سی شارپ شدم حتی حدودا هم نمیدونم “خروجی ندارد” یعنی چی .!
اگر لطف کنید یه مقدار درباره این موضوع( ک متد Main خروجی ندارد ) منو راهنمایی بفرمایین ممنونتون میشم.
سپاس از استاد درویشیان
و سایت خوب وب تارگت