:: Меню ::

Головна
  • Про сайт
  • Введення
  • Середовище програмування VB .NET: Visual Studio .NET
  • Вирази, оператори і передача управління
  • Класи і об'єкти
  •  Спадкоємство і інтерфейси
  • Обробка подій і делегати
  • Обробка помилок в VB .NET
  • Форми Windows, графічний вивід і друк
  • Уведення-виведення
  •  Багатопотокові застосування
  • Підтримка баз-даних в VB .NET
  • Короткий огляд ASP .NET
  • Складки .NET, установка додатків і COM Interop
  • Книга для гостей
    Контакти
    Добавити у вибране

    :: Друзі ::

     
     

    :: Лічильники ::

    = =

     

     

     

     

    Процедури

    На відміну від функцій, процедури не повертають конкретних значень. Виклик процедур здійснюється по імені. Непорожні списки аргументів завжди полягають в круглі дужки. У приведеному нижче прикладі рядок з викликом процедури виділена жирним шрифтом:

    Option Strict On

    Module Modulel

    Sub Showbottlesofbeer(Byval nbot As Integer)

    Console.WriteLine(nbot & " bottles of beer on the wall")

    Console.Writeline(nbot & " bottles of beer.")

    Console.WriteLine("if one of those bottles hsould happen to fall")

    Console.WriteLine(nbot -1&" bottles of beer on the wall")

    End Sub

    Sub Main()

    Dim I As Integer

    For I = 10 To 1 Step -1

    Showbottlesofbeer(I)

    Next

    Console.WriteLine("All beer gone...")

    Console. Readline()

    End Sub

    End Module

    При виклику процедур указувати ключове слово Sub не обов'язково. Рядок з викликом процедури з приведеного вище прикладу можна було записати і у такому вигляді:

    Call Showbottlesofbeer(I)

    Заголовок процедури повинен містити оголошення всіх параметрів з ключовими словами Byval або Byref (за умовчанням використовується Byval, тобто передача за значенням):

    Sub імя_процедури(У(Byvа1 аргумент1 As тип. Byval аргумент2 As тип ....)

    команди

    End Sub

    При виклику процедури у формі імя_процедури(аргумент1, аргумент2 ...) або Call імя_процедури(аргумент1. аргумент2 ...) VB .NET створює копії даних-аргументів і виконує код, що міститься в тілі процедури (оскільки на відміну від попередніх версій за умовчанням параметри передаються за значенням).

    Передчасний вихід з функцій або процедур

    У деяких ситуаціях потрібно покинути функцію до того, як буде досягнута стандартна точка виходу (наприклад, якщо перевірка покаже, що початкові дані невірні і подальші обчислення безглузді). Команда Return негайно передає управління зухвалій стороні (якщо не визначена секція Finally — див. розділ 7):

    Function Ballout (X As Double) As Double If X < 0 Then

    Return 0' Повернути фіктивне значення Else

    ' Основні дії

    End If

    End Function

    'Вихід з процедур здійснюється командою

    Exit Sub.

    Передача масивів функціям і процедурам

    У VB .NET, як і в колишніх версіях VB, існують зручні засоби для роботи з одновимірними і багатовимірними масивами в процедурах і функціях. Втім, існують деякі нюанси, обумовлені передачею по посиланню і за значенням; ми розглянемо їх в розділі 4. Перебір вмісту масиву здійснюється конструкцією For Each або (поширеніший варіант) стандартним циклом For з обчисленням верхньої межі за допомогою функції Ubound (). Нижче приведений приклад функції пошуку максимального елементу в масиві:

    Function Findmax(Byva1 a() As Integer

    Dim finish As Integer = Ubound(a)

    Dim max As Integer = а(0)

    Dim i As Integer

    For i = 0 To finish

    If а(i)> max Then max = а(i)

    Next i

    Return max End Function

    Узагальнена форма виклику Ubound(імя_массива, I) повертає верхню межу по 1-у вимірюванню масиву. Для одновимірних масивів (списків) параметр 1 є необов'язковим.

    Для перевірки також можна скористатися методом Length, реалізованим в класі масиву, але цей метод повертає кількість елементів в масиві замість верхньої межі (у багатовимірних масивах ці величини не збігаються).

    Процедури і функції з необов'язковими аргументами

    У VB. NET збережена можливість визначення процедур і функцій з необов'язковими аргументами, але на відміну від Vb6 для кожного необов'язкового параметра має бути вказане значення за умовчанням. Наступний приклад демонструє синтаксис оголошення необов'язкових параметрів:

    Sub Processaddress(Thename As String

    Address As String. City As String. State As String.

    Zipcode As String. Optional Zipplus4 As String = "0000")

    У даному прикладі останній параметр є необов'язковим (Optional) і за умовчанням рівний "0000".

    В розділі 4 описано перевантаження (overloading) —другой спосіб визначення функцій з необов'язковими параметрами.

    VB .NET також дозволяє визначати процедури і функції з довільною кількістю аргументів. Для цього як параметр передається масив з ключовим словом Раramаrrау, як в наступному прикладі:

    Function Addthemup(Byval Paramarray stuff() As Double) As Double

    Dim total As Double = 0

    Dim Number As Double = 0

    Dim I As Integer

    For I = 0 To Ubound(stuff)

    total = total + stuff(I)

    Next

    Return total End Function

    Приклад використання функції:

    x = Addthemup(3, 4. 5. 6)

    В результаті змінною х привласнюється значення 18.

    Іменовані аргументи

    При виклику функцій і процедур з великою кількістю параметрів (особливо необов'язкових) існує така елегантна можливість, як передача іменованих аргументів. Якщо значення параметрів при виклику передаються у вигляді «ім'я -:=значение», вам не доведеться турбуватися про дотримання порядку аргументів (регістр символів в іменах ігнорується). На відміну від колишніх версій VB, де іменовані аргументи то працювали, то немає, в VB .NET вони працюють завжди.

    Іменовані аргументи розділяються комами. При розумному виборі імен параметрів іменовані аргументи помітно спрощують читання програми, особливо при великій кількості необов'язкових аргументів. Для прикладу візьмемо приведений вище заголовок функції Processaddress:

    Sub Processaddress(Thename As String.

    Address As String. City As String. State As String

    Zipcode As String, Optional Zipplus4 As String = "0000")

    Виклик цієї процедури може виглядати так:

    Processaddress(Address := "The Whitehouse"

    Name := "GEORGEW"

    City := "DC". _

    State:= String.Empty. _

    Zipcode:= "12345")

    Звернете увагу: порядок перерахування аргументів відрізняється від заданого в заголовку процедури.

    Рекурсія

    У VB .NET, як і в будь-якій скільки-небудь серйозній мові програмування, підтримується рекурсія — вирішення завдань за допомогою зведення їх до простіших завдань того ж типу. Одним із стандартних прикладів рекурсивного рішення є перебір дерева каталогів на диску (див. розділ 9).

    На концептуальному рівні рекурсивне рішення виглядає таким чином:

    Рішення задачі із застосуванням рекурсії

    If завдання тривіальне

    Вирішити Else

    Спростити завдання, зводячи її до однотипної, але простішої завданню

    Вирішити простішу задачу із застосуванням рекурсії

    End If

    (Можливо) Об'єднати вирішення простої завдання (або завдань)

    з рішенням початкової задачі.

    Рекурсивна функція або процедура постійно викликає сама себе, безперервно спрощуючи завдання до тих пір, поки її рішення не стане тривіальним; у цей момент завдання вирішується, і відбувається повернення до попереднього рівня. Застосування рекурсії нерідко пов'язане з принциповою зміною підходу до деяких завдань, що породжують особливо елегантні рішення і такі ж елегантні програми (до речі, багато алгоритмів сортування — такі, як вбудований метод Sort класу .NET Array, — засновані на принципі рекурсії).

    Як приклад ми розглянемо програму пошуку найбільшого загального дільника двох цілих чисел (тобто найбільшого цілого числа, на яке вони обидва діляться без залишку). Приклад:

    • НОД(4,6) = 2 (найбільше число, на яке 4 і 6 діляться без залишку).
    • НОД(12,7) - 1 (числа 12 і 7 не діляться ні на одне ціле число, більше 1).

      Близько 2000 років тому Евклід запропонував наступний алгоритм обчислення НОД двох цілих чисел а і b:

    • Якщо а ділиться на b, Нод= b. Інакше НОД (а, b) = НОД (b, а Mod b)

    Пригадаємо, що функція Mod повертає залишок від цілочисельного ділення, а вираз а Mod b,равно 0 лише в тому випадку, якщо а кратно b. Приклад:

    НОД(126.12)=НОД (12. 126 Mod 12)=НОД (12,6) - 6

    Нижче приведений приклад рекурсивної функції для обчислення НОД. У рядку, виділеному жирним шрифтом, функція GCD викликає сама себе для простішого випадку:

    Option Strict On Module Modulel

    Function GCD(Byval p As Long, Byval q As Long) As Long

    If Q Mod P = 0 Then

    Return P Else

    Return GCD(Q, P Mod Q)

    End If

    End Function Public Sub Main()

    Console.WriteLine("The GCD of 36 and 99 is " & GCD(36. 99))

    Console. Readline()

    End Sub

    End Module

    Спочатку обробляється тривіальний випадок Q Mod P = 0 . Якщо ця умова не виконується, функція GCD знову викликає себе для простішого випадку, оскільки в результаті застосування Mod ми переходимо до менших чисел. У приведеному прикладі об'єднувати результати не потрібно (як, наприклад, у функції сортування).

     


    Модная одежда лето свадебное платье сонник anabel.org.ua.

    :: Наша кнопка ::

    Отримати код:

    Підтримайте наш сайт і розмістіть нашу кнопку на своєму ресурсі.


    :: Реклама ::

    Скачати безкоштовно програму Microsoft Front Page 2003


    :: Посилання ::

    -


     

     

     


    Copyright ©