رفتن به مطلب

مفهوم متغيردر ویژوال بیسیک

امتیاز دادن به این موضوع:


king75
 اشتراک گذاری

براي جلوگیری از تکراری شدن تاپیک ها قبل از ارسال از قسمت جستجوی سایت استفاده کنید. تاپیک های تکراری حذف خواهند شد.

تاپیک ها باید در انجمن های مناسب زده شوند. قبل از ارسال تاپیک عنوان انجمن را بخوانید.

ارسال های توصیه شده

متغیر چیست ؟

متغیرها اشیائی هستند که مقادیر را در خود نگه می دارند و همانطور که از نامش معلوم است مقدار آن می تواند تغییر کند

بدین معنی که متغیرها داده های ما را در خود ذخیره می کنند و ما در مواقع لزوم مقادیر آنها را بازیابی می کنیم و مورد استفاده قرار می دهیم .

متغیرها چند نوع است ؟

متغیرها انواع مختلف دارند و کاملا مشهود است که هر نوع متغیر مصرف بخصوصی دارد . گاهی اوقات می توان بعضی متغیر ها را به جای همدیگر مورد استفاده قرار داد اما این کار کاملا اشتباه است و با اصول برنامه نویسی تطابق ندارد .

چندین متغیر پر کاربرد وجود دارد که انها را به شما معرفی می کنم .

متغیرهای عددی :

Single : اعداد را در خود ذخیره می کند و می تواند مقادیر عددی از -3.402823E+38 تا 3.402823E+38 را در خود ذخیره کند

Integer : مقادیر عددی بئون نقطه اعشار که از -32768 تا 32767 ادامه دارند

Double : مقادیر عددی که می توانند از -1.79769313486232E+308 تا -1.79769313486232E+308 تغییر یابد . نوع داده ای Double اغلب به عنوان دقت مضاعف شناخته می شود .

String : مقادیر رشته ای را که شامل هر نوع کاراکتر باشد قبول می کند . از جمله حروف . اعداد و کاراکترهای نشانه مانند !@#$%

Currency : داده هايي كه مقادير پولي از -922.337.203.685.477.5808 تا -922.337.203.685.477.5808 را مي توانند نگه دارند . چهار رقم اعشاري امكان گرد كردن مناسب داده ها را فراهم مي آوردند . ويژوال بيسيك مطابق با تنظيمات بين المللي ويندوز عمل مي كند و مقادير پولي را با نيازهاي كشور شما مطابق مي سازد . وقتي كه مقادير Currency را وارد مي كنيد هيچگاه از علامت دلار را همراه با آنها وارد نشازيد . ( قابل توجه دانش آموزاني كه مي خواهند برنامه هاي حسابداري بنويسند )

Boolean : نوع داده اي كه تنها يكي از دو مقادير درست يا غلط را مي گيرد كه اين دو واژه از واژه هاي رزرو شده در ويژوال بيسيك مي باشند . درست = True و غلط = False .

Date : متغيري با قالب بندي تاريخ ايجاد مي كند و مي تواند تاريخ را در خود نگه دارد . تاريخ هر كشور به صورت قالب خاصي استفاده مي شود . مثلا در ايران متداول است كه تاريخ را اينگونه بنويسيم : 25/11/1384 اما در برخي كشورها اينگونه رايج است : 2006/25/11 و يا به گونه هاي خاص . در واقع اينكه سال اول نوشته شود يا ماه يا روز خود مسئله اي است كه مي توان انها را در متغيراز نوع Date اعمال كرد .

Long : مقادير صحيح با محدوده اي بيش از مقادير داده اي Integer . مقادير داده اي Long از -2.147.483.648 تا -2.147.483.648 مي توانند تغيير كنند . مقادير داده اي Long فضاي حافظه بيشتري نسبت به مقادير Integer مصرف مي كنند و كمتر كارآ هستند . نوع داده اي Long اغلب صحيح طويل خوانده ميشود .

خب . تا اينجا به اندازه كافي با انواع متغيرها آشنا شديد . اما اينجا سوالي پيش مي آيد .

چگونه بايد از متغيرها استفاده كنيم ؟

براي استفاده از متغير ها بايد 2 مرحله را پشت سر بگذاريم

1 ـ متغير را تعريف كنيم

2 ـ متغير را مقدار دهي كينم

مرحله اول كاملا ضروري مي باشد اما مرحله دوم نه . ممكن است شما متغييري را تعريف كنيد اما مقدار دهي نكنيد و مقدار دهي آن را به قسمت ديگري از برنامه واگذار كنيد .

مرحله اول ( تعريف يك متغير ) :

براي اينكه متغييري را به ويژوال بيسيك معرفي كنيم بايد از فرمان Dim استفاده كنيم نام متغير و نوع متغير همراه با فرمان Dim مي آيند و متغير تعريف مي شود . به صورت زير

نوع متغير As نام تغير Dim

مثال :

Dim A As Single

Dim B As String

در فرامين بالا متغيري از نوع داده اي Single با نام A ايجاد كرديم و بعد متغيري از نوع رشته اي با نام B ايجاد كرديم . به همين سادگي

مرحله دوم ( مقداري دهي متغير ) :

حالا مي خواهيم متغيرهاي ايجاد شده را مقدار دهي كنيم . مقدار دهي با علامت = انجام مي شود . بدين صورت :

A = 10

B = "Visual Basic"

خيلي ساده است . به دو علامت كوتيشن در اطراف جمله Visual Basic دقت كنيد . براي اينكه يك متغير رشته اي را مقدار دهي كنيم بايد مقدار متغير را داخل دو علامت كوتيشن قرار دهيم وگرنه ويژوال بيسيك به ما ايراد مي گيرد و برنامه دچار مشكل مي شود . اما براي مقدار دهي ساير انواع متغير ها نبايد از علامت كوتيشن استفاده كرد .

B = "" يك رشته پوچ يا خالي مي باشد . يعني مقداري در آن ذخيره نشده است .

زیربرنامه ها در ویژوال بیسیک

اگر به دستورات هر برنامه ای که در VB6 نوشته شده است نظر بیندازید متوجه بلوک هایی از کد می شوید که بین دو خط تیره قرار دارند. این بلوک ها واحدهای محیط برنامه سازی ویژوال بیسیک هستند، که به هر کدام یک زیربرنامه می گوییم. هر زیربرنامه مسئول کنترل بخشی از برنامه است.

توجه داشته یاشیدکه برنامه نویس هنگام برنامه نویسی نمی تواند ترتیب اجرای زیربرنامه ها را پیش بینی کند، ولی در هر زیربرنامه اجرا از سطر اول شروع و تا سطر آخر زیربرنامه ادامه دارد.

زیربرنامه ها به دو نوع زیر تقسیم می شوند:

Sub یا روال

Function یا تابع

در برخی از کتابها به توابع هم روال گفته می شود، ولی در این مقاله فقط به زیربرنامه های از نوع Sub روال اطلاق خواهد شد.

تابع:

برای ایجاد یک تابع از الگوی زیر استفاده می کنیم:

Public | Private Function funName ( تعریف پارامترها ) As نوع داده خروجی تابع

function body

End Function

با کلمه کلیدی Public می توانید تابع را در هر کجای برنامه فرا بخوانید؛ ولی کلمه کلیدی Private فراخوانی تابع را محدود به فرم یا ماژولی می کند که تابع در آن قرار دارد. کلمه Function می گوید که نوع زیربرنامه یک تابع است.

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

یک تابع برای این ایجاد می شود که با دریافت داده های خاص (آرگومان ها) از روتین فراخواننده و انتقال آنها به پارامترها، آنها را پردازش کرده و نتیجه مطلوب را تحویل دهد. این نتیجه می تواند یک خروجی از نوع داده باشد - مثلا یک عدد long -، می تواند خروجی قابل مشاهده روی نمایشگر باشد، می تواند دستکاری متغیرهای عمومی، . . .

مثال:

Public Function Power( ByVal m as integer, ByVal n as long ) As long

Power = m ^ n

End Function

تابع Power تعریف شده در کد فوق دو عدد صحیح را دریافت کرده، اولی را به توان دومی رسانده و حاصل را به عنوان نتیجه باز می گرداند. همانگونه که دیده می شود برای تحویل دادن نتیجه تابع آن نتیجه را با دستور انتساب به نام تابع نسبت می دهیم.

روال:

Subها معمولا توسط Visual Basic ایجاد می شوند و کنترل رویداد های برنامه را بر عهده دارند. ولی برنامه نویس هم می تواند در موقع لزوم اقدام به ایجاد آن نماید. اگرچه به ندرت لازم خواهد شد.

Public | Private Sub subName ( تعریفپارامترها )

sub body

End Sub

فرق اصلی Sub و Function در این است که تابع می تواند به طور صریح یک خروجی عددی و یا غیره را تحویل ما بدهد. روالها به غیر از این ویژگی سایر کارکردهای توابع را دارا می باشند.

جزئیات تعریف پارامترها:

تابع زیر را که برای تعیین اول بودن یک عدد نوشته شده در نظر بگیرید:

Public Function IsPrime ( ByVal n As Long , Optional i As Long = 2 ) As Boolean

Dim Sn, c As Double

Sn = Sqr ( n )

Do

c = n / i

i = i + 1

Loop Until c = int ( c ) Or i > Sn

IsPrime = IIF ( i > Sn , True , False) ' if i > Sn : n is prime

End Function

.

.

.

a = 13

b = 101

key1 = IsPrime ( a )

key2 = IsPrime ( b , 7 )

دستور تعیین Key1 را در نظر بگیرید. کلمه کلیدی ByVal در تعریف تابع IsPrime باعث می شود که مقدار آرگومان ۱۳ در پارامتر n کپی شود. در حقیقت دو متغیر مستقل از هم در حافظه کامپیوتر بوجود می آید. به عبارت ساده تر تغییر در n سبب تفییر a نمی شود. اگر این کلمه (ByVal) نمی بود یا کلمه ByRef به جای آن می نشست وضع کاملا عکس می شد. یعنی هر تغییری ذر مقدار متغیر n باعث تغییر مقدار متغیر a نیز می شد.

کلمه کلیدی Optional قبل از تعریف i بدین معنی است که برنامه نویس مختار است مقداری برای i بفرستد یا نفرستد! در حالتی که برنامه نویس مقداری را برای i ارسال نکند با توجه به کد فوق مقدار پیش فرض 2 در i قرار خواهد گرفت.

ولی بدون دیدن تابع از کجا می توان فهمید که یک پارامتر Optional است؟ به تصویر زیر توجه کنید:

قابلیت بازگشت:

منظور از قابلیت بازگشت فرآیند تعریف یک رویه بر حسب خودش می باشد.

در VB6 همانند اکثر زبانهای دیگر توابع می توانند همدیگر را و بخصوص خودشان را فراخوانی کنند. تابعی که خود را فرا بخواند تابع بازگشتی نامیده می شود. روش بازگشتی یکی از مهمترین و شفاف ترین روشها برای حل برخی مسائل است. بطور مثال اگر تابع ریاضی y = fact ( n ) فاکتوریل را محاسبه کند می توان آن را بر حسب خودش به این صورت نوشت:

y = n * fact ( n - 1) if n > 1

y = 1 if n = 1

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

Public Function fact ( ByVal n as Long ) As Long

If n = 1 then fact = 1 : Exit Function

fact = n * fact ( n - 1 )

End Function

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

پشته چیست؟ فهرستی از داده هاست که آخرین عنصر وارد شوندخ اولین عنصری است که از آن خارج می شود. مانند بشقابهای روی میز که روی هم چیده می شوند. آخرین بشقابی که گذاشته می شود (بشقاب رویی) اولین بشقابی است که برداشته می شود.

اگر تابع fact را با n=3 اجرا نمایید داریم:

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

به عنوان مثالی دیگر دنباله فیبوناتچی رو در نظر بگیرید. این دنبالهکاربردهای زیادی در صنعت و رشته های مهندسی دارد و به صورت زیر تعریف می شود:

F ( n ) = 1 If n = 1 or n = 2

F ( n ) = F ( n - 1 ) + F ( n - 2 ) If n > 2

پیاده سازی این دنباله در محیط ویژوال بیسیک به صورت زیر است (بهتر است قبل از دیدن جواب خودتان نیز امتحان کنید):

Public Function Fibo ( ByVal n As Long ) As Long

if n = 1 or n = 2 Then

Fibo = 1

Else

Fibo = Fibo ( n - 1 ) + Fibo ( n - 2 )

End If

End Function

تابع بالا را می توانید به شکل زیر نیز باز نویسی کنید:

Public Function Fibo ( ByVal n As Long ) As Long

If n = 1 or n = 2 Then Fibo = 1 : Exit Function

Fibo = Fibo ( n - 1 ) + Fibo ( n - 2 )

End Function

نکته آموزشی: بد نیست بدانید که نسبت دو جمله متوالی از این سری برای n های به قدر کافی بزرگ به عدد طلائی (تقریبا 1.618) میل می کند.

لینک به دیدگاه
به اشتراک گذاری در سایت های دیگر

  • پاسخ 0
  • ایجاد شد
  • آخرین پاسخ

بهترین ارسال کنندگان این موضوع

روزهای محبوب

بهترین ارسال کنندگان این موضوع

در تاپیک ها، اگر سوال يا نظر خاصي نداريد لطفا فقط از دکمه می پسندم و ... استفاده کنيد. نظراتي مانند مرسی، خوب بود، ممنون و ... شامل اسپم هستند و باعث کاهش کيفيت پست ها مي شوند.

بالا آوردن تاپیک ها و پست ها قبل از 48 ساعت ممنوع است و موجب حذف آنها خواهد شد.

این موضوع کاملا قدیمی است. لطفا به جای بروز کردن این موضوع در نظر شروع یک موضوع جدید باشید مگر این که لازم به بروز رسانی این موضوع باشید.

به گفتگو بپیوندید

هم اکنون می توانید مطلب خود را ارسال نمایید و بعداً ثبت نام کنید. اگر حساب کاربری دارید، برای ارسال با حساب کاربری خود اکنون وارد شوید .

مهمان
ارسال پاسخ به این موضوع ...

×   شما در حال چسباندن محتوایی با قالب بندی هستید.   حذف قالب بندی

  تنها استفاده از 75 اموجی مجاز می باشد.

×   لینک شما به صورت اتوماتیک جای گذاری شد.   نمایش به صورت لینک

×   محتوای قبلی شما بازگردانی شد.   پاک کردن محتوای ویرایشگر

×   شما مستقیما نمی توانید تصویر خود را قرار دهید. یا آن را اینجا بارگذاری کنید یا از یک URL قرار دهید.

 اشتراک گذاری

×
×
  • اضافه کردن...