- •Кафедра інформаційних технологій проектування
- •Запис, редагування та застосовування простого макросу
- •Інтегроване середовище розробки vb-програм – Редактор Visual Basic. Інтерфейс редактора vba
- •Вікно проекта
- •Вбудовані діалогові вікна
- •Процедура Msgbox. Виведення інформації
- •Функція InputBox. Введення інформації
- •Перенос рядка
- •Коментарі
- •Розміщення декількох операторів в одному рядку
- •Лекція №2
- •Що таке об’єкт?
- •Сімейство об’єктів
- •Властивості
- •Найважливіші об’єкти vba Об’єктна модель
- •Об’єкт Application (додаток)
- •Об’єкт Worksheet (Робочий лист)
- •Основні властивості робочих листів
- •Об’єкт Range (діапазон)
- •Оператор With - End With
- •Лекція №3
- •Що таке алгоритм?
- •Виконавець алгоритму — це деяка абстрактна чи реальна (технічна, біологічна чи біотехнічна) система, здатна виконати дії, що наказуються алгоритмом.
- •Якими властивостями володіють алгоритми?
- •У якій формі записуються алгоритми?
- •Базова алгоритмічна структура
- •Етапи рішення задач за допомогою комп'ютера
- •Використання імен
- •Типи даних
- •Константи
- •Операції vba
- •Вирази. Пріоритети (старшинство) операцій
- •Оператор присвоєння
- •Блок-схема алгоритму:
- •Лекція №6.
- •Форма. Елементи управління
- •Узгодження про імена
- •Арифметичні цикли. Оператор циклу For – Next
- •Лекція №8.
- •Список рекомендованої літератури:
Арифметичні цикли. Оператор циклу For – Next
Циклом програми називається група інструкцій (операторів), повторювана в процесі обчислень багато разів, у якій після виконання останньої інструкції управління передається до першої інструкції. Кожне чергове повторення циклу виконується з новими значеннями оброблюваних даних, але по тим самим формулах.
Назвемо параметрами циклу змінні величини, що використовуються для підготовки чергового повторення циклу. Під час виконання циклу параметри міняються від деякого початкового значення до деякого кінцевого значення з визначеним кроком.
При організації циклу треба задати початкові значення параметрів, алгоритм їх зміни й умову закінчення циклу.
З огляду на особливості конкретної задачі, цикл можна організувати по різному, однак загальна структура циклу залишається незмінною.
Для багаторазового виконання інструкції або групи інструкцій використовуються оператори циклу.
Оператор For – Next виконує групу інструкцій вказану кількість разів. Кількість повторювань циклу відома заздалегідь. Такі цикли називаються арифметичними.
For <Лічильник> = <Початкове значення> То <Кінцеве значення> [Step <Крок>]
<Інструкції>
[Exit For]
[Інструкції]
Next [Лічильник]
Де:
<Лічильник> - це управляюча змінна циклу, що приймає значення від початкового значення параметру до кінцевого значення з заданим кроком.
<Початок>, <Кінець>, <Крок> - можуть задаватися константою, змінною або виразом.
Оператор For – Next повторює виконання групи інструкцій доти, поки Лічильник змінюється від Початку до Кінця з вказаним Кроком. Якщо Крок не вказаний, за замовчуванням він вважається рівним одиниці. Альтернативний вихід з циклу надає інструкція Exit For.
Лічильник, Початкове значення, Кінцеве значення, Крок – все це параметри циклу.
Пояснимо це більш детально. При першому заході у цикл змінній циклу Лічильник присвоюється початкове значення Початок. Далі виконується група інструкцій, що розташована між ключовими словами For і Next. Вона називається тілом циклу. При досягненні команди Next повторно заходимо у цикл. При цьому до змінної циклу додається значення Крок, перевіряється умова Лічильник<= Кінець. Якщо так, то виконується знову тіло циклу, якщо ж ні, то переходимо на команду, яка слідує за Next.
Приклади :
s=2
for i=2 to 8 step 2
s=s+i
next i
n=5
p=1
for i=1 to n
p=p*i
next i
Приклад розв’язання задачі на арифметичні цикли
Умова задачі: Обчислити значення суми Y за формулою:
Вирішення:
Згідно
з умовою аргумент n
змінюється
від Початкового
значення i
(нижня
межа
суми)
до
Кінцевого
значення
k
(верхня
межа суми) з
Кроком
1.
Для кожного з усіх значень n,
що
належать проміжку
від i
до
k
включно
(з кроком 1) треба обчислити
значення
функції
y=f(n)
за
формулою
Тобто обчислення будуть проводитися (k – i+1) разів за однією й тією ж формулою. Для одержання остаточного результату потрібно просумувати отримані значення часткових сум.
Для вирішення задачі потрібно організувати арифметичний цикл з заданими параметрами з використанням оператору циклу For – Next .
Спроектуємо вікно форми користувача UserForm.
Для цього викличемо Редактор Visual Basic (MS-Excel -> Сервис -> Макрос -> Редактор Visual Basic або ALT+F11).
Додамо користувальницьку форму (Insert -> UserForm чи за допомогою відповідної кнопки на панелі інструментів). Виберемо відповідний елемент управління і розмістимо його на формі. У вікні властивостей Properties Windows змінимо властивості для кожного з елементів управління відповідно до заздалегідь розробленої таблиці властивостей.
Форма користувача з елементами управління.
К
онтрольний
приклад
Задамо початкове значення (нижня межа суми) i = 1, кінцеве значення (верхня межа суми) k = 5. Тоді значення функції y=f(n) за заданою формулою буде дорівнювати (Калькулятор):
Y= (1^2+2)/(1-3) + (2^2+2)/(2-3) + (3^2+2)/(3-3) + (4^2+2)/(4-3) + (5^2+2)/(5-3) = 24
Блок-схема алгоритму
Програма:
Лекція №7.
Тема: Програмування на мові VBA. Ітераційні цикли.
У програмі циклом називається група інструкцій (операторів), повторювана в процесі обчислень багаторазово, і у якій після виконання останньої інструкції керування передається першій інструкції. Кожне чергове повторення циклу виконується з новими значеннями оброблюваних даних по тим самим формулах.
Поряд з арифметичними циклами, число повторень яких заздалегідь відомо, у практиці програмування приходиться мати справу з циклами, для яких не можна заздалегідь визначити число повторень - ітераційними циклами. Такі цикли організовують для рішення різного виду задач методом ітерацій, тобто методом послідовних наближень.
В
ітераційних
циклах
момент закінчення обчислень визначається
досягненням заданої точності результатів,
а число ітерацій, необхідних для
досягненням заданої точності
невідомо. До
ітераційних циклів відноситься обчислення
,
та ін..
У загальному виді ітераційний процес можна описати наступною формулою:
де:
результат
обчислень при (n+1)-му
виконанні циклу;
значення
аргументів
при (n+1)-му
виконанні циклу
;
результат
обчислень при n
-му
виконанні циклу;
необхідні
константи
Ітераційний процес може бути організований тільки в тому випадку, якщо він є таким, що сходиться. Для кожного з ітераційних процесів завжди визначаються необхідні і достатні умови його збіжності.
Простий ітераційний цикл містить 4 частини:
завдання початкових значень аргументу і функції,
обчислення поточного значення аргументу,
обчислення поточного значення функції,
логічна частина , що перевіряє умову виходу з циклу.
Особливості ітераційного циклу:
результати обчислень попереднього виконання циклу є вхідними даними для наступного виконання циклу,
початкові значення перемінних вибираються довільно, але відповідно до тих формул, що мають бути прораховані,
число повторень циклу невідомо і визначається умовою виходу з циклу.
Умови виходу з циклу:
абсолютна величина різниці між двома послідовними наближеннями шуканої величини не перевищує якогось наперед заданого значення точності обчислень
,
тобто
2. відносна
помилка по абсолютній величині не
перевищує значення точності обчислень
,
тобто
,
де
і
числові
значення
2-х послідовних
наближень шуканої величини
3. деяка величина даного ітераційного процесу не перевищує якогось наперед заданого значення точності обчислень , наприклад n-й член ряду, що сходиться, за абсолютним значенням менше .
Для організації ітераційних циклів використовується оператор Do – Loop.
Оператор циклу Do – Loop
Оператор циклу Do – Loop буває з передумовою та післяумовою.
Синтаксис оператору циклу з передумовою – умова записується у першому рядку після оператора Do :
Do [While | Until <Умова >]
[Інструкції]
[Exit Do]
[Інструкції]
Loop
Приклад використання оператору циклу Do – Loop з передумовою
p=1
Do While p<=7
p=p+2
Loop
Синтаксис оператору циклу з післяумовою- умова записується в останньому рядку після оператора Loop While | Until :
Do
[Інструкції]
[Exit Do]
[Інструкції]
Loop [While | Until <Умова >]
Оператор Do – Loop з While повторює виконання набору інструкцій, поки Умова, записана після While, має значення True, вихід із циклу відбувається, коли ця умова прийме значення False
Оператор Do – Loop з Until навпаки - повторює виконання набору інструкцій, поки Умова, записана після Until, має значення False, вихід із циклу відбувається, коли ця умова прийме значення True.
Якщо умова перевіряється на початку циклу, то він не виконується жодного разу у випадку невиконання умови. Якщо ж умова перевіряється в кінці циклу, то він виконується як мінімум один раз незалежно від того виконується умова чи ні.
В будь-якому місці структури Do – Loop може бути розміщена будь-яка кількість інструкцій Exit Do, які забезпечують альтернативні можливості виходу з циклу Do – Loop.
Приклади використання оператору циклу Do – Loop з післяумовою:
1. p=1
Do
p=p+2
Loop While p<=7
або:
2. p=1
Do
p=p+2
Loop Until p>=7
Приклад розв’язання задачі на ітераційні цикли
Умова
задачі:
Обчислити значення
функції
з заданою точністю
,
як часткову суму ступеневого ряда:
,
де аргумент
.
за рекурентною формулою:
,
де n
– номер
обчислюваного члену ряда,
-
попередній член ряда,
- наступний член ряда. Обчислення вести
з точністю
,
виходячи з умови:
Вирішення: Часткова сума даного ступеневого ряду може бути представлена у вигляді циклічного ітераційного процесу, який описується рекурентним співвідношенням, яке виражає залежність між наступним і попереднім членами ряду у нашому випадку це . Обчислення часткової суми ряду зводиться до обчислення рекурентної формули та
формули
часткової суми ряду, яка буде
дорівнювати:
.
Обчислення за цими формулами потрібно
вести, надаючи кожний раз
значення
і доти, поки різниця значень між наступним
членом ряда та попереднім за абсолютною
величиною не стане менше або дорівнювати
точності обчислень
.
Початковими
значеннями, тобто вихідними даними для
проведення обчислення функції
є
такі: n=1,
,
,
де n
=1 – номер першого члену ряда,
та
відповідно його значення та часткова
сума.
Для вирішення задачі задамо,наприклад, аргумент x=0,2 та точність = 0,001
Тоді:
Блок-схема алгоритму:
Програма:
