برای ارتباط با مدیر سایت از ID تلگرام ebrahimi_younes@ استفاده نمایید. به سوالات و مشکلات برنامه نویسی پاسخ داده نمی شود.
کتاب های سی شارپ و جاوا به زبان ساده

ساخت یک برنامه ساده

اجازه بدهید یک برنامه بسیار ساده به زبان سی شارپ بنویسیم. این برنامه یک پیغام را در محیط کنسول نمایش می دهد. در این درس می خواهم ساختار و دستور زبان یک برنامه ساده سی شارپ را توضیح دهم. برنامه Visual Studio Community را اجرا کنید. از مسیر File > New Project یک پروژه جدید ایجاد کنید. حال با یک صفحه مواجه می شوید که از شما می خواهد نام پروژه تان را انتخاب و آن را ایجاد کنید(شکل زیر):
simple-program-01
گزینه Console Application را انتخاب کرده و نام پروژه تان را MyFirstProgram بگذارید. یک Console Application برنامه ای تحت داس در محیط ویندوز است و فاقد محیط گرافیکی می باشد. بهتر است برنامه خود را در محیط کنسول بنویسید تا بیشتر با مفهوم برنامه نویسی آشنا شوید.بعد از اینکه آموزش مبانی زبان به پایان رسید، برنامه نویسی در محیط ویندوز و بخش بصری سی شارپ را آموزش خواهیم داد. بعد از فشردن دکمه OK، برنامه Visual C# یک solution در یک فولدر موقتی ایجاد می کند. یک solution مجموعه ای از پروژه هاست، اما در بیشتر تمرینات شامل یک پروژه می باشد. فایل solution دارای پسوند .sln می باشد و شامل جزییاتی در مورد پروژه ها و فایلهای وابسته به آن می باشد. پروژه جدید همچنین حاوی یک فایل با پسوند .csproj می باشد که آن نیز شامل جزییاتی در مورد پروژه ها و فایلهای وابسته به آن می باشد. حال می خواهیم شما را با محیط کد نویسی آشنا کنیم.
simple-program-02
محیط کدنویسی جایی است که ما کدها را در آن تایپ می کنیم. کدها در محیط کدنویسی به صورت رنگی تایپ می شوند، در نتیجه تشخیص بخشهای مختلف کد را راحت می کند. منوی سمت چپ (شماره 1) شامل نام پروژه ای که ایجاد کرده اید، منوی وسط (شماره 2) شامل لیست کلاسها، ساختارها، انواع شمارشی و منوی سمت راست (شماره 3) شامل اعضای کلاسها، ساختارها، انواع شمارشی و… می باشد. نگران اصطلاحاتی که به کار بردیم نباشید آنها را در فصول بعد توضیح خواهم داد. همه فایلهای دارای کد در سی شارپ دارای پسوند .cs هستند. در محل کد نویسی کدهایی از قبل نوشته شده که برای شروع شما آنها را پاک کنید و کدهای زیر را در محل کدنویسی بنویسید :

   1: namespace MyFirstProgram 
   2: {
   3:     class Program 
   4:     {
   5:         static void Main() 
   6:         { 
   7:              System.Console.WriteLine("Welcome to Visual C# Tutorials!");
   8:         }
   9:     } 
  10: }

 

ساختار یک برنامه در سی شارپ

مثال بالا ساده ترین برنامه ای است که شما می توانید در سی شارپ بنویسید. هدف در مثال بالا نمایش یک پیغام در صفحه نمایش است. هر زبان برنامه نویسی دارای قواعدی برای کدنویسی است. اجازه بدهید هر خط کد را در مثال بالا توضیح بدهیم. در خط اول فضای نام (namespace) تعریف شده است که شامل کدهای نوشته شده توسط شما است و از تداخل نامها جلوگیری می کند. درباره فضای نام در درسهای آینده توضیح خواهیم داد.
در خط دوم آکولاد ( } ) نوشته شده است.آکولاد برای تعریف یک بلوک کد به کار می رود.سی شارپ یک زبان ساخت یافته است که شامل کدهای زیاد و ساختارهای فراوانی می باشد.هر آکولاد باز( } ) در سی شارپ باید دارای یک آکولاد بسته ( { ) نیز باشد. همه کدهای نوشته شده از خط 2 تا خط 10 یک بلوک کد یا بدنه فضای نام است.
در خط 3 یک کلاس تعریف شده است. درباره کلاسها در فصلهای آینده توضیح خواهیم داد. در مثال بالا کدهای شما باید در داخل یک کلاس نوشته شود. بدنه کلاس شامل کد های نوشته شده از خط 4 تا 9 می باشد. خط 5 متد Main یا متد اصلی نامیده می شود. هر متد شامل یک سری کد است که وقتی اجرا می شوند که متد را صدا بزنیم. درباره متد و نحوه صدا زدن آن در فصول بعدی توضیح خواهیم داد. متد Main نقطه آغاز اجرای برنامه است. این بدان معناست که ابتدا تمام کدهای داخل متد Main و سپس بقیه کدها اجرا می شود. درباره متد Main در فصول بعدی توضیح خواهیم داد.متد Main و سایر متدها دارای آکولاد و کدهایی در داخل آنها می باشند و وقتی کدها اجرا می شوند که متدها را صدا بزنیم. هر خط کد در سی شارپ به یک سمیکالن ( ; ) ختم می شود. اگر سمیکالن در آخر خط فراموش شود برنامه با خطا مواجه می شود. مثالی از یک خط کد در سی شارپ به صورت زیر است :

System.Console.WriteLine("Welcome to Visual C# Tutorials!");

این خط کد پیغام Welcome to Visual C# Tutorials! را در صفحه نمایش نشان می دهد.از متد WriteLine() برای چاپ یک رشته استفاده می شود. یک رشته گروهی از کاراکترها است، که به وسیله دابل کوتیشن () محصور شده است. مانند :“Welcome to Visual C# Tutorials!”.
یک کاراکتر می تواند یک حرف، عدد، علامت یا … باشد. در کل مثال بالا نحوه استفاده از متد WriteLine() است که در داخل کلاس Console که آن نیز به نوبه خود در داخل فضای نام MyFirstProgram قرار دارد را نشان می دهد. توضیحات بیشتر در درسهای آینده آمده است. سی شارپ فضای خالی و خطوط جدید را نادیده می گیرد. بنابراین شما می توانید همه برنامه را در یک خط بنویسید. اما اینکار خواندن و اشکال زدایی برنامه را مشکل می کند. یکی از خطاهای معمول در برنامه نویسی فراموش کردن سمیکالن در پایان هر خط کد است. به مثال زیر توجه کنید :

System.Console.WriteLine(
    "Welcome to Visual C# Tutorials!");

سی شارپ فضای خالی بالا را نادیده می گیرد و از کد بالا اشکال نمی گیرد. اما از کد زیر ایراد می گیرد.

System.Console.WriteLine( ;
    "Welcome to Visual C# Tutorials!");

به سمیکالن آخر خط اول توجه کنید. برنامه با خطای نحوی مواجه می شود چون دو خط کد مربوط به یک برنامه هستند و شما فقط باید یک سمیکالن در آخر آن قرار دهید. همیشه به یاد داشته باشید که سی شارپ به بزرگی و کوچکی حروف حساس است. یعنی به طور مثال MAN و man در سی شارپ با هم فرق دارند. رشته ها و توضیحات از این قاعده مستثنی هستند که در درسهای آینده توضیح خواهیم داد. مثلا کدهای زیر با خطا مواجه می شوند و اجرا نمی شوند :

system.console.writeline("Welcome to Visual C# Tutorials!");
SYSTEM.CONSOLE.WRITELINE("Welcome to Visual C# Tutorials!");
sYsTem.cONsoLe.wRItelIne("Welcome to Visual C# Tutorials!");

تغییر در بزرگی و کوچکی حروف از اجرای کدها جلوگیری می کند. اما کد زیر کاملا بدون خطا است :

System.Console.WriteLine("WELCOME TO VISUAL C# TUTORIALS!");

همیشه کدهای خود را در داخل آکولاد بنویسید.

{
   statement1;
}

این کار باعث می شود که کدنویسی شما بهتر به چشم بیاید و تشخیص خطاها راحت تر باشد. یکی از ویژگیهای مهم سی شارپ نشان دادن کدها به صورت تو رفتگی است بدین معنی که کدها را به صورت تو رفتگی از هم تفکیک می کند و این در خوانایی برنامه بسیار موثر است.
 

ذخیره پروژه و برنامه

برای ذخیره پروژه و برنامه می توانید به مسیر File > Save All بروید یا از کلیدهای میانبر Ctrl+Shift+S استفاده کنید. همچنین می توانید از قسمت Toolbar بر روی شکل simple-program-05 کلیک کنید. برای ذخیره یک فایل ساده می توانید به مسیر File > Save (FileName) بروید یا از کلیدهای میانبر Ctrl+S استفاده کنید. همچنین می توانید از قسمت Toolbar بر روی شکل simple-program-05 کلیک کنید. برای باز کردن یک پروژه یا برنامه از منوی File گزینه Open را انتخاب می کنید یا بر روی آیکون simple-program-05 در toolbar کلیک کنید.سپس به محلی که پروژه در آنجا ذخیره شده میروید و فایلی با پسوند sln یا پروژه با پسوند .csproj را باز می کنید.

 

کامپایل برنامه

همانطور که قبلا ذکر شد، کدهای سی شارپ قبل از اجرا، ابتدا به زبان میانی ترجمه می شوند. برای کامپایل برنامه از منوی Debug گزینه Build Solution را انتخاب می کنید یا دکمه F6 را بر روی صفحه کلید فشار می دهیم. این کار همه پروژه های داخل solution را کامپایل میکند. برای کامپایل یک قسمت از solution به Solution Explorer می رویم و بر روی آن قسمت راست کلیک کرده و از منوی باز شوند گزینه build را انتخاب می کنید. مانند شکل زیر :
simple-program-build

 

اجرای برنامه

وقتی ما برنامه مان را اجرا می کنیم سی شارپ به صورت اتوماتیک کدهای ما را به زبان میانی مایکروسافت کامپایل می کند. دو راه برای اجرای برنامه وجود دارد :

  1. اجرا همراه با اشکال زدایی (Debug)
  2. اجرا بدون اشکال زدایی (Non-Debug)

اجرای بدون اشکال زدایی برنامه، خطاهای برنامه را نادیده می گیرد. با اجرای برنامه در حالت Non-Debug سریعا برنامه اجرا می شود و شما با زدن یک دکمه از برنامه خارج می شوید. در حالت پیش فرض حالت Non-Debug مخفی است و برای استفاده از آن می توان از منوی Debug گزینه Start Without Debuging را انتخاب کرد یا از دکمه های ترکیبی Crl + F5 استفاده نمود:

Welcome to Visual C# Tutorials!
Press any key to continue . . .

به این نکته توجه کنید که پیغام Press any key to continue… جز خروجی به حساب نمی آید و فقط نشان دهنده آن است که برنامه در حالت Non-Debug اجرا شده است و شما می توانید با زدن یک کلید از برنامه خارج شوید. دسترسی به حالت Debug Mode آسان تر است و به صورت پیشفرض برنامه ها در این حالت اجرا می شوند. از این حالت برای رفع خطاها و اشکال زدایی برنامه ها استفاده می شود که در درسهای آینده توضیح خواهیم داد. شما همچنین می توانید از break points و قسمت Help برنامه در مواقعی که با خطا مواجه می شوید استفاده کنید. برای اجرای برنامه با حالت Debug Mode می توانید از منوی Debug گزینه Start Debugging را انتخاب کرده و یا دکمه F5 را فشار دهید. همچنین می توانید بر روی شکل simple-program-05 در toolbar کلیلک کنید.اگر از حالت Debug Mode استفاده کنید برنامه نمایش داده شده و فورا ناپدید می شود.برای جلوگیری از این اتفاق شما می توانید از کلاس و متد System.Console.ReadKey() برای توقف برنامه و گرفتن ورودی از کاربر جهت خروج از برنامه استفاده کنید. (درباره متدها در درسهای آینده توضیح خواهیم داد.)

namespace MyFirstProgram
{
    class Program
    {
        static void Main()
        {
             System.Console.WriteLine("Welcome to Visual C# Tutorials!");
             System.Console.ReadKey();
        }
    }
}

حال برنامه را در حالت Debug Mode اجرا می کنیم. مشاهده می کنید که برنامه متوقف شده و از شما در خواست ورودی می کند، به سادگی و با زدن دکمه Enter از برنامه خارج شوید. من از حالت Non-Debug به این علت استفاده کردم تا نیازی به نوشتن کد اضافی Console.ReadKey() نباشد.از این به بعد هر جا ذکر شد که برنامه را اجرا کنید برنامه را در حالت Non-Debug اجرا کنید.وقتی به مبحث استثناء ها رسیدیم از حالت Debug استفاده می کنیم.

 

وارد کردن فضای نام در برنامه

فضای نام (Namespace) در برگیرنده کدهایی است که شما در برنامه تان از آنها استفاده می کنید. در برنامه فوق ما یک فضای نام در برنامه مان با نام MyFirstProgram داریم، اما دات نت دارای هزاران فضای نام می باشد. یکی از این فضاهای نامی ، فضای نام System است که شامل کدهایی است که در یک برنامه ابتدایی #C به کار می روند. کلاس Console که ما از آن در برنامه بالا استفاده کردیم در این فضای نام قرار دارد.

System.Console.WriteLine("Welcome to Visual C# Tutorials!");
System.Console.ReadKey();

اینکه قبل از استفاده از هر کلاس ابتدا فضای نام آن را مانند کد بالا بنویسیم کمی خسته کننده است. خوشبختانه دات نت به ما اجازه می دهد که برای جلوگیری از تکرار مکررات، فضاهای نامی را که قرار است در برنامه استفاده کنیم با استفاده از دستور using در ابتدای برنامه وارد نماییم :

using namespace;

دستور بالا نحوه وارد کردن یک فضای نام در برنامه را نشان می دهد. در نتیجه به جای آنکه به صورت زیر ابتدا نام فضای نام و سپس نام کلاس را بنویسیم :

System.Console.WriteLine("Hello World!");

می توانیم فضای نام را با دستوری که ذکر شد وارد برنامه کرده و کد بالا را به صورت خلاصه شده زیر بنویسیم :

Console.WriteLine("Hello World");

دستورات using که باعث وارد شدن فضاهای نامی به برنامه می شوند عموما در ابتدای برنامه و قبل از همه کدها نوشته می شوند، پس برنامه ی این درس را می توان به صورت زیر نوشت :

using System;

namespace MyFirstProgram
{
    class Program
    {
        static void Main()
        {
             Console.WriteLine("Welcome to Visual C# Tutorials!"); 
             Console.ReadKey();                                    
        }
    }
}

هنگامی که یک برنامه در ویژوال استودیو ایجاد می کنید، اگر وجود برخی از فضاهای نام الزامی نباشد، ویژوال استودیو 2017 آنها را به صورت کم رنگ نمایش می دهد، و شما می توانید بدون هیچ مشکلی این فضاهای نام را پاک کنید :
creating-simple-program-04
در نسخه های قبلی ویژوال استودیو هم برای پاک کردن فضاهای نام غیر قابل استفاده، ابتدا بر روی یکی از آنها راست کلیک کرده و سپس بر روی Remove and Sort Usings کلیک کنید :
creating-simple-program-05
اگر از کلاسی استفاده کنید که از قبل فضای نام مربوط به آن را وارد برنامه نکرده باشید در زیر آن کلاس خط قرمز کشیده می شود :
creating-simple-program-06
برای رفع این مشکل، اگر از قبل نام فضای مربوطه را بلد باشید که باید آن را در قسمت فضای نام وارد کنید. در غیر اینصورت، بر روی نام کلاس با ماوس کمی مکث کنید تا یک پنجره popup ظاهر شده و آن را به شما معرفی کند :
creating-simple-program-07
در این صورت با کلیک بر روی آن، ویژوال استودیو به طور خودکار فضای نام را وارد برنامه می کند :
creating-simple-program-08
در مورد فضای نام در درس های آینده بیشتر توضیح می دهیم. حال که با خصوصیات و ساختار اولیه سی شارپ آشنا شدید در دسهای آینده مطالب بیشتری از این زبان برنامه نویسی قدرتمند خواهید آموخت.

لطفا اگر نظر، پیشنهاد و یا انتقادی در باره مطلب بالا دارید در قسمت زیر و اگر سوالی دارید در بخش پرسش و پاسخ مطرح بفرمایید.

  1. چرم پاسخ دادن

    مرسی ممنون از آموزشتون تشکر فراوان:)))

  2. kingroid پاسخ دادن

    yekam pichide tar barname bezarin inke khayli sadas

    • یونس ابراهیمی پاسخ دادن

      مطالب سایت بیشتر برای مبتدی هاست…

  3. masoud پاسخ دادن

    بسیار ممنون
    خیلی خیلی تدریست عالیه
    امیدوارم بتونم استفاده کنم

  4. افشین پاسخ دادن

    بهتر بود مطالبتون به صورت ویدیو آموزش داده میشد و همینطور اگه قرار هست کلاساتون غیر حضوری باشه لطفا یه قسمتی بزارید تا به سوالات دانشجوها پاسخ داده شه.
    خواستم بپرسم آیا در ادامه آموزش نرم افزار مشاور املاک رو هم گذاشتین؟

    • یونس ابراهیمی پاسخ دادن

      آموزش ویدویی این مطالب هم هست و تو قسمت محصولات سایته، سوالاتتونو هم تو بخش پرسش و پاسخ سایت مطرح بفرمایید. یک آموزش ویدویی هم داریم از صفر تا صد آماده می کنیم که ۱۲-۱۰ روز دیگه میذاریمش واسه دانلود

  5. leila پاسخ دادن

    با سلام
    واقعا خسته نباشید. من تازه شروع کردم به آموزش #C وقتی تو چندتا سایت آموزششو خوندم اینقدر گنگ بود که خسته شدم
    تازه امروز با سایت شما دارم آموزش میبینم اینقدر خوب و دقیق و باحوصله به تمام نکات اشاره کردید که من با وجود اینکه کاملا مبتدی هستم جواب سوالامو میگیرم.
    ممونم ازتون و انشاا… که همیشه شاد و سرزنده باشید که بتونید با حوصله تمام کاراتونو ادامه بدید.

    • یونس ابراهیمی پاسخ دادن

      سلام، بسیار ممنون، لطف دارین

  6. محمد پاسخ دادن

    سلام خسته نباشید میشع دقیق اسم این برنامه رو بگید کاملشو چون من یکیشو دانلود کردم ویژوال استودیو ۲۰۱۲ کرک هم هست اما قسمتی که باید کد نویسی کنم بخش بخشه و نمیشه {} این علامات را گذاشت و نزده micro soft visual studio adminstator

  7. پریناز پاسخ دادن

    سلام با عرض سلام بنده تازه شروع به آموزش c#کردم میخواستم یه راهنمایی ازتون بگیرم سوالم اینه برای برنامه نویسی تجاری مثل سیستم حقوق و دستمزد وغیره باید چه آموزشهایی ببینم برای اینکه زود به نتیجه برسم تاحالا آموزش sqlدیدم

    • یونس ابراهیمی پاسخ دادن

      سلام، سوالتون یه جواب کلی داره “باید یاد بگیرین، سوال بپرسین و تمرین کنید!”
      بنده نمی دونم که چقدر با برنامه نویسی آشنا هستین، اینکه آیا قبلا با زبان های دیگه هم کار کردین یا نه؟
      ولی اینکه SQL رو در حد مقدماتی بلد باشین و سی شارپ رو در حد متوسط می تونید برنامه ای که فرمودین رو بنویسین. البته این تعاریف “متوسط و حرفه ای و …” یه کم گنگ هستن. در کل همه چی به تلاش خودتون بستگی داره. نه تنها با آموزش های سایت ما بلکه با بقیه آموزش ها از سایت های دیگه هم می تونید همچین برنامه ای بنویسید اگر علاقه و پشتکار داشته باشین. سوالی بود در خدمتم، موفق و موید باشین

  8. پریناز پاسخ دادن

    ممنون از پاسختون حتما از راهنمایی هاتون استفاده خواهم کرد در ضمن من مدرکم کارشناسی نرم افزار هست

    • یونس ابراهیمی پاسخ دادن

      خواهش می کنم، بسیار عالی، موفق و موید باشین

  9. sara423 پاسخ دادن

    سلام
    خسته نباشید ممنون از توضیحات خوبتون
    من قبلا ویژوال ۲۰۱۳ را نصب کردم اما نه بصورت typical بلکه بصورت custom الان که زدم یک پروژه در محیط کنسول درست کن پروژه درست شد اما در فولدرش فایلی با پسوند .csproj ندارم و فقط محیطی برای کدنویسی به نام module1.vb دارم که کدهای زیر در آن هست

    Module Module1
    
        Sub Main()
    
        End Sub
    
    End Module

    الان چکارباید بکنم؟ راهی هست یا من باید uninstall کنم بعد دوباره از اول typical نصب کنم؟ یا اینکه من کلا دارم اشتباه میکنم وباید برم فایلهایی که شما عرض کردید را پیدا کنم
    با تشکر

    • یونس ابراهیمی پاسخ دادن

      سلام دوست عزیز، ممنون بابت لطفتون
      ((عکس اول رو اصلاح کردم دوباره خوب نگاش کنید))
      مهم نیست چه نسخه ای از ویژوال استودیو باشه، ویژوال استودیو مجموعه ای از چند زبانه، این پروژه ای که شما ایجاد کردین از نوع visual basic ه نه #C. شاید موقع نصب به صورت custom تیک سی شارپ رو برداشتین. یه پروژه جدید ایجاد کنید ببینید تو پنجره ایجاد پروژه #C هست یا نه

      اگه نبود دوباره سی دی ویژوال استودیو رو بذارین و همون custom رو بزنید و زبان سی شارپ رو هم به ویژوال استودیو اضافه کنید

  10. sara423 پاسخ دادن

    سلام
    روزبخیر
    ممنون درست شد من اصلا دقت نکرده بودم پروژه را visual basic تعریف کرده بودم
    انشاله موفق باشید

    • یونس ابراهیمی پاسخ دادن

      سلام، خواهش می کنم، همچنین

  11. مهدی پاسخ دادن

    سلام خسته نباشید
    من دقیقا مثل شما عمل کردم ولی این error رو میده

    Error Program does not contain a static ‘Main’ method suitable for an entry point ConsoleApplication2

    • یونس ابراهیمی پاسخ دادن

      طوری که از پیغام خطا مشخصه شما اصلا متد Main رو تو برنامتون ندارین، یا حذف کردین. شما همین کد رو کپی کنید اجرا میشه

      using System;
      
      namespace MyFirstProgram
      {
          class Program
          {
              static void Main()
              {
                   Console.WriteLine("Welcome to Visual C# Tutorials!"); 
                   Console.ReadKey();                                    
              }
          }
      }
  12. ℳσԋムʍოム∂ پاسخ دادن

    ببخشید میتونم آیدی تلگرامتونو داشته باشم

    • یونس ابراهیمی پاسخ دادن

      خواهش میکنم ،تو اون کادر زرد رنگ بالا هست