آموزش مقدماتی زبان سی شارپ- قسمت دوم
مقالات علمی آموزش برنامه نویسی سی شارپ, انواع داده ای در سی شارپ, مثال انواع داده ای سی شارپ, معرفی انواع داده ای در سی شارپ- انواع دادهای:
برنامه نویسی فرایندی است که با دادهها کار میکند. کار با دادهها به منظور پردازش آنها نیازمند ذخیره سازی است. دادهها با توجه ماهیتشان مقدار مشخصی از حافظه را اشغال میکنند که در اینجا انواع دادهای تعریف میشود. در واقع انواع دادهای مشخص میکند که یک داده چه میزان از حافظه را بایستی در اختیار بگیرد.
نوع دادهای بولی (bool)
محاسبات کامپیوتر بر اساس جبر بول کار میکند. جبر بول بر اساس وضعیت رلههای الکترومغناطیسی پایه گذاری شد که در آن وضعیت یک رله تنها میتوانست مقدار صفر (به معنی خاموش بودن) یا یک (به معنی روشن بودن رله) داشته باشد. وقتی صحبت از نوع دادهای بولی میشود یعنی حافظهای که وضعیت صفر یا یک را نگهداری میکند (کوچکترین واحد حافظه) که فضایی به اندازه یک بیت است. برای ذخیره یک وضعیت بولی (صفر یا یک) از کلمه کلیدی bool استفاده میکنیم.
نوع دادهای کارکتری (charachter)
به حروف (مثلا حرف A)، نمادها (مثلا نماد #) و ارقام (به هر کدام از اعداد 0 تا 9) یک نویسه یا کارکتر گفته میشود که فضایی به اندازه 8 بیت یا یک بایت از حافظه را در اختیار میگیرند (در بعضی جاها دو بایت ولی بیشتر یک بایت است). برای ذخیره نویسهها در کامپیوتر از کلمه کلیدی char استفاده میکنیم.
نوع دادهای رشتهای (string)
توالی از نویسهها که در کنار هم قرار گرفتهاند و یک متن را تشکیل میدهند رشته (string) میگویند. برای ذخیره نوع رشتهای از کلمه string بهره گرفته میشود. لازم به ذکر است که برای هر نویسه دو بایت از حافظه اختصاص داده میشود.
نوع دادهای صحیح (integer)
در صورتی که بخواهیم اعداد صحیح در بازه منفی 2,147,483,648 تا مثبت 2,147,483,647 را در حافظه کامپیوتر ذخیره کنیم از کلید واژه int استفاده میکنیم که به معنی ذخیره اعداد صحیح در بازه فوق است. برای نمایش این اعداد 4 بایت یا 32 بیت از حافظه اختصاص داده شده است.
در صورتی که بخواهیم اعداد صحیح بزرگتر از بازه فوق را در کامپیوتر ذخیره یا نمایش دهیم از کلمه کلیدی long استفاده میکنیم. این کلمه کلیدی 8 بایت از حافظه را به خود اختصاص میدهد.
نمایش اعداد اعشاری یا شناور (float)
اعداد اعشاری در کامپیوتر معمولا به صورت نمایش علمی ذخیره میشوند. در روش نمایش علمی یک بیت علامت، تعدادی بیت نما و تعدادی بیت مانتیس تشکیل میشود. شکل زیر استاندارد IEEE برای نمایش اعداد اعشاری با دقت یگانه را نشان میدهد. برای ذخیره اعداد اعشاری با دقت یگانه از کلمه کلیدی float استفاده میکنیم.

در صورتی که از 64 بیت برای نمایش اعداد اعشاری استفاده کنیم به آن نمایش اعشاری با دقت مضاعف گفته میشود. شکل زیر نحوه ذخیره سازی اعداد اعشاری با دقت مضاعف در کامپیوتر را نشان میدهد. برای ذخیره اعداد اعشاری با دقت مضاعف در کامپیوتر از کلمه کلیدی double استفاده میکنیم.

جدول زیر انواع دادهای در زبان c# را معرفی نشان میدهد.

- متغیرها (variable)
برای نگهداری هر چیزی نیاز به ظرف مخصوص به آن است لذا برای نگهداری داده نیز بایستی ظرف مناسب انتخاب شود. میدانیم که دادهها در حافظه ذخیره میشوند. لذا ظرف نگهداری داده حافظه است. دادهها انواع مختلفی دارند (همان طور که توضیح داده شد) و این که برای هر نوع چقدر از حافظه را اختصصاص دهیم بستگی به ماهیت داده دارد که در این جا مسئله انواع دادهای مطرح میشود و در همه زمانهای برنامه نویسی وجود دارد.
همان طور که اشاره شد، دادهها در حافظه ذخیره میشوند. برای این که به دادههای ذخیره شده در حافظه دسترسی پیدا کنیم از مفهومی به نام متغیر استفاده میکنیم. متغیر انتزاعی از خانههای حافظه است (یعنی یک پنجره به یک بخشی از حافظه ایجاد میکند) که دارای 6 ویژگی زیر است.
- نام: یک متغیر در برنامه هدفی را دنبال میکند، لذا میتوان آن را به عنوان یک موجودیت تعریف نمود (چیزی که دارای وجود مجازی است، یعنی از خود فعل و انفعالی انجام میدهد). هر موجودیت برای این که از بین موجودیتهای دیگر تمیز شود و به راحتی شناسایی شود نیاز به یک نام دارد. از طریق نام یا شناسه میتوانیم دقیقا به همان موجودیت دسترسی یابیم و حتی هدف آن را به راحتی درک کنیم. به عنوان نمونه، اگر نام یک متغیر Maximum(به معنی بیشترین یا بیشینه) باشد، میتوانیم حدس بزنیم که هدف این متغیر ذخیره یک مقدار بیشنه از بین مجموعهای از مقادیر است.
- آدرس: حافظه مانند یک خانه آپارتمانی است که در هر واحد تعدادی زندگی میکنند. همان طور که هر واحد از آپارتمان دارای یک کد پستی (کد پستی آدرس خانه را به صورت عددی نشان میدهد) است، هر خانه از حافظه نیز یک آدرس دارد که از طریق آن آدرس به آن خانه و محتوای موجود در آن دسترسی مییابیم. توجه کنید که در زبانهای برنامه نویسی سطح بالا (مانند زبان c#) آدرس متغیر توسط برنامه نویس قابل مشاهده نیست. در واقع هنگامی که کاربر برای متغیر یک نام مشخص میکند، کامپایلر (برنامهای که زبان برنامه نویسی سطح بالا را به زبان ماشین تبدیل میکند) نام متغیر را به یک آدرس از حافظه نگاشت میدهد و در هر جای برنامه که آن نام صدا زده شد، به آن آدرس از حافظه مراجعه میکند.
- مقدار: همان طور که در یک واحد از آپارتمان انسانهای مختلفی زندگی میکنند، در حافظه نیز دادهها سکونت دارند. متغیر مانند یک واحد از آپارتمان است و هدف آن نگهداری داده (یا مقدار) است. این مقادیر در حافظه میتوانند ثابت یا متغیر باشند. در صورتی که مقدار یک متغیر ثابت باشد (با کلمه کلیدی const مشخص میشود) مقدار آن در طول اجرای برنامه قابل تغییر نیست و همواره به یک مقدار مشخصی اشاره میکند. در صورتی که مقدار متغیر باشد، در طول برنامه آن آدرس از حافظه که متغیر به آن اشاره دارد ممکن است مقادیر مختلفی به خود بگیرد.
- نوع: این ویژگی از متغیر مشخص میکند که یک متغیر چقدر از حافظه را در اختیار گرفته و چه نوع دادهای را نگه میدارد.
- طول عمر: هر چیزی طول عمر مشخصی دارد و هدف خاصی دنبال میکند. متغیرها نیز دائمی نیستند و بایستی آن خانه از حافظه را که مدتها اشغال کرده بودند را ترک کنند. به مدت زمانی که یک متغیر خانهای از حافظه را در اختیار میگیرد تا آن را آزاد میکند، طول عمر متغیر گفته میشود.
- محدوده عمل: متغیرها با توجه به هدفشان در بخش خاصی از برنامه قابل مشاهده و استفاده هستند و خارج از آن دیگر نمیتوان از آنها استفاده کرد.
اگر یک متغیر برای تمام بخشهای برنامه قابل مشاهده و استفاده باشد، به آن متغیر سراسری و اگر برای یک محدوده خاص قابل استفاده باشد به آن متغیر محلی گفته میشود.
مثال: هر کدام از دستورات زیر در کامپیوتر به چه معنا است؟
| توضیحات مربوط به هر دستور | دستورات در زبان سی شارپ |
| یک متغیر به نام myGrade از نوع دادهای کارکتر (char) با مقدار اولیه B ایجاد شده است. | Char myGrade = ‘B’; |
| یک متغیر به نام myNum از نوع دادهای اعشاری دقت یگانه (float) با مقدار اولیه 75/5 ایجاد شده است. توجه کنید که پایان اعداد اعشاری از نوع float باید F و از نوع double باید D نوشته شود. | Float myNum = 5.75F; |
| یک متغیر به نام myNum از نوع دادهای اعشاری دقت مضاعف (double) با مقدار اولیه 99/19 ایجاد شده است. | Double myNum = 19.99D; |
| یک متغیر به نام greeting از نوع دادهای رشتهای (greeting) با مقدار اولیه “Hello World” ایجاد شده است. | String greeting = “Hello World”; |
| متغیری به نام isCSharpFun از نوع دادهای بولی (bool) با مقدار اولیه true (یعنی یک بیت از حافظه که به این متغیر اختصاص داده شده مقدار آن یک میشود اما اگر مقدار آن false بود، آن بیت از حافظه مقدار صفر میشد) ایجاد شده است. | Bool isCSharpFun = true; |
| یک ثابت به نام myNum از نوع صحیح (int) با مقدار 15 ایجاد شده است. توجه شود چون اینجا یک متغیر از نوع ثابت تعریف شده است نمیتوانیم در طول اجرای برنامه مقدار آن را تغییر دهیم لذا دستور دوم که مقدار 20 را به متغیر انتساب میدهد با خطا مواجه میشود. | Const int myNum = 15; myNum = 20; // error |
تمرین: نوع دادهای متغیرهای شکل زیر را مشخص کنید.

