loading...
طراحی وب- برنامه نویسی
برنامه نویس بازدید : 25 دوشنبه 31 تیر 1398 نظرات (0)

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

مقدمه

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

داده‌ها در زبان برنامه نویسی سی شارپ به در دو حالت کلی ذخیره می‌شوند: ثابت و متغییر تقسیم‌بندی می‌شوند.

داده‌های ثابت: به داده‌های گفته می‌شود که در طول اجرای برنامه همواره یک مقدار ثابت را در خود ذخیره می‌کنند.

داده‌ها متغییر: به داده‌هایی گفته می‌شود که در طول اجرای برنامه مقادیر مختلفی را می‌پذیرند.

حال نوع داده‌های ثابت و متغییر تعیین می‌کنند که چه فضایی از سیستم را برای ذخیره مقادیر اشغال کنند.

تعریف متغییر

برای تعریف متغییر در زبان سی شارپ باید ابتدا نوع متغییر را نوشته و سپس عنوان متغییر را به صورت camelCase (یعنی اولین حرف متغییر کلمه کوچک و سایر حروف بخش های دیگر آن به صورت کلمه بزرگ باشد). سپس یک علامت مساوی = قرار داده و در نهایت مقداری که می‌خواهیم درون متغییر ذخیره شود را بنویسیم. بنابراین در حالت کلی داریم:

 

انواع داده متغییر

byte: این نوع داده‌ی عددی فضایی معادل ۸ بیت را اشغال می‌کند و اعداد صحیح مثبت بین ۰ تا ۲۵۵± را در خود جای می‌دهد.

sbyte: این نوع داده‌ی عددی فضایی معادل ۸ بیت را اشغال می‌کند و اعداد صحیح مثبت و منفی بین ۱۲۸- تا ۱۲۷ را در خود جای می‌دهد.

short: این نوع داده عددی فضایی معادل ۱۶ بیت را اشغال کرده و اعداد صحیح مثبت و منفی در بازه‌ی بین ۳۲۷۶۸- تا ۳۲۷۶۷ را در خود ذخیره می‌کند.

ushort: این نوع داده عددی فضایی معادل ۱۶ بیت را اشغال کرده و اعداد صحیح مثبت در بازه‌ی بین ۰ تا ۶۵۵۳۵± را در خود ذخیره می‌کند.

int:  این نوع داده عددی فضایی معادل ۳۲ بیت را اشغال کرده و اعداد صحیح مثبت و منفی در بازه‌ی بین ۲۱۴۷۴۸۳۶۴۸- تا ۲۱۴۷۴۸۳۶۴۸+ (حدود مثبت منفی ۲۰۰۰۰۰۰۰۰۰ دو میلیارد) را در خود ذخیره می‌کند.

uint: این نوع داده عددی فضایی معادل ۳۲ بیت را اشغال کرده و اعداد صحیح مثبت در بازه‌ی بین ۰ تا ۴۲۹۴۹۶۷۲۹۵± (حدود ۴۰۰۰۰۰۰۰۰۰ چهار میلیارد) را در خود ذخیره می‌کند.

long:  این نوع داده عددی فضایی معادل ۶۴ بیت را اشغال کرده و اعداد صحیح مثبت و منفی در بازه‌ی بین ۹۲۲۳۳۷۲۰۳۶۸۵۴۷۷۵۸۰۸- تا ۹۲۲۳۳۷۲۰۳۶۸۵۴۷۷۵۸۰۷+ را در خود ذخیره می‌کند.

ulong: این نوع داده عددی فضایی معادل ۶۴ بیت را اشغال کرده و اعداد صحیح مثبت در بازه‌ی بین ۰ تا ۱۸۴۴۶۷۴۴۰۷۳۷۰۹۵۵۱۶۱۵ را در خود ذخیره می‌کند.

float: این نوع داده‌ی عددی فضایی معادل ۳۲ بیت را اشغال کرده و اعداد اعشاری مثبت و منفی در بازه‌ی بین ۳.۴۰۲۸۲۳e۳۸- تا ۳.۴۰۲۸۲۳e۳۸- را درون خود ذخیره می‌کند.

double: این نوع داده‌ی عددی فضایی معادل ۶۴ بیت را اشغال کرده و اعداد اعشاری مثبت و منفی در بازه‌ی بین ۱.۷۹۷۶۹۳۱۳۴۸۶۲۳۲e۳۰۸- تا ۱.۷۹۷۶۹۳۱۳۴۸۶۲۳۲e۳۰۸+ را درون خود ذخیره می‌کند. همچنین با استفاده از این نوع داده مقدار اعشاری به صورت اتوماتیک رند می‌شود.

decimal: این نوع داده‌ی عددی فضایی معادل ۱۲۸ بیت را اشغال کرده و اعداد اعشاری مثبت و منفی در بازه‌ی بین  ۱۰e-۲ × ۱.۰ ± تا ۱۰e۲۸ × ۷.۹ ± را درون خود ذخیره می‌کند.

تفاوت بین نوع داده‌ی float و double و decimal:

توجه: داده‌های عددی float و double معمولا برای اندازه گیری مقادیری که دقت در آنها معیار نیست مورد استفاده قرار می‌گیرند. مثلا فاصله، مسافت و … اما داده‌ی عددی decimal برای حالتی که دقت عددی مدنظر می‌باشد بکار گرفته خواهد شد مثل واحد پول، محاسبات حسابداری و …

char: این نوع داده‌ی رشته‌ای فضایی معادل ۱۶ بیت را اشغال کرده و تمام کاراکترهای یونیکد را درون خود ذخیره می‌کند.

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

bool: این نوع داده‌ی باینری فضایی معادل ۸ بیت را اشغال کرده و معمولا برای عبارتهای درست و غلط یا ۰ و ۱ مورد استفاده قرار می‌گیرد.

object: این نوع داده بر اساس مقداری که برابر آن قرار می‌گیرد نوع عددی، رشته‌ای یا باینری را می‌تواند در خود ذخیره کند. به عبارتی نوع داده object تمام مقادیر و عبارتها را می‌تواند در خود ذخیره کند.

در مجموعه دستورهای زیر مثالی از هر یک از این داده‌ها ارائه شده است:

فرض کنید میخواهید یک داده با مقدار ۱۰ را درون یک متغییر ذخیره کنید. این متغییر باید یک نوع داشته باشد تا مقدار عددی ۱۰ را درون خود ذخیره کند. کمترین مقدار نوع داده عددی byte است که فضایی معادل ۸ بیت از سیستم را اشغال می‌کند. حال اگر ما مثلا نوع داده‌ی long را برای ذخیره‌ی عدد ۱۰ انتخاب کنیم، چیزی جز یک فاجعه اتفاق نمی‌افتد. چون شما برای ذخیره کردن عدد ۱۰ فضایی را که عددی معادل ۲۰۰۰۰۰۰ اشغال می‌کند، از سیستم خود گرفته‌اید. بنابراین تعیین نوع داده بسیار حیاتی بوده و روی عملکرد نرم افزار شما تاثیر بسزایی می‌گذارد.

نوع داده‌ی ثابت یا Constant

برای تعریف یک نوع داده‌ی ثابت که تنها یک مقدار را به خود اختصاص می‌دهد کافی‌ست عبارت const را در پشت نام ثابت قرار دهیم:

const int a = 100;

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

Implicit Casting

قبل از ورود به بخش بعدی معرفی داده، بهتر است از عبارتی تحت عنوان کستینگ (فرم‌دهی) استفاده کرده و آن را معرفی کنیم. کستینگ به معنای فرم دهی و شکل دادن به نوع داده‌هاست یک مثال خیلی واضح را مطرح می‌کنیم:

در مجموعه کد فوق ما عبارت b را برابر a قرار دادیم و با خطایی مواجه نشدیم ولی وقتی عبارت a را برابر با b قرار می‌دهیم کامپایلر خطا می‌دهد. زیرا نوع داده‌ی a بزرگتر از داده‌ی b است و انتساب به درستی صورت نگرفته است. این دقیقا معادل این مثال است: می‌خواهیم یک پارچ آب را درون یک لیوان بریزیم. اگر اینکار را انجام دهیم سرریز صورت گرفته و این خطاست. ولی می‌توان یک لیوان آب را درون یک پارچ ریخت و مشکلی پیش نمی‌آید.

بنابراین تبدیل انواع داده‌ها به صورت Implicit‌ (درونی یا نامحسوس) به صورت زیر است:

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

همانطور که ملاحظه می‌کنید در این روش داده‌ی long به نوع داده‌ی int تبدیل شد. یعنی با قرار دادن نوع داده در پرانتز قبل از داده‌ی اصلی، نوع جدیدی بوجود می‌آید. به این روش تبدیل واضح یا صریح (Explicit Conversion) گفته می‌شود. تبدیل انواع داده‌ها به صورت explicit در جدول زیر آمده است:

 

نوع داده‌ی Enumeration ( شمارشی)

از این نوع داده معمولا برای شمارش متغییرها استفاده می‌کنیم یعنی اگر یک داده‌ای از نوع enum تعریف شود قابل شمارش می‌باشد. این شمارنده از ۰ شروع شده و تا انتهای یک داده شروع به شمارش می‌کند. این داده معمولا به صورت زیر تعریف می‌شود:

همچنین می‌توان به نوع داده‌ی شمارشی مقادیری را نسبت داد تا نوع شمارشی و ترتیب آنها بر اساس آن مقادیر تعیین شود.

 

تعریف مسیر فایل‌ها به صورت داده‌ی رشته‌ای

برای تعریف مسیر فایل ها که معمولا به صورت \\\\FileShare\\Directory\\file.txt می‌باشد کامپایلر خطا می‌دهد یعنی ما نمی‌توانیم یک مسیر را به یک رشته به صورت فوق نمایش دهیم بنابراین مطابق ذیل از یک علامت @ برای جلوگیری از بروز خطای احتمالی که معادل دستور “t\” برای tab یا “\” به عنوان بک‌اسلش است استفاده می‌کنیم:

 

نوع داده‌ی Nullable

در زبان برنامه‌نویسی سی شارپ یک نوع داده‌ی خاص به نام نوع nullable وجود دارد که شما می‌توانید به آنها مقدار null را اختصاص دهید. برای مثال شما می‌توانید هر مقداری در بازه‌ی ۲۱۴۷۴۸۳۶۴۸- تا ۲۱۴۷۴۸۳۶۴۷ یا null را درون یک متغییر Nullable<Int32> قرار دهید. مثال دیگری را خدمت شما عزیزان مطرح می‌کنیم. فرض کنید می‌خواهید متغییر باینری را تعریف کرده و مقدار null را به آن اختصاص دهید در اینصورت می‌توان یک متغییر Nullable<bool> تعریف کرد. در حالت کلی ساختار نوع داده‌ی Nullable به صورت زیر است:

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

در نوع داده‌ی Null یک عملگر وجود دارد که به عملگر تلفیق معروف بوده و با علامت ?? معرفی می‌شود. این عملگر زمانی که بین دو داده بکار گرفته شود بدین صورت عمل می‌کند که اگر داده‌ی اول null بود داده‌ی دوم را نمایش می‌دهد و بالعکس. برای روشن تر شدن این موضوع مثال زیر را باهم بررسی می‌کنیم:

همانطور که ملاحظه می‌کنید داده‌ی اول num1 مقداری برابر null دارد در داده‌ی سوم num3 از عملگر ?? استفاده شده است. یعنی بررسی می‌کند اگر داده‌ی اول مقداری برابر null داشته باشد مقدار بعد از عملگر را نمایش می‌دهد. این موضوع برای داده‌ی num2 نیز صادق است. خروجی این مثال به صورت زیر خواهد بود:

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

 

منبع: روکسو

ارسال نظر برای این مطلب

کد امنیتی رفرش
اطلاعات کاربری
  • فراموشی رمز عبور؟
  • آرشیو
    آمار سایت
  • کل مطالب : 346
  • کل نظرات : 0
  • افراد آنلاین : 1
  • تعداد اعضا : 0
  • آی پی امروز : 22
  • آی پی دیروز : 17
  • بازدید امروز : 146
  • باردید دیروز : 21
  • گوگل امروز : 2
  • گوگل دیروز : 5
  • بازدید هفته : 220
  • بازدید ماه : 585
  • بازدید سال : 7,094
  • بازدید کلی : 35,329