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

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

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

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

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


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

۳ مطلب با کلمه‌ی کلیدی «دوره سی شارپ» ثبت شده است

  • ۰
  • ۰

 

آموزش ماشین لرنینگ
آموزش ماشین لرنینگ

 

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

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

در تجزیه و تحلیل بیش از 11000 شبکه عصبی که برای شبیه‌سازی عملکرد سلول‌های شبکه - اجزای کلیدی سیستم ناوبری مغز - آموزش دیده بودند، دریافتند که شبکه‌های عصبی تنها زمانی فعالیت سلول‌های شبکه‌ای تولید می‌کنند که محدودیت‌های بسیار خاصی به آنها داده شود که در سیستم های بیولوژیکی یافت نمی شوند. تیم MIT دریافت که تعداد بسیار کمی از شبکه‌های عصبی فعالیت‌های شبکه‌ای سلول‌مانند را ایجاد می‌کنند، که نشان می‌دهد این مدل‌ها لزوماً پیش‌بینی‌های مفیدی درباره نحوه عملکرد مغز ایجاد نمی‌کنند.

شفر، که اکنون دانشجوی کارشناسی ارشد علوم کامپیوتر در دانشگاه استنفورد است، نویسنده اصلی این مطالعه جدید است که در کنفرانس 2022 سیستم های پردازش اطلاعات عصبی ارائه خواهد شد. ایلا فیته، استاد علوم مغز و عصب شناسی و عضو موسسه تحقیقات مغز مک گاورن MIT، نویسنده ارشد این مقاله است. میکائیل خونا، دانشجوی کارشناسی ارشد MITدر رشته فیزیک، نیز عضو نویسندگان است.

مدل سازی سلول های شبکه

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

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

طبق تحقیقات نشان داده شده است که سلول‌های مکانی هر زمان که یک حیوان در یک مکان خاص باشد شلیک می‌کنند و هر سلول مکانی ممکن است به بیش از یک مکان پاسخ دهد. از طرف دیگر سلول های شبکه ای بسیار متفاوت عمل می نمایند. هنگامی که یک حیوان در فضایی مانند اتاق حرکت می کند، سلول های شبکه تنها زمانی شلیک می کنند که حیوان در یکی از رئوس یک شبکه مثلثی باشد.

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

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

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

با این حال، محققان MIT به نتایج بسیار متفاوتی دست یافتند. در تجزیه و تحلیل بیش از 11000 شبکه عصبی که در مورد یکپارچه سازی مسیر آموزش داده بودند، دریافتند که در حالی که تقریبا 90 درصد از آنها این کار را با موفقیت یاد گرفته اند، تنها حدود 10 درصد از آن شبکه ها الگوهای فعالیتی را تولید می کنند که می تواند به عنوان سلول-شبکه طبقه بندی شود. این مورد شامل شبکه‌هایی می‌شود که در آن‌ها حتی تنها یک واحد امتیاز شبکه بالایی را به دست آورده است.

به گفته تیم MIT، احتمالاً مطالعات قبلی تنها به دلیل محدودیت‌هایی که محققان در آن مدل‌ها ایجاد می‌کنند، فعالیت‌هایی شبیه سلول شبکه ایجاد می‌کنند.

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

مدل های بیولوژیکی بیشتر

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

وقتی تیم MIT مدل‌ها را طوری تنظیم کرد که سلول‌های مکانی بیشتر شبیه سلول‌های مکان بیولوژیکی باشند، مدل‌ها همچنان می‌توانستند وظیفه یکپارچه‌سازی مسیر را انجام دهند، اما دیگر فعالیت سلول‌های شبکه‌ای تولید نمی‌کردند. فعالیت شبه سلول‌های شبکه‌ای نیز زمانی ناپدید شد که محققان به مدل‌ها دستور دادند تا انواع مختلفی از خروجی مکان را تولید کنند، مانند موقعیت مکانی روی یک شبکه با محورهای Xو Y یا مکان به عنوان فاصله و زاویه نسبت به یک نقطه اصلی.

فیتی می‌گوید: «اگر تنها کاری که از این شبکه می‌خواهید انجام دهد یکپارچه‌سازی مسیر است، و مجموعه‌ای از الزامات بسیار خاص و نه فیزیولوژیکی را بر واحد بازخوانی تحمیل می‌کنید، در این صورت می‌توانید سلول‌های شبکه را به دست آورید. اما اگر هر یک از این جنبه‌های این واحد بازخوانی را آرام کنید، به شدت توانایی شبکه برای تولید سلول‌های شبکه را کاهش می‌دهد. در واقع، معمولاً این کار را نمی‌کنند، حتی اگر هنوز وظیفه یکپارچه‌سازی مسیر را حل می‌کنند.»

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

وقتی از مدل‌های یادگیری عمیق (deep learning) استفاده می کنید، آنها می‌توانند ابزار قدرتمندی باشند، اما باید در تفسیر آنها و تعیین اینکه آیا واقعاً پیش‌بینی‌های جدید انجام می‌دهند یا حتی به آنچه که مغز در حال بهینه‌سازی است، بسیار محتاط بود. کنت هریس، استاد علوم اعصاب کمی در دانشگاه کالج لندن، می‌گوید امیدوار است این مطالعه جدید دانشمندان علوم اعصاب را تشویق کند که در بیان آنچه می‌توانند با تشابهات بین شبکه‌های عصبی و مغز نشان دهند، مراقب باشند.

شبکه های عصبی می توانند منبع مفیدی برای پیش بینی ها باشند. اگر می‌خواهید یاد بگیرید که چگونه مغز یک محاسبات را حل می‌کند، می‌توانید شبکه‌ای را برای انجام آن آموزش دهید، سپس این فرضیه را آزمایش کنید که مغز به همان روش کار می‌کند. هریس که در این مطالعه شرکت نداشت، می‌گوید چه این فرضیه تأیید شود یا نه، چیزی یاد خواهید گرفت. این مقاله نشان می‌دهد که «پیش‌بینی» قدرت کمتری دارد: شبکه‌های عصبی پارامترهای زیادی دارند، بنابراین واداشتن آنها به تکرار یک نتیجه موجود چندان تعجب‌آور نیست.

به گفته محققان MIT، هنگام استفاده از این مدل‌ها برای پیش‌بینی نحوه عملکرد مغز، مهم است که هنگام ساخت مدل‌ها، محدودیت‌های بیولوژیکی واقعی و شناخته شده را در نظر بگیریم. آنها اکنون روی مدل‌هایی از سلول‌های شبکه کار می‌کنند که امیدوارند پیش‌بینی‌های دقیق‌تری از نحوه عملکرد سلول‌های شبکه‌ای در مغز ایجاد کنند.

Khona می‌گوید: «مدل‌های یادگیری عمیق به ما بینشی در مورد مغز می‌دهند، اما تنها زمانی که دانش بیولوژیکی زیادی را به مدل تزریق کنید. اگر از محدودیت‌های صحیح استفاده کنید، مدل‌ها می‌توانند راه‌حلی شبیه به مغز به شما ارائه دهند.»

این تحقیق توسط دفتر تحقیقات نیروی دریایی، بنیاد ملی علوم، بنیاد سیمونز از طریق همکاری سیمونز بر روی مغز جهانی، و موسسه پزشکی هوارد هیوز از طریق برنامه دانش پژوهان دانشکده تامین شد.

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

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

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