وقت بخیر دوستان، با آموزش برنامه نویسی (Visual Basic.NET (VB.NET از وب سایت پی وی لرن همراه هستیم. با بررسی توابع در VB.NET همراه خواهیم بود.
یک روند گروهی از عبارات است که هنگام فراخوانی با یکدیگر یک کار را انجام می دهند. پس از اجرای روند ، کنترل به بیانیه ای که در روند فراخوانی شده ، برمی گردد. VB.Net دو نوع روند دارد.
توابع یک مقدار را برمی گردانند ، در حالی که Subs یک مقدار را برنمی گرداند.
عبارت Function برای اعلام نام ، پارامتر و بدنه یك تابع استفاده می شود. سینتکس برای عبارت Function به صورت زیر است.
1 2 3 | [Modifiers] Function FunctionName [(ParameterList)] As ReturnType [Statements] End Function |
که،
Modifiers – سطح دسترسی تابع را مشخص کنید. مقادیر ممکن عبارتند از: عمومی ، خصوصی ، محافظت شده ، دوست ، دوست محافظت شده و اطلاعات مربوط به اضافه بار ، overriding ، اشتراک گذاری و shadowing.
FunctionName – نام تابع را نشان می دهد.
ParameterList – لیست پارامترها را مشخص می کند.
ReturnType – نوع داده متغیری که تابع بازگشت می دهد را مشخص می کند.
قطعه کد زیر تابع FindMax را نشان می دهد که دو مقدار عدد صحیح را می گیرد و عدد بزرگ تر را باز می گرداند.
1 2 3 4 5 6 7 8 9 10 11 | Function FindMax(ByVal num1 As Integer, ByVal num2 As Integer) As Integer ' local variable declaration */ Dim result As Integer If (num1 > num2) Then result = num1 Else result = num2 End If FindMax = result End Function |
در VB.Net ، یک تابع می تواند از دو طریق مقداری را با فراخوانی کد برگرداند.
مثال زیر با استفاده از تابع FindMax نشان داده شده است.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | Live Demo Module myfunctions Function FindMax(ByVal num1 As Integer, ByVal num2 As Integer) As Integer ' local variable declaration */ Dim result As Integer If (num1 > num2) Then result = num1 Else result = num2 End If FindMax = result End Function Sub Main() Dim a As Integer = 100 Dim b As Integer = 200 Dim res As Integer res = FindMax(a, b) Console.WriteLine("Max value is : {0}", res) Console.ReadLine() End Sub End Module |
هنگامی که کد بالا کامپایل و اجرا می شود، نتیجه زیر را ایجاد می کند.
1 | Max value is : 200 |
یک تابع می تواند خود را فراخوانی کند. این به عنوان بازگشتی شناخته می شود. در زیر مثالی وجود دارد که فاکتوریل را با استفاده از یک تابع بازگشتی برای تعداد معینی محاسبه می کند.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | Live Demo Module myfunctions Function factorial(ByVal num As Integer) As Integer ' local variable declaration */ Dim result As Integer If (num = 1) Then Return 1 Else result = factorial(num - 1) * num Return result End If End Function Sub Main() 'calling the factorial method Console.WriteLine("Factorial of 6 is : {0}", factorial(6)) Console.WriteLine("Factorial of 7 is : {0}", factorial(7)) Console.WriteLine("Factorial of 8 is : {0}", factorial(8)) Console.ReadLine() End Sub End Module |
هنگامی که کد بالا کامپایل و اجرا می شود، نتیجه زیر را ایجاد می کند.
1 2 3 | Factorial of 6 is: 720 Factorial of 7 is: 5040 Factorial of 8 is: 40320 |
در بعضی مواقع ، ضمن اعلام یک تابع یا رویه ی فرعی ، از تعداد آرگومان های تصویب شده به عنوان پارامتر مطمئن نیستید. VB.Net param arrays (یا آرایه های پارامتر) در این زمان ها به کمک شما می آیند.
مثال زیر این مسئله را نشان می دهد.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | Module myparamfunc Function AddElements(ParamArray arr As Integer()) As Integer Dim sum As Integer = 0 Dim i As Integer = 0 For Each i In arr sum += i Next i Return sum End Function Sub Main() Dim sum As Integer sum = AddElements(512, 720, 250, 567, 889) Console.WriteLine("The sum is: {0}", sum) Console.ReadLine() End Sub End Module |
هنگامی که کد بالا کامپایل و اجرا می شود، نتیجه زیر را ایجاد می کند.
1 | The sum is: 2938 |
شما می توانید آرایه ای را به عنوان آرگومان تابع در VB.Net منتقل کنید. مثال زیر این مسئله را نشان می دهد.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | Module arrayParameter Function getAverage(ByVal arr As Integer(), ByVal size As Integer) As Double 'local variables Dim i As Integer Dim avg As Double Dim sum As Integer = 0 For i = 0 To size - 1 sum += arr(i) Next i avg = sum / size Return avg End Function Sub Main() ' an int array with 5 elements ' Dim balance As Integer() = {1000, 2, 3, 17, 50} Dim avg As Double 'pass pointer to the array as an argument avg = getAverage(balance, 5) ' output the returned value ' Console.WriteLine("Average value is: {0} ", avg) Console.ReadLine() End Sub End Module |
هنگامی که کد بالا کامپایل و اجرا می شود، نتیجه زیر را ایجاد می کند.
1 | Average value is: 214.4 |
بررسی توابع در VB.NET را در این بخش از آموزش VB.NET را دنبال نمودیم. در بخش بعدی به بررسی زیر رویه ها خواهیم پرداخت. با ما همراه باشید.