ویژوال بیسیک توسعه یافته زبان برنامهنویسی بیسیک میباشد.
بیسیک توسط پروفسور جان کمنسی و توماس کرتز از کالج دارتموث برای نوشتن برنامههای ساده ایجاد شد.
طراحی آن از اواسط دهه ۱۹۶۰ آغاز گردید.
ویژوال بیسیک تا نسخه ۳ به صورت ۱۶ بیتی بود.
از نسخه ۵ به بعد فقط ویرایش ۳۲ بیتی آن ارائه شد.
(نسخه ۴ هم به صورت ۱۶ بیتی و هم به صورت ۳۲ بیتی عرضه شده بود.)
ویژوال بیسیک از نسخه ۶ به بعد بر پایه چارچوب داتنت (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 می توان صحیح یا اعشاری باشد) از اپراتور ^ استفاده نمائید.
برای مثال:
نکته: برای محاسبه توان nام یک عدد (n می توان صحیح یا اعشاری باشد) از اپراتور ^ استفاده نمائید.
برای مثال: 2 ^ 5 = 32 9 ^ 0.5 = 3 4.2 ^ 3.7 = 202.31 ایجاد سایر توابع ریاضی که در ویژوال بیسیک 6 وجود ندارند : جدول زیر چگونگی محاسبه سایر توابع ریاضی که در ویژوال بیسیک 6 وجود ندارند را نشان میدهد: برای استفاده از اعداد پی و e در برنامههای خود، ثوابت زیر را تعریف نمائید Const Pi = 3.14159265358979 Const e = 2.71828182845904 همچنین عدد پی را میتوان به صورت زیر تعریف کرد: Pi = 4 * Atn(1) تبدیل رادیان به درجه چون اکثر توابع مثلثاتی بر حسب رادیان کار می کنند گاهی اوقات نیاز داریم تا زوایا را از در جه به رادیان و بالعکس تبدیل کنیم.
برای تبدیل یک زاویه بر حسب رادیان به درجه، آنرا در 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) می باشد.
متدها عملیاتهای تعریف شده ای هستند که توسط آنها یک عمل خاص بر روی کنترلها انجام می شود.
توجه داریم که تفاوت متدها و Event Procedure ها در این است که متدها توسط VB ، شناخته شده اند و عملشان همیشه ثابت است، اما Event Procedure ها توسط برنامه نویس و به دلخواه او تهیه می شود، بنابراین Method های مشابه بر روی کنترلهای متفاوت، پاسخ مشابهی دارد ولی ممکن است Event های مشابه بر روی کنترلهای متفاوت با توجه به Event Procedure های مخصوص هر یک، متفاوت باشد (مثلاً رویداد Click برای یک کنترل، کاری انجام دهد و برای کنترلی دیگر، کاری دیگر).
نکته دیگری که باید به آن توجه داشت اینست که Procedure ها به طور مستقیم اجرا نمی شوند بلکه فقط زمانی که نامشان فراخوانی شود اجرا می شوند.
بنابراین مثلاً در مورد Event Procedure ها باید بدانیم که با اینکه کد مربوط به آنها نوشته شده است ولی تا وقتی که آن Event خاص (که باعث فرا خوانی Event Procedure مربوط می شود) روی ندهد، این کدها اجرا نخواهند شد.
Drag & Drop فرض کنید بخواهیم برنامه ای بنویسیم که ظاهری شبیه آنچه در شکل 9 میبینید داشته باشد.
و بتوانیم تصویر داخل PictureBox مبداُ (سمت چپ) را بوسیله Drag & Drop به PictureBox مقصد (سمت راست) منتقل کنیم.
شکل 9 ابتدا دو PictureBox (که کنترل آن در ToolBox به شکل می باشد) را در مکانهای خود قرار داده و مشخصه Name آنها را picSource و picTarget می گذاریم.
برای نمایش متنی که در پایین شکل 9 می بینید نیز می توانیم از یک Label استفاده کنیم.
PictureBoxها دارای مشخصه ای به نام Picture هستند که بوسیله آن میتوانیم یک تصویر را در آن قرار دهیم.
اگر بخواهیم این مشخصه را در زمان طراحی (Design Time) تنظیم نماییم، کافیست بر روی نام این مشخصه در پنجره Properties، دابل کلیک نماییم، یک پنجره محاوره ای باز می شود که می توانیم تصویر مورد نظرمان را بیاوریم و آن را انتخاب کنیم.
(پنجرهای مانند پنجره های Open در ویندوز).
اما اگر بخواهیم آن را در زمان اجرا (Run Time) تنظیم نماییم، باید این مشخصه را برابرتابع loadPicture( ) قرار دهیم که مسیر و نام تصویر مورد نظر به عنوان پارامتر این تابع قرار میگیرد.
اگر در پارامتر این تابع چیزی قرار نگیرد، مشخصه Picture را خالی می کند یعنی PictureBox مورد نظر را (در صورتی که دارای تصویر بوده) بدون تصویر می کند.
حال مشخصه Picture از picSource را (در زمان طراحی) به تصویر دلخواه مورد نظر خود تغییر دهید و در واقع یک تصویر را در آن قرار دهید.
شایان ذکر است که می توانید تصاویر فراوان مناسبی را مسیر Visual Studio>Common>Graphics دستگاه خود (در داخل مسیری که برنامه Visual Studio را در آن نصب کرده اید)، بیابید.
به سراغ برنامه خود برویم، تا اینجا ظاهر (Interface) برنامه را ایجاد کردید.
حال لازم است به کدنویسی برای آن بپردازیم.
ولی قبل از آن توضیح در مورد چند رویداد را ضروری می دانم که عموما غالب کنترلهای VCL دارای این رویدادها می باشند: رویداد MouseDown : زمانی برای یک VCL رخ می دهد که دکمه ای از ماوس را روی آن VCL فشار دهیم.
رویداد MouseUp : زمانی برای یک VCL رخ می دهد که دکمه زده شده از ماوس را رها کنیم.
رویداد MouseMove : زمانی برای یک VCL رخ می دهد که نشانگر ماوس را بر روی آن حرکت دهیم.
رویداد DragOver : زمانی برای یک VCL رخ می دهد که VCL دیگری که در حال Drag شدن است را بر روی این VCL بیاوریم.
رویداد DragDrop : زمانی برای یک VCL رخ می دهد که VCL دیگری که در حال Drag شدن است را بر روی این VCL، Drop (رها) نماییم.
حال که با این رویدادها آشنا شدیم، کافیست کدهای زیر را در یونیت این فرم داشته باشیم: Option Explicit Private Sub picSource_MouseDown (Button As Integer,Shift As Integer,x As Single,y As Single) picSource.Drag vbBegineDrag End Sub Private Sub picTarget_DragDrop (Source As Control) PicTarget .Picture = picSource.Picture picSource.Picture = loadPicture( ) End Sub توجه داشته باشیم که وقتی رویداد MouseDown برای picSource روی می دهد، توسط متد Drag از picSource (یعنی توسط picSource.Drag) و به همراه پارامتر VbBeginDrag برای آن، عمل Drag آغاز می شود و در صورتی که عمل Drop شدن روی picTarget صورت بگیرد (یعنی اگر رویداد DragDrop برای آن رخ دهد)، تصویر داخل picSource به داخل picTarget منتقل می شود (بوسیله دستور picTarget.Picture = picSource.Picture) و سپس تصویر داخل picSource (بوسیله دستور ()picSource.Picture = loadPicture ) حذف می شود.
و بالاخره آخرین تذکری که در اینجا داده می شود اینکه مشخصه Picture برای PictureBoxها مشخصه پیش فرض (Default) می باشد و لذا مثلا بجای pictarget.picture میتوان از pictarget نیز استفاده کرد.
استفاده از منو در فرمها لابد از اهمیت فوق العاده زیاد منوها در ویندوز مطلع هستید.
منوها علاوه بر تنوع و زیبایی فرمها، به شلوغ نشدن یک فرم توسط دکمه های زیاد نیز کمک میکنند.
برای درست کردن منو برای یک فرم از MenuEditor که در منوی Tools قرار دارد استفاده می کنیم.
همچنین MenuEditor یک دکمه فوری نیز بر روی میله ابزار استاندارد VB به شکل دارد که با کلیک بر روی آن نیز پنجره MenuEditor باز می شود.
این پنجره مانند شکل 10 می باشد: شکل 10 در پنجره مذکور کافیست عنوان منوی اول (مثلاMenu1) را در کادر Caption بنویسیم و مانند سایر objectهای VB به این منو هم یک نام (مثلاmnuMenu1) در کادر Name وارد کنیم.
حال برای وارد کردن نام و عنوان منوی بعدی کافیست کلید Next را بزنیم.
اما معمولا منوی بعدی، آیتمی از منوی قبلی خواهد بود.
اگر کلید را بزنیم، منوی جاری به عنوان زیر منوی قبلی محسوب خواهد شد.
پس از وارد کردن اولین آیتم کافیست بوسیله دکمه Next آیتم های بعدی اولین منو را نیز وارد کنیم.
اگر یکی از آیتم ها خود شامل زیر آیتم هایی بود باز هم می توان از کلید سود برد.
و بالاخره برای اینکه به سراغ منوی دوم برویم لازم است از کلید به تعدادی استفاده کنیم که دیگر زیرمنوی یک منوی دیگر نباشد و به همین ترتیب سایر منوها و آیتمها را نیز نامگذاری و عنواندهی میکنیم و ساختار مورد نظرمان را برای منوها ایجاد میکنیم.
لذا اگر منوها را در MenuEditor طوری وارد کنیم که پنجره پایین MenuEditor مطابق آنچه در شکل 10 میبینید، شود، انتظار داریم در هنگام اجرا، فرمی شبیه آنچه در شکل 11 می بینید، حاصل شود: شکل 11 توجه داشته باشید که در MenuEditor علاوه بر آنچه تابهحال گفته شد: • دکمه Delete برای پاک کردن یک منو (یا آیتم) استفاده می شود.
• دکمه Insert برای افزودن یک منو (یا آیتم) میان دو منو (یا آیتم) دیگر استفاده می شود • Check Boxهای Visible و Enable به ترتیب اگر انتخاب نشده شوند، منوی مذکور دیده نمی شود و یا اینکه فقط غیرفعال (و به رنگ خاکستری) خواهد شد.
• Check Box با عنوان Checked اگر انتخاب شود، باعث خواهد شد تا کنار آن منو (آیتم) یک "چکمارک" دیده شود.
(معمولا این مشخصه در Run Time و بر حسب نیاز تنظیم می شود) • توسط Shortcut می توانیم یک میانبر (Shortcut) برای یکی از آیتمها درست کنیم..
• توسط Index می توانیم آرایه ای از منوها را طراحی نماییم ( همانطوری که آرایه ای ازسایر کنترلها درست می کردیم، یعنی باید نام دو یا چند منو را یک نام واحد بگذاریم و Index متفاوت به هریک بدهیم.) • و توسط NegotiatePosition میتوان نوع چیدن آیتمها (راست چین، چپ چین، وسط چین) را تعیین نمود.
چند تذکر: • برای دستیابی به مشخصه های منوها نیز مانند سایر کنترلها از نام آنها و یک نقطه(Dot) و سپس نام مشخصه مورد نظر استفاده می کنیم.
مثلا اگر منویی به نام mnuOpen داشته باشیم و بخواهیم آن را غیرفعال و یا مارکدار نماییم به ترتیب از دستورات زیر استفاده خواهیم کرد: mnuOpen.Enable = False mnuOpen.Checked = True • مشخصه WindowList در بحث MDI Forms خواهد آمد و از مشخصه HelpContentID نیز تنها زمانی که یک فایل HLP داشته باشیم میتوانیم استفاده کنیم.
• اگر بخواهیم بین دو آیتم از منویی یک خط جداکننده آورده شود (آنچه در ویندوز برای جداکردن بخشهای مختلف یک منوی خاص معمول است) کافی است بین آن دو آیتم، یک آیتم Insert نماییم، نام آن را یک نام دلخواه (مثلا mnuLine) و عنوان (Caption) آن را یک منفی (کاراکتر "-" یا اصطلاحا Dash) بگذاریم.
• اگر بخواهیم برای شی خاصی یک PopUpMenu طراحی کنیم (منوهای بازشوندهای که وقتی بر روی شی کلیک راست شود از آن خارج میشود) کافیست یک منو (با آیتمهای مورد نظر برای آن) را طراحی کنیم (و حتی در صورت نیاز Visible آن را False کنیم) و در رویداد MouseDown از آن شی خاص، پس از اینکه شرط کردیم کلید زده شده کلید راست ماوس باشد (با استفاده از شرط برابری پارامتر Button از این رویداد با مقدار ثابت VbRightButton)، با استفاده از دستور PopUpMenu، نام منوی مورد نظر را فراخوانی می کنیم یعنی باید چنین داشته باشیم: Private Sub controlName_MouseDown (Button As Integer,…) IF Button = VbRightButton Then PopUpMenu mnuMenu1 End IF End Sub که بجای controlName نام آن کنترلی که قرار است کاربر روی آن کلیک راست نماید و بجای mnuMenu1 نام آن منویی که قرار است به صورت PopUp آورده شود را ذکر می کنیم.
اضافه کردن Digital box به برنامه مطمئنا تا بحال در ویندوز از کادرهای محاورهای زیادی مثل پنجره های Open، Save، نمایش خصوصیات چاپگر (Printer)، کادر انتخاب رنگ، کادر انتخاب Font و پنجره Help ویندوز استفاده کرده اید.
در VBبرای نمایش اینگونه پنجرههای محاورهای از کنترل DialogBox استفاده میکنیم.
این کنترل یکی از کنترلهای Non - Visual ویژوال بیسیک میباشد.
Non-Visual Controls همانطور که قبلا هم آمده است، انواعی از کنترلها هستند که فقط در زمان طراحی (Design Time) بر روی فرم دیده میشوند و در Run Run Time فقط میتوان از اثر آنها بهره برد.
کنترل مذکور بطور پیش فرض در ToolBar وجود ندارد.
برای اضافه کردن آن به ToolBar باید از منوی Project گزینه Components را انتخاب کنیم و در لیست Componentها، گزینه Microsoft Common Dialog Control 6 را چک مارک بزنیم و آن را تایید (OK) نماییم.
در اینصورت یک کنترل به شکل به ToolBar افزوده خواهد شد که می توانید آن را با دابل کلیک بر روی فرم قرار دهید.
توجه داریم که کنترل مذکور Non-Visual است و لذا نیازی به تنظیم مکان این کنترل بر روی فرم ندارید.
کنترل Dialog Box دارای متدهای زیر می باشد: ShowColor برای نمایش پنجره محاورهای تعیین رنگ در زمان فراخوانی این متد.
ShowFont برای نمایش پنجره محاورهای تعیین فونت در زمان فراخوانی این متد.
ShowHelp برای نمایش پنجره محاورهای راهنمای ویندوز در زمان فراخوانی این متد.
ShowOpen برای نمایش پنجره محاورهای باز کردن یک فایل در زمان فراخوانی این متد.
ShowPrinter برای نمایش پنجره محاورهای تعیین خصوصیات چاپگر در زمان فراخوانی این متد.
ShowSave برای نمایش پنجره محاورهای ذخیره کردن در یک فایل در زمان فراخوانی این متد.
Private Sub cmd_Click ( ) cdb.ShowColor lbl.ForeColor = cdb.Color End Sub یا اگر بخواهیم توسط دکمهای دیگر به نام cmd2، پنجره Open باز شود، و هر فایلی از هر مسیری را که کار بر انتخاب کرد، در lbl نمایش داده شود، مینویسیم: Private Sub cmd2_Click ( ) cdb.ShowOpen lbl.Caption = cdb.FileName End Sub Input box و Msgbox توابع از تابع MsgBox برای ارسال یک پیغام به کاربر و یا مطرح نمودن یک پرسش و دریافت جواب مثبت یا منفی او به سؤال مطرح شده و از تابع InputBox برای دریافت یک عبارت از کاربر، استفاده میشود.
توابع مذکور را میتوان مانند دستور نوشت، یعنی نام یکی از آن دو را و با یک فاصله پارامترهای احتمالی آنها را نوشت.
همچنین میتوان آنها را مانند یک Function به VB معرفی کرد.
(یعنی این توابع دارای مقدار بازگشتی باشند) که برای این منظور باید پارامترهای آنها را داخل پرانتز نوشت.
پنج پارامتر اول Input Box به ترتیب عبارتند از: Prompt: که یک عبارت رشته ای را (و یا یک متغیر رشته ای (String) را) بجای آن مینویسیم که این عبارت همان پیغامی خواهد بود که در اجرای InputBox به کاربر نشان داده خواهد شد (مثلاً پیغام اینکه او باید چه چیزی را وارد کند).
Title: که عنوان InputBox در TitleBar آن خواهد بود (به صورت عبارت رشتهای).
Default: که مقدار پیش فرض برای آن چیزی است که کاربر قرار است وارد نماید.
XPos و YPos: که طول و عرض گوشه بالا و سمت چپ InputBox را در هنگام اجرای آن مشخص میکند.
که می توان هریک از آنها را مقداردهی نکرد و در اینصورت مقادیر پیش فرض VB برای آنها در نظر گرفته خواهد شد.
به عنوان مثال اگر دستورات: Dim s As String s = InputBox (“Please enter your name” , “Title” , “Alireza”) را در برنامه داشته باشیم در زمان اجرای این دستورات شکل 12 را مشاهده خواهیم کرد: شکل 12 مشاهده می کنید که بطور پیش فرض مقدار “Alireza” در کادر مربوط قرار گرفته است که کاربر می تواند آن را تغییر دهد.
در هر حال پس از تأیید این کادر توسط کاربر، آنچه در کادر مذکور باشد به عنوان نتیجه در متغیر رشته ای s ذخیره می شود و میتوان از آن در ادامه استفاده نمود.
اما سه پارامتر اول MsgBox نیز به قرار زیراند: Prompt: که پیغامی است که در Message Box زمان اجرا به کاربر نمایش داده خواهد شد.
Button: که می توان دکمه های مورد نظر و علامت موردنظر برای Message Box را در آن تعیین نمود.
برخی از مقادیر مهمی که می توان در این پارامتر قرار داد عبارتند از: VBOKOnly : کادر مذکور فقط دارای دکمه OK خواهد بود.
VBOKCancel: کادر مذکور دارای دکمه های OK و Cancel خواهد بود.
VBYesNo: کادر مذکور دارای دکمه های Yes و No خواهد بود.
VBYesNoCancel: کادر مذکور دارای دکمه های Yes و No و Cancel خواهد بود.
VBAbortRetryIgnore: کادر مذکور دارای دکمه های Abort و Retry و Ignore خواهد بود.
VBRetryCancel: کادر مذکور دارای دکمه های Retry و Cancel خواهد بود.
VBMsgBoxRight: در کادر مذکور Title را راست چین میکند.
VBMsgBoxRtlReading: کادر مذکور را راست به چپ (Right to Left) میکند (و برای پیغام های فارسی مناسب است) VBCritical: یک علامت در کنار کادر اضافه خواهد شد.
VBExclamation: یک علامت در کنار کادر اضافه خواهد شد.
VBInformation: یک علامت در کنار کادر اضافه خواهد شد.
VBQuestion: یک علامت در کنار کادر اضافه خواهد شد.
نکته: می توان آنهایی را که با هم تداخلی ندارند با علامت + با هم ترکیب کرد.
مثلاً اگر بخواهیم که هم دکمه های OK و Cancel بیایند و هم در کنار پیغام، علامت بیاید و هم Title راست چین شود، می توان در این پارامتر چنین نوشت: VBOKCancel + VBInformation + VBMsgBoxRight Title: که می توان عبارتی که در TitleBar این کادر می آید را مشخص نمود.
به عنوان مثال اگر دستورات: Dim Result As VbMsgBoxResult Result = MsgBox (“Are you sure you want to exit?”,vbQuestion+vbYesNo, “Exit”) IF Result = vbYes then Unload Me را وارد کنیم، در اینصورت در زمان اجرای این دستورات ابتدا شکل 13 به کاربر نمایش داده خواهد شد و در صورتی که کاربر به پیغام داده شده پاسخ Yes دهد، فرم فعال (که در VB با Me نمایش داده می شود)، Unload خواهد شد: شکل 13 توجه داریم که نتیجه تابع MsgBox از نوع داده vbMsgBoxResult می باشد و لذا ما در بالا متغیر Result را از این نوع داده تعریف کردیم.
این نوع داده می تواند یکی از مقادیر vbAbort، vbCancel، vbIgnore، vbNo، vbOK، vbRetry و vbYes باشد.
تمرینات ویژوال بیسیک 1- برنامه ای بنویسید که یک عدد صحیح و یک عدد اعشاری دو دقتی را بگیرد سپس آنها را نمایش دهد .
2- برنامه ای بنویسید که دو عدد صحیح a , b را بگیرد سپس باقیمانده و خارج قسمت صحیح تقسیم a بر b را نمایش دهد.
3- برنامه ای بنویسید که دو عدد a و n را بگیرد سپس به دو روش مقدار an را محاسبه و چاپ کند.
4- برنامه ای بنویسید که x را دریافت کند سپس مقدار x را محاسبه و چاپ کند.
5- برنامه ای بنویسید که a و b را بگیرد سپس مقدار b , a را محاسبه و چاپ کند .
6- برنامه ای بنویسید که دو عدد x و y از نوع اعشاری معمولی را بگیرد سپس حاصل ضرب و حاصل جمع آنها را تا دو رقم اعشار نمایش دهد .
7- برنامه ای بنویسید که اسم یک شخص را دریافت کند سپس کلمه Hello به ابتدای آن اسم اضافه کند و نمایش دهد .
8- برنامه ای بنویسید که قیمت خرید یک کالا را بگیرد و 8% سود به آن اضافه کند و قیمت فروش را نمایش دهد .
(عدد از نوع صحیح بلند انتخاب شود).
9- برنامه ای بنویسید که شعاع یک کره را بگیرد سپس حجم آن را محاسبه و چاپ کند .
Pi=3.14 10- برنامه ای بنویسید که شعاع یک دایره را بگیرد سپس محیط و مساحت آن را محاسبه کند .
11- برنامه ای بنویسید که نام و حقوق یک کارمند را بگیرد سپس 5% مالیات از حقوق کسر کند سپس مقدار مالیات ، مقدار خالص حقوق و نام کارمند را نمایش دهد.
12- برنامه ای بنویسید که یک عدد دو رقمی را بگیرد سپس مقلوب عدد را نمایش دهد ( ورودی 42 مقلوب24) 13- برنامه ای بنویسید که یک عدد سه رقمی را بگیرد سپس مجموع ارقام و مقلوب آن را چاپ کند .
14- برنامه ای بنویسید که دو عدد صحیح را بگیرد سپس بدون استفاده از دستورات شرطی عدد بزرگتر را پیدا کرده نمایش دهد .
15- برنامه ای بنویسید که دو عدد صحیح را بگیرد سپس بدون استفاده از دستورات شرطی عدد کوچکتر را پیدا کرده نمایش دهد .
16- برنامه ای بنویسید که یک عدد دو عدد صحیح را بگیرد سپس بدون استفاده از عملگر تقسیم آن را به 16 تقسیم کرده حاصل را نمایش دهد .
17- برنامه ای بنویسید که یک عدد دو عدد صحیح را بگیرد سپس بدون استفاده از عملگر ضرب آن را به 8 ضرب کرده حاصل را نمایش دهد .
18- برنامه بنویسید که یک کاراکتر را دریافت کند سپس کاراکتر بعد و قبل از آن را چاپ کند .
19- برنامه ای بنویسید که تعداد ثانیه های یک سال را محاسبه و چاپ کند .
20- برنامه ای بنویسید که 5 عدد اعشاری معمولی را بخواند سپس میانگین آن ها را نمایش دهد .
( سه رقم اعشار) 21- تابعی برای محاسبه k امین جمله سری فیبوناچی بنویسید ؟
( تابع را به صورت بازگشتی بنویسید ) 22- برنامه ای بنویسید که مجموع k جمله اول سری رو محاسبه کند ؟
فهرست منابع و ماخذ 1- سایت ویکی پدیا 2- سایت اینترنتی www.google.com 3- http://www.schoolnet.ir/tutorial/vb/ 4- علیرضا زارعپور، ویژوال بیسیک ۵ - مباحثی در برنامه نویسی پیشرفته، موسسه فرهنگی نص، چاپ اول، بهار ۷۷ تابعفرمولسکانتSec(X) = 1 / (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لگاریتم بر مبنای NLogN(X) = Log(X) / Log(N) #include #include long int febo(int); main() { int x=1; long int y=1; clrscr(); printf("\n\n\t Enter a number : "); scanf("%d",&x); if((x>2)||(x=26)) { clrscr(); printf("\n\n\n\n\n\n\t\t Error !!!
"); } getch(); return 0; } long int febo(int n) { if(n>2)return(febo(n-1)+febo(n-2)); return 1; } #include #include int febo(int); int f(int); main() { int x=1,k=1,i; do{ clrscr(); printf("\n \n Enter a number : "); scanf("%d",&x); }while(x>21); if(x>1)k=febo(x); printf(" \n \n \n \t Sum("); for(i=1;i2)return f(x-1)+f(x-2); return 1; } int febo(int x) { if(x>2)return febo(x-1)+f(x); return 2; }