Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

КЛ по Информатике-2008-часть2_укр

.pdf
Скачиваний:
18
Добавлен:
21.02.2016
Размер:
4 Mб
Скачать

 

 

Основні логічні операції VBA

 

Таблиця 4.4

 

 

 

 

Назва

Позначення

Приклад

Значення A

Значення B

Результат

операції

в VBA

 

 

 

 

Логічне

Not

Not A

True

 

False

заперечення

 

 

False

 

True

 

 

 

 

 

 

Логічне

And

A And B

True

True

True

"И"

 

 

True

False

False

 

 

 

False

True

False

 

 

 

False

False

False

 

 

 

 

 

 

Логічне

Or

A Or B

True

True

True

"ИЛИ"

 

 

True

False

True

 

 

 

False

True

True

 

 

 

False

False

False

 

 

 

 

 

 

Як видно з таблиці, логічна операція Not (логічне заперечення) змінює значення свого операнда на протилежне. Логічна операція And (логічне "И") приймає значення True тоді і тільки тоді, коли обидва операнда мають значення True, і, отже, приймає значення False, якщо хоча б один з операндов має значення False. Логічна операція Or (логічне "ИЛИ") приймає значення True, якщо хоча б один з операндів має значення True, і, отже, приймає значення False тільки тоді, коли обидва операнда приймають значення False.

Приклад 12. При значеннях a = 3 і b = 2 наступні три логічних вираза

Not a >= b

a >= 1 And a <= 5 a < 0 Or b > 1

приймають значення False, True і True відповідно.

§5. Основні оператори мови VBA

Оператор виконує над даними визначену дію. Кожний новий оператор записується з нового рядка. Щоб записати декілька операторів на одному рядку, їх розділяють між собою двокрапкою (:). Якщо оператор не вміщується в одному рядку, то необхідно поставити наприкінці рядка пробіл і знак підкреслення ( _ ), а потім продовжити частину, що не помістилася, на наступному рядку.

5.1. Оператор коментарю

Цей оператор призначений для введення коментарів у тексті програми. Загальний вид оператора:

REM <коментар>

або

‘<коментар> Приклад 13:

Rem Іванов П.А. Група Б-2ю ‘варіант 15

5.2. Оператор присвоювання

Оператор присвоювання використовується, якщо якийсь змінній або елементу масиву потрібно привласнити нове значення, і має такий вигляд:

<ім’я змінної або елемент масиву> = <вираз>

90

Спочатку обчислюється вираз в правій частині, а потім результат привласнюється змінній, що знаходиться в лівій частині.

Вираз і змінна в лівій частині повинні мати сумісний тип. Змінним типу Variant можливо привласнювати значення будь-якого типу. Змінним строкового типу можна привласнювати значення типу Variant. Числовій змінній привласнювати значення типу Variant можна тільки тоді, коли це значення можна перетворити в число.

Приклад 14: Записати за допомогою оператора присвоювання наступний математичний ви-

раз:

y = 3

a +

a2

+ eb

.

sina lnb

 

 

 

 

На VВА цей вираз можна записати у вигляді наступного оператора:

Y = a^(1/3)+(a^2+exp(-b))/(sin(a)-log(b))

5.3 Умовний оператор If

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

If <лог. вираз> Then

 

 

 

 

 

 

 

 

 

 

 

 

так

 

лог. вираз

 

 

ні

 

<оператори 1>

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

істина?

 

 

 

 

 

Else

 

 

 

 

 

 

 

 

 

 

<оператори 2>

Оператори 1

 

Оператори 2

End If

Рис. 4.1 Загальний вид оператора If

Виконувані дії:

1)обчислюється логічний вираз <лог. вираз>;

2)– якщо значенням логічного виразу є True (ИСТИНА), то наступними виконуються <оператори 1>, записані після службового слова Then, а потім оператори, записані після End If;

– якщо значенням логічного виразу є False (ЛОЖЬ), то наступними виконуються <оператори 2>, записані після службового слова Else, а потім оператори, записані після End If.

Приклад 15. Дано коло із центром на початку координат і граничною окружністю радіуса R. Задано координати деякої точки M(x,y) на площині. Потрібно логічній змінній priznak привласнити значення True, якщо крапка перебуває усередині кола (включаючи границю), і значення False, якщо крапка розташована поза колом. Це завдання вирішує наступний фрагмент програми на VBA:

‘опис змінних

Dim x As Double, y As Double, R As Double Dim priznak As Boolean

………......

‘обчислення

If sqr(x*x + y*y) <= R Then priznak = True

Else

priznak = False End If

………......

91

Приклад 16. Скласти фрагмент програми обчислення функції

x2 1, якщо x 5 y =

ln x, якщо x > 5

Dim x As Double, y As Double

…………......

If x <= 5 Then y = x^2 - 1

Else

y = log(x) End If

………….......

Наявність службового слова Else і наступних за ним операторів у вищенаведеному загальному виді оператора If не є обов’язковим. Скорочений запис оператора If використовується в тих випадках, коли в ході обчислювального процесу необхідно виконати деякі дії лише за умови істинності логічного виразу. Відповідний фрагмент обчислювального процесу представлений на рис.4.2.

If <лог. вираз> Then

 

 

так

 

лог. вираз

 

 

 

 

істина?

<оператори >

 

 

 

 

 

 

оператори

 

 

End If

 

ні

 

 

 

 

 

 

 

 

 

 

 

 

Рис 4.2 Скорочена форма оператора If

Якщо в скороченій формі запису оператора If <оператори> містять усього лише один оператор, то є можливим однорядковий запис такого оператора:

If <лог. вираз> Then <оператор>

Приклад 17

Dim s As String

If x > 0 Then s = "x - позитивне число"

5.4 Оператор вибору Select ... Case

Цей оператор дозволяє виконувати одну з декількох груп операторів залежно від значення виразу. Загальний вид оператора:

Select Case <Вираз_що_перевіряється> Case <Значення_1>

<оператори_1> Case <Значення_2> <оператори_2>

. . .

Case <Значення_n> <оператори_n>

[Case Else

<Оператори_за_замовчуванням>]

End Select

92

Тут <Вираз_що_перевіряється> – будь-який числовий або строковий вираз. <Значення_i> складаються з довільної кількості значень або діапазонів, відділених друг від друга комами. Тип <Значення_i> повинен збігатися з типом <Вираз_що_перевіряється>. Частина Case Else (у квадратних дужках) не є обов’язковою.

Дії, виконувані оператором Select Case:

1)обчислюється <Вираз_що_перевіряється>;

2)обчислене значення <Вираз_що_перевіряється> послідовно порівнюється із зазначеними в реченнях Case значеннями <Значення_1>, <Значення_2> ... <Значення_n> на предмет збігу або приналежності діапазону;

3)якщо для деякої i-ого речення Case виявлено збіг або влучення в діапазон <Значення_i>, то виконуються відповідної цьому реченню <оператори_i> і керування передається операторові, що розташовано після End Select;

4)якщо значення <Вираз_що_перевіряється> не збігається з жодним зі значень <Значення_i>, то, при наявності речення Case Else, виконуються <Оператори_за_замовчуванням> і керування передається операторові, що розташований після End Select. Якщо в жодному реченні Case <Значення_i> не міститься компоненти, що відповідає аргументу <Вираз_що_перевіряється>, і відсутня інструкція Case

Else, виконання триває з інструкції, що розташовано за інструкцією End Select. Приклад 18. Потрібно за номером дня тижня NumDay (1, 2, ...,7) привласнити строкової з- мінній NameDay відповідне найменування (понеділок, вівторок, ..., неділя). Це завдання вирішує наступний фрагмент програми:

Dim NumDay As Integer

Dim NameDay As String

………......

Select Case NumDay Case 1

NameDay = "понеділок" Case 2

NameDay = "вівторок" Case 3

NameDay = "середа" Case 4

NameDay = "четвер" Case 5

NameDay = "п’ятниця" Case 6

NameDay = "субота" Case 7

NameDay = "неділя" Case Else

NameDay = "Номер дня тижня поза діапазоном 1...7" End Select

………......

У кожному реченні Case допускається використання декількох значень або діапазонів. Діапазони задаються службовим словом To або службовим словом Is зі знаком операції відносини. Наприклад припустимі наступні рядки Case:

Case 1 To 5

Case 1, 3, 5

Case Is > 5

Case 1 To 4, 7 To 9, 11, 13, Is > MaxNumber

Приклад 19. Наступний фрагмент програми визначає, у який з діапазонів попадає значення цілочислової змінної Number.

93

ПЦ=НЗ,КЗ,Крок
Тіло циклу

Dim Number As Integer

 

Dim ms As String

 

Number = 8

‘ Ініціалізує змінну.

Select Case Number

‘ Аналізує число.

Case 1 To 5

.

ms = "Між 1 і 5"

 

‘ Наступне речення Case є єдиним цілим.

Case 6, 7, 8

.

ms = "Або 6, або 7 або 8" Case Is > 8

ms = "Більше 8"

End Select

5.5 Оператори циклу.

Цикл (4.8) – це алгоритмічна структура, за допомогою якої реалізується багаторазове повторення блоків операторів. У мові VBA існує два основних види циклів, які реалізуються за допомогою конструкцій For…Next, і Do…Loop...

Цикл (4.8)

Цикл – це алгоритмічна структура, за допомогою якої реалізується багаторазове повторення блоків операторів.

Цикл For...Next.

Оператор For...Next використовується для організації циклів "для", тобто циклів з відомим числом повторень (рис. 4.3), і має такий вигляд:

For <ПараметрЦиклу> = <ПочатковеЗначення> to <КінцевеЗначення> [Step <Крок>] <тіло циклу>

Next [<ПараметрЦиклу>]

Рис. 4.3 Цикл з відомим числом повторень

Оператор циклу For...Next забезпечує багаторазове виконання блоку операторів (<тіла циклу>) при послідовній зміні <параметра циклу> від початкового до кінцевого значення із зазначеним кроком зміни. Якщо Step <Крок> у конструкції відсутній, то за замовчуванням вважається, що крок дорівнює 1. Параметр циклу, початкове значення і кінцеве значення повинні бути одного типу.

Значення параметру циклу, початкове значення і кінцеве значення всередині циклу змінювати не можна.

Увійти в цикл можна тільки через його початок, а вийти або при вичерпанні всіх значень параметру циклу, або за допомогою оператора Exit For, що розташовується всередині циклу.

Цикл починає виконуватися із присвоювання параметру циклу початкового значення, що порівнюється з кінцевим значенням. Якщо параметр циклу менше або дорівнює кінцевому значенню, то тіло циклу виконується, і керування передається в заголовок циклу. У заголовку циклу до параметра додається крок і знову порівнюється з кінцевим значенням. Якщо параметр циклу менше або дорівнює кінцевому значенню, то тіло циклу повторюється. Якщо параметр циклу стає більшим за кінцеве значення параметра циклу, то керування передається наступному за Next операторові, тобто відбувається вихід із циклу.

94

Приклад20. Скласти фрагмент програми для алгоритму на рис. 4.4.

S=0 P=1

i=1,5

S=S+2

P=P*S

S = 0

P = 1

For i = 1 to 5 S = S + 2 P = P * S

Next i

Рис. 4.4 Фрагмент програми для алгоритму (приклад)

Параметром циклу є змінна i, що приймає значення від 1 до 5 із кроком 1. Тіло циклу складається із двох операторів і повториться 5 разів.

Цикли Do...Loop

Всі можливі версії оператора Do…Loop (табл. 4.5) призначені для повторення деякого блоку програмного коду невідоме число раз, доки не буде виконана яка-небудь умова

Таблиця 4.5

 

Типи операторів Do...Loop

Оператор

Виконувані роботи

Do…Loop

Повторює виконання блоку, доки деякий умовний оператор не виконає

 

команду End Do

Do While…Loop

Починає і виконує блок, тільки якщо задана умова приймає значення

 

«ИСТИНА»

Do…Loop Whіle

Виконує блок один раз і потім повторює виконання блоку, якщо умова

 

приймає значення «ИСТИНА».

Do Until …Loop

Відрізняється від While, тільки тим, що умова повинна бути «ЛОЖЬ»

Do… Loop Until

 

Для організації циклів із передумовою зручно використовувати оператор циклу наступного виду (рис. 4.5):

Do While <умова>

<тіло циклу>

Loop

Рис. 4.5 Організація циклу з передумовою

-

Умова

+

Тіло циклу

Умовою може бути будь-який логічний вираз. Виконання оператора Do While...Loop починається з перевірки умови. Якщо умова приймає значення «ИСТИНА», то виконується тіло циклу. Якщо умова приймає значення «ЛОЖЬ», то керування передається операторові, що розташований після Loop. Один з операторів тіла циклу повинен впливати на умову входу в цикл, щоб уникнути зациклення.

При програмуванні циклів із передумовою, конструкція Do While ставиться в місці повернення циклічного процесу, тобто там, де перебуває умова входу в цикл, а слово Loop ставиться за останнім оператором тіла циклу.

Приклад 21. Скласти фрагмент програми для алгоритму (рис. 4.6).

95

k=0

f=1

k = 0

 

-

f = 1

 

Do While f <= 15

 

f15

k = k + 1

 

+

f = f + 2

k=k+1

f=f+2

Loop

Рис. 4.6 Фрагмент програми для алгоритму (приклад)

У цьому прикладі цикл виконується при значеннях f: 1, 3, 5, 7, 9, 11, 13, 15. Після виходу із циклу змінна k прийме значення 8. При значенні f=17 умова f<=15 приймає значення «ЛОЖЬ» і керування буде передано наступному за Loop операторові. Тіло циклу складається із двох операторів, один із яких (f=f+2) впливає на умову входу в цикл.

Приклад 22. Тіло циклу може складатися з одного оператора. k = 1

x = 2

Do While k*x > 6 and k*x <= 100 k = k + 1

Loop

Для організації циклів з постумовою зручно використовувати оператор циклу наступного виду (рис. 4.7):

 

 

 

 

 

 

Do

<тіло циклу>

 

 

 

Тіло циклу

 

 

-

 

 

Loop Until <умова>

 

 

Умова виходу

 

 

 

Рис.

4.7 Організація циклу з постумовою

 

 

+

 

 

 

В якості умови використовується будь-який логічний вираз. Спочатку виконується тіло циклу, потім перевіряється умова. Якщо умова приймає значення «ЛОЖЬ», то тіло циклу повторюється. Якщо умова приймає значення «ИСТИНА», то відбувається вихід із циклу і керування передається наступному за Loop Until операторові. У тілі повинен бути хоча б один оператор, що впливає на умову, щоб уникнути зациклення.

При програмуванні циклів з постумовою, слово Do ставиться в місці повернення циклічного процесу, тобто перед першим оператором тіла циклу, а конструкція Loop Until ставиться за останнім оператором тіла циклу, в якому вказується умова виходу із циклу.

ЗВЕРНІТЬ УВАГУ! NB !

Для дострокового виходу із циклу Do…Loop можна використовувати оператор Exit Do

§6. Процедури та функції

Процедури Sub і функції Function являють собою окремі блоки, з яких складається код програми. Кожна процедура і функція виконує якесь завдання або його частину і може бути використана неодноразово. Використання процедур і функцій заощаджує час і дозволяє уникнути зайвих помилок. Функції відрізняються від процедур тим, що повертають якесь значення.

96

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

Функція – це підпрограма, яку викликають, щоб виконати якісь розрахунки або перевірки. Коли вона завершує роботу, то повертає керування основній програмі та передає їй результат розрахунку.

Процедура – це також підпрограма. Її також викликають, щоб виконати якісь дії, але від неї не потрібно повертати основній програмі які-небудь значення.

Синтаксис оголошення процедури має такий вигляд:

Sub <ім’я>([<список_аргументів>]) [<оператори VBA>]

[Exit Sub] [<оператори VBA>] End Sub

Де

Sub – позначає початок процедури.

<ім’я> – ім’я процедури, записане за правилами утворення імен змінних. <список_аргументів> – представляє укладений у дужки список змінних, які переда-

ються в процедуру. Для відокремлення аргументів використовується кома. Якщо процедура не використовує аргументи, то необхідно включити в оголошення процедури порожні дужки.

<оператори VBA> –будь-які коректні оператори VBA.

Exit Sub – викликає негайний вихід із процедури до її формального завершення.

ЗВЕРНІТЬ

Елементи синтаксису оголошення процедури, укладені у

УВАГУ!

квадратні дужки не є обов’язковими.

NB !

 

Синтаксис оголошення функції має такий вигляд:

Function <ім’я>([<список_аргументів>]) [As <тип>] [<оператори VBA>]

[<ім’я> = <вираз>] [Exit Function] [<оператори VBA>] [<ім’я> = <вираз>] End Function

Де

Function – позначає початок функції. <ім’я> – будь-яка коректна назва функції.

<список_аргументів> – представляє укладений у дужки список змінних, які передаються у функцію.

<оператори VBA> – будь-які коректні оператори VBA.

<ім’я> = <вираз> – оператор присвоювання, який визначає значення, що повертається функцією.

Exit Function – оператор, що викликає негайний вихід з функції до її завершення. End Function – ключове слово, що позначає кінець функції.

ЗВЕРНІТЬ УВАГУ! NB !

Значення, що повертається функцією, завжди привласнюється назві функції мінімум один раз і, як правило, тоді, коли функція завершила виконання.

Для виклику процедури на виконання достатньо у коді VBA окремим рядком записати

97

ім’я процедури і список переданих до неї аргументів (якщо вони були визначені в оголошенні процедури). Виклик на виконання функції може здійснюватися записом імені функції зі списком переданих аргументів у правій частині оператора присвоювання або як складений елемент деякого виразу (аналогічно виклику стандартних вбудованих функцій).

Приклад оголошення процедури, тіло якої складається з одного оператора виводу стандартного вікна повідомлень Windows:

Sub Welcome()

MsgBox “Ласкаво просимо!” End Sub

Виклик цієї процедури з іншої процедури виглядає в такий спосіб: Sub Main()

………......

Welcome

………......

End Sub

Приклад оголошення функції, що обчислює і повертає об’єм конуса з радіусом основи R і висотою H:

Function Conus(R As Double, H As Double) As Double Dim Pi As Double

Pi = 3.141593

Conus = Pi * R * R * H End Function

Виклик цієї функції з іншої процедури виглядає в такий спосіб: Sub Main()

Dim V As Double

………………......

V = Conus(2.3, 5.5)

………………......

End Sub

4.2. Критерії засвоєння

Після вивчення і аналізу змісту теми ВИ повинні РОЗУМІТИ наступне:

-вбудована в Excel макромова VBA істотно розширює можливості Excel по автоматизації обчислень;

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

У результаті вивчення даної теми ВИ повинні ЗНАТИ:

-правила запису арифметичних і логічних виразів VBA;

-синтаксис основних операторів VBA.

Ваші знання повинні забезпечити наступні ВМІННЯ:

-записувати код у Редакторі Visual Basic;

-реалізовувати у вигляді процедур і функцій VBA лінійні, розгалужучі та циклічні типи алгоритмів.

98

Список літератури.

1.Салов В.О. Основи педагогіки вищої школи – Дніпропетровськ, 2003.

2.Методика планування змісту навчання на здобуття освітньо-кваліфікаційного рівня «БАКАЛАВР» при кредитно-модульній системі організації навчального процесу (експериментальний варіант на прикладі напряму «Будівництво»/ Уклад.: Є.С. Кленцев. – Макіївка: ДонНАБА, 2004. – 43 с.

Основна література

1.Бахвалов Н.С., Жидков Н.П., Кобельков Г.М. Численные методы. – М.: БИНОМ, 2000. – 630 с.

2.Бахвалов Н.С., Лапин А.В., Чижонков Е.В. Численные методы в задачах и упражнениях. Учеб. пособие./ Под ред. В.А. Садовничего. – М.: Высш. шк., 2000. – 190 с.

3.Васильков Ю.В., Василькова Н.Н. Компьютерные технологии вычислений в математическом моделировании: Учеб. пособие. – М.: Финансы и статистика, 2001. – 256 с.

4.Вержбицкий В.М. Численные методы (линейная алгебра и нелинейные уравнения): Учеб пособие для вузов. – М.: Высш. шк., 2000. – 266 с.

5. Вычислительная техника в инженерных и экономических расчетах/ Под ред.

А.В. Петрова. – М.: Высш. шк., 1984. – 320 с.

6.Демидович Б.П., Марон И.А. Основы вычислительной математики. – М.: Наука, 1970. – 664 с.

7.Калиткин Н.Н. Численные методы. – М.: Наука, 1978. – 512 с.

8.Киреев В.И., Пантелеев А.В. Численные методы в примерах и задачах: Учебное пособие.

М.: Изд-во МАИ, 2000. – 376 с.

9.Ларсен Р.У. Инженерные расчеты в Excel: Пер. с англ. – М.: Издательский дом «Виль-

ямс», 2002. – 544 с.

10.Мэтьюз Дж.Г., Финк К.Д. Численные методы: Использование MATLAB. – М.: Издательский дом «Вильямс», 2001. – 720 с.

11.Орвис В. Excel для ученых, инженеров и студентов: Пер. с англ. – К.: Юниор, 1995. – 528 с.

12.Поршнев С.В. Вычислительная математика. Курс лекций. – СПб.: БХВ-Петербург, 2004.

320 с.

13.Самарский А.А. Введение в численные методы. – М., МГУ, 2000. – 271 с.

14.Стренг Г. Линейная алгебра и ее применения: Пер. с англ. – М.: Мир, 1980. – 454 с.

15.Фаддеев Д.К., Фаддеева В.Н. Вычислительные методы линейной алгебры. – М., Физмат-

гиз, 1963. – 656 с.

Додаткова література

1.Вейнгартен Дж., Риддл Г. Изучи сам Excel: Пер. с англ. – Минск: ООО «Попурри», 1999.

– 352 с.

2.Гельман В.Я. Решение математических задач средствами Excel: Практикум. – С-Пб.: Пи-

тер, 2003. – 240 с.

3.Глушаков С.В., Сурядный А.С. Microsoft Office 2000: Учебный курс. – Харьков: Фолио; Ростов н/Д: Феникс, 2002. – 500 с.

4.

Інформатика:

Комп’ютерна техніка. Комп’ютерні технології. Посіб./

За

ред.

 

О.І. Пушкаря – К.: Видавничий центр „Академія”, 2001. – 696 с.

 

 

5.

Советский

энциклопедический словарь/ Гл. ред. А.М. Прохоров.

М.:

 

Сов. энциклопедия, 1989. – 1632 с.

 

 

6.Уокенбах Дж. Подробное руководство по созданию формул в Excel 2002: Пер. с англ. – М.: Издательский дом «Вильямс», 2002. – 624 с.

7.Уокенбах Дж. Диаграммы в Excel: Пер. с англ. – М.: Издательский дом «Вильямс», 2003.

– 448 с.

99