جمعه, ۱۴ اردیبهشت, ۱۴۰۳ / 3 May, 2024
مجله ویستا

تعریف متغیرها


تعریف متغیرها
به اطمینان، قبلاً در برنامه نویسی (لااقل در Basic که پیش فرض بحث ما معرفی شده بود) از متغیرها زیاد استفاده کرده اید. در برخی زبانهای برنامه نویسی (مثل Basic) ، نوع متغیرهای بکار رفته در برنامه، لازم نیست از قبل تعریف شده باشد و در هنگام اجرا، کامپایلر، خود، آن را به نوع مورد نیاز (مثل Integer برای برای داده های عددی صحیح، یا String برای نوع داده رشته ای و کاراکتری و ...) تعریف و اجرا خواهد کرد. اما در برخی دیگر (مانند زبان برنامه نویسی Pascal)لازم است، نوع داده متغیرهای بکار رفته، در جایی از برنامه (و عموماً قبل از استفاده از آن) تعریف شوند.
در VB، از آنجا که VB از Basic برای کدنویسی استفاده می شود، به طور معمول، نیاز به تعریف نوع داده ها نیست. اما از آنجا که امروزه برنامه نویسان ترجیح می دهند که از کامپایلری برای برنامه نویسی استفاده کنند که او را به تعریف تمام متغیرها مجبور کند (زیرا اگر چنین نباشد، اگر او به اشتباه دستوری را غلط تایپ کند (مثلاً بجای then بنویسد Then) ، کامپایلر آن را به عنوان متغیری فرض می کند و در واقع بدون اینکه ما خطایی را دریافت کنیم، در روند برنامه مان مشکل پیدا می شود و خطایی رخ می دهد که شاید تشخیص علت آن سخت تر شود) ، می توانیم VB را موظف سازیم تا ما را مجبور به تعریف نوع داده متغیرها نماید.
اگر در ابتدای هر یونیت (Unit) عبارت Option Explicit نوشته شود، VB ما را مظف می کند که در آن یونیت، هر متغیری که بخواهیم استفاده کنیم، آن را قبل از استفاده، تعریف نماییم (لذا بهتر است ابتدای همه Unitها عبارت مذکور باشد) . یونیت (Unit) ها، بخش هایی از برنامه اند که در آنها کدنویسی می شود. مثلاً هر فرم، دارای یک Unit مخصوص به خود است که تمام Event Procedureهایی که تا بحال می نوشتیم، در آن قرار می گرفت.
همچنین اگر از منوی Tools گزینه Options را اتنخاب کنیم، و از لبه General (Tab Sheet) ، گزینه Require Variable Declare را چک مارک بزنیم، از این پس، VB هر فرمی که ایجاد می شود، به طور پیش فرض عبارت Option Explicit را در ابتدای آن خواهد نوشت و در واقع همیشه ما را موظف می سازد که متغیرها را تعریف نماییم.
▪ برای تعریف متغیرها از دستور Dim به شکل کلی زیر استفاده می شود:
Dim variableNames As variablsType
به عنوان مثال دستور Dim a,b As Integer متغیرهایی را به نام a,b از نوع داده Integer (نوع داده عددی صحیح) تعریف می کند و سپس از آن می توانیم متغیر a را در برنامه مقداردهی نماییم.
متغیرها را می توان در سه سطح تعریف نمود (Space of Variables) :
۱) سطح پروسیجر (procedure Level) :
اگر متغیری در یک Procedure (و معمولاً ابتدای آن) تعریف کنیم، آن متغیر را فقط در همان Procedure می توان استفاده نمود و در واقع برای همان Procedure خاص تعریف شده است.
۲) سصح فرم (Form Level) :در سطح فرم (یعنی در ابتدای Unit مربوط به فرم و پس از عبارت Option Explicit) ، متغیرها می توانند به دو نوع تعریف شوند:
▪ تعریف به صورت Private (شخصی) :
اگر متغیری در سطح فرم به صورت Private و به شکل کلی:
Private variableNames As variableType
تعریف شود، آن متغیر فقط در تمام Procedureهای فرم قابل استفاده است و در فرم های دیگر قابل دسترسی و استفاده نمی باشد (مگر اینکه در آنها هم جداگانه تعریف شده باشد) .
▪ تعریف به صورت Public (عمومی) :
اگر متغیری در سطح فرم، به صورت Public و به شکل کلی:
Public variableNames As variableType
تعریف شود، در این صورت آن متغیر علاوه بر دسترسی در همان فرم (بوسیله نام آن متغیر) ، در فرمهای دیگر (در واقع در کل پروژه) قابل دسترسی خواهد بود. فقط در صورت نیاز به استفاده در فرمهای دیگر لازم است نام فرمی را که متغیر در آن تعریف شده است ذکر شود (البته اگر آن فرم load باشد) و سپس پس از یک نقطه (Dot) نام آن متغیر آورده شود. به عنوان مثال اگر در ابتدای یونیت مربوط به Form۱ نوشته شده باشد:
Public Number As Integer
و بخواهیم در فرمی دیگر، به آن مقداردهی کنیم، لازم است چنین بنویسیم:
Form۱.Number = ۱۵
ـ توجه:
اگر در سطح فرم از Dim برای تعریف استفاده شود، به طور پیش فرض آن را Private در نظر خواهد گرفت.
۳) سطح ماژول (Module Level) :
ماژولها بخشی از پروژه هستند که متغیرها، توابع و Procedureهای عمومی (Global) را در آن تعریف می کنیم. اگر تعریفی (مثل تعریف نوع داده متغیر یا یک Procedure) با Private انجام گیرد، فقط در همان ماژول قابل استفاده می باشد و اگر با Public صورت گیرد، در هر فرمی و بدون نیاز به نوشتن نام ماژول در ابتدای آن، قابل استفاده خواهد بود.
نکته ای که باید توجه داشت اینکه اگر بخواهیم از متغیریا Procedureای که در یک ماژول به صورت Public تعریف شده است، در ماژولی دیگر استفاذه کنیم، ذکر نام ماژول در ابتدای آن به همراه یک نقطه (Dot) ضروری است.
معمولاً از تعریف Public در ماژول زمانی استفاده می کنیم که بخواهیم متغیر یا Procedureای به صورت Global (عمومی) در سراسر پروژه استفاده شود. شاید بگویید می شود در هر فرمی که به آن نیاز داریم، همانجا متغیر را تعریف می کنیم، پس چه نیازی به ماژول داریم؟
هر چند این کار باعث می شود که برنامه خطای دستوری از ما نگیرد اما در اینصورت وقتی از فرمی به فرم دیگر می رویم مقدار موجود در آن متغیر، پس از تعریف مجدد، دوباره Null (تهی) می شود، در حالیکه اگر از یکبار تعریف Public در ماژول استفاده کنیم، پس از مقدار دهی در جایی از پروژه، تا مقداردهی مجدد، این مقدار در تمام پروژه قابل دسترسی است.
برای افزودن یک ماژول به پروژه کافی است از منوی Project گزینه Add Module را انتخاب کنید و آن را (با پسوند .BAS) save نماییم.
همانطور که ملاحظه می فرمایید، ماژولها تنها بخش کدنویسی (Unit) دارند بر خلاف فرمها که یک بخش Interface (ظاهری) داشتند که کنترلها را به صورت Visual روی آن قرار می دادیم و یک بخش کدنویسی (Unit) که کدهای مربوط به Event Procedureها را در آن می نوشتیم. همچنین ملاحظه می فرمایید که با توجه به وظیفه ماژولها، معمولاً در کل پروژه اولاً به یک ماژول نیازمندیم ثانیاً به بیش از یک ماژول احتیاجی پیدا نمی کنیم.
ـ نکته:
علاوه بر متغیرها می توانیم از ثوابت (Constants) نیز در پروژه استفاده کنیم. ثوابت، بخشی از پرونده اند که هنگام تعریف، مقداردهی می شوند و تا پایان پروژه مقدارشان ثابت می ماند. برای تعریف ثوابت از دستور Constant استفاده می شود به عنوان مثال:
Const PI As single = ۳.۱۴
منبع : پایگاه اطلاع‌رسانی شبکه مدرسه