زنگ سیشارپ – قسمت دوم
نوشته مسعود درویشیان • 26 ارديبهشت 1391
در قسمت قبل اندکی با تاریخچه سیشارپ و توضیحات مختصری در مورد آن و در مورد این سری از مقالات آموزشی آشنا شدیم. در این قسمت قصد داریم بیشتر با کدنویسی و محیط برنامه 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، متغیرها و عملگرها آشنا میشویم.
مقالات زنگ سیشارپ روزهای شنبه و سهشنبه از وبلاگینا منتشر میشود.
بهیاد داشته باشید آنکه میخواهد روزی پریدن آموزد، نخست میباید ایستادن، راه رفتن، دویدن و بالا رفتن آموزد. پرواز را با پرواز آغاز نمیکنند!
توجه: زین پس انتشار مقالات زنگ سیشارپ در وبلاگینا متوقف و از ابتدا در وبتارگت منتشر میشود و حدوداً تا صد قسمت همراه با دانلود مقالات در قالب فایل پیدیاف پیش خواهد رفت.
Mehdyjan
زنده باد
علی
بسیار ممنون از آقای درویشیان.
به طور مستمر این آموزش را دنبال میکنم و دوست دارم یک سیشارپنویس باشم 🙂
سهیل
ممنون از شما. اگر بشه جلسات با فاصلهی کمتری برگزار بشن خیلی بهتر میشه. بازم ممنون
مهدیه
سلام خیلی ممنون من تصمیم گرفته بودم که شروع به یادگیری کنم اما تنهایی نمیتونستم اولا به قول دوستمون بیاین یه روز در میون کنین در ثانی این قطعه کد وقتی ران میشه صفحه ی ران رو نشون نمیده یعنی میپره من آخرش یک دستور return; گذاشتم ولی بازم نشون نمیداد چی کار کنم؟
Milad
برای این که صفحه زود نره
باید کد زیر رو آخر کد هاتون اضافه کنین :
Console.ReadLine();
این کد باعث میشه برنامه تا زمانی که شما اینتر رو نزدین توقف کنه.(در حقیقت این کد برای دریافت مقادیر از کاربر هست)
موفق باشید
مهدیه
سلام مرسی درست شد ولی دستور return ;که تو c++واسه این بود که کنترل برنامه به main برگرده رو این جا نداریم؟
Milad
سلام
در اصل کار دستور return در c++ این بوود که یک مقداری رو به تابع ما برگردونه
یعنی اگه ما تابع خودمون رو از یک نوعی بجز void تعریف میکردیم باید با استفاده از این دستور یک مقدار بهش بر میگردوندیم.
که اگر از نسخه جدید ویژوال استدیو استفاده کنین در خوده C++ هم دیگه لازم به این کار نیست و برنامه خطا نمیگیره.
وقتی ما از این دستور استفاده میکردیم یک مقدار بر میگردوند و کنترل برنامه میرفت داخل Main
اما اینجا کلا Main ما از نوع Void هست پس دلیلی برای استفاده از return نیست D: .
تاجایی که من در خاطرم هست در C# نیازی به این کار نیست خود برنامه خودکار بر میگرده به Main
اگر اشتباهی در توضیحاتم بوود معذرت میخوام از اساتید محترم خواهش دارم اگه اشتباهی بوده بگن D: .
مسعود درویشیان
سلام
باید Ctrl و F5 رو با هم بگیرید، احتمالاً شما فقط F5 رو میزنید.
در واقع وقتی F5 تنها رو میزنید، برنامه شما به Debugger وصل میشه و ویژوال استودیو شروع به Debug (روند اشکالزدایی) کردن برنامه شما میکنه و شما فقط یه لحظه خروجی رو میبینید ولی اگه Ctrl + F5 رو بزنید برنامه شما اجرا میشه اما دیگه به Debugger وصل نمیشه و اون روند اشکالزدایی رو انجام نمیده و فقط برنامهتون رو اجرا میکنه و تو پنجرهی کنسول به شما نمایش میده.
مهدیه
من fn ,f5 رو با هم میزدم آخه با ctrl+f5 برام کار نمیکرد.
مسعود درویشیان
به جای فشردن Ctrl + F5، از منوی Debug با انتخاب Start Without Debugging هم میتونید اینکار رو انجام بدید.
منظورتون از fn رو نفهمیدم!
Ctrl و F5 رو باید باهم بگیرید.
rahman
منظور ار fn دکمه ای هست که لپ تاپ ها دارن واسه کار کردنه fها !
Milad
بسیار بسیار عالی
ممنونم برای کار قشنگتون
ناصر عباسی
ممنون از آموزش جالبتون
روژیار
خسته نباشی استاد…
کاش یکی هم بود php رو اینجوری آموزش می داد…
چون پی اچ پی خیلی عالیه…
خودم وقت ندارم وگرنه آموزشش رو میزاشتم.
امین
خیلی ممنون! امیدوارم این جلسه ها همیشه ادامه پیدا کنه!
منتظر جلسه بعدی هستیم!
محسن
آقا دمتون گرم.
توضیحات خیلی واضح و با ذکر جزئیات و کاملاً از پایه س.
اگر یه همچین آموزشی برای زبان پایتون هم بذارید، بیشتر دعاتون میکنیم!
کالارنا
ممنون مسعود بابت مطلبی که نوشتی
خوشحال میشیم که بیشتر از اینها ما رو با این اموزشهای مفید مهمون کنی
هوشیار
با سپاس فراوان خدمت آقای درویشیان عزیز
بنظرم آموزش خیلی خوب شروع شده و امیدوارم به همین شکل ادامه پیدا کنه
من که مشتاقانه دنبال میکنم …
مهدیه
سلام من یه پروژه با c# نوشتم درباره ی ساختار فایل شاخص دار مربوط به درس ذخیره و بازیابی اطلاعات منتها بعضی از error هاشو متوجه نمیشم میتونید کمکم کنید؟
Miladsob
متن Error رو در اینترنت سرچ کنید!
مهران
سلام
بسیار ممنون از این آموزش.من یکی که خیلی خوشم اومد
ببخشید من یه درخواستی داشتم. میشه که آموزش زبان PHP رو هم بزارید چون من به نظر خودم آموزش PHP رو از اگه مثل این آموزش خوانا باشه هر کسی میتونه یاد بگیره مگراینکه IQ ش پایین باشه. خلاصه بسیار ممنون و امیدوارم آموزش PHP رو هم برامون بزارید
باتشکر
وحید افشاری
با سپاس از مطلب خوبتون
نسیم
عالی بود
علی
امروز یکشنبه بود. لااقل یه اطلاعیه تو بُرد میزدین که کلاس تشکیل نمیشه 🙂
مسعود درویشیان
علی جان ببخشید، من در این مورد بیتقصیرم!
ali.pb
ای بابا !
من برنامه ریزی کرده بودم ها !
اگر کنسله بگین ما حیرون نباشیم 😉
احسان
ظاهراً اینجا هم داره به سرنوشت آموزش ASP.NET دچار میشه.
عادل
با سلام و عرض خسته نباشید
اگه امکانش هست فایل PDF ای از این آموزش ها در آخر همان آموزش قرار دهید تا بتوانیم در زمان های دیگر نیز به آن دسترسی داشته باشیم و از ان استفاده کنیم.
پیشاپیش متشکرم.
mamal72
خیلی خوب بود …
خواهشا مستمر باشه … من دارم دنبال میکنم 😉
تشکر ♥
zahra
سلام بنظرتون بهتر نیست از ابجکت ها شروع کنیم و مستقیما قسمت تولبار رو بیارین وسط؟
مسعود درویشیان
سلام
این آموزش مبانی برنامهنویسی هست و نمیشه مستقیماً سراغ فرمها رفت اما شیگرایی کامل بحث میشه
میکروسیلیس
ممنون آقای مسعود درویشیان فکر نمیکردم اینقدر ساده باشه
manz
سلام
می تونی باسی شارپ یه پروژه ساده گرفتن فاکتوریل بسازی .
اگه ساختی به ایمیلم بفرست.
با تشکر
نفیسه
ای کاش در آخر پی دی افش کنید قرار بدید در سایت..
بتن
واقعا ممنونم بابت اطلاعاتی که در سایت گذاشتین . برام خیلی مفید بود
گروت
واقعا ممنونم بابت اطلاعاتی که در سایت گذاشتین . برام خیلی مفید بود
گروت
ممنون از آموزش مفیدتون . خیلی جالب بود
دستگاه حضور و غیاب
using System.Collections.Generic;
از این کتابخانه برای چ مواردی استفاده میشه؟
فاطمه
با سلام ممنون از اموزش خوبی که در اختیار ما قرار میدین خدا خیرتون بده
katy
سلام میتونی با برنامه dreamweaverو استفاده از کدهای جاوا بگید string,match کجاها کاربرد دارند وبرای هر کدوم مثال بزنیدلطفا جوابشو به ایمیلم بفرستید.
پکیج دیواری
ممنون از زحماتی که می کشید
مانا
سلام با تشکر از شما چطور میشه درسها رو به ترتیب مطالعه کرد. هر چی تو صفحه گشتم جایی واسه رفتن به درس بعدی پیدا نکردم
الهام
سلام
برای رشته مهندسی صنایع باید سی شارپ ویندوز را یاد گرفت یا سی شارپ کنسول؟
ضرغام
سلام، یک سوال دارم
در پنجره طراحی Visual Studio 2010 زمانی که یک کنترل مثلا Listbox یا TextBox را به فرم اضافه می کنیم مشکلی به وجود می آید که نتوانسته ام آن را بر طرف کنم. اگر listbox را به فرم اضافه کنید گوشه سمت راست بالای آن یک فلش کوچک می بیتید که به کمک آن می توان بعضی خصوصیات کنترل را تغییر داد . حال مشکل این است که این فلش به صورت چشمک زن در می آید و دیگر نمی توان با این کنترل کار کرد . لطفا کمک کنید (Windows 7 sp1, Visual Studio 2010 sp1 )
sara.07
پس بقیه ی داستان کووووووووو؟ همین یه برنامه رو نوشتین و ولش کردید ؟ اگه بخواید من میتونم اینجوری با جزییات ادامه بدم .خواستید ایمیل بدید
علی حسینی
بسیار عالی
سبک آموزشتون فوق العادس
رضا قاسمی
سلام لطفا منو کمک کنید
من برای اجرا بر به مشکل میخورم با همه چی هم امتحان کردم
متن خطا اینه
Couldnot load file or assembly console Application.or on of its dependencies.