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

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

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

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

آموزشگاه تحلیل داده فعالیت رسمی خود را از سال 1380 در قالب آموزشگاه تخصصی نرم افزار آغاز نموده. این موسسه از همان ابتدای تأسیس با بهره مندی از استاید حرفه ای رشته های نرم افزار و بانک های اطلاعاتی ، فعالیت تخصصی خود را در زمینه آموزش برنامه نویسی و بانک های اطلاعاتی آغاز نمود و پس از گذشت اندک زمانی توانست در زمینه نرم افزار و شبکه بعنوان یکی از حرفه ای ترین موسسات ایران ظاهر شود. با توجه به اینکه مدیریت آموزشگاه شخصاً در رشته نرم افزار تحصیل کرده و سابقه طولانی در تحلیل و طراحی و پیاده سازی نرم افزار و بانک های اطلاعاتی دارند ، خط مشی کلی موسسه بر مبنای آموزش پایه ای ، کاربردی ، عملی و تخصصی نرم افزار بنا شده است.


آدرس : خیابان شریعتی بالاتر از ملک جنب بانک صادرات طبقه دوم واحد 7
همراه: 09123840871 تلفن: 88146323 - 88146330

۶ مطلب با کلمه‌ی کلیدی «آموزش csharp» ثبت شده است

  • ۰
  • ۰

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

در این درس قصد داریم تا شما را با مفهوم کلاس ( class ) در C# و کاربرد آن ها آشنا کنیم. همچنین به بیان نحوه تعریف کلاس ها در برنامه و تعیین خواص و متدها برای آن ها خواهیم پرداخت. اول از همه با مفهوم کلاس Class در C# شروع می کنیم. یک کلاس، مجموعه ای از خاصیت ها، متغیرها و متدهای مرتبط با هم است. یک کلاس خصوصیات ذکر شده را توصیف و پیاده سازی کرده و برای استفاده از آن در کد برنامه، بایستی یک نسخه از آن را (که به آن شی یا object می گویند) بسازید. بر روی شی یا object ایجاد شده، می توانید متغیرها و متدهای کلاس را به کار ببرید. هر تعداد که نیاز داشته باشید می توانید شی یا object از روی کلاس ساخته و در نقاط مختلف کد برنامه استفاده کنید. مبحث شی گرایی یا object oriented یک مقوله بسیار گسترده است که در این درس، درس های دیگر این بخش به مهم ترین جزئیات آن خواهیم پرداخت.

در این بخش و در مثال Hello World مشاهده می کنیم که از یک کلاس در کد برنامه استفاده شده است و در C# تقریبا همه چیز بر مبنای کلاس ها ایجاد می شوند. در کد این درس قصد داریم تا کلاس خود را گسترش داده و با انواع امکانات آن آشنا شویم :

using System;

namespace ConsoleApplication1

{

class Program

{

static void Main(string[] args)

{

Car car;

car = new Car("Red");

Console.WriteLine(car.Describe());

car = new Car("Green");

Console.WriteLine(car.Describe());

Console.ReadLine();

}

}

class Car

{

private string color;

public Car(string color)

{

this.color = color;

}

public string Describe()

{

return "This car is " + Color;

}

public string Color

{

get { return color; }

set { color = value; }

}

}

}

آموزش سی شارپ : همانطور که مشاهده می کنید، در کد فوق یک کلاس جدید به نام Car ایجاد کرده ایم. برای سهولت کار، این کلاس جدید را به همراه کلاس Program در فایل اصلی برنامه قرار داده ایم، اما روش رایج این است که هر کلاس درون فایلی جداگانه هم نام خود کلاس ایجاد شود. کلاس Car دارای یک متغیر (ویژگی) به نام Color است که برای تعیین رنگ خودرو به کار می رود. ویژگی Color به صورت خصوصی یا private تعیین شده که به این معناست که توابع و کلاس های خارج از تابع Car امکان دسترسی مستقیم به این خاصیت را ندارند. فقط توابع و متدهای داخل کلاس Car می توانند به خاصیت Color دسترسی مستقیم داشته باشند.

نکته :

اگر تابع یا کلاسی خارج از کلاس Car بخواهد به خاصیت خصوصی یا private به نام Color دسترسی داشته باشد، بایستی از یک Property برای این منظور استفاده کند. یک Property به نام Color در انتهای کد کلاس Car تعریف شده که وظیفه خواندن و نوشتن این خاصیت را بر عهده داشته و به سایر کلاس ها و توابع برنامه اجازه دسترسی به آن را می دهد.

همچنین کلاس Car دارای یک تابع سازنده یا Constructor می باشد. تابع سازنده، متدی است که وظیفه ساخت یک نمونه شی از کلاس مربوطه و برگردندن آن را به عهده داشته و به محض ساخته شدن یک نمونه شیء از کلاس اجرا می شود. تابع سازنده کلاس Car دارای یک پارامتر بوده که برای مقداردهی اولیه شی Car با خاصیت Color بزرگ قرمز (Red) به کار می رود. بنابراین هر شی از کلاس Car که ساخته شود، رنگ قرمز را به صورت پیش فرض برای خاصیت Color خود خواهد داشت. برای نشان دادن درستی این مسئله نیز تابع Describe طراحی شده که نام هر شی یا object ساخته شده با مقدار رنگ آن را در خروجی نشان می دهد.

 

آموزش ویژگی های کلاس (C# Properties)

ویژگی (Property) در C# به شما امکان کنترل روش دسترسی و تغییر متغیرهای یک کلاس را می دهد. استفاده از ویژگی در C#، راه توصیه شده و درست جهت دسترسی به متغیرهای یک کلاس، به وسیله متدها یا توابع خارج از کلاس جاری، در زبان برنامه نویسی شی گرا object oriented می باشد. به عبارت دیگر، وقتی که یک متد یا کلاس دیگری در برنامه، بخواهد به متغیر یک کلاس دسترسی داشته باشد، بهتر است به جای این که مستقیما متغیر را استفاده کند، از طریق یک ویژگی یا Property در کلاس خود متغیر، به آن دسترسی داشته باشد. در مثال آموزشی درس قبل (کار با کلاس ها) برای اولین بار روش استفاده از یک ویژگی یا Property را نشان دادیم. یک ویژگی یا Property همانند ترکیبی از یک متغیر Variable و یک متد method است. ویژگی نمی تواند پارامتری را دریافت کند، اما به وسیله آن می توانید قبل از ارسال و دریافت متغیر، مقدار آن را تغییر دهید. هر ویژگی یا Property از دو قسمت اصلی get و set تشکیل شده که همانند کد مثال زیر درون مجموعه Property تعریف می شوند :

private string color;

public string Color

{

get { return color; }

set { color = value; }

}

متد get مقدار متغیر را خوانده و آن را به برنامه بر می گرداند، از طرف دیگر متد set هم مقدار مورد نظر را به متغیر نسبت می دهد. مثال اول، ساده ترین حالت تعریف Property در C# است، اما می توانید آن را گسترش نیز بدهید.

نکته مهم در آموزش سی شارپ:

مسئله مهم در هنگام تعریف یک ویژگی یا Property این است که تعریف یکی از متدهای set یا get نیز کفایت می کند و در صورت تعریف یکی، تعریف متد دیگر اختیاری است. این مسئله، امکان تعریف ویژگی های فقط خواندنی read-only و یا فقط نوشتنی write-only را می دهد.

در کد زیر یک مثال کامل تر از نحوه تعریف ویژگی ها در C# را نشان داده ایم :

public string Color

{

get

{

return color.ToUpper();

}

set

{

if(value == "Red")

color = value;

else

Console.WriteLine("This car can only be red!");

}

}

در کد مثال فوق، ویژگی را کمی گسترش دادیم. در کد جدید، متغیر Color در هنگام return، به دلیل استفاده از متد ToUpper() به صورت حروف بزرگ، برگردانده می شود. از طرف دیگر، با استفاده از دستور شرطی if، فقط مقدار رنگ “red” برای متغیر Color پذیرفته می شود.

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

  • افشین رفوآ
  • ۰
  • ۰

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

آرایه ها Arrays مجموعه ای از آیتم ها مثل متن String می باشند. شما می توانید از آرایه ها برای قرار دادن چندین متغیر همسان در یک گروه و سپس انجام اعمال خاصی بر روی آن ها مثل مرتب سازی یا sorting استفاده کنید. آرایه ها در C# تقریبا شبیه متغیرها تعریف می شوند با این فرق که یک [ ] در مقابل نوع داده ای آرایه قرار می گیرد. ساختار کلی تعریف یک آرایه در C# به صورت زیر است :

string[] names;

برای استفاده از یک آرایه نیاز دارید آن را تعریف اولیه و مقداردهی کنید. به صورت زیر :

string[] names = new string[2];

در کد فوق، عدد 2 سایز آرایه را تعیین می کند. سایز آرایه تعداد اعضایی که می توانید در آرایه قرار دهید را مشخص می سازد. قرار دادن آیتم ها در یک Arrays کار ساده ای است. به صورت زیر :

names[0] = "John Doe";

اما چرا در تعریف اولین عضو آرایه از عدد 0 استفاده کردیم. به دلیل این که در C# همانند سایر زبان های برنامه نویسی، شمارش واحدها به جای 1 از 0 شروع می شود. بنابراین اولین عضو آرایه با 0 اندیس گذاری شده، دومی با 1 و به این ترتیب. شما بایستی به تعداد اعضای یک آرایه دقت کنید، زیرا تعریف عضو بیشتر از تعداد تعیین شده برای آرایه، برنامه را دچار خطا می کند. دقت کنید وقتی یک آرایه با 2 عضو تعیین می شود، اعضای آن دارای اندیس های 0 و 1 هستند و عضوی با 2 اندیس وجود ندارد. این یک اشتباه رایج در هنگام استفاده از آرایه هاست. در درس های قبل تر، با ساختارهای تکرار (حلقه) در C# آشنا شدید، این ساختارها برای کار با آرایه ها بسیار مناسب هستند. رایج ترین راه برای استخراج اطلاعات یک آرایه Arrays استفاده از حلقه ها یا loops می باشد. در هر بار تکرار حلقه، یک عضو آرایه استخراج شده و می توان عملیات مورد نظر خود را بر روی آن انجام داد. در مثال عملی زیر، نحوه خواندن و کار با یک آرایه را به وسیله حلقه loop نشان داده ایم :

using System;

using System.Collections;

namespace ConsoleApplication1

}

class Program

}

static void Main(string[] args)

}

string[] names = new string[2];

names[0] = "John Doe";

names[1] = "Jane Doe";

foreach(string s in names)

Console.WriteLine(s);

Console.ReadLine();

{

{

{

در مثال فوق، از حلقه foreach استفاده کردیم که ساده ترین نوع حلقه برای کار با آرایه هاست. اما می توان از سایر انواع حلقه ها در C# نیز استفدده نمود، مثل حلقه for که به راحتی به وسیله آن می توان اعضای یک آرایه را شمرد و به تعداد اعضا پیام در خروجی چاپ کرد :

for(int i = 0; i < names.Length; i++)

Console.WriteLine("Item number " + i + ": " + names[i]);

در آموزش سی شارپ کارکرد کد فوق بسیار ساده است. ما از اندازه طول آرایه (Arrays Length) برای تعیین این که حلقه بایستی چند بار تکرار شود، استفاده کرده ایم. همچنین از شمارنده Counter(i) برای فهمیدن این که هر لحظه در کجای پردازش آرایه بوده و برای بیرون کشیدن هریک از اعضای آن استفاده نموده ایم. همانطور که در هنگام تعریف و مقداردهی آرایه از یک عدد به نام اندیس یا indexer استفاده کردیم، از همان عدد می توان برای خواندن و بیرون کشیدن اعضای آرایه استفاده نمود. در بخش قبل گفتیم که می توان اعضای یک آرایه را مرتب یا sort کرد. این کار بسیار راحت است. کلاس Array Class شامل چندین متد (method) مختلف است که از آن ها می توانید برای کار با آرایه ها استفاده کنید. در مثال زیر اعداد به جای string یا متن استفاده کرده ایم تا منظور خاصی را نشان دهیم، وگرنه به همین سادگی می توان اعضای یک آرایه را از نوع string هم تعریف کرد. روش بسیار ساده تر دیگری نیز برای پر کردن و مقداردهی اعضای یک آرایه وجود دارد، به خصوص زمانی که اعضای آرایه شما مشخص و مرتب هستند. به صورت زیر :

int[] numbers = { 4, 3, 8, 0, 5 };

فقط با استفاده از یک خط کد، آرایه ای با 5 عضو را ایجاد نموده و پنج عدد یا integer را به عنوان اعضای آن مقداردهی کردیم. با پر کردن اعضای یک آرایه به روش فوق، شما یک مزیت دیگر در کد خود خواهید داشت. با روش فوق، کامپایلر تعداد اعضای تعریف شده برای آرایه را با تعداد آیتم های شما چک کرده و اگر بیشتر از تعداد اعضا، آیتم ارائه دهید، خطا رخ می دهد. درواقع کد فوق را به صورت زیر می توان خلاصه تر نوشت، ولی در این حالت چک کردن خودکار کامپایلر را از دست می دهیم :

int[] numbers = { 4, 3, 8, 0, 5 };

در آموزش سی شارپ اما بیایید نحوه مرتب کردن یا sort یک آرایه را باهم بررسی کنیم. مثال زیر را به دقت مطالعه کنید :

using System;

using System.Collections;

namespace ConsoleApplication1

{

class Program

{

static void Main(string[] args)

{

int[] numbers = { 4, 3, 8, 0, 5 };

Array.Sort(numbers);

foreach(int i in numbers)

Console.WriteLine(i);

Console.ReadLine();

}

}

}

تنها چیز جدید در کد مثال فوق، دستور Array.Sort است. این متد می تواند پارامترهای مختلفی را به عنوان ورودی دریافت کرده و در هر کدام یک نوع آرایه را مرتب خواهد کرد. مثلا نزولی، صعودی و یا ... . کلاس Array Class دارای متدهای مختلف دیگری برای کار با آرایه ها مثل متد Reverse() است که به وسیله آن می توان ترتیب اعضای یک آرایه را معکوس کرد. برای درک بهتر، به لیست کامل متدهای آرایه ها در C# بروید. آرایه هایی که در مثال های این درس استفاده کردیم، همه تک بعدی هستند، ولی آرایه ها در C# می توانند 2 یا 3 بعدی نیز باشند. به این آرایه ها آرایه های تو در تو یا ماتریس هم می گویند. آرایه های چند بعدی در C# به 2 دسته تقسیم می شوند :

  • آرایه های مستطیلی یا Rectangular Array.

  • آرایه های نامنظم یا Jagged Array.

فرق بین دو نوع آرایه فوق در این است که هر بعد آرایه های مستطیلی بایستی یک اندازه باشند، مثلا یک آرایه ها 4×4. اما هر بعد آرایه های Jagged Array می توانند دارای سایزهای مختلفی باشند. بحث در مورد آرایه چند بعدی بسیار گسترده بوده و خارج از حوصله این آموزش می باشد.

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

  • افشین رفوآ
  • ۰
  • ۰

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

 

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

در درس قبلی، به طور کامل نحوه کار با تابع ها در سی شارپ و فراخوانی و استفاده آن ها را آموزش دادیم. تا حدودی به آموزش نحوه تعیین و ارسال پارامترهای تابع هم پرداختیم. اما در این درس به صورت اختصاصی قابلیت ها و کارکردهای پارامترها را بررسی خواهیم کرد.
اولین چیزی که به بررسی آن خواهیم پرداخت، تغییردهنده های 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);
}

 

با دیگر مقاله های آموزش سی شارپ همراه ما باشید..

  • افشین رفوآ
  • ۰
  • ۰

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

یکی دیگر از تکنیک های اصلی در زمان نوشتن نرم افزارها، امکان ایجاد حلقه ها دستوری یا looping است. این نوع دستورات امکان تکرار بلوک هایی از کد برای دفعات دلخواه را می دهند. برای مثال ما می خواهیم گروهی از دستورات تا زمانی که مقدار یک متغیر مثلا کمتر از 10 است، تکرار شود، در این حالت بایستی از حلقه ها در C# استفاده کنیم. در زبان C#، چهار نوع حلقه اصلی داریم که در ادامه به تشریح هر یک از آن ها با ارائه مثال های عملی خواهیم پرداخت .

 

آموزش سی شارپ : حلقه loop While

حلقه While loop آسان ترین نوع حلقه در زبان C# بوده و به همین دلیل آموزش حلقه ها را از این حلقه شروع می کنیم. حلقه While loop مجموعه بلوک دستورات تعیین شده برای آن را تا زمانی که شرط تعیین شده برای حلقه درست true باشد، اجرا می کند. کد زیر یک مثال ساده از کاربرد حلقه While را نشان می دهد، در ادامه به تشریح بیشتر کد می پردازیم :

 

using System;

namespace ConsoleApplication1

{

class Program

{

static void Main(string[] args)

{

int number = 0;

while(number < 5)

{

Console.WriteLine(number);

number = number + 1;

}

Console.ReadLine();

}

}

}

برنامه را اجرا نمایید. لیستی از اعداد 0 تا 4 برای شما نمایش داده خواهد شد. متغیر number که درواقع شمارنده حلقه While مثال نیز هست، از عدد 0 شروع شده و هر بار که دستورات حلقه یک بار اجرا می شوند، مقدار آن یک واحد افزایش پیدا می کند. تا زمانی که مقدار متغیر number کمتر از 5 و نه خود 5 باشد، اجرای دستورات ادامه پیدا کرده و با رسیدن عدد number به 5، اجرای حلقه متوقف شده و برنامه به خط کد بعد از حلقه While پرش می کند.

 

حلقه do loop :

کارکرد حلقه do loop کمی متفاوت با حلقه While loop است. در حلقه do loop ابتدا دستورات بدنه حلقه یک بار اجرا شده و در پایان شرط حلقه چک می شود. در صورت درست بودن شرط، باز هم دستورات حلقه تکرار می شود. نکته مهم در مورد حلقه do loop این است که اگر حتی شرط حلقه از ابتدا درست نباشد، دستورات حلقه حداقل یک بار اجرا می شوند. کد زیر یک مثال عملی از کار با حلقه do loop را نشان می دهد :

do

{

Console.WriteLine(number);

number = number + 1;

} while(number < 5);

خروجی حلقه do loop مثال فوق اعداد 0 تا 5 را چاپ کرده و با رسیدن شماره حلقه به 6، اجرای آن متوقف می شود.

 

 

آموزش سی شارپ :حلقه for loop

مکانیزم حلقه for loop با حلقه های قبلی کمی متفاوت است. از این حلقه بهتر است زمانی استفاده شود که می دانیم حدودا حلقه چند بار ممکن است تکرار شود. حلقه for loop دارای یک عدد به عنوان شمارنده است که با هر بار اجرای حلقه، مقدار آن به اندازه واحد تعیین شده کم یا زیاد می شود. اجرای حلقه تا زمانی که شرط آن درست باشد، ادامه داشته و شرط در ابتدای اجرای حلقه تست می شود. کد زیر یک مثال عملی از حلقه for loop را نشان می دهد :

using System;

namespace ConsoleApplication1

{

class Program

{

static void Main(string[] args)

{

int number = 5;

for(int i = 0; i < number; i++)

Console.WriteLine(i);

Console.ReadLine();

}

}

}

کد مثال فوق خروجی همانند حلقه While loop ایجاد می کند اما همانطور که شماهده می کنید، این حلقه کمی متراکم تر از حلقه های قبلی است. حلقه for از سه بخش اصلی تشکیل شده است : ابتدا یک مقدار متغیر را برای شمارش اجرای حلقه تعریف و مقداردهی می کنیم، یک شرط برای اجرای حلقه بر مبنای متغیر شمارنده تعیین شده و یک گام افزایش یا کاهش جهت شمارش اجرای حلقه و کنترل گام آن مثل ++ یا – تعیین می گردد. در کد مثال فوق، در مرحله اول شمارنده حلقه را به نام i تعریف و با مقدار 0 مقداردهی کرده ایم، این بخش حلقه فقط یک بار و در هنگام شروع حلقه اجرا می شود. دو قسمت بعدی حلقه، در هر بار تکرار حلقه، اجرا می شوند. در هر بار، مقدار متغیر i با متغیرهای عددی number مقایسه شده و در صورتی که کوچکتر از آن باشد، دستورات حلقه یک بار دیگر اجرا شده ومقدار i یک واحد افزایش می یابد.

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

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

 

آموزش ساختار دستوری 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 به صورت پیش فرض اجرا خواهد شد.
آموزش سی شارپ ادامه دارد
  • افشین رفوآ
  • ۰
  • ۰
به بخش جدید آموزش سی شارپ خوش آمدید.

 

آموزش انواع داده ای Data Types در 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 نیز برای نگهداری اعداد اعشاری استفاده می شود.

 

تعریف و مقداردهی متغیرها Variable در آموزش سی شارپ
یک متغیر یا 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 را بزند، برنامه با اشکال رو به رو خواهد شد، زیرا عمل ریاضی را بر روی متن نمی تواند انجام دهد. برای حل این مشکل در درس های بعد بیشتر توضیح می دهیم.
آموزش سی شارپ ادامه دارد
 
  • افشین رفوآ