درس سوم: نوع داده ها
درس سوم: نوع داده ها
3-1 مقدمه
در هر برنامه با انواع داده مواجه میشویم. مثلا اعداد، کاراکترها و غیره. در ویژوال بیسیک، داده ها میتوانند به سه حالت متغیر، ثابت و آرایه ذخیره شوند. به طوری که متغیرها قابل تغییرند، ثابتها تغییر ناپذیر و آرایه ها نیز لیستی از داده ها هستند.
3-2 انواع داده
در ویژوال بیسیک، داده ها را به دو دسته ی کلی تقسیم میکنیم. داده های عددی و داده های غیر عددی.
3-2-1 انواع داده های عددی (Numeric Data)
داده های عددی داده هایی هستند که از جنس اعدادند و میتوان بر روی آنان عملیات ریاضی انجام داد. در ویژوال بیسیک داده های عددی به هفت نوع تقسیم میشوند. دلیل این تقسیم بندی این است که هنگام کار با داده ها، باید فضایی برای هر متغیر یا آرایه و یا ثابت، بر روی حافظه رزرو شود. اگر فقط نوع داده ی عددی ای استفاده میشد که رنج کوچکی از اعداد را پوشش میداد، ممکن بود اعدادی به عنوان داده در برنامه نیاز باشند که در بازه جای نگیرند و اگر فقط از نوع داده عددی استفاده میشد که رنج بسیار بزرگی از اعداد را پوشش میداد، هر بار حجم عظیمی از حافظه حتی برای اعدادی بسیار کوچک اشغال میشد و این بهینه نیست. در موقع برنامه نویسی، هنگامی که نیاز به اعداد خیلی بزرگ نباشد، از نوع داده های عددی که حافظه ی کمتری اشغال میکنند استفاده میکنیم. و اگر نیاز به اعداد اعشاری یا اعدادی بزرگ تر بود، از انواع دیگر در کدنویسی استفاده میشود. در جدول 1-3 انواع داده های عددی در ویژوال بیسیک دات نت 2015 را مشاهده می کنید:
جدول 1-3
بازه ی پوشش |
میزان حافظه ی مصرفی |
نوع داده |
0 to 255 |
1 Byte |
Byte |
-32,768 to 32,767 |
2 Bytes |
Integer |
-2,147,483,648 to 2,147,483,648 |
4 Bytes |
Long |
-3.402823E+38 to -1.401298E-45 for negative values 1.401298E-45 to 3.402823E+38 for positive values. |
4 Bytes |
Single |
-1.79769313486232e+308 to -4.94065645841247E-324 for negative values 4.94065645841247E-324 to 1.79769313486232e+308 for positive values. |
8 Bytes |
Double |
-922,337,203,685,477.5808 to 922,337,203,685,477.5807 |
8 Bytes |
Currency |
+/- 79,228,162,514,264,337,593,543,950,335 if no decimal is use +/- 7.9228162514264337593543950335 (28 decimal places). |
12 Bytes |
Decimal |
نوع داده ی Byte به علت اینکه بازه ی بیش از حد کوچکی را پوشش میدهد معمولا استفاده نمیشود. نوع داده های Integer و Long هر دو اعداد صحیح و غیر اعشاری را پوشش میدهند. با این تفاوت که بازه ی Long بسیار بزرگتر از integer است. اما در بسیاری موارد، بازه ای که integer پوشش میدهد برای کار کفایت میکند. به همین علت، Integer پر کاربردترین نوع داده ی عددی است.
نوع داده های Single و Double هم هریک اعداد اعشاری را پوشش میدهند. با این تفاوت که بازه ی Double بسیار بزرگ تر است.
Currency برای داده هایی که با واحد شمارش پول سر و کار دارند بسیار مناسب است.
نوع داده ی Decimal در ویژوال بیسیک 2015 بزرگ ترین بازه ی عدد را دارد و بیشترین حافظه را نیز اشغال میکند. این نوع داده تقریبا تمام اعدادی که ممکن است در برنامه نیاز شوند را پوشش میدهد.
3-2-2 : انواع داده های غیر عددی (non-Numeric Data)
هر نوع داده ای که قابل عملیات ریاضی نباشد داده ی غیر عددی محسوب میشود. مانند رشته های کاراکتری، تاریخ ها، داده های بولین (که بعدها در مورد آن ها توضیح خواهم داد) و غیره. در جدول 3-2 انواع داده ی غیر عددی را میبینید.
جدول 2-3
بازه ی پوشش |
میزان مصرف حافظه |
نوع داده |
1 to 65,400 characters |
Length of string |
String |
January 1, 100 to December 31, 9999 |
8 bytes |
Date |
True or False |
2 bytes |
Boolean |
Any embedded object |
4 bytes |
Object |
Any value as large as Double |
16 bytes |
Variant(numberic) |
Same as variable-length string |
Length + 22 bytes |
Variant(text) |
3-3 تعریف متغیر ها
وقتی در برنامه بخواهید یک نام از کاربر دریافت کنید، یا روی اعدادی محاسبات ریاضی انجام دهید و نتیجه را جایی ذخیره کنید یا وقتی از کاربر رمز عبور درخواست میکنید، تمام این اطلاعات باید در متغیرهایی ذخیره شوند تا در ادامه ی برنامه قابل دسترسی و در صورت لزوم قابل تغییر باشند. هر متغیر بسته به نوع خود، حجمی از حافظه را رزرو میکند و شما میتوانید داده خود را در داخل آن ذخیره کنید. تعریف متغیرها در برنامه نویسی معمولا وجود دارند. کمتر پیش می آید که برنامه ای نوشته شود و در آن متغیر تعریف نگردد. اگر درسهای قبل را به خاطر آورید، حتما متوجه شدید که در دو برنامه ای که ما مثال زدیم، متغیری تعریف نمیشد و نیازی هم به این کار نبود.
3-3-1 کلمه تعریف
در ویژوال بیسیک برای تعریف متغیر باید از کلمات کلیدی مخصوص این کار یعنی کلمات تعریف استفاده کنیم. در ویژوال بیسیک، چهار نوع کلمه ی تعریف داریم: Dim, Static, Public, Private
نحوه ی تعریف متغیر در ویژوال بیسیک به شکل زیر است:
Keyword variable_name As Datatype
نحوه ی کار به این صورت است که ابتدا کلمه تعریف ، سپس نام دلخواه متغیر، بعد کلمه ی کلیدی AS و در نهایت نوع داده ی مورد نظر را وارد میکنیم.
3-3-1-1 Dim
این کلمه ی تعریف بیشترین کاربرد را در ویژوال بیسیک برای تعریف متغیرها دارد. ما هم بیشتر با همین کلمه کار خواهیم کرد. باید توجه داشت متغیرهایی که با این کلمه تعریف میشوند، فقط در داخل هر بلاک وجود دارند و خارج بلاک دیگر قابل دسترسی نیستند.
Syntax: Dim variableName As Datatype
Example:
Dim x As Integer
3-3-1-2 Static
این کلمه تعریف بسیار شبیه به Dim است و مانند آن فقط در بلاک یا ماژول خودش قابل دستیابی ست و نه در خارج آن. با این تفاوت که Static برخلاف Dim بعد از پایان کار تابع از بین نمی رود.
Syntax: Static variableName As Datatype
Example:
Static x As Integer
3-3-1-3 Public
این دستور، متغیر را برای تمام برنامه قابل دستیابی میکند و برخلاف کلمات تعریف دیگر، متغیرهایی که با این کلمه تعریف شوند، محلی نبوده و محدود به بلاک یا ماژول خودشان نیستند.
Syntax: Public variableName As Datatype
Example:
Public x As Integer
3-3-1-4 Private
این کلمه معمولا استفاده نمیشود. اما برای تکمیل کردن آموزش سینتکس آن را در ذیل مشاهده میکنید:
Syntax: Private variableName As Datatype
Example:
Private x As Integer
میتوان عمل تعریف برای چندین متغیر از یک نوع را به صورت یک جا و در یک خط انجام داد یعنی :
Dim a, b, c As Integer
عملا با کد زیر برابر است:
Dim a As Integer
Dim b As Integer
Dim c As Integer
همچنین میتوان عمل تعریف متغیرهایی با نوع داده های مختلف به صورت یکجا و در یک خط انجام داد یعنی:
Dim x As Integer, y As Single, z As String
عملا با کد زیر برابر است:
Dim x As Integer
Dim y As Single
Dim z As String
تصمیم با خود برنامه نویس است که از چه روشی استفاده کند.
3-3-2 قوانین نام گذاری متغیرها
برای انتخاب نام یک متغیر، باید به چند نکته توجه داشت:
- نام متغیر نباید با اعداد شروع شود.
- نام متغیر نباید از 255 کاراکتر بیشتر باشد.
- نام متغیر نباید شامل فاصله ی خالی یا همان Space باشد.
- استفاده از کلمات کلیدی به عنوان نام متغیر ممنوع است.
- استفاده از نام توابع به عنوان نام متغیر ممنوع است.
3-3-3 انتساب داده به متغیر ها
برای انتساب داده به متغیر در زمان کدنویسی، دو راه وجود دارد.
یک روش این است که داده را همان موقع تعریف متغیر به ان نسبت دهیم. یعنی میتوان نوشت:
Dim X as Integer = 35
روش دوم این است که داده را به صورت جداگانه و در خطی دیگر به متغیر نسبت دهیم یعنی میتوان نوشت:
Dim X as Integer X = 35
هر دو کد بالا یکسان و برابر هستند و شما خودتان تصمیم بگیرید که چطور عمل انتساب را انجام دهید.
اما گاهی ما مقدار یک متغیر را نمیدانیم و این مقدار، نه در زمان کدنویسی بلکه باید در زمان اجرا و توسط کاربر وارد شوند و سپس در متغیر قرار گیرند. مثلا وقتی کاربر یک رمز عبور باید وارد کند. یا نام خودش را از طریق صفحه کلید وارد کند. گرفتن داده در زمان اجرا به تفصیل شرح داده خواهد شد.
انتساب داده های رشته ای (String) یا داده های غیر رشته ای در یک نکته کوچک تفاوت دارد. برای انتساب کاراکتر ها و رشته های حروف، باید از علامت کوتیشن (‘تک کوتیشن’ یا “دابل کوتیشن”) استفاده کرد. در شرایطی که برای دیگر انواع داده ها این کار احتیاجی نیست. به مثال های زیر توجه کنید:
Dim x As Double = 75
Dim fName As String = “Ali Reza” Dim City As String = ‘Karaj’ , Height As Single = 1.80
3-3-4 قانون انتساب به متغیرها
باید توجه داشت، زمانی که شما یک متغیر از نوع عددی تعریف میکنید نمیتوانید به آن یک رشته از کاراکترها نسبت دهید. و به طبع زمانی که یک متغیر از نوع رشته تعریف شود، نمیتوان به آن عدد نسبت داد. این موضوع برای انواع دیگر داده ها هم صدق میکند. مثلا داده های بولین رشته را نمیپذیرند و غیره... یعنی کد زیر غلط است:
Dim X as integer
X = “Test”
Msgbox(x)
همچنین کد زیر غلط میباشد:
Dim Wrong as string
Wrong = 32
Msgbox(Wrong)
در مثال اول، به یک متغیر از نوع اینتیجر یک کلمه نسبت دادیم و سعی کردیم محتویات متغیر X را چاپ کنیم. در مثال بعدی هم به متغیری از نوع رشته ای یک عدد نسبت دادیم و بعد سعی کردیم محتویات Wrong را چاپ کنیم. در هر دو صورت، با پیغام خطایی مشابه شکل 1-3 مواجه خواهیم شد.
شکل 1-3 : پیغام خطای عدم تطابق Datatype و Value
3-4 تعریف ثابتها
ثابتها دقیقا مانند یک متغیر عمل میکنند. یعنی ثابتها هم بر اساس نوع داده میزانی از حافظه را رزرو میکنند. قوانین نام گذاری و انتساب برای ثابتها هم صادق است. با این تفاوت که ثابت ها در طول اجرای برنامه قابل تغییر نیستند. همچنین برای تعریف ثابتها فقط باید از یک کلمه ی تعریف مخصوص به نام Const استفاده کرد:
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click Const Pi As Single = 3.14 Dim rad As Single = 6 Dim masahat As Single masahat = Pi * (r ^ 2) MsgBox(“Masahat e yek dayere ba r=6 barabar ast ba: ” & masahat) End Sub
تمرین: عبارت This is a very simple VB.Net code را در متغیری ریخته و آن متغیر را با استفاده از تابع Msgbox در خروجی نمایش دهید.