ویژوال بیسیک توسعه یافته زبان برنامه نویسی بیسیک میباشد. بیسیک توسط پروفسور جان کمنسی و توماس کرتز از کالج دارتموث برای نوشتن برنامههای ساده ایجاد شد. طراحی آن از اواسط دهه ۱۹۶۰ آغاز گردید.
ویژوال بیسیک تا نسخه ۳ به صورت ۱۶ بیتی بود. از نسخه ۵ به بعد فقط ویرایش ۳۲ بیتی آن ارائه شد. (نسخه ۴ هم به صورت ۱۶ بیتی و هم به صورت ۳۲ بیتی عرضه شده بود.)
ویژوال بیسیک از نسخه ۶ به بعد بر پایه چارچوب داتنت (NET.) ارائه شد.
اگر چه با ظهور ویژوال بیسیک دات نت اکثر برنامهنویسان ویژوال بیسیک ۶ به آن گرویدند، ولی نسخه ۶ همچنان طرفداران ویژهی خود را دارد.
ویژوال بیسیک برای توسعه سریع نرم افزار (RAD یا Rapid Application Development) بر پایه رابط گرافیگی کاربر (GUI یا Graphical User Interface) توسعه داده شد. دسترسی آسان و سریع به پایگاه دادهها با استفاده از DAO ،RDO یا ADO و ایجاد کنترلهای اکتیو ایکس از جمله مواردی هستند که این زبان را برای RAD مناسب کردهاند.
برنامهنویسی در ویژوال بیسیک به صورت رخدادگرا میباشد.
در برنامهنویسی تجاری، ویژوال بیسیک جز محبوبترینها است. بنابه آماری که در سال ۲۰۰۳ منتشر شد، ۵۳٪ از برنامههای تجاری با استفاده از این زبان تولید شدهاند.
توابع ریاضی در ویژوال بیسیک
برای نوشتن برنامههای مهندسی، محاسباتی، گرافیکی و آماری نیاز دارید تا از برخی توابع ریاضی استفاده نمائید. ویژوال بیسیک 6 دارای مجموعهای از توابع است که برای انجام محاسبات عددی پیش بینی شده اند. در این مقاله ابتدا با این توابع آشنا شده و سپس چگونگی ایجاد سایر توابع ریاضی را که در میان این مجموعه وجود ندارند خواهید دید. در پایان نیز با توابع ریاضی موجود در دات نت آشنا میشوید.
تابع Abs (قدرمطلق) :
مقدار بدون مثبت یک عدد را برمیگرداند
تابع Atn (آرک تانژانت) :
خروجی این تابع عددی از نوع double است که برابر زاویهای است که تانژانت آن عدد ورودی تابع است.
تابع Cos (کسینوس) :
خروجی این تابع عددی از نوع double است که برابر کسینوس زاویه ورودی است.
تابع Exp (توان نمانی) :
خروجی این تابع عددی از نوع double است که برابر e به توان ورودی تابع است.
تابع Int (تابع کف یا تابع جزء صحیح) :
نزدیکترین عدد صحیح مساوی یا کوچکتر نسبت به عدد ورودی را برمیگرداند.
تابع Log (لگاریتم) :
خروجی این تابع عددی از نوع double است که برابر لگاریم طبیعی عدد ورودی است (لگاریتم بر مبنای عدد e یا همان Ln).
تابع Round (گرد کردن) :
خروجی این تابع عددی از نوع double است که برابر نزدیکترین عدد صحیح به مقدار عدد ورودی است.
تابع Sgn (علامت) :
خروجی این تابع عددی از نوع صحیح است که نشان دهنده علامت عدد ورودی است.
تابع Sin (سینوس) :
خروجی این تابع عددی از نوع double است که برابر سینوس زاویه ورودی است.
تابع Sqr (جذر) :
خروجی این تابع عددی از نوع double است که برابر ریشه دوم یا جذر عدد ورودی است.
تابع Tan (تانژانت) :
خروجی این تابع عددی از نوع double است که برابر با تانژانت زاویه ورودی (برحسب رادیان) میباشد.
نکته: برای محاسبه توان nام یک عدد (n می توان صحیح یا اعشاری باشد) از اپراتور ^ استفاده نمائید. برای مثال:
2 ^ 5 = 32
9 ^ 0.5 = 3
4.2 ^ 3.7 = 202.31
ایجاد سایر توابع ریاضی که در ویژوال بیسیک 6 وجود ندارند :
جدول زیر چگونگی محاسبه سایر توابع ریاضی که در ویژوال بیسیک 6 وجود ندارند را نشان میدهد:
تابع |
فرمول |
سکانت |
Sec(X) = 1 / Cos(X) |
کسکانت |
Cosec(X) = 1 / Sin(X) |
کتانژانت |
Cotan(X) = 1 / Tan(X) |
آرک سینوس |
Arcsin(X) = Atn(X / Sqr(1-X * X )) |
آرک کسینوس |
Arccos(X) = Atn(-X / Sqr(1-X * X)) + 2 * Atn(1) |
آرک سکانت |
Arcsec(X) = Atn(X / Sqr(X * X - 1)) + Sgn((X) -1) * (2 * Atn(1)) |
آرک کسکانت |
Arccosec(X) = Atn(X / Sqr(X * X - 1)) + (Sgn(X) - 1) * (2 * Atn(1)) |
آرک کتانژانت |
Arccotan(X) = Atn(X) + 2 * Atn(1) |
سیونس هیپربولیک |
HSin(X) = (Exp(X) - Exp(-X)) / 2 |
کسینوس هیپربولیک |
HCos(X) = (Exp(X) + Exp(-X)) / 2 |
تانژانت هیپربولیک |
HTan(X) = (Exp(X) - Exp(-X)) / (Exp(X) + Exp(-X)) |
سکانت هیپربولیک |
HSec(X) = 2 / (Exp(X) + Exp(-X)) |
کسکانت هیپربولیک |
HCosec(X) = 2 / (Exp(X) - Exp(-X)) |
کتانژانت هیپربولیک |
HCotan(X) = (Exp(X) + Exp(-X)) / (Exp(X) - Exp(-X)) |
آرک سینوس هیپربولیک |
HArcsin(X) = Log(X + Sqr(X * X + 1)) |
آرک کسینوس هیپربولیک |
HArccos(X) = Log(X + Sqr(X * X - 1)) |
آرک تانژانت هیپربولیک |
HArctan(X) = Log((1 + X) / (1 - X)) / 2 |
آرک سکانت هیپربولیک |
HArcsec(X) = Log((Sqr(1-X * X) + 1) / X) |
آرک کسکانت هیپربولیک |
HArccosec(X) = Log((Sgn(X) * Sqr(X * X + 1) +1) / X) |
آرک کتانژانت هیپربولیک |
HArccotan(X) = Log((X + 1) / (X - 1)) / 2 |
لگاریتم بر مبنای N |
LogN(X) = Log(X) / Log(N) |
چون اکثر توابع مثلثاتی بر حسب رادیان کار می کنند گاهی اوقات نیاز داریم تا زوایا را از در جه به رادیان و بالعکس تبدیل کنیم. برای تبدیل یک زاویه بر حسب رادیان به درجه، آنرا در 180 ضرب کرده و سپس بر عدد پی تقسیم میکنیم:
Degree(x) = x * 180 / Pi
برای تبدیل یک زاویه بر حسب درجه به رادیان، آنرا در عدد پی ضرب کرده و سپس بر 180 تقسیم میکنیم:
Rad(x) = x * Pi / 180
مفاهیم بنیادی
در VB، شئ (Object) های بسیاری وجود دارد مانند فرمها، دکمه ها، برچسب ها، تصاویر و ... . همانطور که می دانیم هر شئ(Object) دارای یک سری مشخصات(Properties) می باشد. به عنوان مثال اگر یک اتومبیل را به عنوان یک شئ در نظر بگیریم، این اتومبیل دارای مشخصاتی چون رنگ خاص، وزن خاص، طول و عرض و ارتفاع خاص، میزان خاص مصرف بنزین و ... می باشد که در تمایز دو اتومبیل از هم، همین مشخصات هستند که به ما کمک می کنند.
درVB نیز هر Object دارای یک تعداد مشخصه (Property) می باشد. به عنوان مثال یک دکمه(Button) دارای مشخصاتی چون عرض(Width) و ارتفاع(Height) خاص و یا یک عنوان(Caption) خاص و ... می باشد.
برخی شئ(object) ها درVB، فقط در کدنویسی قابل دسترسی هستند(مانند شئ ADODB که در آینده با آن آشنا خواهید شد) اما برخی دیگر علاوه بر زمان کدنویسی، در زمان طراحی (Design) نیز می توان آنها را بر روی فرمها و در جای دلخواه قرار داد و آنها را تنظیم (Set) نمود. به اشیاء نوع اخیر، کنترل (Control) گفته می شود.
کنترل ها خود دو گونه اند، برخی علاوه بر زمان طراحی (Design) در زمان اجرا (Run Time) نیز دیده می شوند، به این نوع کنترل در اصطلاح(Visual Control) VCL گفته می شود که بیشترین انواع کنترلها را در بر می گیرند (مانند دکمه ها، جدولها، برچسبها و بسیاری دیگر که در ادامه خواهند آمد) اما برخی دیگر از کنترل ها فقط در هنگام طراحی (Design) دیده می شوند و در هنگام اجرا تنها عمل خاصی انجام می دهند و خود دیده نمی شوند (مانند کنترلTimer)، به این نوع کنترلها،Non-Visual Control گفته می شود. باید توجه داشته باشیدکه کنترلهایNon-Visual، ذاتاً درRun Time دیده نمی شوند ولی ممکن است بنابر نیازی و در زمانی خاص از اجرا، خودمان برای یک یا چند VCL نیز مقدار مشخصه Visual آنها را برابرFalse قرار دهیم که مسلماً در این حالت با وجود اینکه در آن زمان، این کنترلها دیده نمی شوند ولی VCL بودن آنها تغییری نکرده است.
کنترل ها (اعم ازVCL ها و غیر آن) معمولاً دارای تعدادی Event می باشند. Event ، رویداد یا رخدادی است که توسط کاربر و معمولاً با استفاده از ماوس یا صفحه کلید برای یک کنترل خاص روی می دهد.مثلاً یک کنترل ممکن است دارای رویداد (Event) Click باشدکه این نوع رویداد زمانی که کاربر در هنگام اجرای برنامه (Run Time) بر روی آن کنترل خاص کلیک نماید رخ می دهد.برخی Event های معمول دیگر برای کنترلها عبارتند از: DoubleClick (زمانی که بر روی آن کنترل دابل کلیک شود) ، MouseMove (زمانی که نشانگر ماوس بر روی آن کنترل قرار دارد) ، KeyPress (زمانی که کلیدی از صفحه کلید زده شد) ، KeyDown (زمانی که کلیدی از صفحه کلید پایین بود) ، KeyUp (زمانی که کلید زده شده برداشته شد) ، MouseDown ، MouseUp و ... که در ادامه با آنها بیشتر آشنا خواهیم شد.
برای هر Event (رویداد) می توان یک Event Procedure داشت. Event Procedure پاسخی است که یک کنترل زمانی که یک Event رخ می دهد، از خود نشان می دهد. در واقع Event قطعه برنامه ای است که زمانی که بر روی یک کنترل، یک Event رخ می دهد، به طور اتوماتیک اجرا می شود.
کنترلها معمولاً علاوه بر یک سری مشخصات (Properties) و یک سری رویداد (Event)، دارای تعدادی نیز متد (Method) می باشد. متدها عملیاتهای تعریف شده ای هستند که توسط آنها یک عمل خاص بر روی کنترلها انجام می شود.