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

فهرست مطالب این نوشته
997696

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

فهرست ۱۳ پروژه سی شارپ برای تمرین

در این مطلب چند پروژه مختلف را بررسی کرده‌ایم. این پروژه‌‌ها در دسته‌بندی‌‌های زیر قرار دارند.

  • ساخت بازی‌های ساده
  • مدیریت خطا‌های استثنا
  • مدیریت رویداد در سی‌شارپ
  • پروژه سی شارپ برای مدیریت فایل‌ها

سی شارپ، زبان برنامه نویسی مدرن و شیءگرایی است که به سادگی می‌توان آن را یاد گرفت. سی شارپ از لحاظ سینتکسی شبیه به جاوا بوده و بنابراین یادگیری آن برای کاربرانی که با زبان‌‌های C و ++C و جاوا آشنایی دارند، ساده‌تر است. ویژگی‌های اصلی زبان #C شامل مدرن بودن، سادگی، سرعت بالا، اوپن‌ سورس بودن، «چند پلتفرمی» (Cross-Platform) بودن، امنیت بالا، چندکاره بودن و استفاده زیاد آن در توسعه برنامه‌‌های موبایل و وب‌اپلیکیشن‌‌ها، وب‌سایت‌‌ها، ساخت بازی و پایگاه‌‌های داده است.

فهرست دسته بندی پروژه‌های سی شارپ

در ادامه مطلب چند مثال‌ و پروژه مختلف را با زبان #C پیاده‌سازی کرده‌ایم.

پروژه سی شارپ درباره ساخت بازی‌های ساده

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

  • بازی حدس عدد
  • نمایش روش حل مسئله برج ‌هانوی
  • بازی تشخیص پیشوند کلمات
  • بازی حدس کلمه

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

در ادامه، روش پیاده‌سازی گزینه‌های فهرست بالا را همراه با کد توضیح داده‌ایم.

بازی حدس عدد

در این بخش از مطلب، کدهای مربوط به بازی حدس عدد را پیاده‌سازی کرده‌ایم.

  1. در این بازی، عددی را از بین اعداد 1  تا 100  با استفاده از متغیر input  می‌خوانیم.
  2. از عبارت شرطی if else به صورت تودرتو برای بررسی مقدار داده ورودی استفاده کردیم.
  3. اگر مقدار داده ورودی برابر با 0  بود، پس شرط برقرار است. در این حالت باید دستورات درون عبارت شرطی اجرا شوند.
  4. در غیر این صورت شرط غلط است و باید شرط مقابل عبارت elseif  بررسی شود.
  5. در این حالت بررسی می‌کند که آیا مقدار عدد ورودی بزرگ‌تر از مقدار متغیر randno  است یا نه.
  6. اگر جواب صحیح بود، دستورات درون این بخش از عبارت شرطی اجرا می‌شوند. یعنی عبارت Low, try again. چاپ می‌شود. این عبارت به معنای آن است که «عدد مخفی کوچکتر از مقدار حدس زده شده است. باید دوباره تلاش کنید.»
  7. با هر دفعه حدس زدن عدد مقدار متغیر count  را هم افزایش می‌دهد.
قطعات پازلی که بر روی میز کامپیوتر قرار گرفته‌اند.

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

خروجی نمایش داده شده در کادر زیر با اعداد فرضی و دلخواه آزمایش ما نمایش داده شده است.

Enter a number between 1 and 100(0 to quit) : 56
Low,try again.
Enter a number between 1 and 100(0 to quit): 67
high,try again.
Enter a number between 1 and 100(0 to quit): 59
You guessed it! The number was 59
It took you 2 tries!!!

نمایش روند جابه‌جایی دیسک‌ها در مسئله برج ‌هانوی

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

کدهای مربوط به این مسئله در کادر زیر نوشته شده‌اند. این کدها را می‌توانید به سادگی و با نرم‌افزار وی‍ژوال استودیو اجرا کنید.

بعد از اجرای کد‌های بالا، با فرض وارد کردن عدد 2 خروجی به شکل زیر نمایش داده می‌شود.

Enter the Number of Disks : 2
Move Disk 1 from Tower 1 to Tower 2
Move Disk 1 from Tower 1 to Tower 3
Move Disk 1 from Tower 2 to Tower 3

فرایند کلی حل این مسئله به شکل زیر است.

  • در این مسئله، تعداد دیسک‌ها را با استفاده از متغیر cnumdiscs  از ورودی دریافت می‌کنیم.
  • سپس تابع movetower()  را با ارسال مقادیر 1  و 2  و 3  به عنوان مقادیر متغیر فراخوانی کرده‌ایم.
  • ابتدا با استفاده از عبارت شرطی if  بررسی می‌کنیم که آیا مقدار وارد شده توسط کاربر بزرگ‌تر از صفر است یا نه.
  • اگر این شرط برقرار بود شروع به جابه‌جایی دیسک‌ها بر روی میله‌‌ها به صورت بازگشتی می‌کنیم.
ساخت بازی در صفحه کامپیوتر که بر روی میز قرار دارد و نور پنجره به آن برخورد کرده است.

بازی تشخیص پیشوند کلمات

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

  1. کلمات نمایش داده شده به کاربر از قبل در برنامه مشخص شده‌اند. این کلمات را در آرایه seq[]  قرار داده‌ایم.
  2. سپس تابع play() را با ارسال مقادیر متغیر‌های seq  و numrows  اجرا می‌کنیم.
  3. در تابع play() با کمک حلقه for  عبارت پیشوند کلمه انگلیسی داده شده را می‌خوانیم.
  4. سپس کلمه داده شده به ورودی را با استفاده از تابع ToLower()  به حروف الفبای کوچک تبدیل می‌کنیم.
  5. در این حالت از عبارت شرطی if  برای بررسی مقدار ورودی استفاده می‌کنیم. اگر این مقدار با پیشوند کلمه داده شده برابر بود،‌ دستورات درون عبارت شرطی اجرا می‌شوند.
  6. از عبارت if  دیگری هم برای بررسی برابری بین متغیر given  و y  استفاده کرده‌ایم. اگر شرط این عبارت برقرار باشد – given  و y  برابر باشند – دستورات درون بلوک if  اجرا می‌شوند. یعنی مقدار پیشوند را به ازای کلمات داده شده نمایش می‌دهد.

در کادر زیر، کدهای این پروژه‌ سی شارپ را نوشته‌ایم.

بعد از اجرای کدهای بالا خروجی به شکل زیر نمایش داده می‌شود. البته در خروجی ابتدا خط یک و دو و سپس خط سه نشان داده می‌شوند. بعد از پاسخ دادن به سوالات نوشته شده، خطوط انتهایی خروجی به عنوان جواب نهایی در کنسول ظاهر می‌شوند.

ENGLISH WORD PREFIX GAME
What is the correct prefix of 'substring' : sub
What is the correct prefix of 'input' : in
 
CHECK YOUR ANSWERS!!!!
Word       Prefix      Description
substring  sub         correct
input      in          correct

بازی حدس کلمه

این بازی در زبان انگلیسی به نام «HangMan Game» شناخته می‌‌شود. در این بازی کلمه‌ای توسط برنامه انتخاب می‌شود. سپس کاربر حرف به حرف کلمه را حدس می‌زند. این کار تا جایی ادامه پیدا می‌کند که کاربر موفق به حدس کامل کلمه شود.

در این بازی با استفاده از متغیر guess  کاراکترهای حدس زده شده را از ورودی دریافت می‌کنیم. همین‌طور به ترتیب کاربر حروفی را حدس می‌زند و بازی ادامه پیدا می‌کند. با استفاده از حلقه for  کاراکتر *  را به جای حروف الفبای حدس زده نشده قرار می‌دهیم. در ابتدا متغیر p  را با مقدار 0  مقداردهی کرده‌ایم. در طول بازی دائما بررسی می‌کنیم که آیا طول متغیر p  کوتاه‌تر از طول متغیر mysteryWord  است یا نه.

پسرک جوانی در حال انجام پروژه با سی شارپ است.

از حلقه while (true) برای اجرای دستورات برنامه استفاده می‌کنیم. در داخل این حلقه، عبارت شرطی if  هم برای بررسی مقدار متغیر playerGuess  به کار برده می‌‌شود. این عبارت شرطی برابری اندازه متغیر‌های playerGuess  و mysteryWord  را بررسی می‌کند. اگر شرط برقرار بود، دستورات درون if  اجرا می‌شوند.

بعد از اجرای کدهای بالا، خروجی به شکل زیر نشان داده می‌شود. البته این خروجی به صورت تصادفی است. زیرا برنامه از بین کلمات ذخیره شده در لیست listwords  یکی را به صورت تصادفی انتخاب می‌کند.

Welcome to Hangman!!!!!!!!!!
Please enter your guess: i
****
a
**a*
e
**a*
g
g*a*
o
goa*
t
goat

یادگیری سی شارپ با کمک فرادرس

سی شارپ (#C) زبان برنامه‌نویسی مدرن، شیء گرا و چندمنظوره‌ است. این زبان بر روی «NET Framework.» کار می‌کند. سی شارپ می‌تواند با هدف توسعه نرم‌افزارهای متنوعی مانند برنامه‌های دسکتاپ، برنامه‌های تحت وب، اپلیکیشن‌های موبایل و بازی‌های کامپیوتری به کار برده شود. این مسئله باعث شده است که فرادرس مجموعه‌ای از فیلم‌های آموزشی متنوع برای این زبان تهیه کند. هر کدام از توسعه‌دهندگان مبتدی و حرفه‌ای #C با مراجعه به وب‌سایت آموزشی فرادرس می‌توانند فیلم‌های مربوط به سطح خود را پیدا کنند. مشاهده منظم و دقیق این فیلم‌ها تاثیر زیادی در کسب مهارت‌های پیشرفته دارد.

مجموعه آموزش برنامه نویسی سی شارپ C#‎ – مقدماتی تا پیشرفته
با کلیک بر روی تصویر بالا می‌توانید به صفحه اصلی مجموعه فیلم‌های آموزش برنامه نویسی سی شارپ هدایت شوید.

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

در ادامه مطلب به بررسی چند مسئله درباره مدیریت خطا در سی شارپ پرداخته‌ایم.

چند پروژه سی شارپ درباره مدیریت خطا‌های استثنا

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

  • خطای «اندیس خارج از محدوده» (IndexOutOfRange)
  • خطای «تقسیم بر صفر» (DivideByZero)
  • خطای «تغییر نوع نامعتبر» (Invalid TypeCasting)

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

در ادامه، برای هر کدام از مسائل مطرح شده در بالا، برنامه مرتبط را نوشته‌ایم.

مدیریت خطای استثنای IndexOutOfRange

این خطا در صورتی رخ می‌دهد که در زمان دسترسی به یکی از ساختارهای پیمایش‌پذیر منظم از اندیس خارج از محدوده استفاده کنیم. برای مثال، آرایه‌ای به نام arr  با ۱۰ خانه تعریف کرده‌ایم. اشاره به خانه arr[10]  باعث رویدادن این خطا می‌‌شود. زیرا اندیس‌ در ساختارهای پیمایش‌پذیر همیشه از 0 شروع می‌شود. در نتیجه آخرین خانه این آرایه arr[9]  است. شماره اندیس بزرگ‌تر از 9 در این آرایه باعث برگشتن پیغام خطا می‌شود.

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

در فهرست زیر، روش روش کار کدهای بالا را توضیح داده‌ایم.

  1. ابتدا از کلاسی به نام arrayoutofindex  شیئی به نام ob  ایجاد می‌کنیم.
  2. سپس با کمک شیء ob  تابع «()calculateddifference»  را اجرا می‌کنیم.
  3. در تابع «()calculateddifference»  مقدار را به آرایه number[]  اختصاص می‌دهیم.
  4. داخل بلوک try  از حلقه for  استفاده کرده‌ایم. این حلقه وظیفه محاسبه اختلاف بین مقدار variable  و مقدارهای ذخیره شده در number[]  را بر عهده دارد.
  5. از آنجا که در این برنامه آرایه از اندیسی خارج از محدوده مجاز خود استفاده می‌کند، خطای استثنا IndexOutOfRange رخ خواهد داد.
  6. با استفاده از ساختار try  و catch  برنامه می‌تواند خطای به وجود آمده را مدیریت کند. وقتی که این خطا روی داد، بلوک catch  به‌جای متوقف کردن برنامه فقط پیغام خطا برمی‌گرداند.

بعد از اجرای این برنامه و روی‌دادن خطا پیغام زیر بر روی کنسول ظاهر می‌شود.

Index was outside the bounds of the array

مدیریت خطای DivideByZero

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

مدیریت خطا در کامپیوتر کلمه error

در کادر زیر کدی نوشته‌ایم که فرایند این خطا و روش مدیریت آن را نشان می‌دهد.

در داخل بلوک try  برنامه تلاش می‌کند که عدد 15  را بر عدد 0  تقسیم کند. این کار با استفاده از متغیری به نام result  انجام می‌‌شود. انجام این عمل تقسیم باعث ظاهر شدن پیغام خطای استثنای DivideByZero  می‌شود. زیرا انجام تقسیم بر صفر در کامپیوتر مجاز نیست. با استفاده از بلوک‌های try  و catch  برنامه این خطا را مدیریت می‌کند و به‌جای متوقف شدن ناگهانی، فقط پیغام خطا نمایش می‌دهد.

بعد از اجرای این برنامه و روی‌دادن خطا پیغام زیر بر روی کنسول ظاهر می‌شود.

Attempted to Divide by Zero

مدیریت خطای Invalid TypeCasting

بعضی از وقت‌ها بعد از انجام غلط عملیات «Unboxing» خطای InvalidCastException روی می‌دهد. در کدهای زیر برای مدیریت خطا از بلوک‌های try  و catch  استفاده کرده‌ایم.

در کدهای بالا عملیات Unboxing به روش غلطی انجام شده است. در این کدها به محض رویدادن خطای InvalidCastException بلوک catch  فعال شده و پیغام خطا نشان می‌دهد.

بعد از اجرای این برنامه و روی‌دادن خطا پیغام زیر بر روی کنسول ظاهر می‌شود.

Specified Cast is not Valid.Error : Incorrect Boxing

پروژه سی شارپ برای مدیریت رویداد

در این بخش از مطلب سه پروژه سی شارپ را درباره «مدیریت رویداد» (Event Handling) بررسی کرده‌ایم.

  • ساخت «نوار پیشرفت» (Progress Bar)
  • ساخت «دکمه رادیویی» (Radio Button)
  • بررسی اینکه آیا دکمه ENTER فشار داده شده یا نه

در ادامه مطلب، تمام موارد فهرست بالا را یک به یک بررسی کرده‌ایم.

ساخت نوار پیشرفت

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

کدهای نوشته شده در کادر زیر یک نوار پیشرفت ساده را نشان می‌دهند. این کدها را می‌توانید در نرم‌افزار ویژوال استودیو نوشته و اجرا کنید.

در کدهای بالا سیستم مدیریت «نوار پیشرفت» (Progress Bar) را ساخته‌ایم. نوار پیشرفت برای نمایش روند اجرای عملیات طولانی استفاده می‌‌شود. کاربران با کمک این نوار متوجه می‌شوند که عملیات مورد نظر هنوز در حال انجام است و آن‌ها باید تا به پایان رسیدن عملیات صبر کنند.

  • در این کد، تابع Thread.Sleep()  برای متوقف کردن «نخ» (Thread) یا جریان محاسباتی فعلی به مدت چند میلی‌ثانیه به کار برده شده است.
  • در متد ProgressChanged  با استفاده از ProgressPercentage، مقداری به ProgressBar  اختصاص داده می‌شود.
  • از ProgressPercentage برای نظارت بر مقدار کار انجام شده استفاده می‌شود. این عدد به صورت درصدی محاسبه می‌شود.
  • از تابع RunWorkerAsync() برای اجرای وظیفه خاصی در پس‌زمینه استفاده می‌شود.

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

بعد از اجرای کدهای بالا خروجی به شکل زیر نمایش داده می‌شود.

نوار پیشرفت تا نصفه و به برنگ سبز پر شده است.

ساخت دکمه رادیویی

در این مسئله، دکمه رادیویی را با اپلیکیشن «Windows Forms» ایجاد کرده‌ایم. سپس کدهای آن را به زبان سی شارپ نوشتیم.

برنامه نوشته شده در بالا دکمه‌ رادیویی ایجاد کرده و روش کار آن را نشان می‌دهد.

ابتدا دکمه رادیویی را با کمک اپلیکیشن Windows Forms ایجاد کرده‌ایم. وقتی که کاربر یکی از گزینه‌ها را انتخاب می‌کند، نام حیوان مورد نظر در یک «Message Box» نمایش داده می‌شود.

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

پروژه سی شارپ برای نظارت بر فشردن دکمه ENTER

در این بخش از مطلب، برنامه‌ای را می‌نویسم که فشرده شدن دکمه «ENTER» را بررسی کند. این برنامه دکمه ENTER را زیر نظر دارد. هر وقت دکمه ENTER فشرده شد، پیغامی بر روی Message Box ظاهر شده و این مسئله را خبر رسانی می‌کند.

در این برنامه Message Box و فرم اصلی با استفاده از اپلیکیشن Windows Forms ساخته شده‌اند.

در کادر بالا،‌ کدهایی نوشته‌ایم که فشرده شدن دکمه ENTER را بر روی صفحه کلید رصد می‌کنند. در صورت بروز این اتفاق پیغامی به کاربر نمایش داده می‌شود.

  • متد textBox1_KeyUp  زمانی اجرا می‌‌شود که یکی از کلید‌های روی صفحه کلید فشرده شده و سپس رها شود.
  • پارامتر KeyEventArgs e  اطلاعات کلید فشرده شده را به بیرون برمی‌گرداند.

در این کدها از عبارت شرطی if  برای بررسی برابری بین KeyValue  و عدد ۱۳ استفاده کرده‌ایم. برقراری این شرط، به معنای آن است که دکمه ENTER فشرده شده است. اگر دکمه ENTER فشرده شده و رها شود، شرط برقرار شده و دستور درون آن برای نمایش دادن Message Box با پیغام “Enter key pressed” اجرا می‌‌شود.

فرم ساده ویندوز با دکمه و یک massage box

توجه: عدد ۱۳، کد مربوط به دکمه ENTER بر روی صفحه کلید است.

چگونه با کمک فیلم‌های فرادرس انجام پروژه سی شارپ را یاد بگیریم؟

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

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

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

پروژه سی شارپ برای مدیریت فایل‌ ها

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

  • برنامه خواندن متن با استفاده از کلاس StringReader
  • فهرست کردن تمام درایو‌های در دسترس بر روی دیسک
  • فهرست کردن تمام فایل‌های موجود در دایرکتوری
یک مستطیل سبز که با کمک فلش به سه مستطیل سبز دیگر متصل شده است.

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

در ادامه، برای هر کدام از مسائل مطرح شده در بالا، برنامه مرتبط را نوشته‌ایم.

استفاده از کلاس StringReader

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

کدهای نوشته شده در کادر بالا روش استفاده از کلاس StringReader  را نمایش می‌دهند.

  1. در اینجا از کلاس StringReader  شیئی با نام reader  ایجاد کرده‌ایم.
  2. سپس، StringReader  متن تشکیل شده از کاراکترهای رشته‌‌ای را به صورت خط به خط می‌خواند. این عملیات با همان ترتیبی انجام می‌شود که متن از بالا به پایین نوشته شده است.
  3. از حلقه while  برای بررسی خالی نبودن خط‌ها استفاده کرده‌ایم.
  4. تا زمانی که شرط «reader.ReadLine() != null»  برقرار باشد – یعنی خط خالی نباشد – دستورات درون عبارت while  به صورت تکراری اجرا می‌‌شوند.
  5. شیء reader  به توسعه‌دهندگان کمک می‌کند تا داده‌های رشته‌ای را به صورت خط به خط بخوانند. طوری که انگار داده‌های نوشته شده در فایل، خوانده می‌شود.

بعد از اجرای این برنامه خروجی به شکل زیر بر روی کنسول ظاهر می‌شود.

Line 1 : Sanfoundry
Line 2 : Offers Training and Competency
Line 3 : development programs

فهرست کردن تمام درایو‌های در دسترس بر روی دیسک

در این مثال برای فهرست کردن تمام درایو‌های در دسترس بر روی دیسک، از تابع DriveInfo.GetDrives  استفاده کرده‌ایم.

کدهای نوشته شده در کادر بالا تمام درایو‌های در دسترس بر روی دیسک را فهرست می‌کنند. روش کار این کدها را به شکل کلی در پایین توضیح داده‌ایم.

  • برای دسترسی به اطلاعات درایو‌های کامپیوتر از تابع DriveInfo.GetDrives()  استفاده کرده‌ایم.
  • سپس با استفاده از عبارت شرطی if  هر کدام از درایو‌ها را بررسی کرده و مقدار کل حافظه در دسترس برای آن‌ها را در خروجی چاپ کرده‌ایم.
یک پوشه بزرگ که چند فایل در حال وارد شدن به آن هستند.

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

Drive C:
  File type: Fixed
 Total size of drive:   119375466496 bytes

فهرست کردن فایل‌های موجود در دایرکتوری

در این مسئله می‌خواهیم برنامه‌ای بنویسیم که تمام فایل‌های موجود در دایرکتوری خاصی را نمایش دهد. به این منظور از تابع directory.getfiles()  استفاده کرده‌ایم.

کدهای نوشته شده در بالا تمام فایل‌های موجود در مسیر مشخص شده را نشان می‌دهند.

  • برای گرفتن مشخصات فایل‌های موجود در دایرکتوری مشخص شده، از تابع Directory.GetFiles()  استفاده کرده‌ایم.
  • به عنوان آدرس و به صورت دلخواه مسیر «“C:Usersm.rashidiDesktopDownloads”@»  را از کامپیوتر خودمان تعریف کردیم.
  • همین‌طور که مشخص است تابع Directory.GetFiles()  آرایه‌ای از رشته‌ها (string[]) را برمی‌گرداند. هر رشته در این آرایه، مسیر کامل یکی از فایل‌های موجود در آدرس «“C:Usersm.rashidiDesktopDownloads”@» را نشان می‌دهد.
  • سپس با استفاده از حلقه foreach  فهرست تمام فایل‌ها را یک به یک در خروجی چاپ می‌کند.

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

Files in the Directory
C:Usersm.rashidiDesktopDownloadsCSharp Installer.exe
C:Usersm.rashidiDesktopDownloadsdotnet-sdk-9.0.202-win-x64.exe
C:Usersm.rashidiDesktopDownloadspython-3.13.2-amd64.exe
C:Usersm.rashidiDesktopDownloadsVisualStudioSetup.exe
C:Usersm.rashidiDesktopDownloadsVSCodeUserSetup-x64-1.98.2.exe

جمع‌بندی

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

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

source

توسط expressjs.ir