انواع متغیرها:
متغیرها در ویژوال بیسیک به دو دسته عددی و غیر عددی تقسیم بندی می شوند. داده های عددی نیز خود به دو گروه صحیح و اعشاری تقسیم می شوند. داده های غیر عددی شامل داده های منطقی ، رشته ای ، تاریخ و زمان و شیء می باشند ، که هر کدام را به اختصار توضیح می دهیم.
الف) متغیرهای عددی :
در زیر جدولی از این نوع برحسب میزان حافظه اشغالی مرتب شده اند، که دانستن آن برای پیشروی در آموختن لازم است:
باره قابل قبول
نوع متغیر
۰ تا ۲۵۵
Byte
۳۲۷۶۷- تا ۳۲۷۶۸
Integer
۲۱۴۷۴۸۳۶۷- تا ۲۱۴۷۴۸۳۶۴۸
Long
تمام متغیرهایی که از یکی از این سه نوع تعریف شوند فقط پذیرای اعداد صحیح خواهند بود. اگر یک عدد اعشاری به این نوع متغیرها نسبت داده شود فقط قسمت صحیح عدد در متغیر قرار می گیرد.
انواع متغیرهای اعشاری هم به این صورت هستند:
بازه قابل قبول
نوع متغیر
گستره وسیعی با ۶ رقم اعشار
Single
گستره وسیعی با ۱۴ رقم اعشار
Double
۴ رقم اعشار
Currency
نکته: توجه نمایید که نوع Currency بیشتر برای محاسبات مالی و اداری استفاده می شود.
ب ) متغیر رشته ای :
در نوشتن اکثر برنامه ها نیاز به متغیرهایی خواهد شد که حروف و کلماتی مثل نام افراد را نگهداری کنند. در ویژوال بیسیک این کار به عهده متغیرهایی هستند که از نوع String تعریف شوند.
ج ) متغیرهای دو مقداری ( منطقی ) :
گاهی متغیری لازم است که بتواند یکی از دو مقدار True یا False ( همان صفر و یک، یا درست و نادرست) را در خود نگهداری کند. این نوع در برنامه با کلمه کلیدی Boolean مشخص می شود. در ادامه با این متغیرها بیشتر آشنا خواهید شد.
د ) نوع تاریخ و زمان :
توضیح خاصی ندارد! فقط به یاد داشته باشید که با کلمه کلیدی Date مشخص می شود. همانگونه که از نام آن پیداست، برای کار با زمان و تاریخ کاربرد دارد.
ه ) نوع Variant:
این نوع می تواند انواع متغیرهای بالا را در خود جای دهد! یعنی در یک قسمت می تواند عدد باشد، و در قسمت دیگر رشته، و . . . !! البته بر خلاف گستردگی ظاهریش چندان پر کاربرد نیست.
تعریف متغیرها:
برای تعریف متغیر - و یا در واقع اعلان نوع آن - از ساختار زیر استفاده می کنیم:
Dim نام متغیر As نوع متغیر
به مثال های زیر توجه کنید:
Dim x As Double
Dim n , m As Integer
Dim fname , str1 , str2 As String * 10
دستور اول x را از نوع اعشاری double تعریف می کند.
در دستور دوم دو متغیر m و n از نوع صحیح integer تعریف می شوند (به علامت , بین دو متغیر توجه کنید).
در سطر سوم str1 ، fname و str2 هر سه از نوع String تعریف می شوند. با این تفاوت که رشته str2 حداکثر می تواند ۱۰ کاراکتر بپذیرد.
نکته بسیار مهم: در حقیقت تعریف کردن متغیرها در زبان ویژوال بیسیک باعث جلوگیری از بروز خطا وکمتر مصرف شدن حافظه می شود، و شما می توانید بدون این که متغیرها را تعریف کنید از آنها استفاده نمایید. اگر چه این امر بر وفق مراد تازه کاران است، ولی بهتر است در برنامه متغیرها را تعریف، و سپس استفاده کنید. یکی از مزایای این کار این است که اگر در برنامه ای نام متغیری را اشتباه تایپ کنید هنگام اجرای آن خطای عدم شناسایی متغیر دریافت می کنید. در صورتی که قصد دارید همواره از قاعده تعریف قبل از استفاده را به کار ببرید، کافی است عبارت Option Explicit را قبل از همه کدهای برنامه تایپ کنید.
برای مقدار دهی به متغیرهای تعریف شده دو روش وجود دارد: با دستورات انتساب - که با علامت = انجام می پذیرد - ، و با دستورات ورودی.
ما با دستور = به متغیرهای عددی که در بالا تعریف شده اند مقدار می دهیم:
x = -21.2
n = x
m = ( n + 2 ) * 3 ^ 2 / 5
fname = "ali"
در دستور اول عدد اعشاری 21.2- در x قرار می گیرد. دستور مقدار 21- را در n قرار می دهد.( چرا که n از نوع صحیح تعریف شده است.) مقدار m هم بر اساس تقدم عملگرها تعیین می شود. ترتیب این تقدم به صورت زیر است:
· ( ) : عبارتهای داخل جفت پرانتز بیشترین تقدم رو دارند.
· ^ : توان ریاضی
· * و / : ضرب و تقسیم اعشاری
· \ : تقسیم صحیح (یعنی حاصل این تقسیم همیشه عدد صحیح می باشد.)
· Mod : باقیمانده تقسیم را می دهد. مثلا در عبارت x = 15 Mod 2 مقدار x برابر 1 می شود.
· – و + : جمع و تفریق معمولی
بر اساس مطالب فوق مقدار m به این صورت محاسبه می شود:
m = ( -21 + 2 ) * 3 ^ 2 / 5 = -19 * 3 ^ 2 / 5 = -19 * 9 / 5 = -171 / 5 = -34.2
آخرین دستور کلمه ali را در متغیر رشته ای fname قرار می دهد. اما چرا ali داخل جفت گیومه قرار گرفته؟ عیارت زیر چرا درست عمل نمی کند؟
fname = ali
دو حالت مختلف را بررسی می کنیم:
اول: در ابتدای کدها از Option Explicit استفاده شده است. در این صورت برنامه به دنبال متغری با نام ali می گردد.
دوم: در ابتدای کدها از Option Explicit استفاده نشده است. در این صورت برنامه فرض می کند ali متغیری است رشته ای، و - چون هیچ مقدار خاصی ندارد - رشته تهی در fname قرار می گیرد.
هر دوی این حالتها برخلاف انتظار ماست. لذا برای جلوگیری از چنین اشتباهاتی در ویژوال بیسیک رشته ها (دقت کنید که رشته ها، نه متغیرهای رشته ای) درون " " قرار می گیرند.
حال به عبارات زیر توجه کنید:
str1 = ”Visual “ + ”Basic”
str2 = str1
str1 = 1 + 3
fname = str1 + ” is an integer number”
در دستور اول دو رشته داخل گیومه با هم الحاق شده ، و رشته “Visual Basic” درون str1 قرار می گیرد. با دستور & نیز می توان همانند + دو رشته را به هم متصل نمود.
در دستور دوم محتویات متغیر str1 جایگزین محتویات str2 می شود. اما با توجه به اینکه str2 حداکثر گنجایش ۱۰ کاراکتر را دارد، تنها عبارت "Visual Bas" در آن قرار می گیرد.
در خط سوم سمت راست عملگر انتساب یک عدد صحیح، و سمت چپ یک رشته است. اما چون مقدار سمت راست در متغیر سمت چپ قرار داده می شود - که از نوع رشته ای است - مقدار عددی ۴ به مقدار رشته ای ۴ تبدیل می شود. یعنی:
str1 = "4"
توجه داشته باشید که دو عبارت زیر با هم تفاوت دارند:
str1 = 1 + 3
str1 = "1 + 3"
بر اساس توضیحات فوق در نهایت مقدار متغیر fname به صورت زیر خواهد یود:
fname = str1 + " is an Integer number" = "4" + " is an Integer number" = "4 is an Integer number"
نکته بسیار مهم: البته در نام گذاری متغیر ها باید از قوانین خاصی پیروی کرد. فاصله در نام گذاری متغیر ها مجاز نیست.
مثلاً Dim Ali Reza As Integer غلط است چرا که بین دو کلمه Ali و Reza فاصله است.
منبع :مجتمع آموزشی پویش