وبلاگ تخصصي برنامه نويسي با VB

کار با اسکنر در وی بی


+ در بخش پرسش و پاسخ شماره ۵ سوالی در مورد کار با اسکنر و دريافت تصوير از آن در ويژوال بيسيک عنوان شد . همان طور که گفتم بايستی از کتابخانه هايی که برای اين منظور ارائه شده اند استفاده کنيد . يکی از اين کتابخانه ها EZ Twain می باشد . برای دريافت dll مربوط به اين کتابخانه و نيز دريافت يک برنامه نمونه کار با اين dll در ويژوال بيسيک اين لينک را کليک کنيد .

+ يکی از دوستان در مورد نحوه ايجاد فايلهای exe توسط وِيژوال بيسيک سوال کرده اند . برای ايجاد يک فايل exe توسط برنامه های ويژوال بيسيک بايستی با ساختارهای فايلهای اجرايی آشنا باشيد . برای مثال در مورد Winzip که سوال کرديد چگونه يک Self Extractor می سازد بايد گفت که احتمالاً Winzip يک برنامه اجرايی آماده دارد که يک داده خاص را که در بخش مشخصی از ساختار فايل آن قراردارد extract می کند . در زمان ساخت فايل extractor داده های مربوط به فايلهای zip شما را در فايل اجرايی و در آن محل مشخص بعنوان داده قرار می دهد .
برای آشنايی با ساختار فايلهای اجرايی به کتابهای windows system programming مراجعه کنيد .

اگر دوستان در اين زمينه اطلاعات بيشتری دارند لطفاً در بخش نظرخواهی بنويسند .

 

+ حامد شیدائیان ; ٤:۱۸ ‎ب.ظ ; چهارشنبه ٢٤ دی ،۱۳۸٢
comment نظرات ()

پاسخ به سوالات-۵


1 – چگونه می توان فایل Pdf ای را درون فرم ويژوال بيسيک نشان داد ؟
پاسخ : دو راه برای نمایش فایلهای Pdf در ويژوال بيسيک وجود دارد :
- استفاده از دستور ShellExecute برای نمایش فایل توسط Acrobat Reader . برای مثال :


ShellExecute hwnd, "open", "C:\acrobat5\reader\acrobat.pdf", vbNullString, "C:\", 1


در این روش نرم افزار Adobe Acrobat حتماً بایستی روی هر کامپیوتری که پروژه تان را روی آن اجرا می کنید وجود داشته باشد .
- استفاده از کتابخانه Adobe Acrobat Type Library:
در این روش بایستی نرم افزار Adobe Acrobat روی کامپیوتری که پروژه تان را روی آن Develop می کنيد وجود داشته باشد . ابتدا کتابخانه فوق را از بخش references موجود در منوی Project به پروژه تان اضافه کنید . سپس با استفاده از اشیای کلاس Acrobat می توانید برنامه مورد نظرتان را بنویسید . برای مثال کد زیر عنوان فایل Pdf را استخراج می کند :


Dim opdf As Acrobat.CAcroPDDoc
Set opdf = ("AcroExch.PDDoc")
opdf.Open (x)
Dim y As String
y = opdf.GetInfo("Title")

کد زیر مشابه روش بالا است اما احتیاجی به اضافه کردن کتابخانه مذکور به references نیست :


  Dim opdf As Object
  Set opdf = ("AcroExch.PDDoc")
  opdf.Open (x)
  Dim y As String
  y = opdf.GetInfo("Title")

2 – چگونه برای MP3 Player ساخت خودم در ويژوال بيسيک یک رقص نور مانند Winamp درست کنم ؟
پاسخ : بایستی از ترکیبی از الگوریتم های ریاضی و گرافیکی استفاده کنید . این روشها بسیار متنوع بوده است . اگر در اینترنت کمی بگردید به جواب خواهید رسید .

3 – لطفاً در مورد hwnd یا همان هندل فرمها توضیح کامل بدهید .
پاسخ : هر فرم در یک برنامه کاربردی در ویندوز با استفاده از الحاق یک دستگیره یا هندل به آن مشخص می شود . این هندل را با hWnd ( یا HWindow ) نیز نشان می دهیم . برخی توابع کتابخانه ای ویندوز به خاصین هندل فرم جاری بعنوان یک آرگومان نیاز دارند تا عملی را بر روی آن فرم انجام دهند . بعبارت دیگر توسط هندل یک فرم می توان به مشخصات و خصوصیات آن فرم دسترسی داشت . خاصیت هندل فرم در ویژوال بيسيک خاصیتی فقط خواندنی است .
باید توجه داشت که هندل یک فرم با هندل زمینه دستگاه آن متفات است .
زمینه دستگاه یا device context یکی دیگر از مشخصات یک فرم می باشد . در ویندوز هر سطحی که عمل رسم بر روی آن انجام می شود یک زمینه دستگاه نام دارد . برای دسترسی به زمینه دستگاه هر فرم از هندلی به اسم hDC استفاده می شود .

4 – چگونه می توان در ويژوال بيسيک از کتابخانه  openGL استفاده کرد ؟
پاسخ : قبلاً در این وبلاگ مطلبی در این زمینه نوشته ام . به اين آدرس مراجعه کنید :

5 – در مورد نصب ويژوال بيسيک دات نت منبعی را معرفی کنید .
پاسخ : به کتابهای.NET مراجعه کنید . فقط این نکته را ذکر می کنم که در زمان نصب ويژوال استديو دات نت ابتدا بایستی FrontPage Server  Extension را روی سیستمتان نصب کرده و فعال کنید . سپس بایستی توسط سی دی Prerequisites موجود در مجموعه سی دی های نصب ، موارد مورد نیاز برای نصب دات نت را روی سیستمتان نصب کنید ( برای مثال .Net Framework ) سپس بسراع نصب خود دات نت بروید .

6 – چگونه می توان از دستورات داس در VB استفاده کرد برای مثال dir ؟
پاسخ : بابا بیخیال !!!

7 – چگونه می توان skin هایی را که با استفاده از وی بی ایجاد می کنیم به سیستممان اضافه کنیم ؟
پاسخ : دوست عزیزی جواب این سوال را داده اند : " شما ميتونيد از برنامه زيبا و توانمند ActiveSkin استفاده کنی که ورژن 4.3 اونرو ميتونی از ZDnet دانلود کنی اگر کرکش رو پيدا نکردی خبر بده برات بفرستم "

8 – چگونه می توان دو فایل را بهم bind کرد ( بهم چسباند ) مثلاً دو فایل اجرایی ( EXE ) را بهم چسباند .
پاسخ : اگر هدف تنها اینست که دو فایل بهم بچسبند می توان محتوای فایل اول و سپس محتوای فایل دوم را خواند و آنها را در یک فایل جدید ریخت . در مورد چگونگی خواندن محتوای فایلهای باینری قبلاً در این وبلاگ مطالبی نوشته ام . اما اگر هدف الحاق دو فایل بهم است بطوریکه فایلها قابل دسترسی باشند ( مثلاً الحاق یک ویروس که به فایلی اجرایی می چسبد ) بایستی با ساختار فایلهای گوناگون آشنا باشید .

9 – چگونه می توان یک فرم را در حالت Always on Top قرار داد ؟
پاسخ : حالت Always on Top حالتی است که در آن همیشه فرم برنامه شما قابل مشاهده در صفحه ویندوز باشد . ( حتی اگر برنامه دیگری انتخاب شده و فعال باشد ) . برای قرار دادن فرم در این حالت از یک API موجود در کتابخانه user32 با نام SetWindowPos استفاده می شود . چگونگی declare کردن این تابع بصورت زیر است ( اين declare را در بالای کدهای مربوط به فرمتان قرار دهيد ) :


Private Declare Function SetWindowPos Lib "user32" (ByVal hwnd As Long, ByVal hWndInsertAfter As Long, ByVal x As Long, ByVal y As Long, ByVal cx As Long, ByVal cy As Long, ByVal wFlags As Long) As Long


همچنین ثابتهای زیر را در بالای کدتان تعریف کنید :

Const SWP_NOMOVE = 2
Const SWP_NOSIZE = 1
Const FLAGS = SWP_NOMOVE Or SWP_NOSIZE
Const HWND_TOPMOST = -1
Const HWND_NOTOPMOST = -2


یک تایمر با Interval ای برابر 1 در فرمتان قرار دهید و کد زیر را برای متد Timer آن بنویسید تا فرم در این حالت قرار بگیرد :


Dim result As Long
result = SetWindowPos(Form1.hwnd, HWND_TOPMOST, 0, 0, 0, 0, FLAGS)


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


Timer1.Enabled = False
Dim result As Long
result = SetWindowPos(Form1.hwnd, HWND_NOTOPMOST, 0, 0, 0, 0, FLAGS)

برای فعال کردن مجدد این حالت کافیست خاصیت Enabled تایمر را True کنید .

10 - من الان دارم با jro(jet replica) با vb6 کار میکنم. مشکلم اینجاست که نمیتونم با یک فایل از یک ftp ارتباط بر قرار کنم هتی یک فولدر با ای پی ولید درست کردم ولی نشده .
پاسخ : در مورد مشکلتان واضحتر توضیح بدهید .

11 – چگونه می توان از طریق ویژوال بيسيک با اسکنر ارتباط برقرار نموده و عکس را از آن گرفت و در بانک اطلاعاتی ذخیره نمود .
پاسخ : در مورد بخش آخر سوال که ذخیره عکس در بانک اطلاعاتی می باشد قبلاً مطالبی در این وبلاگ نوشته ام . اما در مورد قسمت اول بایستی از یکسری OCX برای اینکار استفاده کنید مانند Twain Scanning ocx و يا Kodak Image Control ocx .

12 - من از datagrid استفاده ميکنم و هر تغيير در رکوردهای آن صورت بگيرد مستقيماً در ديتابيس اعمال ميشود. من ميخواهم وقتی کاربر هر کاری در برنامه کرد و در آخر از برنامه خواست خارج بشه و از کل تغييراتی که کرده بود صرف نظر کنه يه پيغام بهش بده و اگه خواست تغييراتی که انجام داده صرف نظر کنه همه تغييرات برگرده به حالت اول .
پاسخ : من راه حلی بنظرم نرسید . دوستان اگر نظری دارند بدهند . در ضمن به کتاب برنامه نویسی بانکهای اطلاعاتی در ويژوال بيسيک چاپ شده توسط انتشارات نص نیز مراجعه کنید .

13 – در مورد کار با ADO و چگونگی برقراری ارتباط با فایلهای mdb توضیح دهید .
پاتسخ : قبلاً به اختصار در این زمینه مطالبی نوشته ام . در ضمن به کتاب برنامه نویسی بانکهای اطلاعاتی در ويژوال بيسيک چاپ شده توسط انتشارات نص نیز مراجعه کنید .

14 – چگونه می توان يک صفحه A4 را در يک فرم ايجاد کرد وروی اون مطالب و يا جدول و ... را برای چاپ آماده کرد مثل ليست حقوقی و يا صورت هزينه و اين جور چيزها .
پاسخ : شما اطلاعات خود را بهر شکلی که می خواهید روی فرم قرار دهید . در زمان چاپ فرم می توانید سایز صفحه را با استفاده از خاصیت Papersize شی Printer مشخص کنید . برخی مقادیر که می توان برای خاصیت PaperSize تنظيم نمود عبارتند از :
1 : Letter, 8 1/2 x 11 in
8 : A3, 297 x 420 mm
9 : A4, 210 x 297 mm
11 : A5, 148 x 210 mm

برای اطلاعات بیشتر به مطلبی که در مورد شی پرینتر نوشته ام مراجعه کنید .
نکته : در دات نت نیز شی پرینتر در کلاس System.Drawing.Printing موجود است .

15 – وقتی که یک فرم جهت ورود اطلاعات ساخته می شود باستی از طریق دکمه Tab به فیلدهای بعدی رفت . چگونه می توان کاری کرد که با زدن کلید Enter در هر فیلد به فیلد بعدی رفت ؟
پاسخ :  یک روش اینست که در متد KeyPress هر کادر متنی ( یا فیلد ورود اطلاعات ) کدی بنویسید که تشخیص دهد اگر دکمه Enter فشرده شده فوکوس را به فیلد بعدی مورد نظر شما منتقل کند . برای مثال اگر فرض کنید دو کادر متنی با نامهای Text1 و Text2 در فرمتان دارید کد زیر را برای متد KeyPress کادر متنی Text1 بنویسید :


Private Sub Text1_KeyPress(KeyAscii As Integer)
  If KeyAscii = 13 Then Text2.SetFocus
End Sub

16 – لطفاً در مورد StatusBar در WebBrowser توضیح بدهید . لطفاً در مورد نمایش History در WebBrowser توضیح دهید .
پاسخ  :  سوال خود را دقیقتر مطرح کنید .

17 – چگونه می توان فعالیت کلیدهای Alt+Ctrl+Del و Alt+Esc و Alt+Tab را در ويژوال بيسيک غیر فعال کرد ؟
پاسخ : برای اینکار از تابع SystemParametersInfo موجود در کتابخانه user32 استفاده می شود . برای declare کردن این API بصورت زیر عمل کنید :


Private Declare Function SystemParametersInfo Lib "user32" Alias "SystemParametersInfoA" (ByVal uAction As Long, ByVal uParam As Long, lpvParam As Any, ByVal fuWinIni As Long) As Long

  
همچنین ثابت زیر را نیز تعریف کنید :


Private Const SPI_SCREENSAVERRUNNING = 97


حال توسط کد زیر می توانید ترکیب Alt+Ctrl+Del را غیر فعال کنید .


    Dim ret As Integer
    Dim pOld As Boolean
    ret = SystemParametersInfo(SPI_SCREENSAVERRUNNING, True, pOld, 0)

برای اطلاعات بيشتر و نيز چگونگی غير فعال کردن دو ترکيب ديگر به اين آدرس مراجعه کنید :

18 – چگونه می توان API های WinInet را به API ها اضافه کرد ؟
پاسخ : در بخش WinInet اين مطلب را توضيح داده ام .

19 -  چگونه می توان یک فایل را بصورت مخفیانه به یک آدریس ایمیل در یاهو ارسال کرد ؟
پاسخ : ؟؟؟

20 – یک برنامه تحت ويژوال بيسيک معرفی کنید که بتوان با آن انتگرال دو گانه گرفت .
پاسخ : اگر منظورتان محاسبه مقدار عددی انتگرال دو گانه یک تابع دو متغیره در یک بازه است که باید از الگوریتم های محاسبات عددی استفاده نمائید . برای اطلاعات بیشتر به کتابهای محاسبات عددی پیشرفته مراجعه کنید . اما اگر منظورتان محاسبه انتگرال دوگانه یک تابع است که اینکار به این راحتی ها امکان پذیر نیست و حتی شاید غیر ممکن باشد .

21 – یک Data Type به اسم PRAS_PORT_0 در Msdn وجود دارد که بصورت زیر تعریف شده است :


typedef struct _RAS_PORT_0 {
  WCHAR wszPortName[RASSAPI_MAX_PORT_NAME];
  WCHAR wszDeviceType[RASSAPI_MAX_DEVICETYPE_NAME];
  WCHAR wszDeviceName[RASSAPI_MAX_DEVICE_NAME];
  WCHAR wszMediaName[RASSAPI_MAX_MEDIA_NAME];
  DWORD reserved;
  DWORD Flags;
  WCHAR wszUserName[UNLEN + 1];
  WCHAR wszComputer[NETBIOS_NAME_LEN];
  DWORD dwStartSessionTime;
  WCHAR wszLogonDomain[DNLEN + 1];
  BOOL fAdvancedServer;
} RAS_PORT_0, *PRAS_PORT_0;


چگونه می توان این data type را در ويژوال بيسيک تعريف نمود ؟ کلاً اگر بخواهیم data type ها را در ويژوال بيسيک تعريف کنيم چه بايد بکنيم ؟
پاسخ : برای تعريف data type در ويژوال بيسيک از ساختار Type-End Type استفاده می شود . برای مثال :


Private Type SampleType
  mem1 As Integer
  mem2 As String
End Type


در مثال فوق يک data type از نوع Private با نام SampleType تعريف شده که دارای دو عضو به نامهای mem1 از نوع Integer و mem2 از نوع String است .

در مورد تغيير انواع داده ای نیز بصورت زیر عمل کنيد :
Int  --> Integer
Bool --> Boolean
DWORD --> Long
WCHAR --> array of Byte

22 - Platform SDK که در سایت Msdn از آن اسم برده می شود چيست ؟ آيا همان سی دی های Msdn است ؟
پاسخ : SDK يا همان source development kit ، شامل يکسری مطلب آموزشی و نمونه کد است که در مورد یک زمینه برنامه نويسی خاص توسط مایکروسافت منتشر می شود . برخی از اين SDK ها قابل دانلود از سايت مايکروسافت ( مثلاً DirectX SDK  ) و برخی دیگر فروشی هستند (Windows Driver Model SDK ) .

+ دوستان لطفاً سوالات خود را بصورت فارسی یا انگلیسی بنویسند . به سوالات پینگلیش پاسخ داده نمی شود .

+ مطلب بعدی : دسترسی به بانک های اطلاعاتی SQL در دات نت .

 

+ حامد شیدائیان ; ٥:۳٠ ‎ب.ظ ; شنبه ٢٠ دی ،۱۳۸٢
comment نظرات ()

تصحيح چند اشتباه


در نوشتن مقاله "توابع رياضی و ويژوال بيسيک" چند اشتباه رخ داده بود که يکی از دوستان عزير و خوانندگان اين وبلاگ لطف کرده و اين اشتباهات را ذکر کردند :

"سلام بسيار عالی بود...مدت ها بود به دنبال اين فرمولها می گشتم. اما با اجازه چند نکته : - (pi=4*atn(1 - خروجی تابع exp برابر e به توان عدد ورودی می باشد. - تابع int در فارسی به تابع جزء صحیح مشهور است. - برای به دست آوردن ریشه n ام عدد از فرمول زیر استفاده می شود: (x^(1/n = ریشه n ام با تشکر "

اين اشتباهات در مقاله فعلی تصحيح شده است .

همينجا از دقت نظر اين دوست عزير تشکر می کنم .

+ پاسخ به سوالات تا آخر اين هفته

+ حامد شیدائیان ; ۱:۱٠ ‎ب.ظ ; دوشنبه ۱٥ دی ،۱۳۸٢
comment نظرات ()

آشنايي با شی پرينتر در ويژوال بيسيک ۶


مقدمه

شی پرينتر ، شیي است که پرينتر پيش فرض سيستم را کنترل می کند . استفاده از شی پرينتر در ويژوال بيسيک 6 مانند کار با ساير اشيا است و بايستی از خواص و متدهای آن استفاده کرد . در ادامه با برخی از اين خواص و متدها آشنا خواهيد شد .

چاپ متن توسط شی پرينتر

برای چاپ متن توسط شی پرينتر کافيست خواص CurrentX و CurrentY که محل قرار گرفتن کرسر می باشد را تنظيم نوده و سپس با استفاده از متد Print متن مورد نظر را چاپ نموده و در پايان با استفاده از متد EndDoc صفحه چاپی را از پرينتر بيرون بدهيم . مثال :


Printer.CurrentX=150
Printer.CurrentY=200
Printer.Print "Visual Basic Printer Object Test"
Printer.EndDoc


در مثال فوق فرض شده که ScaleMode برابر Pixel قرار داده شده است . توجه داشته باشيد که تا قبل از اجرای متد EndDoc عمل چاپ انجام نمی شود و فقط بعد از اين متد است که چاپ انجام شده و کاغذ بيرون می آيد .

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

نکته : برای کنترل دقيق محل چاپ از CurrentX و CurrentY استفاده نمائيد .

چاپ گرافيک توسط شی پرينتر

به 4 روش می توان اشکال گرافيکی را توسط شی پرينتر چاپ کنيد :
1 – چاپ دايره : با استفاده از متد Circle می توان يک دايره ، قوس و يا بيضی را در صفحه چاپ کرد . فرمت کلی اين متد بصورت زير است :

Circle (x,y),radius,[color],[start],[end],[aspect]

که x و y مختصات مرکز دايره و radius شعاع آن می باشد .
پارامترهای color ، start ، end و aspect اختياری هستند و بترتيب رنگ ، محل شروع قوس ، محل خاتمه قوس و نسبت شعاع بيضی را نشان می دهند .

2 – چاپ خط : با استفاده از متد Line می توان يک خط و مستطيل را در صفحه چاپ کرد . فرمت کلی اين متد بصورت زير است :

Line (x1,y1)-(x2,y2),[color],[B[F]]

که x1 و y1 مختصات شروع خط ( يا مستطيل ) و x2 و y2 مختصات انتهای خط ( يا مستطيل ) هستند .
پارامتر color اختياری بوده و رنگ خط ( يا مستتطيل ) را نشان می دهد .
پارامتر B اختياری بوده و نشان می دهد يک مستيل رسم  شود .
پارامتر F اختياری بوده و بهمراه B می آيد و نشان می دهد يک مستطيل توپر رسم شود .

3 – چاپ نقطه : با استفاده از متد PSet می توان نقطه ای روی صفحه چاپ کرد و فرمت کلی آن بصورت زير است :

PSet (x,y),[color]

که x و y مختصات نقطه می باشند .
پارامتر color اختياری بوده و رنگ نقطه را نشان می دهد .

4 – چاپ تصوير : با استفاده از متد PaintPicture می توان محتويات يک فايل گرافيکی را چاپ کرد . فرمت کلی اين متد بصورت زير است :

Printer.PaintPicture picture, x1, y1, [width1], [height1], [x2], [y2], [width2], [height2], [opcode]

x1 و y1 مختصات قرارگرفتن تصوير در صفحه بوده و picture يک شی از کلاس IPictureDisp است . اين شی را می توان از يک PictureBox يا از خاصيت Picture فرم گرفت و يا از دستور LoadPicture استفاده کرد .

مثال 1 :


Printer.PaintPicture Picture1.Picture, 100, 100

مثال 2 :

PaintPicture LoadPicture("C:\sample.jpg"), 100, 100

width1 و height1 طول و عرض تصوير چاپی  می باشند . x2 و y2 نيز بهمراه width2 و height2 می توانند ميزان برش از تصوير اصلی برای چاپ را مشخص کنند .

ساير خواص مهم شی پرينتر

ColorMode : اگر پرينتر رنگی باشد ، رنگی يا تک رنگ بودن چاپ را تعيين می کند .
Copies : تعداد چاپ را مشخص می کند .
Font : نوع فونت چاپ متن را مشخص می کند .
FontSize : سايز فونت چاپ متن را مشخص می کند .
PrintQuality : کيفيت چاپ را مشخص می کند .

ساير متدهای مهم شی پرينتر

KillDoc : پرينت در حال چاپ را از صف چاپ حذف می کند .
NewPage : صفحه جاری را به پايان برده و صفحه جديدی را برای چاپ آماده می کند .
Scale : سيستم مختصات کاربر را تعيين می کند .
TextHeight : ارتفاع متن پس از چاپ شدن در مختصات Scale را تعيين می کند .
TextWidth : عرض متن پس از چاپ شدن در مختصات Scale را تعيين می کند .

+ به زودی به پرسشهای جديد پاسخ خواهم داد .

 

+ حامد شیدائیان ; ۱:۳٥ ‎ب.ظ ; دوشنبه ۸ دی ،۱۳۸٢
comment نظرات ()

توابع رياضی و ويژوال بيسيک


مقدمه

برای نوشتن برنامه های مهندسی ، محاسباتی ، گرافيکی و آماری نياز داريد تا از برخی توابع رياضی استفاده نمائيد . ويژوال بيسيک ۶ دارای مجموعه ای از توابع است که برای انجام محاسبات عددی پيش بينی شده اند . در اين مقاله ابتدا با اين توابع آشنا شده و سپس چگونگی ايجاد ساير توابع رياضی را که در ميان اين مجموعه وجود ندارند خواهيد ديد . در پايان نيز با توابع رياضی موجود در دات نت آشنا می شويد .

توابع رياضی موجود در ويژوال بيسيک ۶

-  تابع 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

چگونگی ايجاد ساير توابع رياضی که در ويژوال بيسيک ۶ وجود ندارند

جدول زير چگونگی محاسبه ساير توابع رياضی که در ويژوال بيسيک ۶ وجود ندارند را نشان می دهد :

سکانت

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)


اعداد π و e در ويژوال بيسيک 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.Net

مجموعه توابع رياضی در در ويژوال بيسيک دات نت وجود دارند بسيار قويتر و کاملتر هستند . اين مجموعه توابع در کلاس System.Math موجود می باشند :

- در کلاس Math دو ثابت به اسم E و PI برای نشان دادن پايه لگاريتم طبيعی و عدد پی وجود دارند .

- توابع مثلثاتی : Acos ( آرک کسينوس ) ، Asin ( آرک سينوس) ، Atan ( آرک تانژانت) ، Atan2 ( آرک تانژانت خارج قسمت تقسيم ورودی ها ) ، Cos ( کسينوس ) ، Sin ( سينوس ) ، Tan ( تانژانت )

- توابع عمومی : Abs ( قدرمطلق ) ، BigMul ( حاصلضرب کامل دو عدد 32 بيتی ) ، Ceiling ( تابع سقف ) ، DivRem ( خارج قسمت نقسيم دو عدد ) ، Floor ( تابع کف ) ، IEEERemainder ( باقيمانده نقسيم دو عدد )  ، Max ( ماکزيمم بين دو عدد ) ، Min ( مينيمم بين دو عدد ) ، Round ( تابع گرد کردن ) ، Sign ( تابع علامت ) ، Sqrt ( تابع جذر )

- توابع هيپربوليک : Cosh ( کسينوس هيپربوليک ) ، Sinh ( سينوس هيپربوليک ) ، Tanh ( تانژانت هيپربوليک )

- توابع نمايي و لگاريتمی : Exp ( عدد e به توان مقدار ورودی ) ، Log ( لگاريتم ) ، Log10 ( لگاريتم بر پايه 10 ) ، Pow ( تابع توان ) 

 

+ حامد شیدائیان ; ۱٠:٤٦ ‎ق.ظ ; سه‌شنبه ٢ دی ،۱۳۸٢
comment نظرات ()