Поможем написать учебную работу
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.

Предоплата всего

Подписываем
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.
Предоплата всего
Подписываем
Вступ
Важливу роль у професійному зрості фахівця на сучасному етапі відіграє володіння комп’ютерними технологіями, вміння застосовувати обчислювальну техніку у повсякденній діяльності. Тому кваліфікований спеціаліст повинен мати високий рівень знань в області інформаційних технологій, вміти застосовувати на практиці різні програмні засоби, вільно адаптуватися до змін, пов’язаних з бурхливим розвитком комп’ютерних технологій. Цьому в значній мірі сприяє володіння основами алгоритмізації і програмування.
Мова програмування Visual Basic є об’єктно-орієнтованою мовою програмування, дає змогу студентам познайомитися з основами об’єктно-орієнтованого програмування, яке в сучасних програмах автоматизації професійної діяльності часто застосовується для настроювання середовища. Наприклад, об’єктно-орієнтовані технології використовуються у програмах 1С: Підприємство, Акцент – бухгалтерія та ін. Мова Visual Basic є також базовою для додатків Microsoft Office, які на теперішній час є найбільш вживаними для обробки текстової, табличної інформації, роботи з базами даних.
Навчальний посібник підготовлено по основних темах розділу “Основи програмування мовою Visual Basic” дисципліни “Інформатика та комп’ютерна техніка” у відповідності з типовою програмою базового рівня підготовки спеціалістів вищої кваліфікації з урахуванням сучасних досягнень в області комп’ютерних технологій.
Посібник містить сім розділів. У першому розділі розглядаються питання створення програм у середовищі Visual Basic 6.0 – основні поняття мови програмування, етапи створення програм. Другий розділ присвячено питанням використання операторів мови для організації розгалужених і циклічних обчислювальних процесів. У третьому розділі розглянуто розробку програм із застосуванням смуг прокручування, перемикачів, прапорців, груп, списків, що розчиняються, декількох форм. Четвертий розділ дає змогу познайомитися з процесом створення програм із застосуванням меню і масивів елементів управління та змінних. У п’ятому розділі розглядаються питання створення програм із використанням підпрограм – процедур і функцій. Шостий розділ присвячено знайомству з роботою з файлами. У сьомому розділі викладені основні поняття Visual Basic for Application для табличного процесору Microsoft Excel, правила роботи з редактором VBA, розглянуті питання створення функцій користувача, автоматизації розрахунків на робочому листі, роботи з формами у середовищі VBA.
1 Створення програм у середовищі Visual Basic 6.0.
Основні поняття - об'єкт, властивість, подія.
Середовище візуального програмування Visual Basic завантажується так само, як і будь-яка програма за допомогою головного меню операційної системи Windows: Пуск - Програми - … Для створення нової програми необхідно виконати команду меню File - New Project, обрати у вікні діалогу New Project значок Standard EXE, клацнути на кнопці Ok. У результаті виконання команди з'являються вікна проекту, у тому числі вікно першої форми з заголовком Form1. Можна приступити до створення програми.
Процес розробки програм у середовищі Visual Basic містить у собі 2 етапи:
1.1 Візуальне створення програми
На етапі візуального програмування створюються вікна (форми) програми, на них розташовуються необхідні елементи управління - текстові поля, кнопки, лінійки прокручування, прапорці та ін., визначаються властивості елементів, що зумовлюють зовнішній вигляд і особливості роботи в програмі.
Форми і всі елементи управління, які використовуються в Windows-додатках, є об'єктами. Мова програмування Visual Basic реалізує концепцію об'єктно-орієнтованого програмування, відповідно до якої програміст одержує можливість працювати з об'єктами так, як це виконується в навколишньому світі. Поняття об'єкта містить у собі елемент роботи (наприклад, форму, перемикач або командну кнопку), параметри об'єкта, що називаються властивостями, і програмні засоби для роботи з ним - методи.
Для створення нової форми проекту потрібно виконати команду меню Project - Add Form, створення інших об'єктів виконується за допомогою панелі елементів. Управління виведенням панелі елементів здійснюється за допомогою команди меню View - Toolbox.
За допомогою кнопок на панелі елементів можна помістити у форму необхідний елемент управління. Для цього потрібно клацнути на значку елемента управління, далі при натиснутій лівій кнопці миші визначити розмір і місце розташування елемента у формі. Коли об'єкт є виділеним, активним (рамка об'єкта містить маленькі прямокутники) можна змінити розмір об'єкта, переміщувати об'єкт за допомогою миші. |
Рисунок 1.1 - Вікно панелі елементів |
Щоб ідентифікувати значок елемента на панелі, можна встановити на нього покажчик миші, при цьому з'явиться жовтий прямокутник із назвою відповідного об'єкта. На панелі елементів містяться такі основні елементи:
- |
Малюнок (PictureBox) |
|
- |
Етикетка або поле напису (Label) |
|
- |
Текстове поле, що можна використовувати для введення, виведення даних (TextBox) |
|
- |
Група (Frame) |
|
- |
Командна кнопка (CommandButton) |
|
- |
Прапорець (CheckBox) |
|
- |
Перемикач (OptionButton) |
|
- |
Горизонтальна смуга прокручування (HScrollBar) |
|
- |
Вертикальна смуга прокручування (VScrollBar) |
|
- |
Таймер (Timer) |
Кожний об'єкт характеризується набором властивостей. Властивість об'єкта визначає як об'єкт виглядає або як він себе поводить. Наприклад, властивостями об'єктів є їхні імена, надпис об'єкту, колір фону, символів.
Для зміни властивостей об'єктів необхідно відчинити вікно властивостей командою View - Properties Window. У вікні відображається список властивостей активного в даний момент об'єкта. Склад переліку властивостей залежить від типу об'єкта. Щоб змінити значення властивості потрібно клацнути на кнопці праворуч від рядка властивості або активізувати рядок і ввести дані за допомогою клавіатури.
Характеристика деяких властивостей об’єктів подана в таблиці:
Об'єкт |
Властивість |
Опис |
1 |
2 |
3 |
Форма (Form) |
Name |
Ім’я об’єкту |
Caption |
Опис - текст, який буде видаватися в заголовку форми |
|
BackColor |
Колір форми |
|
BorderStyle |
За замовчуванням приймає значення 2 - Sizable - розмір вікна під час роботи програми можна змінити за допомогою рамки. Якщо властивості привласнити значення, наприклад, 1 - Fixed Single, рамка стає недоступною |
|
ControlBox |
Властивість управляє виведенням кнопок Згорнути, Розгорнути, Зачинити, системного меню. Якщо властивість приймає значення True (Істина), кнопки у вікні присутні, False (Брехня) - відсутні. |
|
Командна кнопка (CommandButton) |
Name |
Ім’я елемента управління |
Caption |
Надпис - текст на кнопці |
|
Font |
Шрифт надпису |
|
1 |
2 |
3 |
Етикетка (Label) |
Name |
Ім’я елемента управління |
Caption |
Надпис - текст, який друкується в формі |
|
BackColor |
Колір фону |
|
ForeColor |
Колір символів |
|
Alignment |
Спосіб вирівнювання: Left Justify - по лівому краю, Right Justify – праворуч, Center - по центру. |
|
AutoSize |
Розмір надпису визначається автоматично, якщо значення властивостей True (Істина), користувачем - при значенні False (Брехня). |
|
Текстове поле (TextBox) |
Name |
Ім’я елемента управління |
Text |
Надпис - текст, який друкується в полі |
|
BackColor |
Колір фону |
|
ForeColor |
Колір символів |
|
Alignment |
Спосіб вирівнювання |
|
Enabled |
Значення властивості True визначає, що поле можна використовувати як для введення, так і для виведення інформації, False – лише для виведення. |
Для кожного об'єкта програми потрібно визначити його ім'я. Відповідно до узвичаєних угод про імена об'єктів перші три символи імені повинні відбивати вид елемента, інші символи - призначення. У таблиці подані сполучення перших символів для використовуваних елементів.
Об'єкт |
Перші 3 символи імені |
Приклад імені |
Form |
frm |
frmMyForm |
Picture Box |
pic |
picChema |
Label |
lbl |
lblInfo |
Text Box |
txt |
txtInput |
Frame |
fra |
fraChoices |
Command Button |
cmd |
cmdExit |
Check Box |
chk |
chkSound |
Option Button |
opt |
optLevel |
HScrollBar |
hsb |
hsbSpeed |
VScrollBar |
vcb |
vcbSpeed |
Timer |
tmr |
tmrAnswer |
Як приклад створення програми в середовищі Visual Basic описано процес розробки програми «Обчислення квадрата числа», у ході виконання якої користувач може ввести в поле Число будь-яке число і після натискання кнопки Обчислення в поле Результат вивести квадрат числа. Натискання кнопки Очищення призводить до видалення значень із полів Число і Результат, Вихід - до завершення роботи програми. Після запуску програми повинно з'явитися вікно, аналогічне поданому на рис.1.2.
Рисунок 1.2 - Вікно програми обчислення квадрата числа
У ході візуальної розробки програми необхідно створити елементи керування, визначити їхні властивості відповідно до опису, що подано в таблиці.
Об'єкт |
Властивість |
Значення |
1 |
2 |
3 |
Форма (Form) |
Name |
frmSolve |
Caption |
Програма обчислення квадрата числа |
|
BackColor |
жовтий (властивість доцільно визначити за допомогою вкладинки Palette) |
|
Командна кнопка (Command Button) |
Name |
cmdSqr |
Caption |
&Обчислення |
|
Font |
Times New Roman Cyr, Bold (напівжирний), 12 пунктів |
|
Командна кнопка (Command Button) |
Name |
cmdClear |
Caption |
Очи&стка |
|
Font |
Times New Roman Cyr, Bold, 12 п. |
|
Командна кнопка (Command Button) |
Name |
cmdExit |
Caption |
&Вихід |
|
Font |
Times New Roman Cyr, Bold, 12 п. |
|
Етикетка (Label) |
Name |
lblNumber |
Caption |
Число: |
|
Font |
Times New Roman Cyr, Bold, 14 п. |
|
BackColor |
жовтий |
|
ForeColor |
коричневий |
|
AutoSize |
True |
|
Етикетка (Label) |
Name |
lblResult |
Caption |
Результат: |
|
Font |
Times New Roman Cyr, Bold, 14 п. |
|
BackColor |
жовтий |
|
ForeColor |
коричневий |
|
AutoSize |
True |
|
1 |
2 |
3 |
Текстове поле (TextBox) |
Name |
txtNumber |
Text |
порожній рядок - пробіл (властивість не повинна мати значення) |
|
Font |
Times New Roman Cyr, Bold, 14 п. |
|
Enabled |
True |
|
Текстове поле (TextBox) |
Name |
txtResult |
Text |
порожній рядок - пробіл |
|
Font |
Times New Roman Cyr, Bold, 14 п. |
|
Enabled |
False |
Після створення форми, елементів управління, визначення властивостей об'єктів етап візуального програмування завершено.
1.2 Створення вихідного коду
Visual Basic є мовою, що орієнтована на опрацювання подій. Це означає, що визначені частини програми виконуються у відповідь на визначені події. Подією є, наприклад, клацання лівою кнопкою миші на командній кнопці (подія Click), натискання клавіші на клавіатурі (подія KeyPress).
Щоб увести вихідний код для визначеного елемента потрібно виконати подвійне клацання на елементі. У результаті відчиняється вікно коду, в якому міститься заголовок і останній рядок процедури. Дана процедура описує дії, що потрібно виконати, у випадку настання визначеної події (наприклад, для командних кнопок за замовчуванням створюється процедура для події Click - натискання лівої кнопки миші). Ім'я процедури містить ім'я об'єкта, знак підкреслення, назву події. Щоб змінити подію можна використовувати список у верхній правій частині вікна коду Procedure.
У процедурах можна змінювати властивості об'єктів. Для цього потрібно зазначити ім'я об'єкта, поставити крапку, визначити властивість, після знака = увести нове значення властивості. У цьому випадку знак = використовується як оператор привласнення. Властивостям об'єктів можна привласнювати числові та текстові значення. Якщо властивостям об'єктів слід надати текстові значення, їх треба зачинити у подвійні лапки (“_”). Наприклад,
txtZ.Text = 45 |
– властивості Text текстового поля txtZ привласнюється значення 45 |
txtMes.Text = “Помилка” |
– властивості Text текстового поля txtMes привласнюється значення рядка символів “Помилка” |
lblY.Caption = 100 |
– властивості Caption етикетки lblY привласнюється значення 100 |
lblV.Caption = “Результат: ” |
– властивості Caption етикетки lblY привласнюється значення рядка символів “Результат: ” |
У програмах можуть використовуватись змінні. Змінні – це ділянки оперативної пам’яті, в які протягом роботи програми можна поміщати різні дані. Звернення до ділянок пам’яті здійснюється за іменем. Тобто змінні – це значення, що зберігаються певний термін, можуть використовуватись для обчислень, привласнень значень властивостям, іншим змінним, змінюються протягом виконання програми.
Змінні, використовувані в програмі, потрібно оголосити в розділі оголошення змінних. Для цього у вікні коду в списку Object потрібно вибрати General (Загальний розділ), у списку Procedure - Declaration (Оголошення). На початку розділу доцільно ввести оператор Option Explicit. Даний оператор визначає, що в програмі заборонено використання змінних, які не оголошено. Якщо в процедурах будуть використовуватись змінні, які попередньо не оголошені, система видасть повідомлення про помилку. Щоб уникнути зайвих помилок оператор Option Explicit у програмах потрібно використовувати.
Для оголошення змінних використовується оператор Visual Basic Dim. При оголошенні змінних слід визначити їх ім’я, можна задати тип даних. Мова Visual Basic підтримує роботу з такими типами даних:
integer |
- ціле число |
single |
- число |
currency |
- грошове значення |
string |
- рядок символів |
byte |
- ціле число в діапазоні від 0 до 255 |
boolean |
- логічне значення, що може приймати лише значення True (Істина, 1) або False (Брехня, 0) |
Якщо при оголошенні змінних не визначено їх тип, система працює зі змінними у відповідності з типами тих значень, які привласнюються змінним. Приклади оголошення змінних:
Dim X
Dim A, B, C
Dim Z As integer
Змінним, як і властивостям об'єктів, можна привласнювати різні значення.
Змінним і властивостям об'єктів можна також привласнювати результати обчислення деяких виразів. У виразах можна застосовувати числа, змінні, знаки арифметичних операцій “+”, “-“, “*”, “/”. Якщо вираз використовується для обчислення деякого числового значення, у ньому можна застосовувати лише змінні числових типів. Припустимими є операції конкатенації – об’єднання текстових значень. Приклади використання виразів:
lblX.Caption = X + 15
Z = (X+Y)/3
lblPrim.Caption = “Мова ”+ “програмування”
У програмах можуть також використовуватися константи. Константи – це якісь значення (числові, текстові та ін.), яким у програмі надано ім’я. Після оголошення констант їх можна використовувати у виразах. Оголошення констант здійснюється в розділі загальних оголошень General Declaration за допомогою оператору Const. Приклади оголошення констант:
Const X=16308
Const Povid=“Повідомлення про помилку: ”
Далі константи можна використовувати, наприклад так:
lblZ.Caption = X*40
lblRes.Caption = Povid+CodOsh
Завершення роботи програми здійснюється виконанням оператору End.
При створенні коду програми можна використовувати буфер обміну, а саме такі команди меню:
Edit – Copy: копіювання виділеного фрагмента в буфер обміну (команда Копировать);
Edit – Cut: вирізування фрагменту в буфер обміну (команда Вырезать);
Edit – Paste: вставка даних з буферу обміну в позицію курсору (команда Вставить).
При розробці програми можна використовувати вікно проекту. Якщо вікно проекту відсутнє, його можна вивести командою View - Project Explorer. У результаті з'явитися вікно, показане на рис.1.3.
Рисунок 1.3 - Вікно проекту
Для створення коду програми, що подається як приклад, необхідно ввести опис змінних, створити такі процедури:
Дані в рядку коду |
Коментар |
1 |
2 |
Option Explicit |
|
Dim X |
Оголошення змінної Х, в якій буде знаходитися число |
Dim Y |
Оголошення змінної У для обчислення квадрата числа Х |
Private Sub cmdClear_Click() |
Заголовок процедури, яка виконується у випадку події Click - клацання кнопкою миші на кнопці cmdClear (Очистка) або натиснення ALT + с. |
txtNumber.Text = "└┘" |
Властивості Text текстового поля txtNumber (для введення числа Х) привласнюється значення “└┘“ (порожній рядок). |
txtResult.Text = "└┘" |
Властивості Text текстового поля txtResult (для виведення результату - числа У) привласнюється значення “└┘“ (порожній рядок). |
End Sub |
Кінець процедури cmdClear_Click. |
Private Sub cmdExit_Click() |
Заголовок процедури, яка виконується у випадку клацання кнопкою миші на кнопці cmdExit (Вихід) або натиснення клавіш ALT + В. |
End |
Кінець роботи програми |
End Sub |
Кінець процедури cmdExit_Click. |
1 |
2 |
Private Sub cmdSqr_Click() |
Заголовок процедури, яка виконується у випадку клацання кнопкою миші на кнопці cmdSqr (Обчислення) або натиснення клавіш ALT + О. |
X = Val(txtNumber.Text) |
Змінній Х привласнюється значення властивості Text об'єкта txtNumber - значення числа, яке введено за допомогою клавіатури. Оскільки значення текстового поля має тип даних string (текстові дані), щоб можна було виконувати обчислення, їх треба перетворювати до числових значень з використанням функції Val. |
Y = X * X |
У змінну У записується результат множення числа Х на Х. |
txtResult.Text = Str(Y) |
Властивості Text об'єкту txtResult привласнюється значення змінної У. За допомогою функції Str виконується перетворення числового значення змінної У у рядок символів. |
End Sub |
Кінець процедури cmdSqr_Click. |
Після створення вихідного коду можна приступити до апробації програми. Для запуску програми на виконання використовується команда меню Run - Start. У випадку виявлення помилок можна завершити виконання програми командою Run - End, внести необхідні виправлення в програму.
Щоб зберегти проект на магнітному диску потрібно виконати команду File - Save Project або скористатися інструментом Save Project. При зберіганні проекту на диск записуються такі файли:
файл проекту (файл із розширенням VBP), у якому утримується інформація про будівлю проекту;
файли форм (файли із розширенням FRM) з описом форм.
Коли програма створена можна одержати файл програми у машинних кодах - файл із розширенням EXE. Такий файл можна буде використовувати безпосередньо для запуску програми на виконання, причому він буде незалежний від середовища візуального програмування Visual Basic. Щоб одержати файл програми, готовий до виконання, використовується команда меню File - Make <ім'я проекту>. exe. Для запуску отриманої даним способом програми не потрібно завантажувати Visual Basic, відчиняти в середовищі Visual Basic проект, виконувати команду Run - Start. Проте, для роботи з таким файлом потрібно, щоб у каталозі SYSTEM знаходився файл MSVBVM60.DLL, у якому міститься бібліотека стандартних підпрограм Visual Basic.
Щоб надрукувати програму потрібно виконати команду File - Print, у вікні діалогу команди обрати опцію Current Project (поточний проект), для друку форми включити прапорець Form Image, коду - прапорець Code.
1.3 Контрольні запитання
1.4 Практичні завдання
Завдання
Розробити програму за індивідуальним варіантом. При розробці програми слід створити форму, програмний код, перевірити дію програми. Далі необхідно зберегти програму на магнітному диску, надрукувати форму та код програми. Звіт про роботу повинен вміщувати:
Варіант №1
Створити програму, за допомогою якої можна ввести курси продажу валют – долар, німецька марка, російський рубль, ввести суму в гривнях, підрахувати, яку суму у кожній з валют можна придбати за певну суму в гривневому еквіваленті.
Варіант №2
Створити програму, за допомогою якої можна ввести такі дані: найменування товару, ціну товару, залишок товару на складі на початок дня в кількісному виміру, кількість товару, що поступив протягом дня. Після натиснення на кнопці Обчислення програма повинна видавати 2 повідомлення: залишок товару на початок дня в сумовому виразі, залишок товару на кінець дня. Програма повинна працювати як наведена на рис. 1.4.
Рисунок 1.4 - Вікно програми
Варіант №3
Створити програму, за допомогою якої можна ввести суму нарахованої заробітної плати працівнику підприємства. Після натиснення на кнопці Обчислення програма повинна видавати: суму прибуткового податку – 13% від нарахованої заробітної плати, суму відрахувань у пенсійний фонд – 1% від нарахованої заробітної плати, суму відрахувань у фонд зайнятості – 0,05% від нарахованої заробітної плати, суму до виплати – нарахована заробітна плата мінус усі суми відрахувань.
Варіант №4
Створити програму, за допомогою якої можна ввести закупівельну ціну товару. Після натиснення на кнопці Розрахунок програма повинна видавати: суму торговельної націнки – 10% від закупівельної ціни товару, суму реалізації товару – закупівельна ціна плюс сума торговельної націнки.
Варіант №5
Створити програму, за допомогою якої можна ввести оклад співробітника підприємства, данні про кількість робочих днів у місяці, данні про кількість робочих днів, що відпрацьовані даним співробітником у поточному місяці. Після натиснення на кнопці Розрахунок програма повинна розрахувати суму нарахованої заробітної плати пропорційно окладу, кількості відпрацьованих днів, зворотно пропорційно кількості робочих днів у місяці.
Варіант №6
Створити програму, за допомогою якої можна ввести собівартість виробу, відсоток націнки виробника, відсоток націнки оптової торгівлі, відсоток націнки у роздрібній торгівлі. Після натиснення на кнопці Розрахунок програма повинна розрахувати ціну виробу у виробництві, ціну товару в оптовій торгівлі, ціну товару в роздрібній торгівлі.
Варіант №7
Створити програму, за допомогою якої можна ввести закупівельну ціну товару, кількість товару, відсоток торговельної націнки. Після натиснення на кнопці Розрахунок програма повинна видавати: ціну реалізації товару з урахуванням торговельної націнки, суму реалізації товару – добуток ціни реалізації на кількість товару.
Варіант №8
Створити програму, за допомогою якої можна ввести дані про фактичний товарообіг у підприємстві торгівлі, план реалізації товару. Після натиснення на кнопці Розрахунок програма повинна видавати: суму відхилення від плану реалізації (план – факт), відсоток відхилення під плану реалізації .
Варіант №9
Створити програму, за допомогою якої можна ввести складові собівартості продукції – підручників: вартість паперу, заробітна плата виробничого персоналу, оренда обладнання, гонорар автора, а також кількість виробів. Після натиснення на кнопці Розрахунок програма повинна видавати: суму загальних витрат на друкування підручників, собівартість одного підручника, ціну одного підручника, виходячи з того, що плановий прибуток підприємства складає 20%.
Варіант №10
Створити програму, за допомогою якої можна ввести закупівельну ціну товару, відсоток націнки оптової торгівлі, відсоток націнки у роздрібній торгівлі, кількість товару. Після натиснення на кнопці Розрахунок програма повинна розрахувати ціну товару в оптовій торгівлі, ціну товару в роздрібній торгівлі, суму реалізації (добуток ціни на кількість).
Варіант №11
Створити програму, за допомогою якої можна ввести складові собівартості продукції: вартість матеріалів, заробітна плата виробничого персоналу, оренда обладнання, а також кількість виробів. Після натиснення на кнопці Розрахунок програма повинна видавати: суму загальних витрат на виробництво продукції, собівартість однієї одиниці продукції, ціну одного виробу, виходячи з того, що плановий прибуток підприємства складає 30%.
Варіант №12
Створити програму, за допомогою якої можна ввести дані про ціни товару в поточному і попередньому роках. Після натиснення на кнопці Розрахунок програма повинна видавати: суму зміни ціни товару (нова ціна – стара ціна), відсоток відхилення ціни .
Варіант №13
Створити програму, за допомогою якої можна ввести дані для аналізу виробництва продукції: обсяг виробництва у попередньому році, план виробництва продукції на поточний рік, обсяг фактичного виробництва у поточному році. Після натиснення на кнопці Розрахунок програма повинна видавати: відхилення фактичного обсягу виробництва від планового у сумовому і відсотковому виразі, відхилення обсягу виробництва у поточному році від виробництва у попередньому році в сумовому і відсотковому виразі.
Варіант №14
Створити програму, за допомогою якої можна найменування товару, фактичну кількість товару на складі, кількість товару по даних обліку. Після натиснення на кнопці Розрахунок програма повинна розрахувати вартість товару, який є на складі (добуток ціни на кількість), вартість товару по даних обліку, надлишок або нестачу товару (фактична вартість мінус облікова вартість).
Варіант №15
Створити програму, за допомогою якої можна ввести: ціну виробу, кількість реалізованої продукції, витрати на придбання матеріалів, витрати на заробітну плату персоналу. Після натиснення на кнопці Розрахунок програма повинна видавати: вартість продукції, що реалізується (добуток ціни на кількість), прибуток від реалізації продукції (вартість реалізації мінус витрати).
1.5 Тест
Відповідь |
Вміє |
Не вміє |
|
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
2 Основні оператори мови
2.1 Організація розгалужених обчислювальних процесів
2.1.1 Умовний оператор If
Оператор If реалізує алгоритмічну конструкцію “Розгалуження”.
Загальна форма оператора:
If <умова> then
<Блок_операторів_1>
Else
<Блок_операторів_2>
End If
“Блок_операторів_1” виконується в тому випадку, якщо умова має значення «істинно». У тому випадку, якщо логічна умова має значення «брехня» виконується “Блок_операторів_2”.
Оператор If можна використовувати також у такій формі:
If умова Then
Блок_операторів
End If
Скорочена форма оператору If застосовується тоді, коли блок операторів слід виконувати лише при істинності деякої умови.
Приклад використання оператора If
Використання оператора If розглянуто на прикладі програми розрахунку суми до виплати співробітникам підприємства. Користувач програми повинен увести суму нарахованої заробітної платні. З нарахованої суми слід відняти прибутковий податок і внесок у пенсійний фонд. Прибутковий податок сплачується в розмірі 13% від нарахованої заробітної плати. Внесок у пенсійний фонд складає 1% від нарахованої заробітної платні, якщо нараховано менш 150 грн., і 2% в іншому випадку. У програмі використовуються такі змінні:
S – сума нарахованої заробітної платні;
PP – сума прибуткового податку;
PF – сума внеску в пенсійний фонд;
SV – сума до виплати.
Блок-схема розв’язання задачі подана на рисунку 2.1.
Рисунок 2.1 - Блок-схема розв’язання задачі “Розрахунок суми до виплати працівникові підприємства”
На етапі візуального програмування потрібно створити форму, подану на рисунку 2.2.
Рисунок 2.2 - Вікно програми – прикладу використання оператору If
Характеристика форми, елементів управління подана в таблиці.
Об'єкт |
Властивість |
Значення |
Форма (Form) |
Name |
frmExampleIf |
Caption |
Програма - приклад If |
|
BackColor |
білий |
|
Командна кнопка (Command Button) |
Name |
cmdSolve |
Caption |
Розрахунок |
|
Font |
12 пунктів, напівжирний |
|
Командна кнопка (Command Button) |
Name |
cmdClear |
Caption |
Очистка |
|
Font |
12 пунктів, напівжирний |
|
Командна кнопка (Command Button) |
Name |
cmdExit |
Caption |
Вихід |
|
Font |
12 пунктів, напівжирний |
|
Етикетка (Label) |
Name |
lblS |
Caption |
Нараховано: |
|
BackColor |
білий |
|
Font |
12 пунктів, напівжирний |
|
Етикетка (Label) |
Name |
lblSVZ |
Caption |
Сума до виплати: |
|
BackColor |
білий |
|
Font |
12 пунктів, напівжирний |
|
Етикетка (Label) |
Name |
lblSV |
Caption |
0 |
|
BackColor |
білий |
|
Font |
12 пунктів, напівжирний |
|
Alignment |
1 – Right Justify (вирівнювання праворуч) |
|
Текстове поле (TextBox) |
Name |
TxtS |
Text |
“” (порожній рядок) |
Характеристика коду програми подана в таблиці.
|
Коментар |
Option Explicit |
Оголошення змінних: |
Dim S, PP, PF, SV |
S – сума нарахованої заробітної платні; PP – сума прибуткового податку; PF – сума внеску в пенсійний фонд; SV – сума до виплати. |
Private Sub cmdClear_Click() |
Заголовок процедури, яка виконується у випадку події Click – клацання лівою кнопкою миші на кнопці cmdClear (Очистка). |
TxtS.Text = " " |
Властивості Text текстового поля txtS (для введення нарахованої суми) привласнюється значення “” (порожній рядок). |
lblSV.Caption = 0 |
Властивості Caption етикетки lblSV (для виведення результату – суми до виплати) привласнюється значення 0. |
End Sub |
Кінець процедури cmdClear_Click. |
Private Sub cmdExit_Click() |
Заголовок процедури, яка виконується у випадку події Click – клацання лівою кнопкою миші на кнопці cmdExit (Вихід). |
End |
Кінець роботи програми |
End Sub |
Кінець процедури cmdExit_Click. |
Private Sub cmdSolve _Click() |
Заголовок процедури, яка виконується у випадку події Click на кнопці cmdSolve (Розрахунок). |
S = Val(txtS.Text) |
Змінній S привласнюється значення властивості Text поля txtS – значення нарахованої суми. При цьому виконується перетворення текстового значення на числове за допомогою функції Val. |
PP=S-*0.13 |
РР привласнюється значення (S-170)*0.2+15.3 /15,3 - податок, який сплачується з суми 170 грн./ |
If S <= 150 Then |
Якщо S менше або рівно 150, то |
PF=S*0.01 |
РF привласнюється значення S*0.01 |
else |
інакше |
PF=S*0.02 |
РР привласнюється значення S*0.02 |
End If |
Завершення оператору If |
SV=S-PP-PF |
Змінній SV привласнюється значення S-PP-PF |
lblSV.Caption = str(SV) |
Властивості Caption етикетки lblSV привласнюється значення SV, яке функцією str перетворюється з числового типу на текстовий. |
End Sub |
Кінець процедури cmdSolve _Click. |
2.1.2 Оператор варіанти Select Case
Оператор Select Case подібно оператору If здійснює розгалуження, але при цьому дозволяє організувати розгалуження відразу по декількох напрямках.
Загальна форма оператора:
Select Case X
Case <значення1 або віраз1>
ділянка програми, що виконується, якщо Х = значення1 або выраз1
Case <значення2 або віраз2>
ділянка програми, що виконується, якщо Х = значення2 або выраз2
. . .
Case <значенняN або віразN>
ділянка програми, що виконується, якщо Х = значенняN або выразN
Case Else
ділянка програми, що виконується, якщо жодна з умов не відповідає
фактичному значенню Х
End Select
Виконання оператору Select Case залежить від значення змінної Х – змінної варіанти. У першій гілці обчислюється значення виразу1, якщо він є в операторі, результат або значення1 порівнюється з фактичним значенням змінної Х. Якщо в наслідок порівняння отримано значення “істина”, виконуються оператори, які йдуть після рядка Case. Коли отримано значення “брехня”, обчислюється значення виразу2, змінна Х порівнюється з отриманим результатом або значенням2, якщо значення рівні, виконується друга гілка і т.д. Гілка Case Else в операторі не обов'язкова, виконується, якщо жодна з умов не відповідає фактичному значенню Х.
Приклад застосування оператора Select Case
Щоб розглянути використання оператора Select Case на прикладі потрібно доробити програму, створену в п.2.1.1. Після редагування програма повинна включати засоби аналізу клавіші, натиснутої при введенні даних у поле txtS (Сума нарахованої заробітної плати). Припустимим вважається натискання спеціальних клавіш (наприклад, клавіш керування курсором, Del, Home), клавіші Backspace, десяткової крапки, цифр від 0 до 9. У форму необхідно помістити ще один елемент - етикетку lblMesKey для виведення повідомлення у випадку натискання неприпустимої клавіші. Після натискання будь-якої клавіші в текстовому полі, якому відповідає подія KeyPress, потрібно виконати аналіз натиснутої клавіші. Якщо натиснута неприпустима клавіша, то видається повідомлення про помилку і вміст текстового поля знищується, у противному випадку ніяких дій не виконується. Аналіз натиснутої клавіші виконується за допомогою цілої числової змінної KeyAscii. Через цю змінну в момент натискання (подія KeyPress) процедурі, яка відповідає події, передається значення ASCII-коду натиснутої клавіші. Процедура повинна перевіряти символ, що вводиться, на припустимість. Список припустимих у процедурах кодів наведено в таблиці:
Значення змінної KeyAscii |
Пояснення |
0 |
Спеціальні клавіші |
8 |
Backspace |
46 |
Десяткова крапка |
48. .57 |
Цифри від 0 до 9 |
На етапі візуального програмування потрібно змінити ім'я форми, помістити у форму додатковий елемент - етикетку lblMesKey.
Рисунок 2.3 - Вікно програми - приклада використання оператора Select Case
До коду програми потрібно додати процедуру, яка подана в таблиці.
Дані в рядку коду |
Коментар |
Private Sub txtS_KeyPress (KeyAscii As Integer) |
Процедура, що виконується у випадку натискання будь-якої клавіші в полі txtS для введення нарахованої суми. Для створення процедури потрібно виконати подвійне клацання лівою кнопкою миші на текстовому полі. |
lblMesKey.Caption = " " |
Властивості Caption етикетки lblMesKey (для виведення повідомлення про помилку) привласнюється значення ““ (порожній рядок). |
Select Case KeyAscii |
Початок оператора Select Case, що реалізує розгалуження виконання програми в залежності від значення стандартної змінної KeyAscii |
Case 0, 8, 46, 48 To 57 |
У тому випадку, якщо змінна KeyAscii дорівнює 0, 8 або 46, або знаходиться в діапазоні від 48 до 57 ніяких дій не виконується. |
'Припустиме значення |
Рядок коментарю, який введено для зручності читання коду програми. |
Case Else |
інакше, коли жодна з умов не відповідає значенню змінної KeyAscii виконуються такі дії |
'Неприпустиме значення |
|
lblMesKey.Caption = "Натиснута неприпустима клавіша" |
Властивості Caption етикетки lblMesKey привласнюється значення "Натиснута неприпустима клавіша". |
txtS.Text = " " |
Властивості Text текстового поля txtS прив-ласнюється значення ““ (порожній рядок). |
KeyAscii = 0 |
Змінної KeyAscii присвоюється значення 0. |
End Select |
Завершення оператора Select Case. |
End Sub |
Завершення процедури txtS_KeyPress |
2.2 Організація циклічних обчислювальних процесів
Циклічними є алгоритмічні процеси, які дозволяють повторювати частину програми декілька разів. Кожне повторювання операторів всередині циклу називають ітерацією. Кількість повторювань (ітерацій) може бути відомою заздалегідь або залежати від істинності деякої логічної умови.
2.2.1 Оператор циклу For . . . Next
Оператор циклу For . . . Next використовується тоді, коли потрібно виконати групу операторів заздалегідь відоме число раз.
Загальна форма оператора:
For I = Start to Finish Step N
Блок_операторів
Next
Процес виконання оператора For . . . Next такий:
Частина початкового рядка циклу Step N може бути пропущена, коли крок зміни перемінної циклу дорівнює одиниці.
Приклад використання циклу For … Next
Як приклад розглядається створення програми обчислення суми на рахунку в банку. Користувач повинен ввести такі дані: суму попереднього внеску на рахунок - SPV, банківський відсоток - V, період часу - P. Після натиснення кнопки Розрахунок, програма повинна вивести суму SR, яка буде на рахунку після P років при визначеному банківському відсотку, якщо відома сума первинного внеску. Формула розрахунку суми така:
Блок-схем розв’язання задачі подана на рис. 2.4.
На етапі візуального програмування потрібно створити форму, подану на рис. 2.5.
Рисунок 2.4 - Блок-схема розв’язання задачі «Обчислення суми на рахунку»
Рисунок 2.5 - Вікно програми – прикладу використання оператору For...Next
Характеристика форми, елементів управління форми подана в таблиці.
Об'єкт |
Властивість |
Значення |
1 |
2 |
3 |
Форма (Form) |
Name |
frmExampleFor |
Caption |
Програма - приклад циклу For |
|
BackColor |
білий |
|
Командна кнопка (Command Button) |
Name |
cmdSolve |
Caption |
&Розрахунок |
|
Командна кнопка (Command Button) |
Name |
cmdClear |
Caption |
&Очистка |
|
Командна кнопка (Command Button) |
Name |
cmdExit |
Caption |
&Вихід |
|
Етикетка (Label) |
Name |
lblSPV |
Caption |
Сума первинного внеску: |
|
BackColor |
білий |
|
Font |
12 пунктів, напівжирний |
|
Етикетка (Label) |
Name |
lblV |
Caption |
Банківський відсоток: |
|
BackColor |
білий |
|
Font |
12 пунктів, напівжирний |
|
Етикетка (Label) |
Name |
lblP |
Caption |
Період: |
|
BackColor |
білий |
|
Font |
12 пунктів, напівжирний |
|
Етикетка (Label) |
Name |
lblS |
Caption |
Сума на рахунку: |
|
BackColor |
білий |
|
Font |
12 пунктів, напівжирний |
|
Етикетка (Label) |
Name |
lblSR |
Caption |
0 |
|
BackColor |
білий |
|
Font |
12 пунктів, напівжирний |
|
Alignment |
1 – Right Justify (вирівнювання праворуч) |
|
Текстове поле (TextBox) |
Name |
TxtSPV |
Text |
“” (порожній рядок) |
|
Текстове поле (TextBox) |
Name |
TxtV |
Text |
“” (порожній рядок) |
|
Текстове поле (TextBox) |
Name |
TxtP |
Text |
“” (порожній рядок) |
Характеристика коду програми подана в таблиці.
Дані в рядку коду |
Коментар |
1 |
2 |
Option Explicit |
Оголошення змінних: |
Dim SPV, V, P, SR |
SPV – сума первинного внеску; V – банківський відсоток; P – період; SR – сума на рахунку після P років. |
|
2 |
Private Sub cmdClear_Click() |
Заголовок процедури, яка пов’язана з подією Click на кнопці cmdClear (Очистка). |
TxtSPV.Text = " " |
Властивості Text текстового поля txtSPV (для введення суми первинного внеску) привласнюється значення “” (порожній рядок). |
TxtV.Text = " " |
Властивості Text текстового поля txtV (для введення банківського відсотку) привласнюється значення “” (порожній рядок). |
TxtP.Text = " " |
Властивості Text текстового поля txtP (для введення періоду) привласнюється значення “” (порожній рядок). |
lblSR.Caption = 0 |
Властивості Caption етикетки lblSR (для виведення результату) привласнюється значення 0. |
End Sub |
Кінець процедури cmdClear_Click. |
Private Sub cmdExit_Click() |
Заголовок процедури, яка виконується у випадку події Click – клацання лівою кнопкою миші на кнопці cmdExit (Вихід). |
End |
Кінець роботи програми |
End Sub |
Кінець процедури cmdExit_Click. |
Private Sub cmdSolve _Click() |
Заголовок процедури, яка пов’язана з подією Click на кнопці cmdSolve (Розрахунок). |
SPV = Val(txtSPV.Text) |
Змінній SPV привласнюється значення властивості Text поля txtSPV – значення суми первинного внеску, яка введена в поле txtSPV. При цьому виконується перетворення текстового значення на числове за допомогою функції Val. |
V = Val(txtV.Text) |
Змінній V привласнюється значення властивості Text поля txtV – значення банківського відсотка. |
P = Val(txtP.Text) |
Змінній P привласнюється значення властивості Text поля txtP – значення періоду. |
SR=SPV |
Змінній SR перед початком циклу привласнюється значення змінної SPV. |
For i=1 To P |
Для і, що змінюється від 1 до Р (оскільки Step N не визначено, крок зміни дорівнює 1), доки і<=P виконується дія |
SR=SR*(100+V)/100 |
змінній SR привласнюється значення – попереднє значення SR помножене на (100+V)/100 |
Next |
Значенню і привласнюється і+1, виконується перехід до рядку For. |
lblSR.Caption = str(SR) |
Властивості Caption етикетки lblSR привласнюється значення SR, яке функцією str перетворюється з числового типу текстовий. |
End Sub |
Кінець процедури cmdSolve _Click. |
2.2.2 Оператор циклу Do While . . . Loop
Цикл цього типу використовується в тих випадках, коли необхідно повторювати ділянку коду доти, поки виконується деяка умова.
Загальна форма оператора:
Do While <Умова>
<Блок_операторів>
Loop
Процес виконання оператора Do While . . . Loop такий:
При використанні циклу Do While . . . Loop потрібно, на відміну від оператора For...Next, усередині циклу змінювати значення змінної - лічильника циклу.
У програмі визначення суми на рахунку після декількох років при певному банківському відсотку може бути використаний замість оператора For...Next оператор Do While . . . Loop. У цьому випадку алгоритм виконання програми не зміниться. Процедура cmdSolve _Click() прийме такий вид:
Private Sub cmdSolve _Click()
SPV = Val(txtSPV.Text)
V = Val(txtV.Text)
P = Val(txtP.Text)
SR = SPV
i = 1
Do While i<= P
SR = SR*(100+V)/100
i = i+1
Loop
lblSR.Caption = Str(SR)
End Sub
2.2.3 Оператор циклу Do. . . Loop While
У циклі цього типу оператори, що входять у тіло циклу виконуються обов’язково хоча б один раз, після цього відбувається перевірка умови і, якщо умова не істинна, керування передається наступному після рядка Loop оператору - цикл завершується. При істинності умови, починається наступна ітерація циклу.
Загальна форма оператора:
Do
Блок_операторів
Loop While Умова
Якщо спробувати вирішити задачу визначення суми ряду чисел із використанням оператора Do. . . Loop While, алгоритм виконання програми зміниться (рис.2.6).
Рисунок 2.6 - Блок-схема розв’язання задачі обчислення суми на рахунку з використанням оператора Do ... Loop While
Процедура cmdSolve _Click() прийме такий вид:
Private Sub cmdSolve_Click()
SPV = Val(txtSPV.Text)
V = Val(txtV.Text)
P = Val(txtP.Text)
SR = SPV
i = 1
Do
SR = SR*(100+V)/100
i = i+1
Loop While i<= P
lblSR.Caption = Str(SR)
End Sub
2.4 Практичні завдання
Завдання
Розробити програму за індивідуальним варіантом. При розробці програми слід створити форму, програмний код, перевірити дію програми. Далі необхідно зберегти програму на магнітному диску, надрукувати форму та код програми. Звіт про роботу повинен вміщувати:
Варіант №1
Створити програму, що дозволяє визначити, яка сума буде накопичена на рахунку за 4 місяці, якщо щомісяця вносити певну суму при визначеному банківському відсотку. Кожного місяця нараховується сума відсотку на залишок вкладу, до суми вкладу додається нове надходження.
Програма повинна реагувати, якщо користувач введе від’ємні або рівні 0 значення суми місячного внеску та банківського відсотку.
Рекомендація! При оголошенні змінних доцільно використовувати грошовий тип Currency.
Рисунок 2.7 - Вікно програм.
Варіант №2
Створити програму, за допомогою якої можна визначити добуток цілих чисел від 1 до Х, значення Х вводиться за допомогою клавіатури. Обчислення не повинно виконуватись тоді, коли введено від’ємне число або 0.
а) |
б) |
Рисунок 2.8 - Вікно програми
а) вид з вікна з результатом обчислення добутку натуральних чисел;
б) вид із повідомленням про помилку – введення від’ємного числа або 0.
При візуальній розробці програми, щоб помістити формулу розрахунку функції в форму, слід використовувати елемент “Об’єкт OLE” , після розташування об’єкту в формі вибрати у вікні діалогу Microsoft Equation, ввести формулу.
Варіант №3
Розробити програму розрахунку суми доходу від реалізації товару, який отримає підприємство. Користувач програми повинен мати змогу ввести найменування товару, закупівельну ціну товару (Ст), кількість отриманого товару (Кт), номер товарної групи. Сума придбання товару дорівнює:
.
Для товарів різних груп діють різні відсотки нарахування торговельної націнки, від якої залежить доход. Так доход від реалізації одягу складає 15% від суми придбання товару (Sт), взуття – 20%, канцелярських товарів – 10%, парфумерних товарів – 22%, товарів інших груп – 8%.
Рисунок 2.9 - Вікно програми
Варіант №4
Розробити програму, яка дозволяє визначити залишкову вартість основних засобів після певного періоду експлуатації. Щомісяця вартість основних засобів зменшується на суму амортизаційних відрахувань. При роботі програми слід ввести первинну вартість основного засобу, період експлуатації, відсоток амортизаційних відрахувань (Ав). Щомісяця виконується розрахунок залишкової вартості за алгоритмом: Вз * Ав / 100.
Рисунок 2.10 - Вікно програми
Варіант №5
Розробити програму, яка дозволяє ввести суму нарахованої заробітної плати за рік співробітникові підприємства, відсоток виконання виробничого завдання, визначити суму премії по результатах роботи за рік. Співробітник отримує премію у розмірі 10% від заробітної плати за рік, якщо план виконано на 100%. Якщо перевиконання плану складає до 5%, то премія нараховується у розмірі 12% від заробітної плати за рік, якщо перевиконання більше 5%, то премія обчислюється як 15% від заробітної плати за рік. Якщо план не виконано, премія не сплачується.
Варіант №6
Розробити програму, яка дозволяє ввести найменування товарної групи, купівельну ціну товару, кількість товару (див. рис.2.9). Програма повинна давати змогу розрахувати ціну продажу товару і суму реалізації з урахуванням того, що торговельна націнка на товари групи “Взуття” складає 15%, групи “Меблі” – 20%, групи “Електротовари” – 18%, інші товари – 22%.
Варіант №7
Розробити програму, яка дозволяє ввести ціле позитивне число Х, розрахувати значення функції У за формулою:
П – добуток чисел від 1 до Х (Х!).
Якщо введено число, яке є від’ємним або дорівнює 0, програма повинна видавати повідомлення про помилку (див. рис.2.8).
Варіант №8
Розробити програму, яка дозволяє ввести суму первинного внеску на рахунок у банку, термін зберігання коштів. Програма повинна давати змогу обчислити суму на рахунку в банку, виходячи з того, що якщо сума первинного внеску складає менше 500 грн., то банківський відсоток дорівнює 14% річних, якщо сума більше 500 грн. і менш ніж 1000 грн., то банківський відсоток 15% річних, більше 1000 грн. – 16% річних. Банківські відсотки нараховуються щомісячно.
Варіант №9
Розробити програму, яка дозволяє ввести оцінки, які отримав певний студент під час складання сесії з дисциплін: вища математика, фізика, інформатика, історія України. Визначити за допомогою програми розмір стипендії, яка нараховується студентові. Якщо всі екзамени складено на “відмінно”, нараховується стипендія в розмірі 100 грн., якщо студент отримав оцінки “відмінно” і “добре”, то стипендія складатиме 80 грн., у інших випадках стипендія не нараховується.
Варіант №10
Розробити програму, яка дозволяє ввести число Х, розрахувати значення функції У за формулою:
Варіант №11
Розробити програму, яка дозволяє ввести дані про роботу торговельного агента: суму реалізації товарів за місяць, кількість самостійно проведених акцій, кількість залучених до співробітництва фірм. Програма повинна давати змогу обчислити суму премії, нарахованої торговельному агенту за проведену роботу. Якщо сума проданого за місяць товару перевищує 2000 гривень, премія нараховується в розмірі 100 гривень, при продажі товару більше ніж на 3000 гривень нараховується премія в розмірі 250 гривень, у випадку, коли агент залучив до співробітництва більше 5 фірм або самостійно провів одну або більше акцій, сума премії зростає на 30%.
Варіант №12
Розробити програму, яка дозволяє ввести суму нарахованої заробітної за рік, відсоток виконання виробничого завдання, кількість раціоналізаторських пропозицій. Програма повинна давати змогу обчислити суму премії співробітникам підприємства. Якщо виконання виробничого завдання складає менше 100%, то премія не нараховується. Коли виробниче завдання виконано на 100%, нараховується премія у розмірі 200 гривень. Якщо виробниче завдання виконано більш ніж на 100%, то до суми премії додається 1% нарахованої заробітної плати за рік за кожний відсоток перевиконання виробничого завдання. Коли виробниче завдання виконано або перевиконано, то при наявності хоча б двох раціоналізаторських пропозицій до суми премії додається 100 гривень.
Варіант №13
Розробити програму, яка дозволяє ввести дані для розрахунку вартості столярного виробу: площа, матеріал (1 – сосна, 2 – бук, 3 – дуб), рівень складності виробу (1 – висока, 2 – середня, 3 – низька). Після натискання на кнопці Розрахунок програма повинна виводити вартість виробу, яка розраховується на основі таких даних: вартість 1 м2 виробу з сосни складає 100 грн., з бука – 140 грн., з дуба – 200 грн.; до вартості виробів з високою складністю застосовується коефіцієнт 1,2, середньою – 1, низькою – 0,8.
Варіант №14
Розробити програму, яка дозволяє ввести суму первинного внеску на рахунок у банку, термін зберігання коштів – 6, 9 або 12 місяців /інше значення є помилкою користувача, слід виводити повідомлення про помилку (див. рис.2.7)/. Програма повинна давати змогу обчислити суму на рахунку в банку, виходячи з того, що якщо кошти зберігаються протягом 6 місяців, то банківський відсоток дорівнює 12% річних, якщо термін збереження коштів 9 місяців, то банківський відсоток 15% річних, 12 місяців – 18% річних. Банківські відсотки нараховуються щомісячно.
Варіант №15
Розробити програму, яка дозволяє ввести число Х, розрахувати значення функції У за формулою:
2.5 Тест
Відповідь |
Вміє |
Не вміє |
|
|
|||
|
|||
|
|||
|
|||
|
|||
Select Case X Case 0 lblExample.Caption = “Приклад” case 2..5, 10..20 lblExample.Caption = “ Example ” case else lblExample.Caption = “ Значення ” End Select |
|||
|
|||
|
|||
|
|||
|
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
i = 2 Do Z = Z *X i = i +1 Loop While i<=N |
|||
For i = 1 To N Z = X * Z Next |
|||
i = 1 Do While i <= N Z = X*X i = i + 1 Loop |
|||
For X = 1 To 7 X = 3 Y = Y + X Next X = 1 |
|||
|
|||
|
|||
|
|||
If X = 3 У = 5*Х Х = 20 End If |
|||
|
|||
|
|||
|
3 Використання елементів управління в програмах. Робота з формами. Поняття методу
3.1 Елементи управління - смуги прокручування, перемикачі,
прапорці, групи, списки, що розчиняються
Горизонтальну або вертикальну смуги прокручування можна помістити у форму за допомогою відповідних елементів на панелі: HscrollBar, VscrollBar. Прийнято, щоб імена смуг прокручування у програмах починалися зі сполучення hsb для горизонтальних смуг і vsb для вертикальних.
Переміщення бігунка по смузі призводить до зміни властивості Value елемента, що може знаходиться в діапазоні, обумовленому властивостями Max і Min елемента. Властивість Small Change визначає крок зміни властивості Value при використанні кнопок , або , . У програмах смуги прокручування використовуються, на відміну від вікон, не для переміщення всередині вікна, а для визначення значення засобом переміщення бігунка. У результаті виконання переміщення бігунка по смузі прокручування відбувається подія Change, тобто події Change відповідає зміна місця розташування бігунка на смузі, подія відбувається після того, як бігунок займе нове місце. Процесу переміщення бігунка відповідає подія Scroll, лише бігунок зрушив з місця – відбулась подія Scroll.
Для перемикачів (OptionButton) в області діалогу, обмеженою рамкою (Frame), у стані «включено» значення властивості Value дорівнює True (Істина), у стані «вимкнено» - False (Брехня). Аналізуючи значення властивості Value кожного перемикача можна виконувати визначені дії. Імена перемикачів доцільно починати зі сполучень літер opt, груп - fra.
Елемент прапорець (Check Box) у стані «включено» одержує значення властивості Value - True (1), у стані «вимкнено» - False (0). У програмах при аналізі стану прапорців слід використовувати значення 1 або 0. Імена прапорців слід починати зі сполучень літер chk.
Списки, що розчиняються, створюються за допомогою елемента (ComboBox), вони використовуються для вибору одного значення з переліку можливих. Імена списків, що розчиняються, доцільно починати зі сполучень літер cbo. Перелік можливих значень визначається як значення властивості List об’єкта. Значення властивості Text відповідає поточному стану списку, дорівнює тому значенню, яке обрано зі списку.
3.2 Робота з формами. Поняття методу
Програма, розроблена засобами Visual Basic, може містити декілька форм. Щоб додати до проекту нову форму, потрібно виконати команду меню Project - Add Form. При завантаженні форми з нею відбувається подія Load. Таким чином можна створити пов’язану з формою процедуру, яка буде виконуватись при завантаженні форми. Для роботи з формами й іншими об'єктами можуть використовуватися методи.
Метод визначає деяку дію, що може бути виконана з об'єктом, але на відміну від процедури вона нерозривно пов'язана з об'єктом, якому він належить. Методи адекватні створеними раніше процедурам, що можуть бути виконані стосовно деяких об'єктів. Наприклад, застосування методу Cls стосовно форми призводить до очищення форми. Об'єднання імені об'єкта і через точку імені методу дає ім'я існуючої процедури, що виконує визначені дії з об'єктом. Кожний об'єкт у середовищі Visual Basic володіє не тільки набором властивостей, але супутнім набором стандартних процедур, які називаються методами. Для форм можуть бути застосовані методи Show - показати форму, Hide - сховати форму (прибрати з екрана).
Якщо в програмі є декілька форм і змінні, які створюються чи редагуються в одній формі, використовуються в інших формах, то такі змінні слід оголошувати як глобальні. Для цього до проекту слід додати модуль командою меню Project – Add Module, у вікні модуля оголосити змінні після зарезервованого слова Global. Приклади оголошення глобальних змінних:
Global Х
Global Zap As String
Щоб розглянути на прикладі використання елементів управління в формах, слід створити програму, у ході виконання якої можна розрахувати ціну та поживність порції морозива на основі визначених вхідних даних. Основним компонентом порції може бути морозиво одного з трьох видів, у кількості від 75 до 250 гр.
Вид морозива |
Ціна за 100 гр. |
Калорійність, ккал. на 100 гр. продукту |
Пломбір |
0,90 грн. |
100 |
Вершкове |
1 грн. |
110 |
Молочне |
0,80 грн. |
90 |
Порція морозива може також вміщувати:
Додаток |
Ціна |
Калорійність, ккал. |
Джем полуничний |
0,30 грн. |
50 |
Джем вишневий |
0,25 грн. |
47 |
Джем помаранчевий |
0,40 грн. |
48 |
Збиті вершки |
0,70 грн. |
80 |
Шоколад |
0,50 грн. |
120 |
Горіхи |
0,90 грн. |
130 |
Причому, якщо можна обрати лише один з видів джемів, інші інгредієнти можна включати у порцію за смаком.
Програма повинна включати 3 форми. Перша основна форма з’являється при запуску програми, дозволяє перейти до розрахунку, вивести інформацію про автора програми, завершити роботу (рис.3.1. а). Форма з відомостями про автора (рис.3.1. б) з’являється після натиснення кнопки Відомості про автора. Після знайомства з інформаційним вікном натисненням кнопки Ок можна повернутись до головного вікна програми. Третє вікно використовується для введення даних, виконання розрахунку (рис.3.1. в).
а) |
б) |
в) |
Рисунок 3.1 - Вікна програми – приклада використання декількох форм, різних елементів управління
При розв’язанні задачі використовуються такі змінні:
V – вага морозива в порції;
C – ціна порції;
K – калорійність.
Блок-схема розв’язання задачі подана на рис.3.2.
На етапі візуальної розробки програми слід створити головну форму frmMain у відповідності з описом, наданим у таблиці.
Об'єкт |
Властивість |
Значення |
Форма (Form) |
Name |
frmMain |
Caption |
Програма - приклад |
|
BackColor |
білий |
|
Командна кнопка (Command Button) |
Name |
cmdR |
Caption |
Початок розрахунку |
|
Командна кнопка (Command Button) |
Name |
cmdA |
Caption |
Відомості про автора |
|
Командна кнопка (Command Button) |
Name |
cmdZ |
Caption |
Завершення роботи |
|
Етикетка (Label) |
Name |
lbl1 |
Caption |
Працює програма, |
|
BackColor |
білий |
|
Font |
14 пунктів, напівжирний курсив |
|
Етикетка (Label) |
Name |
lbl2 |
Caption |
яка дозволяє розрахувати ціну та калорійність однієї порції морозива |
|
BackColor |
білий |
|
Font |
12 пунктів, напівжирний |
Далі необхідно додати до проекту ще одну форму командою меню Project – Add Form, створити форму інформаційного повідомлення у відповідності з таблицею.
Об'єкт |
Властивість |
Значення |
Форма (Form) |
Name |
frmА |
Caption |
Програма - приклад |
|
BackColor |
білий |
|
Командна кнопка (Command Button) |
Name |
cmdОк |
Caption |
Ок |
|
Етикетка (Label) |
Name |
lbl1 |
Caption |
Автором програми є студент групи ОФФ 99 А Ляшенко М.Д. |
|
BackColor |
білий |
|
Font |
14 пунктів, напівжирний |
|
Етикетка (Label) |
Name |
lbl2 |
Caption |
тел.: (0622) 92 – 13 - 70 |
|
BackColor |
білий |
|
Font |
12 пунктів, напівжирний |
Додати ще одну форму, помісти на неї елементи управління та визначити властивості об’єктів як у таблиці.
Об'єкт |
Властивість |
Значення |
1 |
2 |
3 |
Форма (Form) |
Name |
frmR |
Caption |
Програма - приклад |
|
BackColor |
білий |
|
1 |
2 |
3 |
Командна кнопка (Command Button) |
Name |
cmdRoz |
Caption |
Розрахунок |
|
Командна кнопка (Command Button) |
Name |
cmdExit |
Caption |
Вихід |
|
Етикетка (Label) |
Name |
lblV |
BackColor |
білий |
|
Font |
12 пунктів, напівжирний |
|
AutoSize |
True |
|
Етикетка (Label) |
Name |
lblR |
Caption |
“” (порожній рядок) |
|
BackColor |
білий |
|
Font |
12 пунктів, напівжирний |
|
Alignment |
2 - Center |
|
Горизонтальна смуга прокручування (HscrollBar) |
Name |
hsbV |
Min |
75 |
|
Max |
250 |
|
SmallChange |
25 |
|
Група (Frame) |
Name |
fraOK |
Caption |
Основний компонент |
|
BackColor |
білий |
|
Font |
12 пунктів, напівжирний |
|
Перемикач (OptionButton) |
Name |
optO1 |
Caption |
Пломбір |
|
BackColor |
білий |
|
Font |
12 пунктів, напівжирний |
|
Value |
True |
|
Перемикач (OptionButton) |
Name |
optO2 |
Caption |
Вершкове |
|
BackColor |
білий |
|
Font |
12 пунктів, напівжирний |
|
Перемикач (OptionButton) |
Name |
optO3 |
Caption |
Молочне |
|
BackColor |
білий |
|
Font |
12 пунктів, напівжирний |
|
Група (Frame) |
Name |
fraD |
Caption |
Джем |
|
BackColor |
білий |
|
Font |
12 пунктів, напівжирний |
|
Перемикач (OptionButton) |
Name |
optD1 |
Caption |
полуничний |
|
BackColor |
білий |
|
Font |
12 пунктів, напівжирний |
|
Value |
True |
|
Перемикач (OptionButton) |
Name |
optD2 |
Caption |
вишневий |
|
BackColor |
білий |
|
Font |
12 пунктів, напівжирний |
1 |
2 |
3 |
Перемикач (OptionButton) |
Name |
optD3 |
Caption |
помаранчевий |
|
BackColor |
білий |
|
Font |
12 пунктів, напівжирний |
|
Перемикач (OptionButton) |
Name |
optD4 |
Caption |
немає |
|
BackColor |
білий |
|
Font |
12 пунктів, напівжирний |
|
Прапорець (CheckBox) |
Name |
chk1 |
Caption |
збиті вершки |
|
BackColor |
білий |
|
Font |
12 пунктів, напівжирний |
|
Прапорець (CheckBox) |
Name |
chk2 |
Caption |
шоколад |
|
BackColor |
білий |
|
Font |
12 пунктів, напівжирний |
|
Прапорець (CheckBox) |
Name |
chk3 |
Caption |
горіхи |
|
BackColor |
білий |
|
Font |
12 пунктів, напівжирний |
Активізувати головну форму frmMain, створити такий код програми:
Дані в рядку коду |
Коментар |
Private Sub cmdA_Click() |
Заголовок процедури, яка виконується після клацання кнопкою миші на кнопці Відомості про автора. |
frmMain.Hide |
До головної форми програми frmMain застосовується метод Hide – форма зникає з екрану. |
frmA.Show |
До інформаційної форми frmA застосовується метод Show – форма з’являється на екрані. |
End Sub |
Кінець процедури. |
Private Sub cmdR_Click() |
Заголовок процедури, яка виконується при клацанні кнопкою миші на кнопці Початок розрахунку. |
frmMain.Hide |
До головної форми програми frmMain застосовується метод Hide – форма зникає з екрану. |
frmR.Show |
До форми для визначення даних і виконання розрахунку ціни і поживності порції морозива frmR застосовується метод Show – форма з’являється на екрані. |
End Sub |
Кінець процедури. |
Private Sub cmdZ_Click() |
При клацанні на кнопці Завершення роботи |
End |
програма закінчує роботу. |
End Sub |
Кінець процедури. |
Для інформаційної форми потрібно створити код, як у таблиці.
Дані в рядку коду |
Коментар |
Private Sub cmdOk_Click() |
Заголовок процедури, яка виконується при клацанні кнопкою миші на кнопці Ок у інформаційному вікні. |
frmA. Hide |
До інформаційної форми frmA застосовується метод Hide – форма зникає з екрану. |
frmMain.Show |
До головної форми програми frmMain застосовується метод Show – форма з’являється на екрані. |
End Sub |
Кінець процедури. |
З формою для розрахунків слід пов’язати такий програмний код:
Дані в рядку коду |
Коментар |
1 |
2 |
Dim V, c, k |
Оголошення змінних V, c, k |
Private Sub frmR_Load() |
Заголовок процедури, яка виконується у зв’язку з подією Load – завантаженням форми frmR |
hsbV.Value = 75 |
Властивості Value горизонтальної лінійки прокручування hsbV привласнюється значення 75 – мінімальна вага порції морозива. |
V = 75 |
Змінній V привласнюється значення 75. |
lblV.Caption = "Вага морозива в порції - " + Str(V) + " гр." |
Властивості Caption етикетки lblV для виведення повідомленні про обрану вагу морозива в порції привласнюється відповідне значення – “Вага морозива в порції 75 гр.”. |
End Sub |
Кінець процедури. |
Private Sub hsbV_Change() |
Заголовок процедури, яка виконується якщо бігунок змінив місце розташування на смузі прокручування – відбулась подія Change. |
V = hsbV.Value |
Змінній V привласнюється значення властивості Value смуги прокручування, яке відповідає поточному місцю розташування бігунка. |
lblV.Caption = "Вага морозива в порції - " + Str(V) + " гр." |
Властивості Caption етикетки lblV для виведення повідомленні про обрану вагу морозива в порції привласнюється відповідне значення – “Вага морозива в порції V гр.”. |
End Sub |
Кінець процедури. |
Private Sub hsbV_Scroll() |
Заголовок процедури, яка виконується під час переміщення бігунка по смузі прокручування – відбувається подія Scroll. |
hsbV_Change |
Виконується процедура hsbV_Change, пов’язана зі зміною положення на смузі. |
End Sub |
Кінець процедури. |
1 |
2 |
Private Sub cmdExit_Click() |
Заголовок процедури, пов’язаної з кнопкою Вихід. |
frmR.Hide |
До форми frmR застосовується метод Hide – форма зникає з екрану. |
frmMain.Show |
До головної форми frmMain застосовується метод Show – форма з’являється на екрані. |
End Sub |
Кінець процедури. |
Private Sub cmdRoz_Click() |
Заголовок процедури, пов’язаної з кнопкою Розрахунок. |
If optO1.Value = True Then |
Якщо властивість Value перемикача optO1 (пломбір) має значення True (перемикач у стані включено), то |
c = V * 0.9 / 100 |
обчислюється ціна за морозиво за формулою V * 0.9 / 100 |
k = V |
обчислюється калорійність за формулою V |
Else |
інакше |
If optO2.Value = True Then |
якщо властивість Value перемикача optO2 (вершкове) має значення True (перемикач у стані включено), то |
c = V / 100 |
обчислюється ціна за морозиво за формулою V / 100 |
k = V * 110 / 100 |
обчислюється калорійність за формулою V * 110 / 100 |
Else |
інакше, коли можливим є тільки значення True властивості Value перемикача optO3 (молочне) |
c = V * 0.8 / 100 |
ціна морозива обчислюється як V * 0.8 / 100 |
k = V * 90 / 100 |
калорійність обчислюється за формулою k = V * 90 / 100 |
End If |
Кінець внутрішнього оператору If |
End If |
Кінець першого оператору If |
If optD1.Value = True Then |
Якщо властивість Value перемикача optD1 (полуничний) у групі fraD має значення True (перемикач у стані включено), то |
c = c + 0.3 |
до ціни порції додається 0,3 грн. |
k = k + 50 |
до калорійності додається 50 ккал. |
Else |
інакше |
If optD2.Value = True Then |
якщо властивість Value перемикача optD2 (вишневий) має значення True, то |
c = c + 0.25 |
до ціни порції додається 0,25 грн. |
k = k + 47 |
до калорійності додається 47 ккал. |
Else |
інакше |
If optD3.Value = True Then |
якщо властивість Value перемикача optD3 (помаранчевий) має значення True, то |
c = c + 0.4 |
до ціни порції додається 0,4 грн. |
k = k + 48 |
до калорійності додається 48 ккал. |
|
2 |
End If |
кінець If |
End If |
кінець If |
End If |
кінець If |
If chk1.Value = 1 Then |
Якщо властивість Value прапорця chk1 (збиті вершки) має значення 1 (перемикач у стані включено, True), то |
c = c + 0.7 |
до ціни додається 0,7 грн. |
k = k + 80 |
до калорійності додається 80 ккал. |
End If |
кінець If |
If chk2.Value = 1 Then |
Якщо властивість Value прапорця chk2 (шоколад) має значення 1 (перемикач у стані включено), то |
c = c + 0.5 |
до ціни додається 0,5 грн. |
k = k + 120 |
до калорійності додається 120 ккал. |
End If |
кінець If |
If chk3.Value = 1 Then |
Якщо властивість Value прапорця chk3 (горіхи) має значення 1 (перемикач у стані включено), то |
c = c + 0.9 |
до ціни додається 0,9 грн. |
k = k + 130 |
до калорійності додається 130 ккал. |
End If |
кінець If |
lblR.Caption = "Ціна порції - " + Str(c) + " грн. (калорійність - " + Str(k) + " ккал.)" |
Властивості Caption етикетки lblR привласнюється нове значення – результат конкатенації (об’єднання) текстових рядків "Ціна порції - ", Str(c), " грн. (калорійність - ", Str(k) і " ккал.)" |
End Sub |
Кінець процедури. |
3.2 Контрольні запитання
3.4 Практичні завдання
Завдання
Розробити програму за індивідуальним варіантом. При розробці програми слід створити форми, програмний код, перевірити дію програми. Далі необхідно зберегти програму на магнітному диску, надрукувати форми та код програми. Звіт про роботу повинен вміщувати:
Варіант №1
Створити програму, під час виконання якої користувач може:
Для товарів групи одягу ціна збільшується на 10%, взуття – на 20 %, інші товари – 15%.
|
Варіант №2
Створити програму, під час виконання якої користувач може:
При розрахунку слід: визначити суму нарахованої заробітної плати пропорційно окладу, кількості відпрацьованих днів, зворотно пропорційно кількості робочих днів у місяці; |
|
відрахувати суму прибуткового податку, який обчислюється за ставкою 13% від суми нарахованої заробітної плати; зменшити суму, яка видається співробітникові, на суму відрахувань у пенсійний фонд: якщо заробітна плата складає менше ніж 150 грн., то сума відрахувань складає 1% від нарахованої заробітної плати, більше 150 грн. – 2%; зменшити суму до виплати на суму відрахувань у фонд зайнятості – 0,05% від суми нарахованої заробітної плати. |
Створити програму, під час виконання якої користувач може:
|
Варіант №4
Створити програму, під час виконання якої користувач може:
|
Варіант №5
Створити програму, під час виконання якої користувач може:
|
|
На початку розрахунку остаточна вартість основного засобу дорівнює первісній вартості. Після завершення кожного періоду остаточна вартість зменшується на певний відсоток амортизаційних відрахувань. Наприклад, якщо первісна вартість основного засобу дорівнює 2000 грн., а відсоток амортизаційних відрахувань - 2%, то після першого періоду експлуатації остаточна вартість основного засобу дорівнюватиме 1960 грн., другого – 1920,80 грн., третього – 1882,38 грн. і т.д. |
Варіант №6
Розробити програму, під час виконання якої користувач може:
Якщо позика погашається рівними частинами протягом періоду, то щороку сплачуються відсотки за суму боргу та певна частина боргу. Наприклад, якщо сума позики складає 2000 грн., період погашення боргу – 2 роки, банківський відсоток – 20%, то наприкінці першого року сплачується грн., наприкінці другого року грн. Разом за позикою буде сплачено 2600 грн.
При погашені позики один раз наприкінці періоду щороку сума боргу збільшується на банківський відсоток.
Варіант №7
Створити програму, під час виконання якої користувач може:
|
|
Сума реалізації товару визначається як добуток ціни на кількість. Сума реалізації може бути зменшена на суму знижки. Знижка у розмірі 3% надається при продажу більш ніж 2-ох комп’ютерів, 2% при продажу більш ніж 3-ох одиниць оргтехніки, 1% при продажу більш ніж 6-ти одиниць побутової техніки. |
Варіант №8
Створити програму, під час виконання якої користувач може:
|
Варіант №9
Створити програму, під час виконання якої користувач може:
|
|
Вартість виготовлення поліграфічної продукції залежить від загальної кількості сторінок у виданні. Друкування кожної сторінки коштуватиме 4 коп., на кожну наступну 1000 сторінок надається знижка в 1%. Так наприклад, вартість виготовлення 100 брошур по 30 сторінок у кожній обчислюється так: загальна кількість сторінок у виданні:; перші 1000 примірників друкуються без знижки, вартість друку складатиме: грн.; на друкування наступних 1000 сторінок надається знижка 1%, тому вартість складатиме: грн.; на друкування наступних 1000 сторінок до знижки 1% дається ще одна знижка в 1%, тому вартість складатиме: грн.; загальна вартість друкування брошур складатиме: 118,8 грн. До вартості друкування слід додати також вартість виготовлення обкладинок, при чому якщо обкладинка повинна бути тверда, то її вартість складатиме 1 грн. на кожний примірник, гнучка поліпшена обкладинка коштуватиме 0,7 грн. на кожний примірник, звичайна гнучка обкладинка – 0,4 грн. на один примірник. |
Варіант №10
Створити програму, під час виконання якої користувач може:
|
|
При розрахунку суми квартплати слід використовувати такі дані:
|
Варіант №11
Створити програму, під час виконання якої користувач може:
Собівартість одного підручника визначається як загальні витрати, пов’язані з друкуванням однієї одиниці продукції. Ціна підручника складається з його собівартості та прибутку від виробництва однієї одиниці продукції. |
Варіант №12
Створити програму, під час виконання якої користувач може:
|
|
На кожному етапі руху виробу від виробника до кінцевого споживача у роздрібній торгівлі ціна виробу збільшується на певний відсоток націнки |
Варіант №13
Створити програму, під час виконання якої користувач може:
|
|
реалізації, середнє значення, питома вага реалізації товарів однієї з груп у загальному обсязі реалізації;
|
Варіант №14
Створити програму, під час виконання якої користувач може:
|
|
Сума позики – це грошові кошти, які отримує позичальник, при чому він повинен оплатити по позичці певну суму наприкінці визначеного періоду з урахуванням банківських відсотків, що нараховуються за кожний період. Наприклад, якщо згідно угоди через один період слід повернути 100 грн. при 10%, то позичальник отримує на руки 91 грн. |
Варіант №15
Створити програму, під час виконання якої користувач може:
|
|
Результат основної діяльності обчислюється за формулою . Відсоток прибутку визначається за формулою . |
3.5 Тест
Відповідь |
Вміє |
Не вміє |
|
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
4 Управління програмою за допомогою меню.
Робота з масивами елементів управління, змінних
4.1 Управління програмою за допомогою меню
Мова програмування Visual Basic дає змогу помістити у програми, які розроблено її засобами, меню. Щоб додати до форми меню, слід її активізувати, виконати команду меню Tools – Menu Editor, у результаті відчиниться вікно редактору форм (рис.4.1).
У вікні редактору меню слід визначити складові елементи меню, їх властивості. Обов’язково треба ввести значення властивостей Caption – назва пункту меню, Name – ім’я елемента меню, з яким буде далі пов’язана відповідна процедура. Імена елементів меню починаються символами mnu, далі можуть йти будь-які букви латинського алфавіту, цифри. Імена повинні бути унікальними, не повторюватись. Щоб додати новий черговий елемент меню, слід скористатись кнопкою Next. Якщо новий елемент слід вставити у меню, яке вже існує, то слід виділити той пункт, перед яким додається новий, скористатись кнопкою Insert. Знищення активного елементу виконується з використанням кнопки Delete.
Рисунок 4.1 - Вікно редактору меню
Для зміни рівня підпорядкування елементів меню використовуються кнопки , . Якщо клацнути на кнопці , то елемент стає під режимом у режимі, який визначено у попередньому рядку, здійснюється перехід на один рівень униз. Кнопка виконує зворотну функцію – перехід до більш високого рівня підпорядкування.
Після визначення структури меню, можна починати створювати програмний код. Для цього у вікні форми треба обрати відповідний пункт меню, відчиниться вікно коду з заголовком процедури, яка має таке ім’я: ім’я елемента меню, знак підкреслення, ім’я події Click. Процедуру буде виконано, якщо під час роботи програми клацнути на відповідному пункті меню. Дії, які можуть виконуватись за допомогою команд меню, не відрізняються від операцій, що виконували розглянуті раніше командні кнопки.
Елементи меню на початку роботи програми можуть бути неактивними. Щоб визначити це, після створення програмного коду, можна для деяких елементів меню встановити значення властивості Enabled як False - виключити прапорець.
4.2 Робота з масивами елементів управління, змінних
У програмах інколи використовується декілька однотипних елементів, наприклад, декілька текстових полів для введення даних – найменувань товарів, їх кількості та ін. У цьому випадку можна полегшити і візуальну розробку програми, і обробку даних у коді, якщо застосовувати масиви елементів управління.
Масивом є сукупність однотипних компонент, які мають подібні властивості, використовуються однаково. Масив повинен мати ім’я, як будь-який іншій об’єкт. Наприклад, масив текстових полів може мати назву txtName. Елементи масиву відрізняються між собою, як правило, лише значенням властивості Index. Ім’я кожного елементу масиву складається з імені, в якому в круглих дужках визначається значення властивості Index. Наприклад, елементом масиву текстових полів може бути поле txtName(3).
При роботі програми можна використовувати імена елементів масивів, визначаючи кожний окремий елемент, або використовуючи як індекс деяку змінну. Наприклад, у фрагменті коду програми знищується вміст таких елементів масиву txtName(1), txtName(2), txtName(3), txtName(4).
For i = 1 to 4
txtName(i).Text = “ ”
Next
Для створення масиву елементів управляння можна спочатку створити перший елемент, визначити усі його властивості (ім’я елементу повинно бути введено як ім’я масиву), скопіювати елемент у формі за допомогою буферу обміну. За замовчуванням середовище програмування Visual Basic створює при вставці з буферу обміну черговий елемент масиву, нумерація яких починається з 0.
При необхідності можна, також, використовувати масиви змінних для збереження і подальшої обробки однотипних даних. Для цього масиви змінних слід оголосити так само, як і змінні, у дужках визначити кількість елементів масиву. Наприклад,
Dim X(6) As String
Dim S(10)
Нумерація елементів масиву змінних починається з 0, тому наприклад, у масиві Х є такі елементи Х(0), Х(1), Х(2), Х(3), Х(4), Х(5).
У програми звернення до елементів масиву змінних, як і до елементів масивів об'єктів, може здійснюватись безпосередньо, або за допомогою змінної–індексу. Наприклад, у фрагменті коду програми обчислюється сума всіх елементів масиву Х
Sum = 0
For i = 0 to 5
Sum = Sum + X(i)
Next
Приклад програми
Використання меню, масивів розглядається на прикладі програми обробки даних про реалізацію товарів. Під час роботи програми користувач повинен мати змогу ввести дані про реалізацію не менш 6 товарів: найменування, ціна, кількість. Управління роботою програми повинно здійснюватись за допомогою меню, в якому містяться режими Вікно, Розрахунок, Параметри. Команди меню Вікно призначені для очистки таблиці з попередніми даними і підсумкових значень, завершення роботи програми. За допомогою команд Меню Розрахунок користувач повинен мати змогу розрахувати суму по кожному товару (ціна*кількість), визначити загальну вартість усіх реалізованих товарів, підрахувати середню ціну товарів. У програму можна також помістити можливості зміни кольору символів усіх даних у вікні (можливі значення – чорний, синій, червоний), вибору кольору фону – білого чи жовтого, шрифту - звичайного або напівжирного. Вікно програми буде виглядати як на рис. 4.3.
Рисунок 4.3 - Вікно програми – приклада роботи з меню, масивами
На першому етапі розробки програми слід створити форму, помістити на неї такі елементи управління:
Об'єкт |
Властивість |
Значення |
1 |
2 |
3 |
Форма (Form) |
Name |
frmMenu |
Caption |
Робота з меню, масивами |
|
BackColor |
білий |
|
Етикетка (Label) |
Name |
lblZag |
Caption |
Відомість реалізації товарів |
|
BackColor |
білий |
|
Font |
14 пунктів, напівжирний курсив |
|
AutoSize |
True |
|
Етикетка (Label) |
Name |
lblZ |
Caption |
Найменування |
|
BackColor |
білий |
|
Font |
12 пунктів, напівжирний |
|
Alignment |
2 - Center |
|
BorderStyle |
1 – Fixed Single |
Далі слід клацнути на етикетці lblZ, скопіювати її в буфер обміну, виконати операцію вставки даних з буферу, на запитання системи відповісти Так. Етикетка lblZ після цієї операції стає об’єктом lblZ(0), тому що властивість Index елемента управління прийме значення 0. Новий об’єктом, який отримано з буферу обміну, буде мати ім’я lblZ(1), його властивість Index буде мати значення 1. Цю етикетку слід перетягти у відповідне місце, встановити значення властивості Caption – Ціна, налаштувати розмір об’єкта. Аналогічним чином слід створити об’єкти lblZ(2) - Кількість, lblZ(3) – Сума. Таким чином, створено масив етикеток lblZ, у якому міститься 4 елемента.
Після створення шапки документу аналогічним чином слід створити масиви текстових полів для введення даних у таблицю.
Текстове поле (Text Box) |
Name |
txtN |
Text |
“” |
|
Font |
12 пунктів, напівжирний |
|
BorderStyle |
1 – Fixed Single |
Текстове поле (Text Box) |
Name |
txtС |
Text |
“” |
|
Font |
12 пунктів, напівжирний |
|
BorderStyle |
1 – Fixed Single |
Текстове поле (Text Box) |
Name |
txtК |
Text |
“” |
|
Font |
12 пунктів, напівжирний |
|
BorderStyle |
1 – Fixed Single |
(Text Box) |
Name |
txtS |
Text |
“” |
|
Font |
12 пунктів, напівжирний |
|
BorderStyle |
1 – Fixed Single |
|
Enabled |
False |
Додати до форми такі етикетки для виведення підсумкових значень:
Об'єкт |
Властивість |
Значення |
Етикетка (Label) |
Name |
lblPid |
Caption |
“” |
|
BackColor |
білий |
|
Font |
12 пунктів, напівжирний курсив |
|
Етикетка (Label) |
Name |
lblSC |
Caption |
“” |
|
BackColor |
білий |
|
Font |
12 пунктів, напівжирний курсив |
Після визначення візуального вигляду форми можна приступити до створення меню. Для цього слід пересвідчитись, що вікно форми є активним, виконати команду Tools – Menu Editor, у вікні редактору меню визначити складові елементи меню, їх властивості, рівень підпорядкування як у таблиці. При створенні наступного елемента меню слід використовувати кнопку Next, для зміни рівня підпорядкування – кнопки , .
Caption |
Name |
Структура меню |
Вікно |
mnuWind |
Вікно |
Очистити |
mnuClear |
. . . . Очистити |
Таблицю |
mnuTabl |
. . . . . . . . Таблицю |
Підсумки |
mnuPid |
. . . . . . . . Підсумки |
Вихід |
mnuExit |
. . . . Вихід |
Розрахунок |
mnuRoz |
Розрахунок |
Сума |
mnuRSum |
. . . . Сума |
Підсумок |
mnuRPid |
. . . . Підсумок |
Середня ціна |
mnuRSC |
. . . . Середня ціна |
Далі можна починати розробку коду програми. Щоб створити процедуру, пов’язану з режимом меню, слід у вікні форми обрати відповідний режим у меню, клацнути на ньому лівою кнопкою миші. В наслідок цих дій відчиняється вікно коду з заголовком процедури, ім’я якої складається з імені пункту меню, знака підкреслення і назви події Click – процедуру буде виконано, якщо під час роботи програми клацнути на пункті меню.
Створимо процедуру для завершення роботи програм:
Private Sub mnuExit_Click()
End
End Sub
Дію програми вже можна перевірити, тобто можна запустити програму на виконання, завершити роботу програми.
Програма повинна працювати таким чином:
Dim Sum(6), K96)
Обов’язкові процедури програми повинні бути такими:
Дані в рядку коду |
Коментар |
1 |
2 |
Dim Sum(6), K(6) |
Оголошення масивів Sum(6), K(6). |
Private Sub mnuTabl_Click() |
Процедура виконується, якщо клацнути на пункті Таблицю в режимі Очистити пункту меню Вікно. |
For i = 0 To 5 |
Змінна циклу і використовується для роботи з індексами елементів масивів, тому вона може змінюватись від 0 до 5. |
txtN(i).Text = " " |
Властивості Text і-го елемента масиву txtN привласнюється значення – порожній рядок. |
txtC(i).Text = " " |
Знищується вміст чергового поля для введення ціни. |
txtK(i).Text = " " |
Знищується вміст чергового поля для введення кількості. |
txtS(i).Text = " " |
Знищується вміст поля для виведення суми. |
txtN(i).Enabled = True |
Властивості Enabled поля txtN(i) привласнюється значення True, після цього можна буде змінювати значення поля за допомогою клавіатури. |
txtC(i).Enabled = True |
Можна змінювати значення елементу масиву для введення ціни з використанням клавіатури. |
txtK(i).Enabled = True |
як у попередньому пункті |
Next |
І привласнюється значення і+1, якщо і менше або рівно 5, починається наступна ітерація циклу, в іншому випадку цикл завершує свою роботу. |
1 |
2 |
mnuRSum.Enabled = True |
Команда меню Розрахунок – Сума стає активною. |
mnuRPid.Enabled = False |
Команда меню Розрахунок – Підсумок стає неактивною. |
mnuRSC.Enabled = False |
Команда меню Розрахунок – Середня ціна стає неактивною. |
End Sub |
Кінець процедури. |
Private Sub mnuPid_Click() |
Заголовок процедури, які буде виконано якщо в меню обрати команду Вікно – Очистка – Підсумки. |
lblPid.Caption = " " |
Знищується текст у етикетці lblPid. |
lblSC.Caption = " " |
Знищується текст у етикетці lblSC. |
End Sub |
Кінець процедури. |
Private Sub mnuRSum_Click() |
Заголовок процедури, яка пов’язана з командою меню Розрахунок – Сума. |
For i = 0 To 5 |
Для і, що змінюється від 0 до 5 виконується такі дії: |
C = Val(txtC(i).Text) |
Змінній С привласнюється значення властивості Text чергового елемента масиву txtC(i), яке при цьому перетворюється з числового на текстове. |
K(i) = Val(txtK(i).Text) |
Елементу масиву змінних K(i) привласнюється значення, яке введено в елемент масиву полів txtK(i). |
Sum(i) = K(i) * C |
Елементу масиву змінних Sum(i) привласнюється значення добутку ціни на кількість. |
If Sum(i) <> 0 Then |
Якщо значення суми, яке отримано, не рівно 0, то |
txtS(i).Text = Str(Sum(i)) |
виводиться значення суми у елементі масиву текстових полів txtS(i). |
End If |
|
txtN(i).Enabled = False |
Елемент масиву txtN(i) для введення найменувань товарів стає недоступним для подальшого редагування. |
txtC(i).Enabled = False |
Елемент масиву txtC(i) для введення цін товарів стає недоступним для подальшого редагування. |
txtK(i).Enabled = False |
Елемент масиву txtК(i) для введення кількості стає недоступним для подальшого редагування. |
Next |
І привласнюється значення і+1, якщо і менше або рівно 5, починається наступна ітерація циклу, в іншому випадку цикл завершує свою роботу. |
mnuRSum.Enabled = False |
Команда меню Розрахунок – Сума стає неактивною. |
mnuRPid.Enabled = True |
Команда меню Розрахунок – Підсумок стає активною. |
mnuRSC.Enabled = True |
Команда меню Розрахунок – Середня ціна стає активною. |
End Sub |
Кінець процедури. |
|
2 |
Private Sub mnuRPid_Click() |
Заголовок процедури, яка пов’язана з командою меню Розрахунок – Підсумок. |
Pid = 0 |
Змінній Pid для накопичення підсумку надається значення 0. |
For i = 0 To 5 |
Для і від 0 до 5 |
Pid = Pid + Sum(i) |
змінній Pid привласнюється значення – попереднє значення Pid + значення поточного елементу масиву змінних Sum(i), в якому зберігаються розраховані суми по товарах. |
Next |
Перехід до наступної ітерації або кінець циклу. |
lblPid.Caption = "Підсумок: " + Str(Pid) + " грн." |
Друкування результату в етикетці lblPid. |
End Sub |
Кінець процедури. |
Private Sub mnuRSC_Click() |
Заголовок процедури, яка пов’язана з командою меню Розрахунок – Середня ціна. |
Pid = 0 |
Змінній Pid для накопичення підсумку надається значення 0. |
Kol = 0 |
Змінній Kol для накопичення загальної кількості товарів привласнюється значення 0. |
For i = 0 To 5 |
Для і від 0 до 5 |
Pid = Pid + Sum(i) |
змінній Pid привласнюється значення – попереднє значення Pid + значення поточного елементу масиву змінних Sum(i), в якому зберігаються розраховані суми по товарах. |
Kol = Kol + K(i) |
змінній Kol привласнюється значення – попереднє значення Kol + значення поточного елементу масиву змінних К(i), в якому зберігаються дані про кількість реалізованих товарів по рядках таблиці. |
Next |
Перехід до наступної ітерації або кінець циклу. |
lblSC.Caption = "Середня ціна: " + Str(Pid / Kol) + " грн." |
Друкування результату в етикетці lblSC. |
End Sub |
Кінець процедури. |
Для того, щоб встановити правильні значення параметрів, які визначають активність команд меню, слід перейти у вікно редактора меню, для елементів меню встановити такі значення властивості Enabled:
Після введення програмного коду програма виконує всі необхідні функції, може бути апробована.
Щоб розширити можливості програми за бажанням можна додати ще один режим меню Параметри. Для цього треба активізувати форму, перейти до редактору меню командою Tools – Menu Editor, у вікні редактору додати до меню такі елементи:
Caption |
Name |
Структура меню |
Параметри |
mnuParam |
Параметри |
Колір |
mnuColor |
. . . . Колір |
Символ |
mnuSimbl |
. . . . . . . . Символ |
чорний |
mnuBlack |
. . . . . . . . . . . . чорний |
синій |
mnuBlue |
. . . . . . . . . . . . синій |
червоний |
mnuRed |
. . . . . . . . . . . . червоний |
Фон |
mnuF |
. . . . . . . . Фон |
білий |
mnuWhite |
. . . . . . . . . . . . білий |
жовтий |
mnuYellow |
. . . . . . . . . . . . жовтий |
Шрифт |
mnuFont |
. . . . Шрифт |
звичайний |
mnuNormal |
. . . . . . . . звичайний |
напівжирний |
mnuBold |
. . . . . . . . напівжирний |
Для зміни кольору символів, фону об’єктів, слід змінювати значення властивостей BackColor – колір фону, ForeColor – колір символів. Це можна зробити за допомогою функції QBColor(), параметрами якої є такі кольори:
Колір |
Номер |
Колір |
Номер |
||
Black |
Чорний |
0 |
Dark Gray |
Темно - сірий |
8 |
Blue |
Синій |
1 |
Light Blue |
Голубий |
9 |
Green |
Зелений |
2 |
Light Green |
Світло - зелений |
10 |
Cyan |
Бірюзовий |
3 |
Light Cyan |
Світло - бірюзовий |
11 |
Red |
Червоний |
4 |
Light Red |
Рожевий |
12 |
Magenta |
Фіолетовий |
5 |
Light Magenta |
Світло - фіолетовий |
13 |
Brown |
Коричневий |
6 |
Yellow |
Жовтий |
14 |
Light Gray |
Сірий |
7 |
White |
Білий |
15 |
Щоб змінювати колір символів, наприклад, на синій слід створити таку процедуру:
Дані в рядку коду |
Коментар |
Private Sub mnuBlue_Click() |
Процедура, яка виконується якщо обрати команду Параметри – Колір – Символ – синій. |
mnuBlack.Enabled = True |
Пункт меню для вибору чорного кольору символів стає активним. |
mnuBlue.Enabled = False |
Пункт меню для вибору синього кольору символів стає неактивним. |
mnuRed.Enabled = True |
Пункт меню для вибору червоного кольору символів стає активним. |
lblZ.ForeColor = QBColor(1) |
Колір символів етикетки lblZ стає синім (код синього кольору - 1). |
For i = 0 To 3 |
Для і від 0 до 3 |
lblZag(i).ForeColor = QBColor(1) |
кожний і-ий елемент масиву етикеток lblZag змінює свій колір на синій. |
Next |
|
lblPid.ForeColor = QBColor(1) |
Етикетка для виведення підсумку lblPid змінює колір символів на синій. |
lblSC.ForeColor = QBColor(1) |
Етикетка для виведення середньої ціни lblSC змінює колір символів на синій. |
End Sub |
Кінець процедури. |
Процедури для зміни кольору символів на чорний або червоний будуть аналогічні розглянутій, при їх створенні слід використовувати буфер обміну.
Private Sub mnuBlack_Click() |
Private Sub mnuRed_Click() |
mnuBlack.Enabled = False |
mnuBlack.Enabled = True |
mnuBlue.Enabled = True |
mnuBlue.Enabled = True |
mnuRed.Enabled = True |
mnuRed.Enabled = False |
lblZ.ForeColor = QBColor(0) |
lblZ.ForeColor = QBColor(4) |
For i = 0 To 3 |
For i = 0 To 3 |
lblZag(i).ForeColor = QBColor(0) |
lblZag(i).ForeColor = QBColor(4) |
Next |
Next |
lblPid.ForeColor = QBColor(0) |
lblPid.ForeColor = QBColor(4) |
lblSC.ForeColor = QBColor(0) |
lblSC.ForeColor = QBColor(4) |
End Sub |
End Sub |
Перед апробацією цієї гілки меню у вікні редактора меню слід визначити такі значення властивості Enabled:
Для зміни кольору фону треба створити такі процедури, пов’язані з командами меню Параметри – Колір – Фон – білий (mnuWhite), Параметри – Колір – Фон – жовтий (mnuYellow):
Private Sub mnuWhite_Click() |
Private Sub mnuYellow_Click() |
mnuWhite.Enabled = False |
mnuWhite.Enabled = True |
mnuYellow.Enabled = True |
mnuYellow.Enabled = False |
frmMenu.BackColor = QBColor(15) |
frmMenu.BackColor = QBColor(14) |
lblZ.BackColor = QBColor(15) |
lblZ.BackColor = QBColor(14) |
For i = 0 To 3 |
For i = 0 To 3 |
lblZag(i).BackColor = QBColor(15) |
lblZag(i).BackColor = QBColor(14) |
Next |
Next |
For i = 0 To 5 |
For i = 0 To 5 |
txtN(i).BackColor = QBColor(15) |
txtN(i).BackColor = QBColor(14) |
txtC(i).BackColor = QBColor(15) |
txtC(i).BackColor = QBColor(14) |
txtK(i).BackColor = QBColor(15) |
txtK(i).BackColor = QBColor(14) |
txtS(i).BackColor = QBColor(15) |
txtS(i).BackColor = QBColor(14) |
Next |
Next |
lblPid.BackColor = QBColor(15) |
lblPid.BackColor = QBColor(14) |
lblSC.BackColor = QBColor(15) |
lblSC.BackColor = QBColor(14) |
End Sub |
End Sub |
Після створення процедур для зміни кольору фону необхідно правильно встановити властивості Enabled для елементів меню:
Встановити напівжирний або звичайний шрифт символів усіх об’єктів форми можна за допомогою властивості FontBold, яка може приймати значення True – напівжирний стиль шрифту, False – звичайний шрифт.
Для зміни шрифтів елементів управління в формі необхідно створити процедури для елементів меню mnuBold (Параметри – Шрифт – напівжирний) і mnuNormal (Параметри – Шрифт – звичайний).
|
Private Sub mnuNormal_Click() |
mnuNormal.Enabled = True |
mnuNormal.Enabled = False |
mnuBold.Enabled = False |
mnuBold.Enabled = True |
lblZ.FontBold = True |
lblZ.FontBold = False |
For i = 0 To 3 |
For i = 0 To 3 |
lblZag(i).FontBold = True |
lblZag(i).FontBold = False |
Next |
Next |
For i = 0 To 5 |
For i = 0 To 5 |
txtN(i).FontBold = True |
txtN(i).FontBold = False |
txtC(i).FontBold = True |
txtC(i).FontBold = False |
txtK(i).FontBold = True |
txtK(i).FontBold = False |
txtS(i).FontBold = True |
txtS(i).FontBold = False |
Next |
Next |
lblPid.FontBold = True |
lblPid.FontBold = False |
lblSC.FontBold = True |
lblSC.FontBold = False |
End Sub |
End Sub |
Перед використанням цієї функції програми слід визначити такі значення властивості Enabled для елементів меню:
4.3 Контрольні запитання
4.4 Практичні завдання
Завдання
Розробити програму за індивідуальним варіантом. При розробці програми слід створити форму для розрахунку економічних показників із застосування масивів елементів управління – етикеток і текстових полів, меню програми, програмний код, перевірити дію програми. Далі необхідно зберегти програму на магнітному диску, надрукувати форму та код програми.
Меню програми повинно мати таку структуру:
Вікно |
Розрахунок |
? |
|||||
Очистка всієї таблиці |
Інформаційні рядки |
Інформація про автора |
|||||
Вихід |
Підсумкові значення |
||||||
У формі слід надати змогу користувачеві ввести 5 інформаційних рядків, розрахувати підсумкові значення по рядках і таблиці в цілому. Розрахункові показники помічено символом *.
Звіт про роботу повинен вміщувати:
Варіант №1
Створити програму, що дозволяє обробити такі дані:
Аналіз стану товарних запасів
Найменування товарних груп |
Норматив товарних запасів |
Фактичні запаси (сума) |
Відхилення від нормативу |
* (факт-норматив) |
|||
Підсумок: |
* |
* |
* |
Варіант №2
Створити програму, що дозволяє обробити такі дані:
Відомості про виробництво продукції
Найменування продукції |
Місяці |
Усього за період |
||
січень |
лютий |
березень |
||
* |
||||
Підсумок: |
* |
* |
* |
* |
Варіант №3
Створити програму, що дозволяє обробити такі дані:
Картка кількісного обліку товарів
Найменування товару |
Залишок на початок періоду |
Прихід |
Витрата |
Залишок на кінець періоду |
* (гр.2+гр.3-гр.4) |
||||
Підсумок: |
* |
* |
* |
* |
Варіант №4
Створити програму, що дозволяє обробити такі дані:
Відомості про виробництво продукції
Найменування продукції |
Перший квартал |
Другий квартал |
Третій квартал |
Четвертий квартал |
Усього за рік |
* |
|||||
Підсумок: |
* |
* |
* |
* |
* |
Варіант №5
Створити програму, що дозволяє обробити такі дані:
Найменування товарів |
План реалізації |
Фактично реалізовано |
Відхилення від плану |
Відсоток виконання плану |
* (гр.3-гр.2) |
* (гр.3/гр.2*100) |
|||
Підсумок: |
* |
* |
* |
* |
Варіант №6
Створити програму, що дозволяє обробити такі дані:
Аналіз реалізації товарів у 2005 році в порівнянні з 2004 р. (тис. грн.)
Найменування товарів |
Реалізація в 2004 р. |
Реалізація в 2005 р. |
Відхилення |
|
Сума |
Відсоток |
|||
* (гр. 3/ гр. 2*100) |
||||
Разом: |
Варіант №7
Створити програму, що дозволяє обробити такі дані:
Прізвище покупця |
Сума кредиту |
Сума внесків |
Залишок заборгованості |
|
у погашенні заборгованості |
пеня за прострочення платежу |
|||
* (гр.2-гр.3) |
||||
Підсумок: |
* |
* |
* |
* |
Варіант №8
Створити програму, що дозволяє обробити такі дані:
Наймену- вання товару |
Ціна |
Книжкові залишки |
Фактичні залишки |
Відхилення |
|||
кіль- кість |
сума |
кіль- кість |
сума |
кіль- кість |
сума |
||
* |
* |
* |
* |
||||
Разом: |
* |
* |
* |
* |
* |
* |
Варіант №9
Створити програму, що дозволяє обробити такі дані:
Найменування товару |
Кіль- кість |
Ціна |
Сума |
Відсоток націнки |
Сума націнки |
Загальна сума |
* |
* |
* |
||||
Разом: |
* |
* |
* |
* |
Варіант №10
Створити програму, що дозволяє обробити такі дані:
Найменування культури |
Найменування покупця |
Фонд |
Фактично вибрано |
Відхилення |
* (гр.4-гр.3) |
||||
Разом: |
* |
* |
* |
Варіант №11
Створити програму, що дозволяє обробити такі дані:
Найменування об'єкта |
Початкова вартість |
Сума зносу |
Залишкова вартість |
* (гр.2-гр.3) |
|||
Разом: |
* |
* |
* |
Варіант №12
Створити програму, що дозволяє обробити такі дані:
Прізвище |
Номер лікарняного листка |
Сума оплати за день |
Число днів хвороби |
Сума |
* |
||||
Підсумок: |
* |
* |
Варіант №13
Створити програму, що дозволяє обробити такі дані:
П ІБ |
Табельний номер |
Види відрахувань |
Разом відраховано |
||
аванс |
прибутковий податок |
за покупку товарів у кредит |
|||
* (гр.3+гр.4+гр.5) |
|||||
Разом: |
* |
* |
* |
* |
Варіант №14
Створити програму, що дозволяє обробити такі дані:
Найменування блюда |
Кількість |
По цінах відпустки |
По обліковим цінам виробництва |
||
ціна |
сума |
ціна |
сума |
||
* (гр. 3*гр.2) |
* (гр.5*гр.2) |
||||
Підсумок: |
* |
* |
* |
Варіант №15
Створити програму, що дозволяє обробити такі дані:
Професія |
Чисельність працюючих |
Відхилення |
Коефіцієнт забезпеченості |
||
за планом |
фактично |
(+, -) |
% |
||
гр.3-гр.2 |
100-(гр.3*100/гр.2) |
* (гр.3/гр.2) |
|||
Підсумок: |
* |
* |
* |
* |
* |
4.5 Тест
Відповідь |
Вміє |
Не вміє |
|
|
|||
|
|||
|
|||
|
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
Private Sub mnuC_Click() For i = 0 to 3 If val(lblN(i).Caption)>0 Then lblN(i).Caption = “ ” End If Next End Sub |
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
Sum = 0 For m = 0 to 4 Sum = Sum + X(i) Next |
|||
|
|||
|
|||
|
5 Розробка програм з використанням
підпрограм – процедур і функцій, вікон повідомлень
5.1 Підпрограми – процедури і функції
У програмах, що розглядалися раніше, використовувалися процедури як частки програмного коду, які виконуються коли відбувається певна подія, пов’язана з деяким об’єктом. Мова програмування Visual Basic дозволяє, як і інші мови програмування, створювати окремі підпрограми – процедури і функції, які не пов’язані з об’єктами, подіями. Підпрограми використовуються коли у декількох частинах програми треба виконати подібні дії – обчислення показників, привласнення нових значень властивостям об’єктів і т. ін. Підпрограми створюються як окремі фрагменти коду, до яких можна звертатися з різних частин програми, викликати підпрограми.
Існують такі види підпрограм: підпрограми – процедури, підпрограми – функції.
Підпрограма – процедура призначена для виконання деякої послідовності дій. Щоб створити нову процедуру слід активізувати вікно коду і подати команду Tools – Add Procedure. У вікні діалогу Add Procedure необхідно визначити ім’я процедури, тип підпрограми – процедура Sub, у області діалогу Scope визначити видимість процедури: Public – процедура буде доступна для будь-яких частин коду програми або Private – процедура доступна лише для інших підпрограм поточної форми. Після натиснення на кнопці Ок до коду програми додається заголовок і заключний рядок процедури.
Наприклад, можна створити процедуру, яка дає змогу визначити будь-який колір символів і фону всіх об’єктів форми:
Public Sub ChangeColor()
End Sub
Всередині процедури можна створювати програмний код з використанням усіх можливостей Visual Basic. У коді процедури можна застосовувати оператори мови, змінювати властивості об’єктів, використовувати змінні, масиви, оголошувати і використовувати локальні змінні, відомі лише всередині процедури.
Процедура може приймати якісь початкові значення, які в тілі процедури використовуються, обробляються. Ці значення називаються параметрами процедури, задаються в круглих дужках у заголовку процедури. Параметрами процедури можуть бути будь-які змінні. При створенні процедури слід визначити її параметри як певні змінні з обов’язковим зазначенням їх типів. Наприклад, процедура, яка буде змінювати кольори об’єктів форми повинна отримувати значення двох параметрів – коду кольору символів, коду кольору фону. Цим параметрам повинні відповідати дві змінні типу Integer, які будуть використовуватись у процедурі для зміни властивостей об’єктів. Процедура для зміни кольорів може виглядати так:
Public Sub ChangeColor(F As Integer, Sim As Integer)
frmMain.BackColor = QBColor(F)
lbl1.BackColor = QBColor(F)
lbl2.BackColor = QBColor(F)
lbl1.ForeColor = QBColor(Sim)
lbl2.ForeColor = QBColor(Sim)
End Sub
Після того, як процедуру створено, її можна викликати з різних частин програмного коду. Для звернення до процедури слід визначити її ім’я, перелічити через кому фактичні параметри процедури, які за складом, типами повинні точно відповідати параметрам, що визначено в заголовку процедури.
Наприклад, щоб встановити чорний колів символів і світло-бірюзовий колір фону, в коді програми можна так звернутися до процедури:
Якщо треба встановити синій колір символів, жовтий колір фону можна виконати, наприклад, такі дії:
Simbol = 1
BackC = 14
Підпрограми – функції, на відміну від процедур, призначені для обчислення деякого параметру. Кажуть, що функція повертає деяке значення. Для створення функції, як і процедури, слід виконати команду меню Tools – Add Procedure, ввести ім’я процедури, обрати перемикачі Function, Public. Функція може також приймати деякі параметри, у тілі функції можна виконувати різні дії. Обов’язково всередині функції привласнити якесь значення імені функції, значення, яке буде повертати функція.
Наприклад, у декількох частках програми треба виконувати розрахунок значення функції:
Щоб скоротити програмний код, спростити програму, цю операцію можна оформити як функцію:
Public Function RozF(S As Integer, i As Integer, X As Integer)
Dim Y As Integer
Y = 0
For n = 1 To X
Y = Y + S * (1 + i)
RozF = Y
End Function
Щоб отримати певне значення функції для визначених значень аргументів, до неї слід звернутися по імені після якого в круглих дужках зазначити значення фактичних параметрів функції. Оскільки функція повертає деяке значення, то, на відміну від процедури, результат звернення до функції можна використовувати для привласнення значень змінним, обчислення деяких значень у виразах, виведення результатів роботи.
Наприклад, таке використання функції
lbl1.Caption = Str(RozF(10, 1, 2))
призводить до зміни властивості Caption об’єкту lbl1 – їй привласнюється значення, яке розраховується функцією RozF для S=10, i=1, X=2.
5.2 Вікна повідомлень
Прикладом застосування стандартних процедур і функцій можна вважати роботу зі стандартними можливостями мови програмування Visual Basic по виведенню повідомлень. Для виведення повідомлень у стандартних вікнах діалогу можна використовувати:
Оператор MsgBox викликає стандартну підпрограму, яка виводить вікно повідомлення. Загальна форма оператору:
MsgBox Message, CodKey + CodIcon, Title
Параметри процедури MsgBox:
Message – повідомлення у вікні діалогу, рядок символів;
CodKey – код кнопок у вікні;
CodIcon – код значка, який відображається у вікні;
Title – вміст заголовку вікна повідомлення, рядок символів.
Коди кнопок і значків дають змогу визначити які кнопки повинні бути присутніми у вікні повідомлення і який знак виводити.
У таблицях наведена інформація про деякі можливі сполучення кнопок, значки вікон повідомлень.
Ім’я константи |
Значення |
Сполучення кнопок |
vbOKOnly |
0 |
Ok |
vbOKCancel |
1 |
Ok i Cancel (Отмена) |
vbAbortRetryIgnore |
2 |
Abort (Стоп), Retry (Повтор), Ignore (Пропустить) |
vbYesNoCancel |
3 |
Yes (Да), No (Нет), Cancel (Отмена) |
vbYesNo |
4 |
Yes (Да), No (Нет) |
vbRetryCancel |
5 |
Retry (Повтор), Cancel (Отмена) |
Ім’я константи |
Значення |
Значок |
Вигляд |
vbCritical |
16 |
Критичне повідомлення |
|
vbQuestion |
32 |
Запит |
|
vbExclamation |
48 |
Попередження |
|
vbInformation |
64 |
Інформація |
У операторі можна використовувати як імена стандартних констант, так і їх значення.
Наприклад, якщо виконати оператор
MsgBox "Ви впевнені?", vbOKOnly + vbExclamation, "Увага!"
на екрані з’явиться таке вікно |
Результат не зміниться, якщо в програмному коді ввести:
MsgBox "Ви впевнені?", 0 + 48, "Увага!"
Оскільки оператор MsgBox виконує певну процедуру, то використання інших кнопок крім vbOKOnly фактично не має сенсу. Всі кнопки можуть бути виведені у вікні повідомлення, але змінити дію програми в залежності від обраної кнопки важко, оскільки процедура не повертає значення, яке можна аналізувати.
Функція MsgBox() усуває цей недолік. Параметри функції MsgBox() такі ж, як і параметри оператору MsgBox. Функція MsgBox() повертає деяке значення, яке можна привласнити змінній, проаналізувати і в залежності від обраної кнопки виконати різні дії.
Можливі значення, що повертає функція MsgBox()
Ім’я константи |
Значення |
Обрано кнопку |
vbOK |
1 |
кнопка Ok |
vbCancel |
2 |
кнопка Cancel (Отмена) |
vbAbort |
3 |
кнопка Abort (Стоп) |
vbRetry |
4 |
кнопка Retry (Повтор) |
vbIgnore |
5 |
кнопка Ignore (Пропустить) |
vbYes |
6 |
кнопка Yes (Да) |
vbNo |
7 |
кнопка No (Нет) |
Приклад використання функції MsgBox():
Private Sub cmdDelete_Click()
Vid=MsgBox("Знищити дані таблиці?",vbOKCancel+vbQuestion,"Увага - знищення")
If Vid = vbOK Then
For i = 0 To 5
txtName(i).Text = " "
txtSum(i).Text = " "
Next
End If
Процедуру буде виконано, якщо клацнути кнопкою миші по кнопці cmdDelete. Функція MsgBox() виведе на екран таке вікно повідомлення:
Після натиснення кнопки ОК або Отмена, значення, що повертає функція, буде привласнено змінній Vid. Якщо Vid дорівнює vbOK (можна порівнювати з 1), то виконується знищення вмісту елементів масиву текстових полів txtName і txtSum.
Приклад програми з використанням
підпрограм, вікон повідомлень
Як приклад розглядається програма, яка дозволить ввести данні в масив записів з полями для збереження прізвищ та ініціалів співробітників, сум нарахованої заробітної плати. При введенні значень нарахованої заробітної плати програма повинна перевіряти значення і, якщо введено від’ємне число видавати повідомлення та знищувати уміст текстового поля. Командами меню Вікно користувач повинен мати змогу Очистити таблицю, підсумок або таблицю і підсумок, завершити роботу програми. Режим меню Розрахунок дає змогу визначити суму нарахування з фонду заробітної плати у пенсійний фонд (32% від загальної суми нарахувань), у фонд соціального страхування (4,4% від загальної суми нарахувань), у фонд зайнятості (0,5% від загальної суми нарахувань).
Рисунок 5.1 - Види вікна програми – приклада
На етапі візуальної розробки програми слід створити форму, розташувати на неї елементи управління, визначити їх властивості у відповідності з даними таблиці:
Об’єкт |
Властивість |
Значення |
Форма (Form) |
Name |
frmMain |
Caption |
Виплати з фонду заробітної плати |
|
Font |
Times New Roman, 12 п., напівжирний |
|
Етикетка (Label) |
Name |
lblZag |
Caption |
Введіть дані для розрахунку: |
|
Font |
курсив |
|
Етикетка (Label) |
Name |
lblNamе |
Caption |
П І Б |
|
Етикетка (Label) |
Name |
lblN |
Caption |
Нараховано |
|
Етикетка (Label) |
Name |
lblRez |
Caption |
“_” |
|
Масив текстових полів (TextBox) |
Name |
txtName(04) |
Text |
“_” |
|
Index |
04 |
|
Масив текстових полів (TextBox) |
Name |
txtN(04) |
Text |
“_” |
|
Index |
04 |
Далі слід розчинити вікно редактору меню командою Tools – Menu Editor, створити таке меню програми:
Caption |
Name |
Структура меню |
Вікно |
mnuWind |
Вікно |
Очистка |
mnuClear |
. . . .Очистка |
таблиця |
mnuTabl |
. . . . . . . . таблиця |
підсумок |
mnuPid |
. . . . . . . . підсумок |
таблиця та підсумок |
mnuTablPid |
. . . . . . . . таблиця та підсумок |
Вихід |
mnuExit |
. . . .Вихід |
Розрахунок |
mnuRoz |
Розрахунок |
Пенсійний фонд |
mnuPF |
. . . .Пенсійний фонд |
Фонд соціального страхування |
mnuSS |
. . . .Фонд соціального страхування |
Фонд зайнятості |
mnuFZ |
. . . .Фонд зайнятості |
Щоб накопичити дані в масиві, організувати перевірку даних, що вводяться, на невід’ємність, масив слід оголосити, створити таку процедуру.
Дані в рядку коду |
Коментар |
Dim Z(5) |
Оголошення в розділі General Declaration масиву Z, у якому 5 елементів. |
Private Sub txtN_Change(Index As Integer) |
Заголовок процедури, яка виконується коли зміниться вміст будь-якого елементу масиву txtN, відбудеться подія Change. Процедура приймає значення 1-го параметра – значення властивості Index конкретного елементу, що змінився. |
If Val(txtN(Index).Text) < 0 Then |
Якщо властивість Text елементу масиву txtN з індексом Index менш ніж 0, то |
Povid Index |
виконується процедура Povid, яка приймає значення змінної Index як фактичний параметр |
Else |
інакше |
Z(Index) = Val(txtN(Index).Text) |
у відповідний елемент масиву змінних Z записується значення нарахованої заробітної плати співробітникові, яке попередньо перетворюється функцією Val на числове |
End If |
Кінець оператору If |
End Sub |
Кінець процедури |
Для створення нової процедури Povid, яка повинна виводити повідомлення у випадку, якщо в полі нарахувань введено від’ємне число, слід перебуваючи у вікні коду виконати команду меню Tools – Add Procedure. У вікні діалогу треба ввести ім’я процедури, обрати перемикачі Sub, Public. До коду програми буде добавлено заголовок і останній рядок процедури, далі слід визначити параметри процедури і її вміст як у таблиці:
Дані в рядку коду |
Коментар |
Public Sub Povid(I As Integer) |
Параметром процедури є змінна I типу Integer |
MsgBox "У чарунку введено від’ємне значення!", 0 + 64, "Увага!" |
Оператором MsgBox виводиться таке вікно повідомлення: |
txtN(I).Text = " " |
Після натиснення на кнопці Ок буде знищено вміст елементу масиву тестових полів txtN з індексом, який буде прийнято як фактичний параметр процедури |
End Sub |
Кінець процедури |
Наступним кроком створення програми може бути створення процедур, які пов’язані з командами режиму меню Вікно – Очистити: таблицю, підсумок або таблицю і підсумок, Вихід.
Дані в рядку коду |
Коментар |
Private Sub mnuExit_Click() |
Процедура завершує роботу програми, якщо в меню обрано команду Вихід. |
End |
|
End Sub |
|
Public Sub ClearTabl() |
Заголовок процедури ClearTabl, яку слід створити для знищення вмісту елементів масивів текстових полів командою Tools – Add Procedure. |
For I = 0 To 4 |
Для і, що змінюється від 0 до 4 |
Z(I) = 0 |
елементу масиву змінних Z привласнюється значення 0 |
txtName(I).Text = " " |
уміст і-го елементу текстових полів txtName для введення ПІП знищується |
txtN(I).Text = " " |
уміст і-го елементу текстових полів txtN для введення нарахованих сум заробітної плати знищується |
Next |
Кінець циклу |
End Sub |
Кінець процедури |
Public Sub ClearlPid() |
Заголовок процедури ClearlPid, яку слід створити для знищення вмісту етикетки для виведення результатів командою Tools – Add Procedure. |
lblRez.Caption = " " |
Знищення вмісту етикетки lblRez. |
End Sub |
Кінець процедури |
Private Sub mnuTabl_Click() |
Процедура, яку буде виконано, якщо в меню обрано команду Вікно – Очистити – таблицю. |
ClearTabl |
Виклик процедури ClearTabl для знищення вмісту таблиці. |
End Sub |
Кінець процедури |
Private Sub mnuPid_Click() |
Процедура, яку буде виконано, якщо в меню обрано команду Вікно – Очистити – підсумок. |
ClealPid |
Виклик процедури ClealPid для знищення вмісту етикетки з підсумком. |
End Sub |
Кінець процедури |
Private Sub mnuTablPid_Click() |
Процедура, яку буде виконано, якщо в меню обрано команду Вікно – Очистити – таблицю і підсумок. |
ClearTabl |
Виклик процедури ClearTabl для знищення вмісту таблиці. |
ClealPid |
Виклик процедури ClealPid для знищення вмісту етикетки з підсумком. |
End Sub |
Кінець процедури |
Для виконання розрахунків пропонується створити функцію RozSum командою меню Tools – Add Procedure, у вікні діалогу команди слід ввести ім’я функції, обрати перемикачі Function, Public. Далі треба створити коди процедур, які пов’язані з командами режиму Розрахунок.
Дані в рядку коду |
Коментар |
Public Function RozSum(V As Single) |
Функція RozSum приймає один параметр – число типу Single, яке буде розміщено в змінній V. Змінна V буде вміщувати відсоток для розрахунку певного виду виплат з фонду соціального страхування. |
RozSum = 0 |
Імені функції привласнюється значення 0. |
For I = 0 To 4 |
Для і, що змінюється від 0 до 4, |
RozSum = RozSum + Z(I) |
Функції RozSum привласнюється значення – RozSum + значення і-го елементу масиву змінних Z |
Next |
Кінець циклу. |
RozSum = RozSum * V |
Імені функції привласнюється значення – RozSum* V. |
End Function |
Кінець функції. |
Private Sub mnuPF_Click() |
Процедуру буде виконано, якщо в меню обрано команду Розрахунок – Пенсійний фонд. |
lblRez.Caption = "Нараховано в пенсійний фонд " + Str(RozSum(0.32)) + " грн." |
Властивості Caption етикетки для виведення результату lblRez привласнюється результат конкатенації рідка символів "Нараховано в пенсійний фонд "; результату, який повертає функція RozSum(0.32) для аргументу 0,32, що перетворено до символьного типу функцією Str(); рядка символів " грн.". |
End Sub |
Кінець процедури. |
Private Sub mnuSS_Click() |
Процедуру буде виконано, якщо в меню обрано команду Розрахунок –Фонд соціального страхування. |
lblRez.Caption = "Нараховано в фонд соціального страхування " + Str(RozSum(0.044)) + " грн." |
Властивості Caption етикетки для виведення результату lblRez привласнюється результат конкатенації рідка символів "Нараховано в фонд соціального страхування "; результату, який повертає функція RozSum(0.044) для аргументу 0,044, що перетворено до символьного типу функцією Str(); рядка символів " грн.". |
End Sub |
Кінець процедури. |
Private Sub mnuZan_Click() |
Процедуру буде виконано, якщо в меню обрано команду Розрахунок –Фонд зайнятості. |
lblRez.Caption = "Нараховано в фонд зайнятості " + Str(RozSum(0.005)) + " грн." |
Властивості Caption етикетки для виведення результату lblRez привласнюється результат конкатенації рідка символів "Нараховано в фонд зайнятості "; результату, який повертає функція RozSum(0.005) для аргументу 0,005, що перетворено до символьного типу функцією Str(); рядка символів " грн.". |
End Sub |
Кінець процедури. |
5.4 Практичні завдання
Завдання
Розробити програму за індивідуальним варіантом. При розробці програми слід створити форму із застосування масивів елементів управління, меню програми, програмний код, перевірити дію програми. Далі необхідно зберегти програму на магнітному диску, надрукувати форму та код програми.
Звіт про роботу повинен вміщувати:
Варіант №1
Створити програму, у ході виконання якої можна ввести дані про шість підприємств торгівлі: найменування, середньомісячний товарообіг, середньомісячні витрати обігу, кількість працюючих, торгова площа.
Програма повинна дозволити вибрати з таблиці максимальні значення кожного з показників (середньомісячний товарообіг, середньомісячні витрати обігу, кількість працюючих, торгова площа), виводити назву підприємства, у якому відповідний показник максимальний.
Управління роботою програми варто організувати за допомогою меню, у якому повинні міститися режими «Вибір», «Очищення», «Вихід».
Варіант №2
Створити програму, у ході виконання якої можна ввести дані про п'ять областей України: найменування, чисельність населення, середньомісячний обсяг виробництва, кількість вузів, кількість театрів.
Програма повинна дозволити обрати з таблиці мінімальні значення кожного з показників (чисельність населення, середньомісячний обсяг виробництва, кількість вузів, кількість театрів), виводити назву регіону, у якому відповідний показник мінімальний.
Управління роботою програми варто організувати за допомогою меню, у якому повинні міститися режими «Вибір», «Очищення», «Вихід».
Варіант №3
Створити програму, у ході виконання якої можна ввести дані про п'ять міст Донецької області: найменування, середньомісячний обсяг виробництва, чисельність населення, кількість шкіл, кількість лікарень.
Програма повинна дозволити обрати з таблиці максимальні значення кожного з показників (середньомісячний обсяг виробництва, чисельність населення, кількість шкіл, кількість лікарень), виводити місто, у якому відповідний показник максимальний.
Управління роботою програми варто організувати за допомогою меню, у якому повинні міститися режими «Вибір», «Очищення», «Вихід».
Варіант №4
Створити програму, у ході виконання якої можна ввести дані про найменування, покупну ціну, кількість реалізованого товару.
При зміні значення хоча б одного з полів (ціна або кількість) програма повинна розраховувати і виводити у формі значення:
сума покупна (ціна покупки * кількість);
ціна продажу покупцю (10% торгової надбавки);
сума реалізації покупцю (ціна продажу * кількість);
ціна для постійних покупців (8% торгової надбавки);
сума реалізації постійним покупцям (ціна продажу для постійних покупців * кількість).
Меню програми повинне містити режими «Очищення», «Вихід».
Варіант №5
Створити програму, у ході виконання якої можна ввести дані: ПІБ співробітника, нараховано за рік, стаж роботи, кількість днів, пропущених через хворобу.
При зміні значення хоча б одного з полів (нараховано за рік, стаж роботи, кількість днів, пропущених через хворобу) програма повинна розраховувати і виводити у формі значення:
основна сума премії (10% від суми нарахованої заробітної плати за рік для співробітників, стаж роботи яких менш 5 років, 15% від суми нарахованої для співробітників, стаж роботи яких менш 10 років і більш 5 років, 20% для співробітників, що відробили більш 10 років);
додаткова сума премії: 100 грн., якщо через хворобу пропущено менш 5 днів у році, 50 грн. у тому випадку, якщо пропущено більш 5 але менш 15 днів;
загальна сума премії.
Меню програми повинне містити режими «Очищення», «Вихід».
Варіант №6
Створити програму, у ході виконання якої можна ввести дані: найменування товару, сума фактичного залишку товару на складі, сума залишку за даними обліку.
При зміні значення хоча б одного з полів (фактична або облікова суми) програма повинна розраховувати і виводити у формі значення:
сума відхилення (факт – облікові дані);
відсоток відхилення (сума відхилення / облікові дані * 100);
розмір природного збитку, якщо відхилення негативне (нестача товару) – 2% від суми фактичного залишку товару;
сума відхилення з урахуванням природного збитку (сума відхилення + розмір природного збитку).
Меню програми повинне містити режими «Очищення», «Вихід».
Створити програму, у ході виконання якої можна ввести дані про шість підприємств торгівлі: найменування, торгова площа, середньомісячний товарообіг, середньомісячні витрати, середньомісячний прибуток, вартість основних засобів.
Програма повинна дозволити вибрати з таблиці мінімальні значення кожного з показників (торгова площа, середньомісячний товарообіг, середньомісячні витрати, середньомісячний прибуток, вартість основних засобів), виводити назву підприємства, у якому відповідний показник мінімальний.
Управління роботою програми варто організувати за допомогою меню, у якому повинні міститися режими «Вибір», «Очищення», «Вихід».
Варіант №8
Створити програму, у ході виконання якої можна ввести дані про п'ять областей України: найменування, середньомісячний обсяг виробництва, чисельність працездатного населення, загальна кількість населення, кількість виробничих підприємств.
Програма повинна дозволити вибрати з таблиці максимальні значення кожного з показників (середньомісячний обсяг виробництва, чисельність працездатного населення, загальна кількість населення, кількість виробничих підприємств), виводити назва регіону, у якому відповідний показник максимальний.
Управління роботою програми варто організувати за допомогою меню, у якому повинні міститися режими «Вибір», «Очищення», «Вихід».
Варіант №9
Створити програму, у ході виконання якої можна ввести значення показників поточного року по п'яти містах Донецької області: найменування, середньомісячний обсяг виробництва, середньомісячний товарообіг роздрібної торгівлі, чисельність населення, середні доходи населення.
Програма повинна дозволити вибрати з таблиці мінімальні значення кожного з показників (середньомісячний обсяг виробництва, середньомісячний товарообіг роздрібної торгівлі, чисельність населення, середні доходи населення), виводити місто, у якому відповідний показник мінімальний.
Управління роботою програми варто організувати за допомогою меню, у якому повинні міститися режими «Вибір», «Очищення», «Вихід».
Варіант №10
Створити програму, у ході виконання якої можна ввести дані про найменування, покупну ціну, кількість реалізованого товару, відсоток торгової надбавки.
При зміні значення хоча б одного з полів (ціна, кількість або відсоток надбавки) програма повинна розраховувати і виводити у формі значення:
сума покупна (ціна покупки * кількість);
ціна продажу покупцю з урахуванням торгової надбавки;
сума реалізації покупцю (ціна продажу * кількість);
ціна зі знижкою (знижка складає 3%);
сума реалізації зі знижкою.
Меню програми повинне містити режими «Очищення», «Вихід».
Варіант №11
Створити програму, у ході виконання якої можна ввести дані: найменування постачальника, суму фактичного надходження товару від постачальника, суму постачання за договором.
При зміні значення хоча б одного з полів (фактична або договірна суми) програма повинна розраховувати і виводити у формі значення:
сума недовиконання договору;
сума перевиконання договору;
відсоток відхилення (сума відхилення / договір * 100).
Меню програми повинне містити режими «Очищення», «Вихід».
Варіант №12
Створити програму, у ході виконання якої можна ввести дані про шість шкіл: найменування, чисельність молодших класів, чисельність старших класів, чисельність викладачів, площа навчальних приміщень.
Програма повинна дозволити обрати з таблиці максимальні значення кожного з показників (чисельність молодших класів, чисельність старших класів, чисельність викладачів, площа навчальних приміщень), виводити назву школи, у якій відповідний показник максимальний.
Управління роботою програми варто організувати за допомогою меню, у якому повинні міститися режими «Вибір», «Очищення», «Вихід».
Створити програму, у ході виконання якої можна ввести дані про п'ять держав СНД: найменування, чисельність населення, річний обсяг виробництва, кількість вузів, кількість театрів.
Програма повинна дозволити обрати з таблиці максимальні значення кожного з показників (чисельність населення, річний обсяг виробництва, кількість вузів, кількість театрів), виводити назву країни, у якій відповідний показник максимальний.
Управління роботою програми варто організувати за допомогою меню, у якому повинні міститися режими «Вибір», «Очищення», «Вихід».
Варіант №14
Створити програму, у ході виконання якої можна ввести дані про районів міста: найменування, середньомісячний обсяг виробництва, чисельність населення, кількість шкіл, кількість лікарень, кількість дитячих закладів.
Програма повинна дозволити обрати з таблиці мінімальні значення кожного з показників (середньомісячний обсяг виробництва, чисельність населення, кількість шкіл, кількість лікарень, кількість дитячих закладів), виводити назву району, у якому відповідний показник мінімальний.
Управління роботою програми варто організувати за допомогою меню, у якому повинні міститися режими «Вибір», «Очищення», «Вихід».
Варіант №15
Створити програму, у ході виконання якої можна ввести дані: найменування покупця, суму фактичної реалізації товару покупцю, суму реалізації згідно з договором.
При зміні значення хоча б одного з полів (фактична або договірна суми) програма повинна розраховувати і виводити у формі значення:
сума недовиконання договору;
сума перевиконання договору;
відсоток відхилення (сума відхилення / договір * 100).
Меню програми повинне містити режими «Очищення», «Вихід».
5.5 Тест
Відповідь |
Вміє |
Не вміє |
|
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
6 Робота з файлами
6.1 Файли довільного доступу
Файл довільного доступу містить записи однакового розміру. Кожний запис може включати поля, в яких вміщуються дані. Наприклад, записи файлу з відомостями про співробітників Employees.txt підприємства можуть вміщувати дані про прізвище та ініціали робітника (поле довжиною 15 байт), освіта (поле у 4 байти). Кожний запис буде мати фіксовану довжину, вміщувати два поля, кожне з яких також має фіксований розмір.
Запис 1 |
Запис 2 |
Запис 3 і т.д. |
||||||||||||||||||||||||||||||||||||||||
поле 1 |
поле 2 |
поле 1 |
поле 2 |
поле 1 |
||||||||||||||||||||||||||||||||||||||
І |
в |
а |
н |
ч |
е |
н |
к |
о |
М |
. |
Ф |
. |
в |
и |
щ |
. |
К |
р |
а |
в |
ч |
е |
н |
к |
о |
В |
. |
Б |
. |
с |
е |
р |
. |
Для доступу до файлу його слід розчинити оператором Open:
Open "FileName" For Random As FileNumber Len = RecordLength
FileName - ім'я файлу, можна задавати повне ім'я файлу з маршрутом пошуку (наприклад, "C:\Data.txt");
Random - визначає, що файл буде розчинено в режимі довільного доступу;
FileNumber - номер файлу, ціле число в діапазоні від 1 до 511, яке визначає номер незайнятого в системі в дану мить файлу, так званий дескриптор файлу;
RecordLength - визначення довжини запису файлу.
Наприклад, щоб розчинити файл Employees.txt у режимі довільного доступу коли відомо, що номер файлу 5 не зайнято ніяким іншим файлом, можна виконати команду:
Open "Employees.txt" For Random As 5 Len = 19
Якщо невідомо, який номер файлу в дану мить є незайнятим, можна скористатися функцією FreeFile, яка повертає номер незайнятого файлу.
При записі, зчитуванні даних у файл послідовного доступу, коли один запис вміщує декілька полів, доцільно використовувати тип - запис. Змінна з типом даних запис буде вміщувати дані, які слід записати у файл, або навпаки приймати дані, що прочитано з файлу. У випадку, коли важко визначити довжину запису при роботі з різними типами даних, можна використовувати функцію Len(), яка повертає довжину змінної.
Наприклад, для роботи з файлом Employees.txt буде використовуватись змінна PZ, яка має тип Person. Тип Person оголошено у вікні модуля так:
Type Person
Priz As String * 15
Osv As String * 4
End Type
Для розчинення файлу Workers.txt можна виконати таку послідовність дій:
DZ = Len(PZ)
VF = FreeFile
Open "Employees.txt" For Random As VF Len = DZ
Якщо файл у поточному каталозі не буде знайдено, то створюється новий файл з ім'ям Employees.txt.
При розчинені, створенні файлу довільного доступу обов’язково існує запис файлу з номером 1. Для визначення загальної кількості записів у файлі можна використовувати функцію FileLen(), яка повертає розмір файлу в байтах. Наприклад, щоб привласнити змінній ZKZ значення, яке відповідає загальній кількості записів у файлі, можна виконати таку дію:
ZKZ = FileLen("Employees.txt") / DZ
У коді програми обов'язково слід перевіряти, щоб звернення до записів файлу було коректним, номер запису, до якого здійснюється звернення, повинен бути у діапазоні від першого до останнього запису файлу.
Для запису даних у файл використовується оператор Put
Put # FileNumber, <номер запису файлу>, <змінна>
Якщо <номер запису файлу> відповідає будь-кому з існуючих записів розчиненого файлу, то вміст запису буде змінено на нове значення - значення змінної, яка може бути одного зі стандартних типів, або типу - запис. Для того, щоб додати до файлу новий запис, слід звернутися до запису з номером: <останній запис> + 1.
Наприклад, щоб додати до файлу Employees.txt новий запис про співробітника Матвієнко Л.І. з вищою освітою можна виконати дії:
PZ.Priz = "Матвієнко Л.І."
PZ.Osv = "вищ."
Put #VF, ZKZ + 1, PZ
Зчитування даних з файлу довільного доступу виконується оператором Get:
Get # FileNumber, <номер запису файлу>, <змінна>
Таким чином, можна прочитати будь-який запис файлу в змінну, зазначивши номер запису.
Наприклад, якщо оголосити масив змінних PersZap для зчитування всієї інформації з файлу, можна прочитати дані всього файлу так:
For i = 1 To ZKZ
Get #VF, i, PersZap(i)
Next
При зчитуванні даних з файлу може стати у нагоді функція Eof() (від End of file), яка повертає значення True, якщо досягнуто кінця файлу, і False у зворотному випадку. Прочитати усі записи файлу доки не буде досягнуто кінця файлу можна так:
i = 1
Do While Not EOF(VF)
Get #VF, i, PersZap(i)
txtPriz(i - 1).Text = PersZap(i).Priz
txtOsv(i - 1).Text = PersZap(i).Osv
i = i + 1
Loop
Після виконання операцій з файлом його обов'язково слід зачинити оператором Close:
Close # FileNumber
Знищити записи файлу довільного доступу безпосередньо неможливо. Щоб виконати цю операцію, слід:
Kill "FileName"
Name "OldName" As "NewName"
Наприклад, щоб знищити п'ятий запис файлу Employees.txt можна виконати такі дії:
NF1 = FreeFile |
Розчиняється файл Employees.txt |
Open For "Employees.txt" Random As NF1 Len = 19 |
|
NF2 = FreeFile |
Створюється тимчасовий файл Employees.tmp |
Open "Employees.tmp" For Random As NF1 Len = 19 |
|
KZZ = FileLen("Employees.txt") / 19 |
Визначається кількість записів файлу. |
i = 1 |
|
n = 1 |
|
Do While i <= KZZ |
Цикл діє доки і менш або рівно кількості записів файлу |
If i <> 5 Then |
Якщо обробляється не п'ятий запис файлу, то |
Get #NF1, i, PZ |
виконується зчитування і-го запису файлу Employees.txt у змінну PZ |
Put #NF2, n, PZ |
записується n-ий запис у файл Employees.tmp зі змінної PZ |
n = n +1 |
n збільшується на 1 |
End If |
Завершується оператор If |
i = i + 1 |
і збільшується на 1 |
Loop |
кінець циклу - оброблено всі записи файлу Employees.txt |
Close #NF1 |
Зачиняється файл Employees.txt |
Kill "Employees.txt" |
Знищується файл Employees.txt |
Close #NF2 |
Зачиняється файл Employees.tmp |
Name "Employees.tmp" As "Employees.txt" |
Перейменовується файл Employees.tmp у Employees.txt |
6.2 Файли послідовного доступу
Файл послідовного доступу можна розглядати як послідовність рядків. У файлі послідовного доступу всі текстові рядки можуть мати різну довжину, тому система не може визначити позицію рядка в файлі, довільний доступ неможливий. При роботі з такими файлами щоб прочитати, наприклад, двадцятий рядок, слід перейти до початку файлу і прочитати дев'ятнадцять початкових рядків. Файли послідовного доступу зручні при роботі з текстом, оскільки можна працювати з рядками будь-якої довжини.
Розчинити файл послідовного доступу можна в одному з трьох режимів:
Щоб розчинити файл, слід виконати команду:
Open "FileName" For Mode As FileNumber
FileName - режим доступу до файлу.
Використовуючи оператор Print, можна записувати один або декілька символів за одну операцію запису, причому до файлу додається новий текстовий рядок.
Print # FileNumber, <змінна або константа> [,<змінна або константа> …]
Оператор Write дає змогу записати один або декілька символів за одну операцію запису, до файлу буде додано новий рядок.
Write # FileNumber, <змінна або константа> [,<змінна або константа> …]
Оператор Write відрізняється від оператору Print тим, що форматує дані при запису так
Тип поля |
Форматування |
Текстове |
у лапках |
Числове |
без форматування |
Дата |
універсальний формат дати |
Наприклад, якщо виконати наступний фрагмент коду програми, буде створено файл Data.txt.
Date = #10/06/2000#
FN = FreeFile
Open "C:\Data.txt" For Output As FN
Write #FN, "Oдин", FN, Date
Print #FN, "Два", FN, Date
Уміст файлу Data.txt буде таким:
"Oдин",1,#2000-10-06#
Два 1 06.10.00
Оператор Input зчитує повний рядок з файлу і розміщує його в одну або декілька змінних.
Input # FileNumber, <змінна > [,<змінна> …]
Якщо запис файлу створено оператором Print, дані можна прочитати як один рядок у деяку змінну. У випадку, коли дані було записано оператором Write, кожну складову запису можна прочитати у окрему змінну для подальшого використання. Причому не слід забувати, що прочитані дані будуть текстового типу.
Зчитування даних з файлу Data.txt можна виконати, наприклад, так:
Open "C:\Data.txt" For Input As FN
Input #FN, X, Y, Z
lblX.Caption = X
lblY.Caption = Y
lblZ.Caption = Z
Input #FN, M
lblM.Caption = M
У результаті виконання коду, значення властивості Caption об'єктів буде таким:
об'єкт X: Oдин;
об'єкт Y: 1;
об'єкт Z: 2000-10-06;
об'єкт M: Два 1 06.10.00.
Після виконання операцій з файлами послідовного доступу, їх, як і файли довільного доступу, обов'язково зачинити оператором Close.
6.3 Бінарні файли
Бінарні файли - це файли, у яких можуть утримуватися спеціальні символи, що не зустрічаються в текстових файлах. Уміст бінарного файлу - це набір символів, кожний з яких можна отримати окремо. До бінарних файлів належать файли, що виконуються, драйвери, шрифти і т.д.
Бінарний файл можна розглядати як файл довільного доступу, кожний запис якого дорівнює 1 байту. У режимі бінарного доступу можна розчинити будь-який файл, але прийдеться працювати з кожним байтом цього файлу окремо.
Розчинити файл можна командою:
Open "FileName" For Binary As FileNumber
Запис і зчитування даних у бінарних файлах виконується операторами Get i Put.
Приклад виконання програми роботи з файлом
Як приклад розглядається програма, під час виконання якої можна ввести дані про господарські операції реалізації товарів - дата реалізації, покупець, найменування товару, ціна, кількість. Введені дані можна записати у файл довільного доступу realiz.doc. Форма програми вміщує кнопки для переходу до попереднього, наступного запису файлу. Коли переміщення неможливе - виконано перехід до початку або кінця файлу, видається відповідне повідомлення. Програма також дає змогу додати новий запис до файлу, знищити непотрібні записи файлу.
Рисунок 6.1 - Вид вікна програми для роботи з файлом довільного доступу
На етапі візуальної розробки програми слід створити об'єкти за описом.
Об’єкт |
Властивість |
Значення |
Форма (Form) |
Name |
frmProgram |
Caption |
Програма - приклад |
|
Font |
Times New Roman, 12 п., напівжирний |
|
Етикетка (Label) |
Name |
lblDate |
Caption |
Дата реалізації: |
|
Етикетка (Label) |
Name |
lblPok |
Caption |
Покупець: |
|
Етикетка (Label) |
Name |
lblTov |
Caption |
Найменування товару: |
|
Етикетка (Label) |
Name |
lblC |
Caption |
Ціна: |
|
Етикетка (Label) |
Name |
lblK |
Caption |
Кількість: |
|
Текстове поле (TextBox) |
Name |
txtDate |
Text |
“_” |
|
Текстове поле (TextBox) |
Name |
txtPok |
Text |
“_” |
|
Текстове поле (TextBox) |
Name |
txtTov |
Text |
“_” |
|
Текстове поле (TextBox) |
Name |
txtC |
Text |
“_” |
|
Текстове поле (TextBox) |
Name |
txtK |
Text |
“_” |
|
Командна кнопка (CommandButton) |
Name |
cmdNew |
Caption |
Новий запис |
|
Командна кнопка (CommandButton) |
Name |
cmdNext |
Caption |
Наступний запис |
|
Командна кнопка (CommandButton) |
Name |
cmdPrivious |
Caption |
Попередній запис |
|
Командна кнопка (CommandButton) |
Name |
cmdDelete |
Caption |
Знищення запису |
|
Командна кнопка (CommandButton) |
Name |
cmdFin |
Caption |
Завершення роботи |
Далі слід у вікні модуля (команда меню Project - Add Module), оголосити новий тип даних:
Дані в рядку коду |
Коментар |
Type Zap |
|
Date As String * 12 |
поле для дати реалізації |
Pok As String * 20 |
поле для роботи з найменуванням покупця |
Tov As String * 20 |
поле найменування товару |
C As String * 10 |
поле ціни |
K As String * 10 |
поле кількості |
End Type |
Програмний код повинен бути таким як у таблиці:
Дані в рядку коду |
Коментар |
1 |
2 |
Option Explicit Dim Z As Zap |
Оголошення змінних є обов'язковим Змінна Z типу Zap буде використана для зчитування даних з файлу, запису інформації в файл |
Dim LastRec As Long |
Змінна - покажчик останнього запису файлу |
Dim CurRec As Long |
Змінна - покажчик поточного запису файлу |
Dim NFile As Integer |
Змінна для збереження номеру відчиненого файлу (дескриптору файлу) |
Dim RZ As Long |
Розмір файлу |
Private Sub frmProgram _Load() |
Процедура, яка виконується при завантаженні форми (подія Load) |
RZ = Len(Z) |
Значення змінної RZ буде дорівнювати розміру змінної - запису Z, значення отримано функцією Len() |
NFile = FreeFile |
Змінна Nfile отримує значення номеру вільного в дану мить файлу |
Open "realiz.doc" For Random As NFile Len = RZ |
Відчиняється файл realiz.doc, що міститься в поточній папці, у режимі довільного доступу (Random) як файл з номером Nfile і розміром запису RZ. Якщо файл не буде знайдено, система його створить і відкриє. |
CurRec = 1 |
Покажчик поточного запису CurRec отримує значення 1. |
LastRec = FileLen("realiz.doc") / RZ |
Покажчик останнього запису LastRec отримує значення - розмір файлу "realiz.doc", що визначається за допомогою функції FileLen(), який буде поділено на довжину запису RZ. |
If LastRec = 0 Then |
Якщо номер останнього запису дорівнює 0, то |
LastRec = 1 |
змінній LastRec привласнюється значення 1 |
End If |
Кінець оператору If |
ShowZ |
Виклик процедури ShowZ для виведення у вікні вмісту поточного запису файлу. |
End Sub |
Кінець процедури. |
1 |
2 |
Public Sub ShowZ() |
Процедуру для зчитування запису з файлу і виведення даних у формі слід створити за допомогою команди меню Tools - Add Procedure. |
Get #NFile, CurRec, Z |
Оператором зчитується поточний запис CurRec файлу з номером NFile у змінну Z. |
txtDate.Text = Trim(Z.Date) |
Властивості Text текстового поля txtDate для роботи з датою привласнюється значення поля Date змінної Z. Функція Trim() знищує пробіли у кінці текстового рядка. |
txtPok.Text = Trim(Z.Pok) |
Властивості Text текстового поля txtPok для виведення, редагування найменування покупця привласнюється значення поля Pok змінної Z. |
txtTov.Text = Trim(Z.Tov) |
Властивості Text текстового поля txtTov для роботи з найменуванням товару привласнюється значення поля Tov змінної Z. |
txtC.Text = Trim(Z.C) |
Властивості Text текстового поля txtC для виведення, редагування ціни товару привласнюється значення поля C змінної Z. |
txtK.Text = Trim(Z.K) |
Властивості Text текстового поля txtK для роботи з кількістю товару привласнюється значення поля K змінної Z. |
frmProgram.Caption = "Запис " + Str(CurRec) + " / " + Str(LastRec) |
У заголовку вікна програми виводиться: Запис <номер поточного запису> / <загальна кількість записів у файлі> |
End Sub |
Кінець процедури. |
Public Sub SaveZ() |
Процедура буде виконувати запис даних у файл. |
Z.Date = txtDate.Text |
Полю Date змінної Z привласнюється значення властивості Text об'єкту txtDate, яке може бути введено, відредаговано. |
Z.Pok = txtPok.Text |
Полю Pok змінної Z привласнюється значення властивості Text об'єкту txtPok. |
Z.Tov = txtTov.Text |
Полю Tov змінної Z привласнюється значення властивості Text об'єкту txtTov. |
Z.C = txtC.Text |
Полю C змінної Z привласнюється значення властивості Text об'єкту txtC. |
Z.K = txtK.Text |
Полю K змінної Z привласнюється значення властивості Text об'єкту txtK. |
Put #NFile, CurRec, Z |
Запис у файл realiz.doc (файл з номером Nfile) у запис з номером CurRec умісту змінної Z. |
End Sub |
Кінець процедури. |
1 |
2 |
Private Sub cmdNew_Click() |
Процедуру буде виконано, якщо клацнути на кнопці Новий запис. |
SaveZ |
Виконання процедури SaveZ - збереження у файл поточного запису файлу. |
LastRec = LastRec + 1 |
Покажчик останнього запису файлу LastRec збільшується на 1. |
Z.Date = " " |
Знищується вміст полів змінної - запису Z |
Z.Pok = " " |
|
Z.Tov = " " |
|
Z.C = " " |
|
Z.K = " " |
|
Put #NFile, LastRec, Z |
До файлу додається новий запис (запис з номером LastRec) зі змінної Z. |
CurRec = LastRec |
Покажчик поточного запису приймає значення LastRec. |
ShowZ |
Виконується процедура ShowZ - виведення вмісту поточного запису файлу у вікні програми. |
End Sub |
Кінець процедури. |
Private Sub cmdNext_Click() |
Процедуру буде виконано, якщо клацнути на кнопці Наступний запис. |
If CurRec = LastRec Then |
Якщо покажчик поточного запису CurRec дорівнює покажчику останнього запису LastRec, то |
Beep |
видається звуковий сигнал |
MsgBox "Кiнець файлу!", vbOKOnly + vbExclamation |
на екрані з'являється вікно повідомлення, що вже досягнуто кінця файлу (тобто перехід до наступного запису неможливий) |
Else |
інакше |
SaveZ |
виконується процедура SaveZ збереження даних, що введено або відредаговано у вікні програми, у поточному записі файлу |
CurRec = CurRec + 1 |
покажчик поточного запису збільшується на одиницю |
ShowZ |
виконується процедура ShowZ зчитування запису CurRec з файлу і виведення інформації, що отримана, у вікні програми |
End If |
кінець оператору If. |
txtDate.SetFocus |
Текстове поле txtDate отримує фокус - поле стає активним, курсор буде розташовано в полі. |
End Sub |
Кінець процедури. |
1 |
2 |
Private Sub cmdPrivious_Click() |
Процедуру буде виконано, якщо клацнути на кнопці Попередній запис. |
If CurRec = 1 Then |
Якщо покажчик поточного запису CurRec дорівнює одиниці, то |
Beep |
виводиться звуковий сигнал |
MsgBox "Початок файлу!", vbOKOnly + vbExclamation |
на екрані з'являється вікно повідомлення, що вже досягнуто початку файлу, перехід до попереднього запису неможливий |
Else |
інакше |
SaveZ |
зберігається поточний запис у файлі за допомогою процедури SaveZ |
CurRec = CurRec - 1 |
покажчик поточного запису зменшується на 1 |
ShowZ |
виконується процедура ShowZ зчитування запису CurRec з файлу і виведення інформації, що отримана, у вікні програми |
End If |
кінець оператору If. |
txtDate.SetFocus |
Передача фокусу текстовому полю txtDate. |
End Sub |
Кінець процедури. |
Private Sub cmdDelete_Click() |
Процедуру буде виконано, якщо клацнути на кнопці Знищення запису. |
Dim TmpNFile |
Оголошення локальної змінної для збереження номеру тимчасового файлу, використовується для перезапису інформації під час знищення записів |
Dim TmpZ As Zap |
Оголошення змінної TmpZ типу Zap |
Dim RecN As Long |
Оголошення змінної RecN для роботи з номером запису файла realiz.doc. |
Dim TmpRecN As Long |
Оголошення змінної TmpRecN для роботи з номером запису тимчасового файлу |
If MsgBox("Знищити запис?", vbYesNo) = vbNo Then |
Якщо у вікні повідомлення обрано кнопку Нет, то |
txtDate.SetFocus |
Текстове поле txtDate отримує фокус. |
Exit Sub |
Процедура завершує свою роботу. |
End If |
Кінець оператору If. |
If Dir("realiz.tmp") = "realiz.tmp" Then |
Якщо у поточному каталозі знайдено тимчасовий файл realiz.tmp, то |
Kill "realiz.tmp" |
файл realiz.tmp знищується |
End If |
Кінець оператору If. |
TmpNFile = FreeFile |
Змінна TmpNFile отримує номер вільного файлу |
Open "realiz.tmp" For Random As TmpNFile Len = RZ |
Розчиняється тимчасовий файл як файл довільного доступу з номером файлу TmpNFile і довжиною запису RZ. |
RecN = 1 |
Змінна RecN отримує значення 1 |
TmpRecN = 1 |
Змінна TmpRecN отримує значення 1 |
Do While RecN < LastRec + 1 |
Цикл діє доки RecN < LastRec + 1 (LastRec - номер останнього запису файлу realiz.doc) |
If RecN <> CurRec Then |
Якщо номер запису файлу realiz.tmp не дорівнює номеру поточного запису файлу realiz.doc (запис, що знищується), то |
Get #NFile, RecN, TmpZ |
у змінну TmpZ зчитується запис файлу realiz.doc з номером RecN |
Put #TmpNFile, TmpRecN, TmpZ |
записується запис з номером TmpRecN у файл realiz.tmp |
TmpRecN = TmpRecN + 1 |
змінна TmpRecN збільшується на 1 |
End If |
Кінець оператору If. |
RecN = + 1 |
Змінна RecN збільшується на 1 щоразу крім ітерації циклу коли обробляється запис з номером CurRec - той, що слід знищити. |
Loop |
Кінець оператору циклу. |
Close NFile |
Зачиняється файл realiz.doc. |
Kill "realiz.doc" |
Знищується файл realiz.doc. |
Close TmpNFile |
Зачиняється файл realiz.tmp. |
Name "realiz.tmp" As "realiz.doc" |
Перейменовується файл realiz.tmp у файл realiz.doc. |
NFile = FreeFile |
Визначається номер вільного файлу |
Open "realiz.doc" For Random As NFile Len = RZ |
Розчиняється файл realiz.doc, що міститься в папці диску С:, у режимі довільного доступу (Random) як файл з номером Nfile і розміром запису RZ. Якщо файл не буде знайдено, система його створить і розчинить. |
LastRec = LastRec - 1 |
Зменшується значення покажчика останнього запису файлу LastRec оскільки один запис знищено. |
If LastRec = 0 Then LastRec = 1 |
Якщо LastRec = 0 (у файлі не залишилось записів), то LastRec привласнюється значення 1. |
If CurRec > LastRec Then |
Якщо покажчик поточного запису файлу виходить за межи файлу, то |
CurRec = LastRec |
йому привласнюється значення LastRec |
End If |
Кінець оператору If. |
ShowZ |
Виконується процедура ShowZ зчитування запису CurRec з файлу і виведення інформації, що отримана, у вікні програми |
txtDate.SetFocus |
Передача фокусу текстовому полю txtDate. |
End Sub |
Кінець процедури. |
Private Sub cmdFin_Click() |
Процедуру буде виконано, якщо клацнути на кнопці Завершення роботи. |
SaveZ |
Збереження даних у поточному записі файлу. |
Close #NFile |
Зачинення файлу realiz.doc. |
End |
Кінець програми. |
End Sub |
Кінець процедури. |
Завдання №1
Розробити програму, яка дає змогу записати дані про нормативний залишок товарів у файл послідовного доступу. Запис файлу повинна вміщувати найменування товару і норматив залишку товару на складі. Запис і редагування даних слід здійснювати у одному вікні, після роботи з яким файл обов’язково слід зачинити. Інше вікно програми повинно використовуватися для того, щоб на основі введених найменування товару і його фактичного залишку можна було зробити висновок про відхилення залишку конкретного товару від нормативу. При завантаженні вікна програми треба відкрити файл з нормативними, прочитати усі записи файлу в масив змінних – записів.
Завдання №2
Розробити програму для запису в файл послідовного доступу дані про 8 співробітників підприємства: прізвище та ініціали, освіта, стаж роботи, оклад.
Якщо файл вже існує, програма повинна давати змогу прочитати данні в масив змінних, обрати одного співробітника за такими критеріями: найбільший стаж роботи, найвищий оклад.
а) |
б) |
с) |
Рисунок 6.2 - Вікна програми
Завдання №3
Створити програму, яка призначена для зчитування даних з текстового файлу, що створено за допомогою програми “Блокнот”, виведення інформації у вікні програми. Користувач повинен мати змогу ввести маршрут пошуку та ім’я файлу.
7 Використання Visual Basic for Application у Microsoft Excel
7.1 Основні поняття
Поняття об’єкту у VBA відповідає загальноприйнятому поняттю об’єкту. Тобто, об’єкт – це об’єднання даних з кодом, що призначено для їх обробки, у єдине ціле. Під час роботи з VBA у Microsoft Excel можна створювати, використовувати вже знайомі нам об’єкти – форми, командні кнопки, прапорці, перемикачі та ін. Усі об’єкти одного типу належать до певного класу. Об’єкти характеризуються властивостями. Властивості представляють собою атрибути об’єктів, які визначають їх характеристики, зовнішній вигляд. До кожного об’єкту можна застосувати певні методи. Метод – це дії, що можуть виконуватися по відношенню до об’єктів певного класу. У VBA також не змінюється смисл поняття “подія”. Подія – це дія, яку виконано по відношенню до певного об’єкту, для якої можна запрограмувати процедуру обробки.
Однак, для автоматизації виконання робіт у середовищі Microsoft Excel із застосуванням VBA потрібно познайомитись із об’єктами додатку Excel.
Об’єктна модель Microsoft Excel являє собою ієрархію об’єктів, що підпорядковані об’єкту Application, який відповідає додатку Excel. Об’єкт Application – це головний кореневий об’єкт у ієрархії об’єктів, він має велику кількість властивостей і методів, які дають змогу встановити загальні параметри додатку Excel. Об’єкту Application підпорядковані інші об’єкти. Усі візуальні об’єкти, такі як робоча книга - Workbook, робочий лист - Worksheet, діапазон чарунок - Range, діаграма - Chart, є об’єктами VBA.
Декілька об’єктів, які зазвичай є об’єктами одного класу, часто групуються, утворюючи колекцію об’єктів. Колекція об’єктів є об’єктом, у якому міститься декілька інших об’єктів. Наприклад, колекція Workbooks містить усі розчинені робочі книги - об’єкти Workbook, колекція Worksheets включає всі листи певної робочої книги - об’єкти Worksheet. Кожний елемент колекції нумерується, до нього можна звернутися по номеру або імені. Наприклад, Worksheets(1) – це перший лист активної робочої книги, Worksheets(“Лист3”) – лист активної робочої книги з іменем Лист3.
Щоб застосувати метод або змінити властивість об’єкту потрібно визначити його ім’я, після крапки ввести ім’я методу або властивості. Наприклад, у рядку коду
до об’єкту Application застосовуються метод Quit – завершується робота програми Microsoft Excel.
Для звернення до об’єктів з метою зміни їх властивостей або застосування до них методів потрібно визначити імена об’єктів у певній ієрархії, відокремлюючи імена, назви властивостей і методів крапками. Розглянемо як приклад такий рядок коду:
Application.Workbooks("Книга2").Worksheets("Лист1").Name = "Звіт"
У рядку коду здійснюється звернення до додатку Microsoft Excel, до робочої книги з іменем "Книга2", а також до робочого листа з ім’ям "Лист1", властивість Name, якого змінюється – привласнюється нове ім’я листу робочої книги "Звіт".
У VBA властивості та методи об’єктів можуть повертати інші об’єкти. У цьому випадку, для доступу до властивості об’єкту слід зазначити ім’я властивості.
7.2 Редактор VBA
Для створення процедур і функцій мовою Visual Basic for Application, перегляду та редагування макросів використовується редактор VBA. Для активізації редактору можна:
Інтерфейс редактору Visual Basic for Application включає такі основні компоненти (рис. 7.1):
Вікно проекту Project – VBA Project у редакторі VBA можна вивести командою меню View – Project Explorer або натисканням на кнопці Project Explorer на панелі інструментів Standard. У вікні подається дерево об’єктів додатку Microsoft Excel. Для кожної робочої книги, що розчинена у середовищі Excel, у дереві містяться елементи, які використовуються для створення та редагування модулів для листів робочої книги, для книги у цілому, для кожної форми користувача, яку створено у проекті, для макросів.
Вікно редактору коду можна розчинити подвійним клацанням на елементі в дереві проекту або командою меню View – Code (розчиняються вікно коду для об’єкту, який обрано в дереві). Вікно редагування коду використовується для створення підпрограм додатку – процедур і функцій, редагування макросів.
У вікні властивостей перелічені настанови властивостей об’єктів – обраної форми, елементів керування, листів робочої книги, робочої книги у цілому. Це вікно можна застосовувати для перегляду та зміни властивостей об’єктів. Для виведення вікна властивостей слід виконати команду меню View – Properties Window або скористатися інструментом Properties Window на панелі інструментів Standard.
Вікно перегляду об’єктів Object Browser відображується у редакторі VBA після виконання команди меню View – Object Browser або натискання на інструменті Object Browser на панелі інструментів Standard. У цьому вікні міститься список усіх об’єктів, які існують у системі та які можна використовувати при створенні проекту. Можна обрати будь-який об’єкт зі списку Classes і у списку Members буде відображуватися перелік властивостей і методів для даного об’єкту. При чому властивості характеризуються символом , а методи символом - . Значення властивості або методу можна переглянути у рідку стану вікна Object Browser.
7.3 Створення функцій користувача
Можливості мови VBA зручно використовувати для створення функцій, які автоматизують розрахунки і не належать до комплекту стандартних функцій Microsoft Excel. Наприклад, можна самостійно розробити функцію для розрахунку суми реалізації товару клієнту з урахуванням кількості проданих товарів, знижки постійним клієнтам і інших факторів. Звернутися до такої функції можна буде за допомогою майстра функцій Microsoft Excel, після визначення всіх необхідних аргументів, за допомогою функції, що створено засобами VBA, можна буде отримати потрібний результат.
Для створення нової функції потрібно:
Функції у VBA створюються як і в середовищі Visual Basic 6.0. Створення функції може починатися із визначення статусу функції, далі повинно слідувати зарезервоване слово Function після якого визначається ім’я функції та у круглих дужках список аргументів функції. Після списку аргументів може бути визначено тип значення, яке повертає функція. Параметрами функції є дані, які визначатимуться як аргументи функції. Це можуть бути адреси чарунок, числа, блоки чарунок. Синтаксис функцій такий:
[Public | Private ] Function <ім’я функції> [(список аргументів)] [As тип]
[оператори]
[ім’я функції = вираз]
End Function
Необов’язковий параметр Public дає можливість застосовувати функцію для всіх модулів, використовувати функцію при роботі з іншими робочими книгами при умові, що книгу, у проекті якої створено функцію, розчинено. Необов’язковий параметр Private обмежує застосування функції лише процедурами одного і того ж модуля.
Обов’язковим параметром є ім’я функції, після імені визначається список аргументів. У списку аргументів параметри функції відокремлюються комами, можуть зазначатися лише іменами, а можна визначати імена аргументів і їх типи (наприклад, X As Integer).
Необов’язковий параметр [As тип] визначає тип значення, яке повертає функція (Integer, String, Byte або ін.). Якщо даний параметр пропущено, то функція повертає значення типу Variant. Обов’язково в середині функції привласнити імені функції значення, яке вона повинна повертати.
При розробці функції можна застосовувати оператори привласнення, умовний оператор If, оператор циклу For . . . Next, інші оператори мови Visual Basic Після створення функції можна активізувати робочу книгу Microsoft Excel і за допомогою майстра функцій помістити у будь-яку чарунку формулу із застосуванням нової функції. Створену таким способом функцію буде віднесено до категорії функцій Определенные пользователем.
Розглянемо простий приклад створення функції користувача, у якій аргументом функції є адреса чарунки. Наприклад, потрібно розробити функцію, за допомогою якої можна прискорити розрахунок прибуткового податку, який вираховується із заробітної плати співробітників. Прибутковий податок обчислюється так:
якщо нарахована заробітна плата менш або рівно 17 грн. (мінімум, що не оподатковується), то прибутковий податок не сплачується;
якщо нарахована заробітна плата менш або рівно 85 грн., то від суми, що перевищує 17 грн., сплачується 10% як прибутковий податок;
якщо нарахована заробітна плата менш або рівно 170 грн., то від суми, що перевищує 85 грн., сплачується 15% плюс податок від 85 грн. як прибутковий податок;
якщо нарахована заробітна плата більше 170 грн., то від суми, що перевищує 170 грн., сплачується 20% податок від 170 грн. як прибутковий податок.
Для створення функції потрібно завантажити табличний процесор Excel, перейти до редактору VBA (команда меню Сервис – Макрос – Редактор Visual Basic), виконати команду меню Insert – Module для додавання до проекту нового модуля, у вікні коду модуля ввести код функції:
Function ПРИБПОД(x)
If x <= 17 Then
n = 0
Else
If x <= 85 Then
n = (x - 17) * 0.1
Else
If x <= 170 Then
n = (x - 85) * 0.15 + 6.8
Else
n = (x - 170) * 0.2 + 19.55
End If
End If
End If
ПРИБПОД = n
End Function
Функція має ім’я ПРИБПОД, приймає для обробки значення одного аргументу, яке поміщається в змінну х. У тілі функції здійснюється аналіз значення змінної х: якщо х менше або рівно 17, то змінній n привласнюється значення 0, інакше якщо х менше або рівно 85, то змінній n привласнюється значення (x - 17) * 0.1 – 10% від нарахованої заробітної плати мінус 17, інакше якщо х менше або рівно 170, то змінній n привласнюється значення (x - 85) * 0.15 + 6.8, інакше змінна n дорівнюватиме (x - 170) * 0.2 + 19.55 – податок з суми, що перевищує 170 грн. Далі імені функції привласнюється значення змінної n – значення, яке відповідає суму розрахованого прибуткового податку.
Після створення функції можна перейти у вікно поточної робочої книги і за допомогою майстра функції створити формулу із застосуванням щойно створеної функції. Функцію можна обрати, розчинивши категорію Определенные пользователем. Таблиця із застосуванням функції ПРИБПОД може виглядати так:
Можна також створювати функції, аргументами яких є декілька чарунок, а також діапазон чарунок.
Якщо аргументом функції є діапазон чарунок, то VBA працює з ним як з масивом, індексація елементів якого починається з 1. Щоб дізнатися скільки рядків і стовпців міститься в діапазоні можна використовувати властивості Rows і Columns, які відповідають колекції, що складається з усіх рядків або стовпців діапазону. Оскільки кожна колекція характеризується властивістю Count – кількість елементів у колекції, то визначити загальну кількість рядків, колонок у діапазоні, що є аргументом функції, не складно.
Наприклад, якщо аргументом функції є діапазон з іменем Block, то можна помістити у змінні x і y значення кількості рядків і стовпців у блоці чарунок:
x = Block.Rows.Count
y = Block.Columns.Count
Щоб звернутися до чарунки, яка є верхнім лівим кутом блоку, потрібно зазначити ім’я діапазону та індекси елементів масиву Block(1, 1), чарунка, яка є правим нижнім кутом блоку, відповідає елементові масиву Block(x, y).
Для прикладу можна створити функцію, за допомогою якої менеджер на основі даних про реалізацію товарів у поточному періоді може швидко визначити розмір знижки, яка надається конкретному покупцеві. Тим покупцям, які протягом певного періоду придбали товарів більше або рівно ніж на 10 000 грн., надається знижка у розмірі 3%. Якщо покупець придбав товарів більше або рівно ніж на 5 000 грн., він може отримати знижку у 1,5%. Якщо покупець придбав товарів менше ніж на 5 000 грн., однак здійснив більше трьох операцій по закупівлі товару, він може розраховувати на знижку в 1%. Іншим покупцям знижка не надається. Для автоматизації визначення розміру знижки даному покупцеві можна створити таку функцію:
Function Zn(Покупець, УсіПокупці, СумиРеалізації)
N = УсіПокупці.Rows.Count
s = 0
k = 0
For i = 1 To N
If УсіПокупці(i, 1) = Покупець Then
k = k + 1
s = s + СумиРеалізації(i, 1).Value
End If
Next i
If s >= 10000 Then
Zn = 3
Else
If s >= 5000 Then
Zn = 1.5
Else
If k > 3 Then
Zn = 1
Else
Zn = 0
End If
End If
End If
End Function
Прокоментуємо функцію. Функція Zn містить три аргументи:
Оскільки блоки чарунок, які є аргументами функції, містять по одній чарунці у стовпцях і декілька чарунок у рядках, потрібно визначити лише кількість чарунок у рядку хоча б одного з блоків (блоки повинні бути пропорційного розміру). Для цієї мети використовується змінна N, якій привласнюється значення УсіПокупці.Rows.Count – загальна кількість рядків у масиві чарунок з ім’ям УсіПокупці.
Змінним s – підсумкова сума реалізації та k – кількість операцій привласнюється значення 0.
Далі виконується обробка значень усіх чарунок масивів. Індексація елементів масивів здійснюється від 1 до N. Усередині циклу якщо назва чергового елементу масиву УсіПокупці співпадає зі значенням аргументу функції Покупець, то на 1 збільшується загальна кількість операцій і накопичується значення у змінній s – підсумкова сума реалізації. При розрахунку підсумку здійснюється звернення до чергового елементу масиву СумиРеалізації, а саме до значення властивості Value елементів – уміст чарунок електронної таблиці.
Після завершення роботи циклу в залежності від значень змінних s і k привласнюється нове значення імені функції Zn, це значення функція і повертатиме.
Під час роботи з електронною таблицею можна буде звернутися до майстра функцій, обрати функцію Zn з категорії Определенные пользователем, визначити, наприклад так, аргументи функції:
На листі робочої книги дані можуть виглядати таким чином:
Для наочності створено зведену таблицю, у якій містяться дані про загальну суму реалізації та кількість операцій по кожному клієнту. Для того, щоб не визначати розміри знижок вручну у чарунках E16, Е18, Е20 створено формули із застосуванням функції Zn. Зверніть увагу на те, що після створення формули з функцією у чарунці E16 перед копіюванням її потрібно відредагувати – змінити адреси чарунок у аргументах - діапазонах на абсолютні для того, щоб під час копіювання вони не змінювалися.
7.4 Автоматизація розрахунків на робочому листі
Мова Visual Basic for Application дає змогу для автоматизації розрахунків на листах робочих книг використовувати елементи управління – командні кнопки, перемикачі, прапорці та ін. Для створення цих об’єктів слід вивести панель елементів за допомогою інструмента Элементы управления на панелі інструментів Visual Basic або виконавши команду меню Вид – Панели инструментов - Элементы управления. У результаті у вікні програми Microsoft Excel з’явиться панель елементів, яка схожа з панеллю елементів середовища Visual Basic 6.0:
За допомогою кнопок на панелі елементів можна створювати об’єкти різних класів. При роботі з елементами управління використовується режим конструктору для визначення властивостей об’єктів, створення процедур обробки подій, що пов’язані з певними об’єктами. Якщо режим конструктору виключено, елементи управління використовуються за призначенням (наприклад, натискання на командній кнопці призводить до виконання певних дій). Для переходу до режиму конструктору використовується інструмент Режим конструктора на панелі елементів управління, наступне натискання на інструменті виключає режим конструктору.
Для визначення властивостей елементів управління потрібно перейти до режиму конструктору, активізувати відповідний об’єкт і вивести вікно властивостей Properties за допомогою інструменту Свойства на панелі елементів або команди контекстного меню Свойства.
Подвійне клацання лівою кнопкою миші на об’єкті дає змогу створити процедуру для обробки події за замовчуванням для об’єктів даного класу. Наприклад, після подвійного клацання на командній кнопці можна почати створення процедури, яка буде обробляти подію Click - клацання лівою кнопкою миші на командній кнопці. За допомогою списку, що розчиняється, Procedure можна обрати іншу подію. Процедура обробки події буде створюватися у вікні редактору VBA, буде пов’язана з тим листом робочої книги, на якому розташовано елемент управління.
При створенні процедур можна змінювати, використовувати різні властивості різних об’єктів. При чому слід пам’ятати, що у VBA властивості об’єктів можуть повертати інші об’єкти. Наприклад, властивість Selection об’єкту Application повертає виділений діапазон чарунок.
Можна працювати з об’єктом Range, якому відповідає конкретна чарунка або діапазон чарунок. Об’єкт Range характеризується властивістю Value. Властивість Value – це вміст чарунки. Наприклад, для запису у чарунку D3 числа 4 можна подати команду:
Range("D3").Value = 4
За допомогою наступної команди в усі чарунки діапазону D3:E5 записується значення 0:
Range("D3:E5").Value = 0
До об’єкту Range можна застосувати метод Select, який призводить до виділення чарунок певного діапазону. Для виділення чарунок діапазону А2:А5 можна виконати команду:
Range("a3:a5").Select
Під час створення програм часто використовується властивість об’єктів Application, Worksheet, Range, Selection Cells(i, j), яка повертає об’єкт – певну чарунку листа робочої книги. У круглих дужках визначається адреса чарунки, при чому і – номер рядка, j – номер стовпця. Об’єкт Cells(i, j) характеризується властивостями:
Можна навести приклади зміни властивостей об’єкту Cells(i, j):
Cells(1, 1).Value = 23 |
У чарунку А1 записується число 23. |
Cells(20, 3).Formula = "Разом:" |
У чарунку С20 записується текст “Разом:”. |
Cells(4, 2).NumberFormat = "0.00" |
Для чарунки В4 визначається числовий формат з двома знаками після десяткової крапки. |
Cells(5, 6).NumberFormat = "0.00%" |
Для чарунки F5 визначається процентний формат. |
Cells(3, 1).Formula = "=A1 + A2" |
У чарунку А3 записується формула =A1 + A2. |
Cells(3, 1).Font.Bold = True |
Для чарунки А3 визначається напівжирний шрифт. |
Cells(3, 1).Font.Size = 16 |
Для чарунки А3 визначається розмір шрифту 16 пунктів. |
Cells(3, 1).Font.Color = QBColor(9) |
Для чарунки А3 визначається синій колір символів. |
Введення формули у форматі FormulaR1C1 дає можливість визначити як абсолютні так і відносні стосовно поточної чарунки адреси чарунок у формулі. При застосуванні абсолютних адрес чарунок можна визначати номери рядків (R – row) і номери стовпців (C – column). Так, наприклад, у рядку коду
Cells(5, 1).FormulaR1C1 = "=R1C1+R2C1"
у чарунку А5 вводиться формула =$A$1+$A$2.
Можна також формувати формулу з адресами чарунок, які задаються відносно поточної, активної чарунки. Відносні значення визначають зсув на певну кількість рядків, стовпчиків, значення зсуву задається завжди у квадратних дужках. Так у рідку коду
Cells(3, 2).FormulaR1C1 = "=R[-2]C+R[-1]C"
у чарунку В3 вводиться формула =В1+В2. Адреса чарунки В1 визначається так: чарунка на 2 рядка вище поточної чарунки В3 і того ж рядка.
Використання елементів управління на листах робочої можна розглянути на прикладі кнопки “Розрахунок сум”, за допомогою якої можна розрахувати суми по рядках і колонках для всіх чарунок виділеного діапазону. Тобто якщо виділити, наприклад, блок чарунок B2:C3, то у чарунку D2 буде записано суму значень, які знаходяться в чарунках B2:C2, у чарунку D3 – суму значень чарунок B3:C3, у чарунку В4 - суму значень чарунок B2:В3 і т.д.
Для створення командної кнопки на робочому листі потрібно:
Вивести панель елементів за допомогою інструмента Элементы управления на панелі інструментів Visual Basic або виконавши команду меню Вид – Панели инструментов - Элементы управления.
Обрати елемент Кнопка і при натиснутій лівій кнопці миші визначити розмір і місце розташування об’єкту на листі Microsoft Excel. Коли користувач знаходиться у режимі конструктору (натиснута кнопка на панелі елементів) можна переміщувати кнопку по листу робочої книги, змінювати її розмір, властивості.
Перейти до режиму конструктору, активізувати кнопку та вивести вікно властивостей Properties за допомогою інструменту Свойства на панелі елементів або команди контекстного меню Свойства.
У вікні властивостей визначити властивості кнопки Name – cmdSum і Caption – Розрахунок сум.
Виконати подвійне клацання лівою кнопкою миші на командній кнопці для створення процедури, яка буде обробляти подію за замовчуванням для об’єктів даного класу – подію Click (клацання лівою кнопкою миші на командній кнопці). У вікні коду ввести уміст процедури:
Дані в рядку коду |
Коментар |
Sub cmdSum _Click() |
Заголовок процедури, яка виконуватиметься після натискання на кнопці “Розрахунок сум”. |
n = Selection.Rows.Count |
Змінній n привласнюється значення кількості рядків у виділеному діапазоні чарунок. |
m = Selection.Columns.Count |
Змінній m привласнюється значення кількості стовпців у виділеному діапазоні чарунок. |
' Підсумки по рядках |
Коментар. |
For i = 1 To n |
Для i що змінюється від 1 до n виконуються дії (для всіх чарунок рядка i ). |
s = 0 |
Змінній s привласнюється значення 0. |
For j = 1 To m |
Для j що змінюється від 1 до m виконуються дії (для всіх чарунок стовпця j). |
s = s + Selection.Cells(i, j).Value |
У змінній s накопичується сума значень чарунок певного рядка. |
Next j |
Кінець циклу обчислення підсумкового значення по рядку. |
Selection.Cells(i, m + 1).Value = s |
У чарунці з адресою – певний рядок і колонка m + 1 (чарунка ліворуч від останньої чарунки виділеного діапазону) виводиться значення суми, що обчислено. |
Next i |
Кінець циклу обчислення підсумкових значень по всіх рядках. |
' Підсумки по стовпцях |
Коментар. |
For j = 1 To m + 1 |
Для j що змінюється від 1 до m+1 виконуються дії (для всіх чарунок стовпця j). У циклі обробляються значення для m+1 колонок тому, що суми слід розрахувати і для чарунок, які є підсумками по рядках. |
s = 0 |
Змінній s привласнюється значення 0. |
For i = 1 To n |
Для i що змінюється від 1 до n виконуються дії (для всіх чарунок рядка i ). |
s = s + Selection.Cells(i, j).Value |
У змінній s накопичується сума значень чарунок певного стовпчика. |
Next i |
Кінець циклу обчислення підсумкового значення по стовпчику. |
Selection.Cells(n + 1, j).Value = s |
У чарунці з адресою – рядок n + 1 і колонка j (чарунка нижче останньої чарунки виділеного діапазону) виводиться значення суми, що обчислено. |
Next j |
Кінець циклу обчислення підсумкових значень по всіх стовпчиках. |
End Sub |
Кінець процедури. |
Після створення процедури можна активізувати робочий лист, на якому створено кнопку “Розрахунок сум”, вийти з режиму конструктору, виділити будь-який діапазон чарунок і натиснути на кнопці “Розрахунок сум” для перевірки правильності виконання розрахунків.
Можна також створити кнопку для розрахунку підсумкових значень по таблиці, в яку введено дані для аналізу реалізації товарів. Таблиця має таку структуру:
Після натиснення на кнопці “Розрахунок” буде здійснено обчислення суми і відсотка відхилень від плану реалізації по кожній товарній групі, незалежно від кількості рядків у таблиці нижче заповнених даних буде додано підсумковий рядок для розрахунку загальних значень прогнозу щодо реалізації, фактичної реалізації, а також підсумкові значення відхилень. Далі здійснюватиметься розрахунок питомої ваги фактичної реалізації по кожній товарній групі в загальному обсязі реалізації. У результаті виконання процедури у чарунки електронної таблиці будуть записані не результати розрахунків, а формули обчислення показників.
З кнопкою “Розрахунок” слід пов’язати таку процедуру:
Дані в рядку коду |
Коментар |
Private Sub cmdR_Click() |
Заголовок процедури, яка виконуватиметься після натискання на кнопці “Розрахунок”. |
k = 0 |
Змінній k, яка використовується для підрахунку заповнених рядків таблиці, привласнюється значення 0. |
For i = 4 To 60 |
Для і від 4 до 60 виконуються дії в циклі. 4 це номер першого заповненого рядка таблиці, 60 номер максимального можливого заповненого рядка. |
If Cells(i, 3).Value <> 0 Then |
Якщо для рядка і фактичне значення реалізації не дорівнює 0, то ... |
k = k + 1 |
Змінна k збільшується на 1. |
Cells(i, 4).FormulaR1C1 = "=RC[-1]-RC[-2]" |
У чарунку Cells(i, 4) – D4, D5... для виведення суми відхилення фактичної реалізації від прогнозного значення записується формула =Cі-Bi (=C4-B4, =C5-B5...). Операнди формули визначаються так: чарунка того ж рядка, що і визначена (D4, D5...), і стовпця з номером –1 – стовпчик ліворуч мінус чарунка того ж рядка і стовпця з номером –2 – на 2 стовпчика ліворуч. |
Cells(i, 5).FormulaR1C1 = "=(RC[-2]-RC[-3])/RC[-3]*100" |
у чарунку Cells(i, 5) для виведення відсотку відхилення фактичної реалізації від прогнозного значення записується формула записується формула =(Cі-Bі)/Bі*100 (=(C4-B4)/B4*100...). |
Cells(i, 5).NumberFormat = "0.00" |
Для чарунки, у якій виводиться відсоток відхилення, визначається числовий формат з двома знаками після десяткової крапки. |
End If |
Кінець оператору If. |
Next i |
Кінець циклу для розрахунку відхилень і визначення кількості заповнених рядків таблиці. |
Cells(k + 4, 1).Formula = "Разом:" |
У чарунці з адресою рядок - k + 4, стовпчик 1 виводиться текст "Разом:". |
Cells(k + 4, 2).FormulaR1C1 = "=Sum(R4C2:R[-1]C2)" |
У чарунку для розрахунку підсумкового значення по прогнозних сумах реалізації вводиться формула =СУММ(B4:B(k+4-1)). Адреси чарунок діапазону: R4C2 - $B$4, R[-1]C2 – чарунка попереднього рядка відносно чарунки (k + 4, 2) і другого стовпчика. |
Cells(k + 4, 3).FormulaR1C1 = "=Sum(R4C3:R[-1]C3)" |
У чарунку для розрахунку підсумкового значення по сумах фактичної реалізації вводиться формула =СУММ(С4:С(k+4-1)). |
Cells(k + 4, 4).FormulaR1C1 = "=Sum(R4C4:R[-1]C4)" |
У чарунку для розрахунку підсумкового значення по сумі відхилень вводиться формула ==СУММ(D4:D(k+4-1)). |
Cells(k + 4, 5).FormulaR1C1 = "=(RC[-2]-RC[-3])/RC[-3]*100" |
У чарунку для розрахунку підсумкового значення по відсотку відхилення вводиться формула =(C(k+4)-B(k+4))/B(k+4)*100. |
Cells(k + 4, 5).NumberFormat = "0.00" |
Для чарунки, у якій виводиться підсумок по відсотку відхилення, визначається числовий формат з двома знаками після десяткової крапки. |
n = Trim(k + 4) |
Змінній n привласнюється значення k + 4 у символьному форматі. |
For i = 4 To k + 3 |
Для і від 4 до k+3 (для всіх інформаційних рядків таблиці) виконуються дії в циклі. |
Cells(i, 6).FormulaR1C1 = "=RC[-3]/R" & n & "C3" |
У чарунку чергового рядка поміщається формула =Ci/C(k+4). |
Cells(i, 6).NumberFormat = "0.00%" |
Для чарунок, в яких виводиться питома вага реалізації в загальному обсязі реалізації, встановлюється процентний формат. |
Next i |
Кінець циклу. |
End Sub |
Кінець процедури. |
Після створення процедури можна скористатися кнопкою “Розрахунок”. Таблиця – приклад після застосування командної кнопки буде виглядати так:
7.5 Робота з формами у середовищі VBA
Розглянемо приклад створення форми для розрахунку показників по документу “Видаткова накладна”. Припустімо, що на підприємстві часто формуються видаткові накладні, у яких містяться відомості про постачальника, одержувача товарів, номер і дату документа, вводяться найменування товарів, одиниці виміру для кожного товару, ціна товару без податку на додану вартість (ПДВ) і без знижки. Попередньо підготовлений документ може виглядати так:
Для прискорення створення заголовку та шапки документу доречно підготувати макрос, за допомогою якого на будь-якому листі книги можна швидко приступити до створення предметної частини видаткової накладної.
Менеджерами підприємства можуть надаватися знижки покупцям – 1% або 2% для постійних покупців. У залежності від наданої знижки розраховується ціна кожного товару зі знижкою, суми реалізації товарів, підсумкові значення по документу.
Для початку розрахунку користувач може натиснути на відповідному інструменті на панелі інструментів після чого з’явиться така форма:
Після вибору виду знижки і натискання на кнопці “Розрахунок” буде виконано відповідну процедуру для розрахунку підсумків по інформаційних рядках і документу в цілому. Після виконання процедури, яка пов’язана з командною кнопкою “Розрахунок” таблиця буде виглядати так:
Для реалізації поставленої задачі потрібно у вікні редактору VBA створити нову форму за допомогою команди меню Insert – UserForm. У результаті виконання команди до дерева основних об’єктів проекту буде додано гілку Forms, до якої належить об’єкт UserForm1 – вікно нової форми користувача. Коли вікно форми активно за допомогою панелі елементів можна створювати об’єкти у формі та визначати їх властивості з використанням вікна властивостей Properties. Для розробки форми, за допомогою якої можна визначити розмір та здійснити розрахунок показників документу “Видаткова накладна”, потрібно створити об’єкти і визначити їх властивості за описом:
Об’єкт |
Властивість |
|
Найменування |
Значення |
|
Форма UserForm1 |
Name |
frmRoz |
Caption |
Розрахунок показників документу |
|
BackColor |
білий |
|
Font |
Times New Roman, кирилиця, звичайний, 11 пунктів |
|
Командна кнопка CommandButton |
Name |
cmdRozr |
Caption |
Розрахунок |
|
Командна кнопка CommandButton |
Name |
cmdV |
Caption |
Відміна |
|
Група Frame |
Name |
FraZn |
Caption |
Оберіть вид знижки для даного покупця |
|
BackColor |
білий |
|
Перемикач OptionButton |
Name |
opt1 |
Caption |
знижка не надається |
|
BackColor |
білий |
|
Перемикач OptionButton |
Name |
opt2 |
Caption |
знижка 1% |
|
BackColor |
білий |
|
Перемикач OptionButton |
Name |
opt3 |
Caption |
знижка 2% |
|
BackColor |
білий |
Після створення форми можна починати розробку процедур, які обробляють події – клацання лівою кнопкою миші на командних кнопках. Для цього потрібно виконати подвійне клацання лівою кнопкою миші на відповідній кнопці. Щоб створити процедуру, яку буде виконано якщо користувач натисне на кнопці “Відміна”, потрібно двічі клацнути на цій кнопці. У результаті розчиниться вікно коду з заголовком і завершальним рядком процедури:
Private Sub cmdV_Click()
End Sub
Всередині процедури за допомогою операторів мови VBA слід описати дії, до повинні виконуватися, якщо відбудеться подія Click з даним об’єктом cmdV. У даному випадку слід завершити роботу за допомогою оператору End. Процедура буде виглядати так:
Private Sub cmdV_Click()
End
End Sub
Аналогічним чином слід приступити до створення процедури, яка обробляє подію Click для командної кнопки “Розрахунок”. Процедуру потрібно створити за описом:
Рядок коду |
Коментар |
Private Sub cmdRozr_Click() |
Заголовок процедури, що виконується щоразу після клацання лівою кнопкою миші на командній кнопці у формі cmdRozr (Розрахунок). |
If opt1.Value = True Then |
Якщо обрано перемикач opt1 (знижка не надається), то |
Range("B6").Value = 0 |
у чарунку B6 записується число 0 |
Else |
інакше |
If opt2.Value = True Then |
якщо обрано перемикач opt2 (знижка 1%), то |
Range("B6").Value = 1 |
у чарунку B6 записується число 1 |
Else |
інакше (обрано третій перемикач) |
Range("B6").Value = 2 |
у чарунку B6 записується число 2. |
End If |
Кінець внутрішнього оператору If. |
End If |
Кінець зовнішнього оператору If. |
k = 0 |
Змінній k привласнюється значення 0. Змінна k буде використовуватися як лічильник інформаційних рядків документу. |
For i = 8 To 50 |
Для і, що змінюється від 8 (перший інформаційний рядок документа) до 50 (максимально можлива кількість рядків) виконуються дії. |
If Cells(i, 4).Value <> 0 Then |
Якщо вміст чарунки Cells(i, 4) - чарунки і-го рядка та 4-ої колонки не дорівнює 0 (у документі є черговий інформаційний рядок), то |
Cells(i, 5).FormulaR1C1 = "=RC[-1]*(100-R6C2)/100" |
У чарунку Cells(i, 5) – чарунку і-го рядка та 5-ої колонки поміщається формула розрахунку ціни зі знижкою =RC[-1]*(100-R6C2)/100. Формулу можна прочитати так: =чарунка того ж рядка, що і чарунка з формулою, і колонки зі зсувом на –1 (колонки, що розташована ліворуч) * на (100 – чарунка R6C2 при абсолютній адресації це чарунка 6-го рядка та 2-го стовпця B6)/100. |
Cells(i, 5).NumberFormat = "0.00" |
Значення чарунки Cells(i, 5) перетворюється на числовий формат з двома знаками після десяткової крапки. |
Cells(i, 6).FormulaR1C1 = "=RC[-3]*RC[-2]" |
У чарунку Cells(i, 6) – чарунку і-го рядка та 5-ої колонки поміщається формула розрахунку суми без ПДВ і без знижки =RC[-3]*RC[-2]. Формулу можна прочитати так: =чарунка того ж рядка і колонки зі зсувом на –3 (кількість) * на чарунку того ж рядка і колонки зі зсувом на –2 (ціна без ПДВ). |
Cells(i, 7).FormulaR1C1 = "=RC[-4]*RC[-2]" |
У чарунку Cells(i, 7) – чарунку і-го рядка та 7-ої колонки поміщається формула розрахунку суми без ПДВ і зі знижкою =RC[-4]*RC[-2]. Формулу можна прочитати так: =чарунка того ж рядка і колонки зі зсувом на –4 (кількість) * на чарунку того ж рядка і колонки зі зсувом на –2 (ціна без ПДВ зі знижкою). |
k = k + 1 |
Значення k – кількості інформаційних рядків у документі збільшується на 1. |
End If |
Кінець оператора If. |
Next i |
Змінна циклу збільшується на 1. |
If k > 0 Then |
Якщо k > 0, то виконуються наступні дії. У іншому випадку, коли у документі немає інформаційних рядків, процедура завершує свою роботу. |
Cells(k + 8, 1).FormulaR1C1 = "Разом:" |
У чарунку з адресою (рядок k + 8, стовпчик 1) вводиться новий уміст "Разом:". |
Cells(k + 8, 1).Font.Bold = True |
Шрифт чарунки (k + 8, 1) перетворюється у напівжирний. |
Cells(k + 8, 6).FormulaR1C1 = "=Sum(R8C6:R[-1]C)" |
У чарунку з адресою (рядок k + 8, стовпчик 6) вводиться формула розрахунку підсумку по сумі без ПДВ – сумування чарунок блоку R8C6 (рядок 8, колонка 6 – перша інформаційна чарунка даного показника) : чарунка R[-1]C, яка розташована на рядок вище від чарунки (k + 8, 6) і у тому ж стовпчику . |
Cells(k + 8, 7).FormulaR1C1 = "=Sum(R8C7:R[-1]C)" |
У чарунку (k + 8, 7) вводиться формула для розрахунку суми без ПДВ зі знижкою. |
Cells(k + 9, 5).FormulaR1C1 = "Загальна сума знижки:" |
У чарунку (k + 9, 5) вводиться текст "Загальна сума знижки:". |
Cells(k + 9, 5).Font.Bold = True |
Шрифт чарунки (k + 9, 5) перетворюється у напівжирний. |
Cells(k + 9, 7).FormulaR1C1 = "=R[-1]C[-1]-R[-1]C" |
У чарунку з адресою (рядок k + 9, стовпчик 7) вводиться формула розрахунку загальної суми знижки =R[-1]C[-1]-R[-1]C. |
Cells(k + 10, 5).FormulaR1C1 = "ПДВ:" |
У чарунку (k + 10, 5) вводиться текст "ПДВ:". |
Cells(k + 10, 5).Font.Bold = True |
Шрифт чарунки (k + 10, 5) перетворюється у напівжирний. |
Cells(k + 10, 7).FormulaR1C1 = "=R[-2]C*0.2" |
У чарунку з адресою (рядок k + 10, стовпчик 7) вводиться формула розрахунку суми ПДВ =R[-2]C*0.2. |
Cells(k + 11, 5).FormulaR1C1 = "Усього з ПДВ:" |
У чарунку (k + 11, 5) вводиться текст "Усього з ПДВ:". |
Cells(k + 11, 5).Font.Bold = True |
Шрифт чарунки (k + 11, 5) перетворюється у напівжирний. |
Cells(k + 11, 7).FormulaR1C1 = "=R[-3]C+R[-1]C" |
У чарунку (k + 11, 7) вводиться формула розрахунку суми реалізації з ПДВ =R[-3]C+R[-1]C. |
Range(Cells(k + 8, 6), Cells(k + 11, 7)).Font.Bold = True |
Шрифт діапазону чарунок з підсумковими значеннями перетворюється на напівжирний. |
Range(Cells(k + 8, 6), Cells(k + 11, 7)).Font.Italic = True |
Шрифт діапазону чарунок з підсумковими значеннями перетворюється у курсив. |
End If |
Кінець If. |
End |
Завершення виконання програми. |
End Sub |
Кінець процедури. |
Після завершення створення форми і процедур, які з нею пов’язані, потрібно до проекту додати новий модуль командою меню Insert – Module, у вікні модуля створити процедуру – макрос, який буде виконуватися після натискання на відповідній кнопці на панелі інструментів користувача. Макрос буде виконувати лише одну дію – активізацію форми frmRoz. Це можна здійснити за допомогою методу Show, який буде застосовуватися по відношенню до об’єкту frmRoz. Макрос буде виглядати так:
Sub VN()
frmRoz.Show
End Sub
Далі залишилося лише визначити зв’язок між макросом і відповідною кнопкою на панелі інструментів:
Поставлену задачу вирішено. Командною кнопкою для виклику форми і розрахунку показників видаткової накладної можна буде скористатися не лише при роботі з поточною робочою книгою, а і при роботі з іншими робочими книгами Microsoft Excel. При застосуванні кнопки на панелі інструментів, що створено, при роботі з іншими робочими книгами спочатку буде автоматично розчинено книгу, у якій створено форму і процедури, макрос, далі здійснюється активізація форми і подальша робота.
7.7 Практичні завдання
Завдання
Виконати завдання за індивідуальним варіантом. Звіт про роботу повинен вміщувати:
Створити функції користувача засобами VBA, за допомогою яких на підставі даних таблиці «Відомість надходження товарів» можна розрахувати значення таких показників:
середньозважена ціна товару;
середня ціна товарів визначеного виробника;
середня ціна товарів визначеної товарної групи.
Варіант №2
Створити таблицю «Аналіз реалізації товарів», розрахунок підсумкових значень у якій по рядках і в цілому по таблиці виконується за допомогою командної кнопки «Розрахунок». За допомогою кнопки «Очищення» можна видалити вміст інформаційних рядків таблиці і підсумковий рядок.
Створити функції користувача засобами VBA, за допомогою яких на підставі даних таблиці «Відомість реалізації товарів» можна розрахувати значення таких показників:
загальна сума реалізації конкретного товару певному покупцю;
загальна сума реалізації товарів за визначену дату;
середньозважена ціна товарів визначеної товарної групи.
Разом – підсумкова сума по всіх товарах без знижки;
Сума знижки.
Створити функції користувача засобами VBA, за допомогою яких на підставі даних таблиці «Аналіз реалізації товарів» можна розрахувати значення таких показників:
загальна сума фактичної реалізації певного товару;
середня ціна певного товару;
загальна сума фактичної реалізації конкретному покупцю.
Створити функції користувача засобами VBA, за допомогою яких на підставі даних таблиці «Відомість реалізації товарів» можна розрахувати значення таких показників:
середньозважена ціна товару;
середня ціна всіх товарів;
середня ціна товарів визначеної товарної групи;
загальна сума реалізації товарів за певний день.
7.8 Тест
Відповідь |
Вміє |
Не вміє |
|
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
Cells(1,1).FormulaR1C1 = "=R[2]C+R[1]C" є правильними? |
|||
|
|||
|
|||
|
|||
Range("D3:E5").Value = 0? |
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
Література
Зміст
стор. |
|
Вступ |
3 |
1. Створення програм у середовищі Visual Basic 6.0. Основні поняття - об'єкт, властивість, подія. |
4 |
1.1 Візуальне створення програми |
4 |
1.2 Створення вихідного коду |
8 |
1.3 Контрольні запитання |
11 |
1.4 Практичні завдання |
12 |
1.5 Тест |
15 |
2. Основні оператори мови |
17 |
2.1 Організація розгалужених обчислювальних процесів |
17 |
2.1.1 Умовний оператор If |
17 |
2.1.2 Оператор варіанти Select Case |
20 |
2.2 Організація циклічних обчислювальних процесів |
22 |
2.2.1 Оператор циклу For . . . Next |
22 |
2.2.2 Оператор циклу Do While . . . Loop |
26 |
2.2.3 Оператор циклу Do. . . Loop While |
27 |
2.3 Контрольні запитання |
29 |
2.4 Практичні завдання |
29 |
2.5 Тест |
34 |
3 Використання елементів управління в програмах. Робота з формами. Поняття методу |
36 |
3.1 Елементи управління - лінійки прокручування, перемикачі, прапорці, групи, списки, що розчиняються |
36 |
3.2 Робота з формами. Поняття методу |
37 |
3.3 Контрольні запитання |
45 |
3.4 Практичні завдання |
45 |
3.5 Тест |
54 |
4 Управління програмою за допомогою меню. Робота з масивами елементів управління, змінних |
56 |
4.1 Управління програмою за допомогою меню. |
56 |
4.2 Робота з масивами елементів управління, змінних |
57 |
4.3 Контрольні запитання |
68 |
4.4 Практичні завдання |
68 |
4.5 Тест |
71 |
5 Розробка програм з використанням підпрограм – процедур і функцій, вікон повідомлень |
73 |
5.1 Підпрограми – процедури і функції |
73 |
5.2 Вікна повідомлень |
75 |
5.3 Контрольні запитання |
82 |
5.4 Практичні завдання |
82 |
5.5 Тест |
87 |
6 Робота з файлами |
88 |
6.1 Файли довільного доступу |
88 |
6.2 Файли послідовного доступу |
91 |
6.3 Бінарні файли |
92 |
5.4 Контрольні запитання |
98 |
5.5 Практичні завдання |
99 |
7 Використання Visual Basic for Application у Microsoft Excel |
101 |
7.1 Основні поняття |
101 |
7.2 Редактор VBA |
102 |
7.3 Створення функцій користувача |
104 |
7.4 Автоматизація розрахунків на робочому листі |
111 |
7.5 Робота з формами у середовищі VBA |
117 |
7.6 Контрольні запитання |
123 |
7.7 Практичні завдання |
123 |
7.8 Тест |
132 |
Література |
134 |
Символ & проставляється перед буквою, яка може використовуватися в сполученні з клавішею Alt +[символ латинського алфавіту] для виконання дій, що відповідають командній кнопці
Переміщення повзунка виконується перетягуванням при натиснутій лівій кнопці миші або за допомогою кнопок , , ,
Властивість визначає, що об’єкт буде в рамці
Поле можно буде використовувати лише для виведення даних, ввести інформацію неможливо.
Початок
Введення су-ми нарахова-ної зар. пл. S
Друкуван-ня SV
Кінець
PP = S 0.13
S<= 150
EMBED Equation.3
EMBED Equation.3
SV = S – PP - S
так
ні
Початок
Введення суми внеску SPV
SR = SPV i = 1
i <= P
EMBED Equation.3
i = i + 1
Друкування суми на рахунку SR
ні
так
Введення банківського відсотку V
Введення періоду P
Кінець
Початок
Кінець
Введення суми внеску SPV
SR = SPV i = 1
i <= P
EMBED Equation.3
i = i + 1
Друкування суми на рахунку SR
ні
так
Введення банківського відсотку V
Введення періоду P
Початок
Введення початкових даних: вид морозива, вага (V), вибір додатків
Обрано пломбір?
Друкуван-ня C, K
Кінець
так
Додати збиті вершки?
Додати шоколад?
Додати горіхи?
Обрано вершкове?
Обрано молочне?
Обрано полу-нич.джем?
Обрано вишневий джем?
Обрано пома-ранчевий джем?
C=V*0.9/100 K=V
C=V K=V*110/100
C=V*0.8/100 K=V*90/100
C=C+0.3 K=K+50
C=C+0.25 K=K+47
C=C+0.4 K=K+48
C=C+0.7 K=K+80
C=C+0.5 K=K+120
C=C+0.9 K=K+130
так
так
так
так
так
так
так
так
ні
ні
ні
ні
ні
ні
ні
ні
ні
Рисунок 3.2 - Блок-схема розв’язання задачі
Вікно
Таблиця
Підсумки
Вихід
Розрахунок
Сума
Підсумок
Меню програми
Параметри
Рисунок 4.2 - Меню програми – приклада
Необов’язкова частина програми!