Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
КТП_навч_пос_техн_спец.doc
Скачиваний:
1
Добавлен:
01.05.2025
Размер:
17.26 Mб
Скачать

5.8.2. Характеристика функцій

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

Для процедури типу Function характерний такий синтаксис:

Function Ім'я (аргументи) As тип

(оператори)

Ім'я = повертане_значення

End Function

Тут ключове слово Function визначає процедуру однойменного типу, після нього йде унікальне Ім'я процедури-функції, складене за правилами мови Visual Basic. Після імені функції подається перелік її аргументів аргументи, який містить передані цей функції дані. Тип визначає тип даних величини повертане значення, обчислювано функцією в точку виклику за допомогою приміщення її в змінну з ім'ям Ім'я. Значення яке повертається функцією, може мати будь-який тип даних, що існує в мові Visual Basic. Коли тип даних цього значення при оголошенні опущений, то передбачають, що це Variant.

Після створення функції слід зберегти її в спеціальному модулі для подальшого використання.

Виклик функції відбувається таким чином:

● без присвоєння:

Ім'я аргумент1, аргумент2 ..., аргумент n

● із присвоєнням:

x=Ім’я (аргумент1, аргумент2 ..., аргумент n)

Усередині тіла процедури або функції можна оголошувати нові змінні за допомогою ключового слова Dim.

Приклад суспільного використання функції та процедури.

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

Dim v, t, а

Function Rasst(х, у, z)

Rasst =x*y+z*y*y/2

End Function

Sub Vvod(param, x)

x = InputBox("Введіть значення параметра param:")

End Sub

Private Sub Commandl_Click()

Print "Завдання:"

Print "Визначити відстань, пройдену _ фізичним тілом"

"за час t, зі швидкістю v і прискоренням а"

Vvod "швидкість",v

Vvod "час", t

Vvod "прискорення", а

Print "Тіло пройшла відстань"; Rasst(v, t, а)

End Sub

При використанні у фунциях рекурсій використовується стекова пам'ять. (стек).

СТЕК - це послідовна організація пам'яті для структурного даного з доступом до елементу даного, що внесен до структури останнім.

Стек є як би протилежністю черги, оскільки він працює за принципом "останнім прийшов - першим вийшов".

При роботі із стеками операції занесення і витягання елементу є основними. Ці операції традиційно називаються "Заштовхати в стек" і "виштовхнути із стека".

Стек - це робоча область пам'яті, яка динамічно збільшується або зменшується залежно від потреб виконуваної програми. Щоб попередити переповнювання стека необхідно виконати наступні умови:

- переконаєтеся, що функції або процедури не є глибоко вкладеними;

- якщо для локальних змінних недостатньо місця, спробуйте оголосити деякі змінні на рівні модуля. Крім того, усі змінні в процедурі або функції можна оголосити статичними, поставивши попереду ключового слова Property, Sub або Function ключове слово Static. Оператор Static можна також використовувати для оголошення в процедурах або фунциях окремих статичних змінних;

- перевизначите деякі рядки фіксованої довжини як рядки змінної довжини, оскільки рядки фіксованої довжини використовують більший простір стека в порівнянні з рядками змінної довжини. Крім того, рядок можна визначити на рівні модуля, де їй не вимагається місце в стеку;

- перевірте число вкладених викликів функції DoEvents за допомогою діалогового вікна Calls, в якому можна проглянути, які процедури використовують стек;

- переконаєтеся, що не був запущений "каскад подій", який є результатом включення події, що викликає процедуру події, яка вже знаходиться в стеку. Каскад подій схожий на виклик незавершеної рекурсивної процедури, проте він не настільки помітний, оскільки виклик виконується системою Visual Basic і явним чином не визначений в коді. Для перегляду процедур, діючих в стеку, використовуйте діалогове вікно Calls.

6. ПРОЕКТУВАННЯ РОЗГАЛУЖЕНИХ АЛГОРИТМІВ

У СЕРЕДОВИЩІ VISUAL BASIC

6.1. Оператор безумовного переходу

Для нього характерний такий синтаксис:

Goto <мітка>.

Тут мітка являє собою сукупність букв і цифр кількістю не більшt 40. Крім оператора, мітка ставиться на початку рядка, до якого потрібно перейти, і закінчується вона двокрапкою.

Наприклад:

Gotо М1

оператори програми

М1: оператор

6.2. Оператор умовного переходу

Цей оператор має такий синтаксис для різних його типів:

Простий оператор:

If умова Then оператор 1 [Else оператор 2]

У даному випадку, якщо виконується зазначена умова, то керування процесом передається операторові 1, в інакших випадках – операторові 2.

Приклад:

If х>=0 Then y = a*x + b Else y = a*x-b,

де у, а, х, b – імена змінних.

Примітка. Якщо оператор не поміщається в рядку вікна, то його можна перенести на наступний рядок, використовуючи в місці розриву пропуск і знак підкреслення " _".

Складний оператор:

If умова 1 Then

[оператори]

[ElseIf умова 2 Then

[оператори]

[Else [оператори]]

End If

Складний оператор може включати вкладені умови. Він завжди записується відповідно до встановленої синтаксисом структури і закінчується зарезервованим словом End If.

Примітка. Якщо кілька операторів в одному рядку відносяться до частин Then або Else, то вони відокремлюються один від одного двокрапкою.

Сам оператор If може вступати в дію у простій або складній формі.

Наприклад,

y=

Виконуючи обчислення за першою формулою, крім зазначених умов, необхідно передбачити, щоб а 0, b 0 . Тоді запис складного оператора буде мати такий вигляд:

If Val(a.Text) <= 5 And Val(x.Text) =6 Then

у = (Val(a.Text) + Val(b.Text)) / Val(x.Text)

ElseIf Val(a.Text) <= 5 And Val(x.Text) > 6 And Val(a.Text) <> 0 And _

Val(b.Text) <> 0 Then

у = Val(x.Text) / Val(a.Text) - Val(x.Text) / Val(b.Text)

Else

у = Val(a.Text) ^3 + Val(b.Text) * exp(2.5)

End If

У цьому записі передбачено, що у, а, х, b являють собою імена текстових елементів (Textbox), е2 експоненціальну функцію.