خوش آموز درخت تو گر بار دانش بگیرد، به زیر آوری چرخ نیلوفری را
عملگر AndAlso در ویژوال بیسیک دات نت
عمگر AndAlso پیوستگی منطقی بین دو عبارت را کوتاه می کند که اصطلاحا به آن short-circuiting می گویند. مفهوه کوتاه کردن (short-circuiting) به این معنا است که وقتی این کد کامپایل شد، کد کامپایل شده می تواند بر مبنای نتایج یک عبارت از بررسی سایر عبارت ها صرفنظر کند و در واقع آنها را دور بزند.
اگر یعد از ارزیابی نتیجه عبارت اول، مقدار نهایی result تعیین شود، نیازی به ارزیابی عبارت دوم نمی باشد، زیر مقدار آن هر چه باشد دیگر نمی تواند نتیجه نهایی result را تغییر بدهد. این کوتاه کردن (Short-circuiting) تاثیر بسزایی در کارآیی برنامه دارد، زیرا ممکن است عبارت دوم شما خودش فراخوانی یک رویه (procedure) باشد که منابع سیستم را مصرف می کند.
اگر هر دو عبارت True باشند، result نیز True می باشد. جدول زیر نحوه مشخص شدن result در حالتهای مختلف را به شما نشان می دهد.
عملگر AndAlso فقط محدود به نوع داده Boolean می باشد. اگر عبارت های شما از نوع Boolean نباشند، ویژوال بیسیک آنها را به نوع Boolean تبدیل (convert) می کند. این مساله اگر به آن اشراف نداشته باشید ممکن است نتایج غیر منتظره ای را برای شما تولید کند، بعنوان مثال (وقتی که نتیجه را به Integer تبدیل کنید.) :
در مثال زیر از عملگر AndAlso برای اجرای یک پیوستگی منطقی بین دو عبارت استفاده شده است. نتیجه از نوع Boolean می باشد که بررسی کند ،آیا کل عبارت برابر با true می باشد یا نه. اگر عبارت اول False باشد، عبارت دوم ارزیابی نخواهد شد.
نتایج این مثال بترتیب True و False و False می باشد. در هنگام محاسبه مقدار secondCheck ، عبارت دوم ارزیابی نخواهد شد، چون عبارت اول در حال حاضر False می باشد. در مورد thirdCheck عبارت دوم هم ارزیابی خواهد شد.
متن زیر قابل کپی کردن می باشد.
مثال زیر یک رویه Function را نشان میدهد که یک مقدار را داخل یک آرایه مورد جستجو قرار می دهد. اگر آرایه خالی باشد، و یا اینکه تعداد اعضاء آرایه بیش از حد باشد، دستور While دیگر عملیاتش را انجام نخواهد داد.
متن زیر قابل کپی کردن می باشد.
نحوه نگارش (Syntax) عملگر AndAlso
result = expression1 AndAlso expression2
تشریح قسمتهای مختلف عملگر AndAlso
-
result : نتیجه مقایسه بین دو عبارت را بصورت Boolean در خود دارد.
-
expression1 : هر عبارتی از نوع Boolean می تواند باشد.
-
expression2 : هر عبارتی از نوع Boolean می تواند باشد.
توضیحات عملگر AndAlso
اگر یعد از ارزیابی نتیجه عبارت اول، مقدار نهایی result تعیین شود، نیازی به ارزیابی عبارت دوم نمی باشد، زیر مقدار آن هر چه باشد دیگر نمی تواند نتیجه نهایی result را تغییر بدهد. این کوتاه کردن (Short-circuiting) تاثیر بسزایی در کارآیی برنامه دارد، زیرا ممکن است عبارت دوم شما خودش فراخوانی یک رویه (procedure) باشد که منابع سیستم را مصرف می کند.
اگر هر دو عبارت True باشند، result نیز True می باشد. جدول زیر نحوه مشخص شدن result در حالتهای مختلف را به شما نشان می دهد.
انواع داده ها (Data Types) در عملگر AndAlso
عملگر AndAlso فقط محدود به نوع داده Boolean می باشد. اگر عبارت های شما از نوع Boolean نباشند، ویژوال بیسیک آنها را به نوع Boolean تبدیل (convert) می کند. این مساله اگر به آن اشراف نداشته باشید ممکن است نتایج غیر منتظره ای را برای شما تولید کند، بعنوان مثال (وقتی که نتیجه را به Integer تبدیل کنید.) :
5 AndAlso 12 = –1
مثال از نحوه استفاده از عملگر AndAlso
در مثال زیر از عملگر AndAlso برای اجرای یک پیوستگی منطقی بین دو عبارت استفاده شده است. نتیجه از نوع Boolean می باشد که بررسی کند ،آیا کل عبارت برابر با true می باشد یا نه. اگر عبارت اول False باشد، عبارت دوم ارزیابی نخواهد شد.
نتایج این مثال بترتیب True و False و False می باشد. در هنگام محاسبه مقدار secondCheck ، عبارت دوم ارزیابی نخواهد شد، چون عبارت اول در حال حاضر False می باشد. در مورد thirdCheck عبارت دوم هم ارزیابی خواهد شد.
متن زیر قابل کپی کردن می باشد.
Dim a As Integer = 10
Dim b As Integer = 8
Dim c As Integer = 6
Dim firstCheck, secondCheck, thirdCheck As Boolean
firstCheck = a > b AndAlso b > c
secondCheck = b > a AndAlso b > c
thirdCheck = a > b AndAlso c > b
Dim b As Integer = 8
Dim c As Integer = 6
Dim firstCheck, secondCheck, thirdCheck As Boolean
firstCheck = a > b AndAlso b > c
secondCheck = b > a AndAlso b > c
thirdCheck = a > b AndAlso c > b
مثال از نحوه استفاده از عملگر AndAlso
مثال زیر یک رویه Function را نشان میدهد که یک مقدار را داخل یک آرایه مورد جستجو قرار می دهد. اگر آرایه خالی باشد، و یا اینکه تعداد اعضاء آرایه بیش از حد باشد، دستور While دیگر عملیاتش را انجام نخواهد داد.
متن زیر قابل کپی کردن می باشد.
Public Function findValue(ByVal arr() As Double,
ByVal searchValue As Double) As Double
Dim i As Integer = 0
While i <= UBound(arr) AndAlso arr(i) <> searchValue
' If i is greater than UBound(arr), searchValue is not checked.
i += 1
End While
If i > UBound(arr) Then i = -1
Return i
End Function
ByVal searchValue As Double) As Double
Dim i As Integer = 0
While i <= UBound(arr) AndAlso arr(i) <> searchValue
' If i is greater than UBound(arr), searchValue is not checked.
i += 1
End While
If i > UBound(arr) Then i = -1
Return i
End Function
نمایش دیدگاه ها (0 دیدگاه)
دیدگاه خود را ثبت کنید: