PDA

توجه ! این یک نسخه آرشیو شده می باشد و در این حالت شما عکسی را مشاهده نمی کنید برای مشاهده کامل متن و عکسها بر روی لینک مقابل کلیک کنید : توابع ریاضی و رشته اي در ویژوال بیسیک



TAHA
10-29-2009, 11:31 PM
برای نوشتن برنامه‌های مهندسی، محاسباتی، گرافیکی و آماری نیاز دارید تا از برخی توابع ریاضی استفاده نمائید. ویژوال بیسیک 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)
اعداد π و e
برای استفاده از اعداد پی و 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

TAHA
10-29-2009, 11:32 PM
مديريت توابع مربوط به رشته ها در ويژوال بيسك

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



:Asc


كد اسكي اولين كاراكتر رشته ورودي را برمي گرداند.كه فرمت كلي آن (Asc(string است.ضمن اينكه تابع Asc W كد يونيكد اولين كاراكتر را بر مي گرداند.


:Chr


اين تابع رشته اي را برمي گرداند كه معادل كد اسكي ورودي است.




:LCase


اين تابع تمام كاراكتر هاي رشته ورودي را به حروف كوچك تبديل مي كند.



:UCase


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


:Left


رشنه اي را برمي گرداند كه شامل تعداد مشخصي از كاراكتر هاي سمت چپ رشته ورودي است.فرمت كلي آن به شكل ذيل است:


Left (String,Length)x

String رشته ورودي و Length طول رشته مورد نظر است.
مثال:
در كد زير عبارت "shah" به صورت پيغام ظاهر مي شود.


کد:

(MsgBox (Left("shahram"),4
Right

رشته اي را برمي گرداند كه شامل تعداد مشخصي از كاراكتر هاي سمت راست رشته ورودي است.در مثال فوق اگر به جاي lLeft از Right استفاده شود در پيغام عبارت "hram" ظاهر مي شود.

TAHA
10-29-2009, 11:33 PM
Space:
تعدادمشخصي كاراكتر فاصله بر مي گرداند.

Len:

طول رشته ورودي را بر ميگرداند.پس از استفاده از كد زير عدد ٧ در caption فرم ظاهر مي شود:

کد:


Me.Caption = Len("shahram")
Trim:
اين تابع space هائي كه در ابتدا يا انتهاي رشته باشد را حذف مي كند.مثال:


‏Trim(" shahram ")=shahram

نكته اي كه بايد به آن توجه شود اين است كه اين تابع فقط فصاهاي خالي ابتدا و انتها را حذف مي كند.ضمن اينكه توابع Ltrim و Rtrim از راست و چپ عمل مي كنند.

Mid:
تابع بسيار كاربردي و مهمي است كه در برنامه هاي مختلف به وفور از آن استفاده كردم.اين تابع يك رشته را بر مي گرداند كه شامل تعداد مشخصي از كاراكتر هاي رشته ورودي است. در برنامه هائي كه برنامه نويس قصد پردازش تك تك ويا قسمتي از رشته ها را انجام دهد بسيار استفاده مي شود.فرم كلي تابع به صورت (Mid(String,Start,Length مي باشد
String رشته ورودي،ٍStart محل شروع اولين كاراكتر و Length طول رشته اي است كه مي خواهيم استخراج كنيم.
در كد زير dvb2 به عنوان پيام ظاهر مي شود:


کد:

MsgBox (Mid("www.dvb2.com", 5, 4))

عدد 5 يعني از كاراكتر پنجم كه حرف d باشد به اندازه 4 حرف جدا كن.

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


InStr [start,]string1,string2,compare

start محل شروع جستجو،string1 رشته اي كه جستجو در آن انجام شود،string2 رشته مورد جستجو و compare كه اختياري است نوع جستجو را نشان مي دهد.اگر ١ باشد جستجو متني و اگر صفر باشد باينري انجام مي شود.
كد زير عدد 5 را بر مي گرداند:


کد:

MsgBox (InStr(4, "www.dvb2.com", "dvb2"))

TAHA
10-29-2009, 11:34 PM
InstrRev:
برعكس تابع InStr مي باشد يعني عمل جستجو را از انتهاي رشته انجام ميدهد.

Replace:
رشته اي را بر مي گرداند كه در آن يك رشته خاص با رشته ديگري به تعداد دفعات مشخصي جايگزين شده است.فرمت كلي آن به شكل زير است:



Replace(expression, find, replace[, start[, count[,compare]]])x

Expression رشته اصلي ، find رشته مورد جستجو ، start محل شروع جايگزيني و compare نوع جستجو را نشان مي دهد.كد زير رشته "www.dvb2.com" را پيغام ميدهد:


کد:

MsgBox (Replace("www.dcd2.com", "cd", "vb"))


اگر طول expression برابر صفر باشد مقدار بازگشتي رشته اي با طول صفر است.اگر طول find صفر باشد مقدار بازگشتي expression اي است كه در آن تمام find ها حذف شده است.

StrReverse:
رشته اي را برمي گرداند كه كاراكتر هاي آن به ترتيب عكس كاراكتر هاي رشته ورودي است.مثلا:


"StrReverse("abcd")="dcba

Join:
تعدادي رشته موجود در يك آرايه را به هم متصل مي كند و رشته حاصل شده را بر مي گرداند.فرمت كلي آن به شكل زير است:


Join(sourcearray[, delimiter])x

Sourcearray آرايه اي شامل رشته هائي كه مي خواهيم آنها را بچسبانيم و delimiter كاراكتري است كه براي اتصال رشته ها استفاده مي شود كه اگر داده نشود از كاراكتر فاصله استفاده مي شود.براي چسباندن رشته ها بدون هيچ فاصله اي بايد طول اين كاراكتر بايد صفر باشد.مثلا در كد زير رشته "shahram" به صورت پيغام ظاهر مي شود.


کد:

Private Sub Form_Load()
Dim Ar(3) As String
Ar(1) = "sha"
Ar(2) = "hr"
Ar(3) = "am"
MsgBox Join(Ar, "")
End Sub

TAHA
10-29-2009, 11:35 PM
Split:
اين تابع آرايه اي از تعداد مشخصي رشته بر مي گرداند كه اين رشته ها توسط يك كاراكتر جدا كننده از درون يك رشته استخراج شده است.
فرمت كلي:



Split(expression[, delimiter[, limit[, compare]]])x

Expression :رشته اصلي
Delimiter: اين پارامتر اختياري است و كاراكتر جدا سازي را نشان مي هد.در صورتيكه اين پارامتر وارد نشود كاراكتر فاصله براي جدا سازي استفاده مي شود.
limit: تعداد رشته هاي موجود در آرايه رانشان مي دهد.
Compare: نوع جستجو را نشان مي دهد.
با كد زير در (Ar(0 رشته "sh" در (Ar(1 رشته "ahr" و در (Ar(2 رشته "am" قرار مي گيرد.


کد:

Private Sub Form_Load()
Dim Ar(3) As String
Ar = Split("sh#ahr#am", "#")
End Sub

StrComp:
اين تابع دو رشته ورودي را با هم مقايسه مي كند.
فرمت كلي:



StrComp(string1, string2[, compare])x
String1: رشته اول
String2: رشته دوم
Compare: نوع مقايسه
اگر string1 كوچكتر از String2 باشد مقدار بازگشتي 1- است .اگر دو رشته مساوي باشند مقدار بازگشتي صفر است و اگر رشته ٢ كوچكتر از رشته ١ باشد مقدار باز گشتي ١ است.

StrConv:
در رشته ورودي تغييراتي اعمال مي كند.
فرمت كلي:


StrConv(string, conversion)x
string: رشته ورودي
conversion: نوع تغيير را نشان مي دهد.اين مقادير عبارتند از:
1: تبديل به حروف بزرگ
2: تبديل به حروف كوچك
3: تبديل اولين كاراكتر رشته به حروف بزرگ
64: تبديل به يك رشته يونيكد
128: تبديل از رشته يونيكد به كد پيش فرض سيستم