دوره آموزش سی شارپ

به روز ترین مطالب آموزشی و متدلوژی های برنامه نویسی

آموزش بکارگیری پارامترهای تابع در زبان سی شارپ

۳۲ بازديد
در این مقاله از سری مقاله های آموزش سی شارپ به بررسی چگونگی بکارگیری پارامترهای تابع در زبان سی شارپ می پردازیم..
 
بکارگیری پارامترهای تابع در زبان سی شارپ
در درس قبلی، به طور کامل نحوه کار با تابع ها در سی شارپ و فراخوانی و استفاده آن ها را آموزش دادیم. تا حدودی به آموزش نحوه تعیین و ارسال پارامترهای تابع هم پرداختیم. اما در این درس به صورت اختصاصی قابلیت ها و کارکردهای پارامترها را بررسی خواهیم کرد.
اولین چیزی که به بررسی آن خواهیم پرداخت، تغییردهنده های ref و out یا modifiers هستند. زبان سی شارپ همانند اکثر زبان های برنامه نویسی دیگر، بین متغیرهای ارسال با مقدار “by value” و ارسال با رفرنس “by refrence” تفاوت قائل می شود.
حالت پیش فرض در زبان سی شارپ، ارسال با مقدار یا “by value” است. این حالت به معنای آن است که وقتی شما یک متغیر را به تابع ای به عنوان پارامتر ارسال می کنید، درواقع یک کپی از آن شی را می فرستید و نه رفرنس به آدرس عمل واقعی متغیر. از طرف دیگر این کار به این معنی است که شما می توانید تغییرات و عملیات مورد نظر خود را بر روی متغیر پارامتر ارسالی انجام دهید. بدون این که شی اصلی آن متغیر را در حافظه دستکاری نمایید و به عبارت دیگر هر کاری بر روی پارامتر در درون تابع انجام می دهید، بر روی نسخه کپی آن اجرا می شود نه متغیر اصلی. با استفاده از واژه های کلیدی ref و out می توانید عملکرد فوق را تغییر داده و نسخه اصلی یک متغیر را به جای مقدار آن به تابع ارسال نمایید.
 
دوره آموزش سی شارپ : آموزش ref modifier
کد مثال زیر را مطالعه نمایید :
static void Main(string[] args)
{
    int number = 20;
    AddFive(number);
    Console.WriteLine(number);
    Console.ReadKey();
}
static void AddFive(int number)
{
    number = number + 5;
}

در کد مثال فوق، یک متغیر عددی به نام number از نوع integer تعریف کرده و مقدار 20 را به آن می دهیم. سپس این متغیر را به تابع AddFive() ارسال نموده سپس مقدار 5 واحد را به آن اضافه می کند. اما آیا متغیر واقعی number تغییر می کند؟

جواب خیر است، مقدار 5 به نسخه کپی متغیر number اضافه شده و فقط درون تابع مورد اشاره تغییر کرده است. زیرا ما یک نسخه کپی از متغیر number را ارسال کرده ایم، نه رفرنس به شی اصلی آن. این روش حالت پیش فرض در سی شارپ بوده و در بیشتر موارد مقصود ما هم همین است.
اما اگر بخواهید مقدار شی اصلی متغیر number را تغیر دهید، بایستی کلید واژه ref را همانند کد زیر به پارامتر اضافه نمایید :
static void Main(string[] args)
{
    int number = 20;
    AddFive(ref number);
    Console.WriteLine(number);
    Console.ReadKey();
}
static void AddFive(ref int number)
{
    number = number + 5;
}

همانطور که در کد فوق مشاهده می کنید، ما علاوه بر این که در هنگام تعریف تابع، واژه کلیدی ref را به کار برده ایم، در هنگام فراخوانی تابع هم استفاده شده است.

اگر برنامه فوق را اجرا کنید، خواهید دید که مقدار اصلی متغیر number تغییر کرده است، نه نسخه کپی آن.
 
آموزش CSharp : آموزش تغییر دهنده out modifier
تغییردهنده out modifier بسیار شبیه ref عمل می کند. هر دو آن ها باعث می شود تا نسخه اصلی و رفرنس متغیر به عنوان پارامتر ارسال شود و نه مقدار آن. اما دارای دو تفاوت عمده با هم هستند :
  1. متغیری که به ref modifier ارسال می شود، حتما بایستی قبل از فراخوانی تابع مقداردهی اولیه شده باشد. اما این مورد درباره out صورت نکرده و شما می توانید یک متغیر مقداردهی نشده را به out ارسال کنید.
  2. از طرف دیگر شما نمی توانید بدون این که به یک متغیر out مقدار بدهید، تابع مورد نظر خود را به پارامتر out فراخوانی کنید. درست است که می توانید یک متغیر مقداردهی اولیه نشده را به یک تابع به عنوان out Parameter ارسال کنید، اما برای استفاده از آن در بدنه تابع، بایستی مقدار جدیدی را برای آن تعریف کنید.
 
آموزش زبان سی شارپ : آموزش تغییر دهنده Params modifier
تا اینجا، توابعی که تعریف کردیم، تعداد مشخصی پارامتر را در هنگام تعریف یا فراخوانی دریافت می کردند. اما مواردی وجود دارد که ممکن است شما بخواهید تابع مورد نظرتان تعداد متفاوتی پارامتر را در هر بار فراخوانی دریافت و ارسال کند. این کار با ارسال یک متغیر مثل آرایه به تابع همانند روش زیر امکان پذیر است :
static void GreetPersons(string[] names) { }
 
البته فراخوانی این نوع تابع ها کمی پیچیده تر از حالت معمولی است، به صورت زیر :
GreetPersons(new string[] { "John", "Jane", "Tarzan" });
 
روش فوق کاملا درست است، اما می توان با استفاده از واژه کلیدی Params آن را به صورت زیر بهتر نوشت :
static void GreetPersons(params string[] names) { }
 
کد فراخوانی فوق همانند فراخوانی به صورت زیر است :
GreetPersons("John", "Jane", "Tarzan");
 
مزیت دیگر استفاده از کلید واژه Params این است که شما می توانید پارامترهای خالی (2re, Parameters) را هم به تابع ارسال کنید.
در هنگام استفاده از Params، تابع می تواند انواع دیگری از پارامترها را نیز دریافت کند، منتهی پارامترهای Params بایستی در انتها تعریف شوند. از طرف دیگر فقط از یک پارامتر Params در تعریف و فراخوانی هر تابع می توان استفاده کرد.
کد مثال زیر، مثال کاملی از نحوه استفاده از Params در سی شارپ است :
static void Main(string[] args)
{
    GreetPersons(0);
    GreetPersons(25, "John", "Jane", "Tarzan");
    Console.ReadKey();
}
static void GreetPersons(int someUnusedParameter, params string[] names)
{
    foreach(string name in names)
        Console.WriteLine("Hello, " + name);
}
 
با دیگر مقاله های آموزش سی شارپ همراه ما باشید..

آموزش سی شارپ-آموزش توابع در C#

۳۹ بازديد

به بخش جدید آموزش سی شارپ خوش آمدید.

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

آدرس صفحه وبی که میخواهید نمایش دهید را Paste کنید

 

در زبان C#، یک تابع (Function) به صورت کلی زیر تعریف می شود :

< visibility > < return type > < name > ( < parameters > )

{

< function code >

}

برای فراخوانی یک تابع، کافی است نام آن را نوشته و سپس یک پرانتز باز و بسته در مقابل آن قرار دهید. اگر تابع شما دارای یک یا چند پارامتر باشد، لیست پارامترها را هم در همین پرانتز قرار می دهید. به صورت زیر :

FunctionName ( Parameter1 , Parameter2  ,… ) ;

در کد مثال زیر یک تابع به نام Dostuff را فراخوانی کرده ایم :

public void DoStuff()

{

Console.WriteLine("I'm doing something...");

}

در کد تابع فوق، اولین بخش فراخوانی تابع، یعنی کلمه public، تعیین کننده میدان دید تابع در سطح برنامه بوده و تعیین آن اختیاری است. میدان دید یک تابع مشخص می کند آیا سایر توابع و کلاس های موجود در برنامه امکان مشاهده و دسترسی تابع مورد نظر را خواهند داشت یا خیر. Public به معنای عمومی بوده و یعنی سایر کلاس ها و توابع دیگر برنامه می توانند به تابع فوق دسترسی داشته باشند.

نکته :

اگر میدان دید برای یک تابع تعیین نشود، به صورت پیش فرض Private یا خصوصی در نظر گرفته می شود. Private تابع های هم کلاس تابع مورد نظر امکان دسترسی مستقیم به تابع را دارند.

در درس های بعدی آموزش سی شارپ به طور کامل به بررسی میدان دید یا Scope توابع خواهیم پرداخت. بخش بعدی قسمت فراخوانی تابع تعیین نوع داده ای مقدار خروجی تابع است. این مقدار می تواند هر نوع داده ای خاص در C# بوده و یا Void تعیین شود. به کار بردن کلمه Void به این معناست که این تابع هیچ مقدار خاصی را بر نمی گرداند. از طرف دیگر همانطور که می بینید پرانتزهای مقابل نام تابع خالی هستند و به این معناست که این تابع هیچ پارامتری را دریافت نمی کند. بیایید کمی تابع فوق را به صورت زیر تغییر دهیم :

public int AddNumbers(int number1, int number2)

{

int result = number1 + number2;

return result;

}

در کد جدید تقریبا همه بخش ها را تغییر دادیم. تابع اکنون یک مقدار عددی integer را به عنوان خروجی برمی گرداند، در پارامتر عددی integer دریافت کرده و به جای چاپ متن در خروجی، یک عملیات ریاضی انجام داده و خروجی آن را به عنوان متغیر result بر می گرداند. این کار به این معناست که هر موقع نیاز داشتیم، در هر بخشی از کد برنامه می توانیم تابع فوق را فراخوانی کرده و با ارسال دو عدد مورد نظر به آن، حاصل جمع آن ها را به صورت خروجی دریافت کنیم، تا این که هر بار لازم باشد کد عملیات ریاضی را مجددا بنویسیم. تابع AddNumber() را می توانیم به راحتی توسط کد زیر در هر جای برنامه فراخوانی کرد ه و در حجم و زمان کدنویسی خود صرفه جویی زیادی بکنیم.

int result = AddNumbers(10, 5);

Console.WriteLine(result);

همانطور که اشاره کردیم، این تابع یک مقدار عددی را باز می گرداند. هنگامی که در یک تابع، هر نوع داده ای غیر از Void را تعیین می کنیم، به این معناست که تابع را مجبور نموده ایم تا یک مقدار برگشتی داشته باشد.

نکته :

اگر خط کد return را از کد مثال فوق بردارید، خواهی دید که در هنگام اجرای برنامه، کامپایلر بر بروی این تابع ارور داده و پیام زیر را صادر می کند :

'AddNumbers(int, int)': not all code paths return a value

پیام فوق به ما یادآوری می کند که تابع فوق، علی رغم این که یک مقدار خروجی برای آن در نظر گرفته شده، اما هیچ خروجی را بر نمی گرداند. اما می خواهیم خروجی تابع را کنترل کنید، می توانید کدی مثل کد زیر را به تابع اضافه کنید :

public int AddNumbers(int number1, int number2)

{

int result = number1 + number2;

if(result > 10)

{

return result;

}

}

اما باز هم پیام خطایی همانند مثال قبل صادر می شود، چرا؟ به این دلیل که هیچ ضمانتی وجود نداشته که شرط دستور if درست از آب در بیاید و برنامه خروجی داشته باشد (دستور return اجرا بشود). می توانید مشکل فوق را با تعیین یک مقدار پیش فرض برای عبارت return به صورت زیر حل کنید :

public int AddNumbers(int number1, int number2)

{

int result = number1 + number2;

if(result > 10)

{

return result;

}

return 0;

}

کد اضافه شده فوق، مشکل برنامه ما را حل کرده و از طرف دیگر نشان می دهد می توانیم بیش از یک دستور return را در بدنه تابع خود تعریف کنیم. به محض اجرای دستور return در هر جای کد برنامه، خروجی تابع ارسال شده و اجرای مابقی دستورات تابع لغو می شود. در مثال فوق، اگر مقدار متغیر خروجی return بزرگتر از 10 باشد، هیچ گاه دستور return 0; اجرا نمی شود.

آموزش سی شارپ ادامه دارد

دوره آموزش سی شارپ - آموزش #C

۱۷۷ بازديد
آشنایی با انواع داده ای Data Types در C# :

سلام با قسمت دوم آموزش برنامه نویسی سی شارپ #C در خدمتتون هستیم:

انواع داده ای یا Data Types در تمامی قسمت های یک زبان برنامه نویسی مثل C# استفاده می شود. به دلیل این که زبان C#، یک زبان قدرتمند داده ای است، بایستی هر زمان که یک متغیر را تعریف و استفاده می کنید، به کامپایلر اطلاع دهید آن متغیر از چه نوع داده ای است. به نحوه و تعیین نوع داده ای یک متغیر به طور کامل در بخش متغیرها (Variable) خواهیم پرداخت. در این درس به طور کلی به بررسی انواع داده ای مهم زبان C# و نحوه کارکرد آن ها می پردازیم.

آموزش سی شارپ

نوع داده ای bool ساده ترین Data Type زبان C# است. این نوع داده ای که به نوع درست یا غلط نیز معروف است، فقط دو نوع مقدار می تواند داشته باشد، true یا false. متغیر bool در هنگام استفاده از عملگرهای منطقی و یا دستورات شرطی مثل if بسیار کاربرد دارد.
انواع داده ای int نیز که مخفف کلمه integer است، برای نگهداری اعداد بدون بخش اعشاری آن ها به کار می رود. نوع داده ای int پرکاربردترین متغیر در هنگام کار با اعداد در C# است. متغیرهای integer، بر حسب اندازه عددی که می توانند نگهداری کنند، دارای انواع مختلفی در زبان C# می باشند.
نوع داده ای String نیز برای نگهداری متن یا text به کار می رود که عبارت است از تعدادی کاراکتر پشت سر هم. در C#، متغیرهای String از نوع immutable یا تغییرناپذیر هستند، به این معنی که متغیرهای String، پس از تعریف و مقداردهی هرگز تغییر نمی کنند. هنگام کار با متدهایی که یک متغیر String را دستکاری و تغییر می دهند، متغیر String اول تغییر نمی کند، بلکه یک متغیر جدید با مقدار جدید ایجاد می شود.
متغیر char نیز برای نگهداری یک کاراکتر تنها به کار می رود.

راهنمایی :

متغیر float نیز برای نگهداری اعداد اعشاری استفاده می شود.

آموزش #C

آموزش تعریف و مقداردهی متغیرها Variable در C#

یک متغیر یا Variable بخشی از حافظه سیستم است که همانند یک اتاق برای نگهداری اطلاعات خاصی به کار می رود. متغیرها اساس کار برنامه های C# بوده و به صورت زیر، قابل تعریف هستند :

< data type >   < name >;

به عنوان مثال در کد زیر یک متغیر از نوع String به نام name را تعریف کرده ایم :

String name;

در کد فوق ، نوع داده ای متغیر و نام آن را تعیین می کند.
حالت فوق، ساده ترین حالت تعریف یک متغیر است. اما ممکن است شما بخواهید میدان دید یا Visibility خاصی را برای متغیر خود تعیین کرده و در هنگام تعریف، آن را متد دهی نیز کنید. این کار بایستی به صورت زیر انجام شود :

< visibility >   < data type >   < name >   = < value >;

در نمونه فوق < visibility >میدان دید متغیر را تعیین می کند. یعنی می گویند چه توابع، کلاس ها و یا متغیرهای دیگری در سطح برنامه می توانند این متغیر را ببینند، فراخوانی و دستکاری کنند. نیز که مقدار اولیه متغیر را مشخص می کند. کد زیر یک مثال را برای تعریف کامل متغیر در C# نشان می دهد :

Private String name = “ Tahlil Dadeh ” ;

در کد مثال زیر، نحوه تعریف، مقداردهی و کار با چند متغیر در زبان C# را در عمل نشان داده ایم :

using System;

 

namespace ConsoleApplication1

{

class Program

{

static void Main(string[] args)

{

string firstName = "John";

string lastName = "Doe";

 

Console.WriteLine("Name: " + firstName + " " + lastName);

 

Console.WriteLine("Please enter a new first name:");

firstName = Console.ReadLine();

 

Console.WriteLine("New name: " + firstName + " " + lastName);

 

Console.ReadLine();

}

}

}

بسیار خب، بخش زیادی از کد مثال فوق را قبلا توضیح داده ایم، بنابراین در این مرحله مستقیم به سراغ بخش مورد نظرمان می رویم.
اول از همه، ما چندین متغیر از نوع String Type را تعریف کرده ایم. یک String می تواند شامل متن یا Text باشد و همانطور که در کد مثال می بینید، هر متغیر String را بلافاصله مقدار دهی کرده ایم. سپس یک خط متن را به وسیله دو متغیر بر روی خروجی Consale نشان داده ایم. از کاراکتر (+) برای چسباندن متن دو متغیر String و نمایش آن ها به صورت یک جمله استفاده شده است.
در مرحله بعدی، از کاربر خواسته ایم تا یک مقدار جدید را برای متغیر firstName وارد کند. برای این منظور از دستور ReadLine() استفاده شده که یک مقدار ورودی را از کاربر دریافت کرده و درون متغیر firstName قرار می دهد. پس از این که کاربر نام مورد نظر خود را وارد کند، مقدار جدید در متغیر firstName وارد شده و سپس مجددا به وسیله دستور Consale.WriteLine()، جمله را با نام جدید به کاربر نشان داده ایم.
در کد فوق ما فقط از یک متغیر استفاده کرده ایم و این کد به خوبی مهم ترین قابلیت یک متغیر یعنی تغییر در هنگام اجرای برنامه (Run Time) را نشان می دهد.
مثال بعدی برای نشان دادن کار متغیرها، انجام عملیات ریاضی است. کد زیر نحوه انجام کار را نشان می دهد :

int number1, number2;

 

Console.WriteLine("Please enter a number:");

number1 = int.Parse(Console.ReadLine());

 

Console.WriteLine("Thank you. One more:");

number2 = int.Parse(Console.ReadLine());

 

Console.WriteLine("Adding the two numbers: " + (number1 + number2));

 

Console.ReadLine();

کد فوق را در تابع Main مثال قبل قرار داده و برنامه را مجددا اجرا کنید. تنها حقه به کار رفته در مثال دوم، استفاده از متد int.Parse() است. این متد یک مقدار متنی String را خوانده و آن را به یک متغیر عددی integer تبدیل می کند.
همانطور که مشاهده می کنید، در کد مثال دوم برنامه هیچ تلاشی برای اعتبارسنجی (validate) مقدار ورودی کاربر انجام نداده و اگر کاربر یک مقدار رشته ای (متن) را وارد کرده و دکمه Enter را بزند، برنامه با اشکال رو به رو خواهد شد، زیرا عمل ریاضی را بر روی متن نمی تواند انجام دهد. برای حل این مشکل در درس های بعد بیشتر توضیح می دهیم.

دوره آموزش C#

آموزش ساختار شرطی if در C#

یکی از مهم ترین ساختارهای دستوری در هر زبان برنامه نویسی از جمله C#، دستور if است. توانایی ساخت دستورات شرطی کلی از مهم ترین کارهایی است که بایستی بتوان با زبان ها ی برنامه نویسی انجام داد. در C#، ساختار شرطی if بسیار ساده و کاربردی است. اگر از ساختار دستوری شرطی if در هر زبان برنامه نویسی دیگری استفاده کرده باشید، به راحتی می توانید در C# نیز از آن بهره بگیرید. ساختار دستور شرطی if نیاز مند یک مقدار boolean است که یا true است یا false. در برخی از زبان های برنامه نویسی، چندین نوع داده ای را می توان به صورت اتوماتیک به Boolean تبدیل کرد، اما در C# باید مستقیما از نوع داده ای Boolean استفاده کنید. برای مثال نمی توانید از نوع داده ای عددی int به صورت مستقیم استفاده کنید، اما می توانید آن را با یک مقدار دیگر قیاس کرده و مقدار true یا false نتیجه را مورد استفاده قرار دهید.
در درس قبلی، به آموزش نحوه تعریف و استفاده از متغیرها (Variables) در زبان C# پرداختیم. در این درس هم به آموزش نحوه کار با دستورات شرطی در C# می پردازیم. برای این منظور کد مثال زیر را با دقت مطالعه کنید :

using System;

 

namespace ConsoleApplication1

{

class Program

{

static void Main(string[] args)

{

int number;

 

Console.WriteLine("Please enter a number between 0 and 10:");

number = int.Parse(Console.ReadLine());

 

if(number >10)

Console.WriteLine("Hey! The number should be 10 or less!");

else

if(number < 0)

Console.WriteLine("Hey! The number should be 0 or more!");

else

Console.WriteLine("Good job!");

 

Console.ReadLine();

}

}

}

در کد مثال فوق از دو دستور شرطی if استفاده کرده ایم تا چک کنیم آیا عدد ورودی توسط کاربر، بین 0 تا 10 است یا خیر. به همراه دستور if از کلید واژه else نیز استفاده شده است. قسمت کد else زمانی اجرا می شود که شرط بخش if درست نباشد.
اگر در کد مثال فوق دقت کرده باشید، ما از کاراکترهای {} برای دسته بندی دستورات if و else ها استفاده نکرده ایم.. این یک قانون در C# است. اگر کد نوشته شده فقط در حد یک متن خطی باشد، نیازی به استفاده از {} برای دسته بندی کدها نیست.
حجم کد نوشته شده برای مقایسه مقدار یک عدد در مثال فوق کمی زیاد به نظر می رسد. همان کد را می توانید به صورت زیر، خلاصه تر بنویسید :

if((number >10) || (number < 0))

Console.WriteLine("Hey! The number should be 0 or more and 10 or less!");

else

Console.WriteLine("Good job!");

ما هر یک از دستورات شرطی را درون یک پرانتز قرار داده و سپس از عملگر ǁ که به معنلی "یا"، "or" می باشد، استفاده کرده ایم تا چک کنیم عدد واردشده از 10 بزرگتر یا کوچکتر از 0 است. عملگر دیگری که در این گونه موارد نیز می توانید استفاده کنید عملگر AND به معنای "و" است که به صورت && نوشته می شود. آیا می توانیم در کد مثال دوم از عملگر AND به جای or استفاده کنیم؟. بله، فقط کافی است کد را به صورت زیر بازنویسی کنیم :

if((number <= 10) && (number>= 0))

Console.WriteLine("Good job!");

else

Console.WriteLine("Hey! The number should be 0 or more and 10 or less!");

در این درس عملگرهای "کوچکتر از" و "بزرگتر از" را نیز معرفی کردیم.

آموزش کار با دستور Switch در C#

دستور Switch همانند مجموعه ای از دستورات پشت سر هم if عمل می کند. دستور Switch درواقع لیستی از حالت های ممکن است که برای هر حالت یک دستور یا کدی جهت اجرا پیش بینی شده است. این دستور همچنین یک حالت default یا پیش فرضی دارد که در صورتی که هیچ یک از حالات آن true نباشد، اجرا خواهد شد.
یک دستور ساده Switch ساختاری هماند کد مثال زیر دارد :

int number = 1; switch(number) { case 0: Console.WriteLine("The number is zero!"); break; case 1: Console.WriteLine("The number is one!"); break; }

مقدار شناسه یا identifier (مقدار متغیری که می خواهیم دستور Switch بر حسب آن عمل کند) را پس از واژه کلیدی Switch قرار می دهیم. سپس لیستی از انواع حالت های مختلف برای آن مقدار توسط هر دستور case مشخص شده و مقدار شناسه با مقدار هر case مقایسه می شود. اگر مقدار شناسه با مقدار هر کدام برابر نبود، دستورات بخش پیش فرض default اجرا می شود.
اگر دقت کرده باشید، در پایان هر case یک دستور break قرار داده شده است. برای چیست؟ اگر مقدار یک case با مقدار شناسه دستور Switch برابر شود، دستورات آن case اجرا شده و اگر در انتهای case دستور break وجود نداشته باشد، دستورات case های بعدی نیز اجرا خواهد شد. به عبارت دیگر، دستور break ، باعث توقف روند اجرای دستورات Switch شده و برنامه به خط کد بعد از Switch می فرستد. در نوشتن break دقت لازم به عمل آورید، ؟؟؟؟؟ نوشتن آن می تواند کلا برنامه را دچار اختلال کنید.
هنگامی که هم یک تابع را در دستورات یک case تعیین می کنید، می توانید با استفاده از return خروجی تابع را به عنوان خروجی Switch برگردانید.
در کد مثال، ما از یک متغیر عددی integer به عنوان شناسه دستور Switch استفاده کرده ایم، اما این شناسه می تواند از نوع متنی String و یا هر نوع داده ای دیگر زبان C# باشد.
در مثال زیر، ابتدا یک مقدار را به عنوان ورودی از کار برگررفته ایم، سپس آن را به عنوان یک متغیر متنی String به دستور Switch ارسال نموده ایم. در کد مثال زیر، برای هر دو مقدار “yes” و “Maybe” یک دستور مشترک را تعیین کرده ایم.

Console.WriteLine("Do you enjoy C# ? (yes/no/maybe)");

string input = Console.ReadLine();

switch(input.ToLower())

{

case "yes":

case "maybe":

Console.WriteLine("Great!");

break;

case "no":

Console.WriteLine("Too bad!");

break;

}

در کد مثال فوق، سوالی از کاربر پرسیده شده و از وی خواسته شد یکی از مقادیر “yes”، “no” و “maybe” را وارد نماید. سپس مقدار وارد شده از ورودی توسط دستور Consale.ReadLine() خوانده شده و یک دستور Switch بر مبنای آن طراحی شده است. برای سهولت کار کاربر، توسط دستور ToLower() ، کاراکترهای ورودی کاربر را به حروف کوچک تبدیل کرده ایم تا در هنگام مقایسه با مقادیر Case ها، فرقی بین مقدار وارد شده برای حروف بزرگ و کوچک وجود نداشته باشد. اما بدون وجود دستور default در Switch، اگر کاربر در مثال فوق مقداری غیر از مقادیر تعیین شده برای case ها وارد نماید، برنامه هیچ خروجی نخواهد داشت. بنابراین کد مثال فوق را به همراه default به صورت زیر بازنویسی می کنیم :

Console.WriteLine("Do you enjoy C# ? (yes/no/maybe)");

string input = Console.ReadLine();

switch(input.ToLower())

{

case "yes":

case "maybe":

Console.WriteLine("Great!");

break;

case "no":

Console.WriteLine("Too bad!");

break;

default:

Console.WriteLine("I'm sorry, I don't understand that!");

break;

}

اگر کاربر مقداری به غیر از مقادیر تعیین شده برای case ها وارد نماید، بخش default به صورت پیش فرض اجرا خواهد شد.

با ادامه آموزش برنامه نویسی C# همراه ما باشید

آموزش سی شارپ

۱۱۴ بازديد

معرفی آموزش زبان C#

آموزش سی شارپ

به بخش جدید آموزش C# خوش آمدید. همزمان با معرفی چهارچوب کلری .NET ، مایکروسافت یک زبان برنامه نویسی جدید به نام C# که د ر اصطلاح سی شارپ خوانده می شود را به آن اضافه کرد.

C# طراحی شد تا نقش یک زبان برنامه نویسی ساده، مدرن، چند منظوره و شی گرا را برای چهارچوب کاری .NET ایفا کند. از طرف دیگر، C# مفهوم های کلیدی و قابلیت های خوب سایر زبان های برنامه نویسی به ویژه جاوا را قرض کرده و درون خود دارد.

از لحاظ نظری، C# می تواند تا سطح کد ماشین یا اسمبلی کامپایل شود، اما در کارکرد واقعی، همیشه به همراه چهارچوب کاری .NET استفاده می شود. بنابراین در برنامه ای که با زبان C# نوشته شده باشد، برای اجرا بر روی کامپیوتر، نیازمند نصب چهارچوب کاری .NET می باشد. با وجود این که چهارچوب کاری .NET امکان استفاده از طیف وسیعی از زبان های برنامه نویسی را بر روی ویندوز به ما می دهد، اما گاهی اوقات آموزش C# به عنوان زبان اصلی .NET معرفی شده است. البته شاید این به دلیل طراحی همزمان با چهارچوب کاری .NET باشد.

راهنمایی برای دوره آموزش C# :

C# یک زبان برنامه نویسی شی گرا یا Oriented بوده و در آن امکان استفاده از متغیرها یا تابع سراسری یا Globol وجود ندارد. در C همه چیز در کلاس ها (closes) قرار می گیرند، حتی ساده ترین انواع داده ای مثل int یا String که از کلاس System.object مشتق شده اند.

آموزش#C

معرفی ابزار و آموزش کار با Visual C# Express:

دستورات زبان C# را می توانید با هر نوع ادیتور متنی مثل Windows Notepad نوشته و سپس به وسیله برنامه CSC.exe که کامپایلر خطی دستورات C# بوده و همراه با چهارچوب کاری .NET بر روی سیستم نصب می شود، کامپایل و اجرا نمایید.

اما اکثر افراد ترجیح می دهند از یک IDE یا محیط توسعه یکپارچه (Integrated Development Envirment) استفاده کنند که مایکروسافت چندین برنامه را برای این منظور ارائه داده است. گل سرسبد این برنامه ها، Visual Studio است که قابلیت اجرای تمامی امکانات چهارچوب کاری .NET را دارا می باشد. این برنامه بسیار پیشرفته بوده و در نسخه های مختلفی ارائه شده است.

همزمان با ارائه نسخه 2 چهار چوب کاری .NET، مایکروسافت نسخه ای از ویژوال استودیو را به نام Express منتشر کرد که برای استفاده برنامه نویسان معمولی و کسانی که می خواهند چهارچوب کاری .NET را فرا بگیرند، مناسب است. نسخه Express فقط برای برنامه نویسی به زبان های C# و VB.NET طراحی شده و برخی از قابلیت های مهم و کاربردی ویژوال استودیو را شامل نمی شود. اما به هر حال ابزار رایگانی بوده و برای افراد تازه کار و معمولی بسیار مناسب است.

 

 راهنمایی :

برای برنامه نویسی به زبان C بایستی برنامه ویژوال C# اکسپرس را از آدرس https://visualstudio.microsoft.com/vs/express/ دانلود نموده و بر روی سیستم خود نصب نمایید. سپس آماده کد نویسی C# خواهید بود.

 

آموزش ساخت اولین برنامه C# با Hello word

اگر شما قبلا نیز اقدام به یادگیری یک زبان برنامه نویسی کرده باشید، حتما می دانید که اینگونه آموزش ها معمولا با یک برنامه ساده به نام “Hello word” شروع می شوند.

در این آموزش c# هم قصد داریم از این سنت قدیمی استفاده کنیم. برای این منظور برنامه Visual C# Express را اجرا کرده و مسیر منوی File - >New Project را طی کرده و گزینه Consule application را انتخاب نمایید. این ساده ترین نوع برنامه بر روی سیستم ویندوز است، اما نگران نباشید، ما خیلی اینجا نخواهیم ماند. پس از این که بر روی دکمه ok کلیک نمایید، برنامه Visual C# Express یک پروژه جدید را برای شما ایجاد می کند که حاوی یک فایل به نام Program.cs است.

این کار سرآغاز جایی است که هیجان کار شروع شده و کد آن بایستی به صورت زیر باشد :

using System;

using System.Collections.Generic;

using System.Text;

 

namespace ConsoleApplication1

{

   class Program

   {

       static void Main(string[] args)

       {

       }

   }

}

 

درواقع، مجموعه کدهای فوق هیچ کار خاصی را انجام نمی دهند، یا حداقل اینگونه به نظر می رسند.سعی کنید با زدن دکمه F5 برنامه را بر روی سیستم خود اجرا نمایید. این کار باعث می شود تا Visual C# Express برنامه شامل را کامپایل کرده و اجرا نماید. اما همانگونه که مشاهده می کنید، این کدها کار خاصی را انجام نداده و فقط یک پنجره مشکی رنگ ویندوز باز شده و سپس بسته می شود. این مسئله به این دلیل است که برنامه شما دارای کد خاصی نبوده و کار خاصی را انجام نمی دهد. در بخش بعدی، به بررسی این خطوط کدها به طور کامل خواهیم پرداخت اما الان قصد داریم تا از برنامه خود یک خروجی بگیریم. برای این منظور دو خط کد زیر را درون آخرین مجموعه {} کد برنامه قرار دهید.

;Console.WriteLine("Hello, world!")

;()Console.ReadLine

سپس کد کامل برنامه بایستی به صورت زیر تغییر کند :

 

;using System

;using System.Collections.Generic

;using System.Text

 

namespace ConsoleApplication1

{

   class Program

   {

       static void Main(string[] args)

       {

        ;   Console.WriteLine("Hello, world!")

           ;()Console.ReadLine

       }

   }

}

 

یک بار دیگر، جهت اجرای برنامه دکمه F5 را فشار دهید، این بار مشاهده خواهید کرد که پنجره سیاه برنامه باز شده و علاوه بر این که بلافاصله بسته نمی شود، بلکه یک پیام سلام “Hello word” را نیز به کاربر نشان می دهد. خب، ما دو خط کد به برنامه اضافه کردیم. اما این کدها در واقع چه کاری انجام می دهند؟

خط اول از کلاس Consale برای نمایش یک خط متن در خروجی استفاده کرده و خط دوم هم می تواند یک مقدار ورودی یا متن را از کاربر بخواند. اما چرا خواندن یا Read؟

درواقع این کار یک حقه کوچک است زیرا بدون آن برنامه بلافاصله اجرا شده و تمام می شود و بدون این که کاربر فرصت کند خروجی آن را بروی صفحه ببیند، پنجره اش بسته می شود.

دستور ReadLine Command به برنامه می گوید تا برای دریافت یک ورودی از کاربر صبر کند و همان طور که مشاهده می منید، شما می توانید یک متن را درون پنجره تایپ نمایید. پس از تایپ متن دلخواه، دکمه Enter را زده و پنجره برنامه را ببندید.

به شما تبریک می گوییم، اولین برنامه C# خود را ساخته و اجرا کردید. در بخش بعدی به تشریح کدهای نوشته شده و عملیات صورت گرفته خواهیم پرداخت.

آموزش C#

توضیح و آموزش ساخت برنامه Hello World در C#

در بخش قبل، در اولین برنامه C# ای که طراحی کردیم، یک نوشته را در خروجی چاپ نمودیم. برای درک بستر خروجی مثال، در درس قبلی به تشریح کدهای نوشته شده پرداخته نشد، اما در این درس به بررسی کد مثال می پردازیم.

همانطور که از مشاهده کدهای مثال درس متوجه شده اید، برخی از خط های کد مثال بسیار شبیه هم بودند، بنابراین در توضیح، آن ها را در کنار همدیگر قرار داده ایم.

بیایید با کوتاه ترین و پرکاربرد ترین کاراکترها در کد مثال خود شروع کنیم : کاراکترهای { و }. به این کاراکترها در اصطلاح براکت (curly braces) می گویند و در C ابتدا و انتهای هر بلوک کد را مشخص می کنند. براکت ها در بسیاری از زبان برنامه نویسی دیگر از جمله C++، جاوا، جاوا اسکریپت و ... نیز استفاده می شوند. همانطور که در مثال مشاهده کردید، براکت ها برای بسته بندی چندین خط کد که مرتبط به هم هستند، استفاده می شوند. در مثال های بعدی، با نحوه استفاده از براکت ها بیشتر آشنا خواهید شد.

اکنون بیایید از ابتدای کد شروع کنیم. قسمت Using ها :

;using System

;using System.Collections.Generic

;using System.Text

Using یک واژه کلیدی (keyword) است که توسط ادیتورکدها به رنگ آبی نشان داده می شود. واژه کلیدی Using یک namespace را به کد برنامه وارد می کند. Namespace مجموعه ای از کلاس ها هستند که با هم کار خاصی را انجام می دهند. در مثال Hello Word، سه namespace به برنامه اضافه شده اند که هر کدام کار خاصی را در کد برای ما انجام می دهند. برای مثال، ما از کلاس Consale Class که بخشی از System Namespace است برای چاپ مقدار متنی در خروجی استفاده می کنیم.

از طرف دیگر، همانند قطعه کد زیر، شما می توانید یک namespace دلخواه را ایجاد کرده و سپس آن را در کدهای خود استفاده کنید.

namespace ConsoleApplication1

اکنون namespace ConsaleAppliction1، به عنوان namespace اصلی (main) این برنامه بوده و شامل چندین کلاس خواهد بود. می توانید چندین namespace دیگر نیز که نیاز دارید را ایجاد کرده و در هر کدام کلاس های مورد نظر خود را قرار دهید. سپس همانند سایر namespace ها با استفاده از واژه کلیدی Using آن را به برنامه خود اضافه کنید.

در مرحله بعد، ما کلاس Closs مورد نظر خود را ایجاد می کنیم. از آن جا که C# یک زبان شی گرا Object-oriented است، مجموعه کدهای خاص را درون یک کلاس تعریف می کنیم. برای مثال، به وسیله کد زیر یک کلاس به نام Program را تعریف کرده ایم :

class Program

در هر برنامه به تعداد نیاز می توانید کلاس های مختلف تعریف کنید. اما در این مثال، ما فقط یک کلاس خواهیم داشت. هر کلاس می تواند شامل تعدادی متغیر (variable)، خواص (properties) و متدها (methods) باشد، مفهوم هایی که در درس های بعد به تشریح کامل آن ها خواهیم پرداخت. تنها چیزی که الان بایستی بدانید این است که کلاس Program فقط شامل یک متد (method) بوده که به صورت زیر تعریف شده است :

static void Main(string[] args)

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

کلمه اول static است. کلیدواژه یا (keyword) به نام static اعلام می کند که این کلاس بایستی بدون نیاز به نمونه سازی از آن قابل دسترس باشد، راجع به این مسئله در بخش Classes به طور کامل توضیخ می دهیم.

واژه کلیدی بعدی Void است که مشخص می کند آیا متد ما بایستی پس از اجرای کامل، مقداری را برگرداند یا خیر. مقدار برگشتی یک تابع می تواند برای مثال از نوع عددی int، متنی string و یا هیچ چیز (void) باشد. به کار بردن کلمه void در این مثال، به این معنی است که تابع ما هیچ مقداری را پس از اجرا باز نمی گرداند.

واژه کلیدی بعدی Main بوده که نام متد را تعیین می کند. متد Main تابع اصلی هر برنامه C# بوده و اولین قطعه کدی است که در برنامه اجرا می شود.

پس از نام متد، می توانید یک یا چند آرگومان را به عنوان مقادیر ورودی هر متد درون پرانتز تعیین کنید. در مثال ما، متد Main فقط دارای یک آرگومان ورودی به نام args می باشد. آرگومان یک متغیر یا مقدار ثابت است که در هنگام فراخوانی هر تابعی، می تواند به آن ارسال شود. آرگومان args در مثال فوق از نوع متنی و آرایه ای است.

در پایان این درس بایستی درک کلی از برنامه های C# و نحوه کار آن ها پیدا کرده باشید.

دوره آموزش سی شارپ