Скачать презентацию Модульне програмування 1 2 3 1 Функції Процедури Скачать презентацию Модульне програмування 1 2 3 1 Функції Процедури

АППОИ_7_Модульне програмування.ppt

  • Количество слайдов: 17

Модульне програмування 1. 2. 3. 1 Функції Процедури Передача аргументів Модульне програмування 1. 2. 3. 1 Функції Процедури Передача аргументів

Функції і процедури - характеристика 2 Функції й процедури в VB. NET (як і Функції і процедури - характеристика 2 Функції й процедури в VB. NET (як і в багатьох інших мовах програмування) можна розглядати як фрагменти коду з деяким ім'ям. По цьому імені ці фрагменти коду можна викликати скільки завгодно раз. Різниця між ними така - функція повертає деяке значення, процедура ж ніякого значення після себе не залишає – тільки цим вони і відрізняються. Вибір між процедурою (Sub) і функцією (Function) може визначатися простим критерієм: якщо ви збираєтесь використати значення, що повертається - використовуйте функцію, а якщо ні - процедуру.

Синтаксис функції [{Public | Protected | Friend | Protected Friend | Private}] Function ім’яфункції[(arglist)] Синтаксис функції [{Public | Protected | Friend | Protected Friend | Private}] Function ім’яфункції[(arglist)] [ As type ] [ оператори ] [ Exit Function ] [оператори ] End Function Тут представлено не повний синтаксис функції – повний у файлі Function_Statement. doc, який взято із Help MSDN. 3

Приклад створення функції 4 Створити функцію визначення максимального із двох цілих чисел. З використанням Приклад створення функції 4 Створити функцію визначення максимального із двох цілих чисел. З використанням оператора Return ми повертаємо значення. Операторів Return може бути декілька. Можна замість Return у тілі функції виконати привласнення значення: If n. A > n. B Then Max = n. A Else Max = n. B End If End Function 'Кінець функції Function Max(By. Val n. A As Integer, By. Val n. B As Integer) As Integer Dim n. Result As Integer If n. A > n. B Then n. Result = n. A Else n. Result = n. B End If Return n. Result End Function 'Кінець функції Sub main() Dim w, r, q As Integer w = 12 : r = -25 q = Max(w, r) Console. Write. Line(q) End Sub

Приклад із Help (розділ - Function) 5 Public Function Calc. Sum(By. Val Param. Array Приклад із Help (розділ - Function) 5 Public Function Calc. Sum(By. Val Param. Array Умова задачі: функція Calc. Sum Args() As Double повертає суму Dim I As Integer аргументів. Calc. Sum = 0 !! Аргументи функції If Args. Length <= 0 Then Exit Function ' No у прикладі задаються з arguments passed. використанням For I = 0 To UBound(Args, 1) Param. Array – Calc. Sum += Args(I) масиву параметрів – Next I тобто кількість їх End Function ' Returns latest value of Calc. Sum. може бути Викликати функцію можемо так: довільна!! Dim Returned. Value As Double (на слідуючому слайді текст про Returned. Value = Calc. Sum(4, 3, 2, 1) Param. Array)

Пояснення щодо Param. Array The Param. Array keyword indicates that a procedure argument is Пояснення щодо Param. Array The Param. Array keyword indicates that a procedure argument is an optional array of elements of the specified type. Param. Array can be used only on the last argument of an argument list. It allows you to pass an arbitrary number of arguments to the procedure. A Param. Array argument is always passed using By. Val. 6 Param. Array ключове слово яке показує, що параметр процедури - динамічний масив елементів визначеного типу. Param. Array може використовуватись тільки як останній параметр списку параметрів. Це надає можливість Вам передавати довільну кількість параметрів у процедуру. Параметр Param. Array завжди передають з використанням By. Val.

Передача даних за значенням і по посиланню Параметри у функції й процедури можна передавати Передача даних за значенням і по посиланню Параметри у функції й процедури можна передавати за значенням і по посиланню. Коли ми передаємо параметри за значенням By. Val, то ми фактично передаємо копію змінної, якщо ж ми передаємо параметр по посиланню By. Ref, то ми передаємо оригінал змінної. У першому випадку - при передачі параметра за значенням, якщо ми змінюємо параметр усередині функції, то оригінал змінної не міняється. У другому ж випадку - при передачі по посиланню, зміна параметра у функції спричиняє зміну і його оригіналу. За замовчуванням в VB. NET параметри передаються за значенням (а в VB 6 - по посиланню). 7

Приклад на використання By. Val та By. Ref 8 Imports System Module 1 Function Приклад на використання By. Val та By. Ref 8 Imports System Module 1 Function fp 1(By. Val a As Integer, By. Ref b As Integer) As Integer a = a + 1 b = b + 1 Return 0 End Function Sub main() Dim n, m As Integer n = 4 m = 4 fp 1(n, m) Console. Write. Line("{0}, {1}", n, m) End Sub End Module Результатом виконання цієї програми буде 4 і 5. Тому що перший параметр функції оголошений з модифікатором By. Val, то у функцію передається тільки його копія, другий же параметр передається з модифікатором By. Ref, тобто передається його оригінал. У такий спосіб функція fр1 збільшує на 1 тільки змінну m.

Sub - процедура l l l 9 Sub name [ (Of typeparamlist) ] [ Sub - процедура l l l 9 Sub name [ (Of typeparamlist) ] [ (parameterlist) ] [ Implements implementslist | Handles eventlist ] [ statements ] [ Exit Sub ] [ statements ] End Sub

Приклад на використання By. Ref 10 Imports System Module Test Sub Swap(By. Ref a Приклад на використання By. Ref 10 Imports System Module Test Sub Swap(By. Ref a As Integer, By. Ref b As Integer) Dim t As Integer ‘Оголошуємо змінну t для обміну t = a a = b b = t End Sub main() Dim n, m As Integer n = 4 m = 14 Console. Write. Line("{0}, {1}", n, m) 'Надрукується 4 і 14 Swap(n, m) Console. Write. Line("{0}, {1}", n, m) 'Надрукується 14 і 4 End Sub End Module Процедура Swap міняє значення своїх параметрів. Обидва параметри (a і b) передаються в процедуру із ключовим словом By. Ref, так що процедура міняє місцями значення саме цих переданих змінних, а не їхніх копій.

Приклад процедури із Help 11 Sub. Compute. Area(By. Val Length As Double, By. Val Приклад процедури із Help 11 Sub. Compute. Area(By. Val Length As Double, By. Val Width As Double) Dim Area As Double If Length = 0 Or Width = 0 Then ' If either argument = 0. Exit Sub ' Exit Sub immediately. End If Area = Length * Width ' Calculate area of rectangle. Console. Write. Line(Area) ' Print Area to Immediate window. End Sub

Передача масивів функціям і процедурам 12 В VB. NET існують зручні засоби для роботи Передача масивів функціям і процедурам 12 В VB. NET існують зручні засоби для роботи з одновимірними й багатовимірними масивами в процедурах і функціях. Перебір вмісту масиву здійснюється конструкцією For Each або (більш розповсюджений варіант) стандартним циклом For з обчисленням верхньої границі за допомогою функції UBound (). Узагальнена форма виклику UBound(ім'я_масиву, J) повертає верхню границю по J-му вимірі масиву. Для одномірних масивів (списків) параметр J є необов'язковим. На слідуючому слайді наведений приклад “класичної” функції пошуку максимального елемента в масиві.

Пошук максимального елемента в масиві Function Find. Max(By. Val a() As Integer)‘аргумент а() - Пошук максимального елемента в масиві Function Find. Max(By. Val a() As Integer)‘аргумент а() - масив Dim finish As Integer = UBound(a) ‘кількість елементів Dim max As Integer = a(0) ‘ припустили, що max це a(0) Dim i As Integer For i = 0 To finish If a(i) > max Then max = a(i) ‘ шукаємо у циклі max елемент Next i Return max ‘ повертаємо знайдений max елемент End Function 13

Функції перетворення типів 14 Перетворення типів в VB. NET може відбуватися двома способами. Перший Функції перетворення типів 14 Перетворення типів в VB. NET може відбуватися двома способами. Перший спосіб - це неявне перетворення. Просто привласнюємо змінній одного типу змінну або значення іншого типу. Наприклад: Dim p As Single = 15. 75 Dim v As Integer v = p Console. Write. Line(“v = {0}", v) Зазначений фрагмент виведе на екран число 16. Тобто у цьому випадку відбувається заокруглення. При неявному перетворенні ми, як правило, втрачаємо точність.

Функції перетворення типів Функція CDbl Double CSng Single CInt Integer CLng Long CByte CShort Функції перетворення типів Функція CDbl Double CSng Single CInt Integer CLng Long CByte CShort CDec Decimal CChar CBool 15 Тип, що повертає Boolean CStr String CDate CObj Object Другий спосіб перетворення типів використовує спеціальні функції. Всі CType будь-який тип ці функції починаються на букву C. Dim w As Single = 15. 75 Dim k As Integer Dim b As Boolean k = CInt(w) 'k = 16. b = CBool(0) 'b = False. b = CBool(2) 'b = True.

Функції перетворення типів Усі функції перетворення типів мають один параметр – змінна яку потрібно Функції перетворення типів Усі функції перетворення типів мають один параметр – змінна яку потрібно перетворити. Функція CType – має два параметра. Перший параметр - змінна, яку слід перетворити. Другий параметр - це тип, до якого перетворюємо. Приклад використання цієї функції: Dim m As Single = 15. 75 Dim s As String 'Перетворюємо число 5. 67 у рядок. s = CType(m, String) 16 Console. Write. Line(s)

Перетворення типів через клас Convert В VB. NET є спеціальний клас Convert для конвертування Перетворення типів через клас Convert В VB. NET є спеціальний клас Convert для конвертування різних типів друг у друга. У цього класу є кілька статичних методів. Назва їх усіх починається на To. Деякі з них: To. Boolean, To. Byte, To. Char, To. Double, To. Single, To. Int 16, To. Int 32, To. Int 64, To. String. Приклад застосування цього класу: Dim p As Double = -5. 6 Dim z As Int 32 z = Convert. To. Int 32(p) Console. Write. Line(z) ‘Буде виведено -6. Dim s 1, s 2 As String s 1 = "17" s 2 = “ 25" z = Convert. To. Int 32(s 1) + Convert. To. Int 32(s 2) Console. Write. Line(z) ‘Буде виведено 42. 17