Приклад 7.2
Завдання: створити форму (рис. 7.3) для розв'язування задачі на табулювання функції. Побудувати у цій формі головне меню, передбачивши такі команди: закінчити роботу програми, табулювати функцію, очистити поля виведення результатів. Результати табулювання вивести у багаторядкове поле редагування (об'єкт типу Text).
Об'єкт CheckBox використовують, якщо потрібно вивести результати табулювання похідної функції, що задана. Виконання. Для розвязування прикладу потрібно здійснити такі операції: 1. Завантажити середовище Visual Basic. 2. 3мінити заголовок (Caption) форми " Forml " на " Табулювання функції " (без лапок) і збільшити розміри форми, а також змінити ім'я форми " Forml " на Таблр. 3. 3берегти виконану на даний момент форму у власній папці (File → Save Project). 4. Вставити у форму (рис. 7.4) поля редагування объект 5. Розташувати у формі поля редагування вікна Text2, Text3, Text4, і відповідні їм текстові поля " Початкове значення Х ", " Кінцеве значання Х ", " Крок зміни Х ", а також поле для такого вигляду даної функції: Y = Exp(–X) + X^2 + X + 1 (Label1). Розмір, стиль і колір шрифтів виберати на власний розсуд таким чином, щоб форма мала привабливий вигляд. Розмістити текстове поле Text5, призначене для подання інформації про навчальний заклад, факультет, групу і прізвище студента, який виконує завдання. 6. Задати початкові значення для полів редагування лівої і правої меж аргумента функції та для кроку зміни цього аргумента, відповідно до зразка, зображеного рис. 7.4. Для цього змінити властивість Text цих об’єктів.
7. Вирівняти вставлені поля редагування по лівому краю першого об'єкта та зробити їхні розміри однаковими. 8. Вставити у форму прапорець 9. Ввести назви команд головного меню форми (див. рис. 7.5). При цьому команди головного меню, як і інші компоненти Visual Basic, являють собою об'єкти. Отже для створення команд треба вибрати елемент головного меню Tools → Menu Editor. У вікні, що при цьому з'явиться, ввести назви команд меню (властивість Caption) та їхні імена (властивість Name), щоразу натискаючи на кнопку " Next " (табл. 7.1). Таблиця 7.1 Назви пунктів головного меню і відповідні їм імена
Далі потрібно задати ієрархію команд за допомогою стрілок:
10. 3апрограмувати команду " Очистити " головного меню. Для цього клацнути у місці команди головного меню форми " Очистити ", не запускаючи програму на виконання, тоді з'явиться заготівка процедури реакції на подію виклику цієї команди, у ній потрібно записати команду присвоєння порожнього рядка для очистки поля редагування Textl, Text2, Text3, Text4, а саме: Private Sub mnuClear_Click() Text1.Text = " " Text2.Text = " " Text3.Text = " " Text4.Text = " " End Sub 11. Запрограмувати команду " Кінець " головного меню, скориставшись стандартною процедурою End: Private Sub mnuEnd_Click() End End Sub 12. 3апрограмувати команду " Табулювання ". Для цього клацнути один раз в її місці, тоді з'явиться заготівка процедури, яку необхідно заповнити. Весь програмний код приведений нижче: ' Процедура очищення текстових вікон виведення результатів Private Sub mnuclear_Click() Text1.Text = " " Text2.Text = " " Text3.Text = " " Text4.Text = " " End Sub ' Процедура створення смуги прокручування початкового значення Х Private Sub HScroll1_Scroll() HScroll1_Change End Sub Private Sub HScroll1_Change() lb1 = Str(HScroll1) ' Виведення початкового значення Х у вікні Text3 ' за допомогою смуги прокручування Text2.Text = lb1 End Sub ' Процедура створення смуги прокручування кінцевого значення Х Private Sub HScroll2_Scroll() HScroll2_Change End Sub Private Sub HScroll2_Change() lb2 = Str(HScroll2) ' Виведення кінцевого значення Х у вікні Text3 ' за допомогою смуги прокручування Text3.Text = lb2 End Sub 'створення смуги прокручування кроку зміни Х Private Sub HScroll3_Scroll() HScroll3_Change End Sub Private Sub HScroll3_Change() lb3 = Str(HScroll3) ' Виведення кроку зміни Х у вікні Text3 'за допомогою смуги прокручування Text4.Text = lb3 End Sub ' Процедура виходу з програми за допомогою меню Private Sub mnuend_Click() 'вихід з програми End End Sub ' Процедура створення меню для роботи програми Private Sub mnutablr_Click() Dim x, y As Double 'оголошення типу даних Double Dim NewLine, Space As String 'оголошення типу даних String NewLine = Chr(13) + Chr(10) 'Символ " Enter" Space = Chr(9) 'Символ " Tab" If Check1.Value = Checked Then ' Побудова шапки таблиці для обчислення функції Y та її похідної Y' Text1.Text = " X" + Space + " Y" + Space + " Y'" + NewLine Else ' Побудова шапки таблиці для обчислення функції Y Text1.Text = " X" + Space + " Y" + NewLine End If For x = Val(Text2.Text) To Val(Text3.Text) Step Val(Text4.Text) y = Exp(-x) + x ^ 2 + x + 1 ' обчислення функції Y Y1 = -Exp(-x) + 2 * x + 1 ' обчислення похідної Y' If Check1.Value = Checked Then ' Вивідення в текстовому вікні Text1 ' результатів обчислення функції Y та похідної Y' Text1.Text = Text1.Text + Str(Format$(x, " 0.00")) + Space + _ Str(Format$(y, " 0.00")) + Space + Str(Format$(Y1, " 0.00")) + _ NewLine Else ' Вивідення в текстовому вікні Text1 результатів обчислення функції Y Text1.Text = Text1.Text + Str(x) + Space + _ Str(Format$(y, " 0.00")) + NewLine End If Next x End Sub
Контрольні питання
1. Яка різниця існує в написанні програм для арифметичних та ітераційних циклів? 2. Як працює оператор для запису арифметичних циклів? 3. Назвіть оператори для запису ітераційних циклів, чим вони відрізняються один від одгного? 4. Що нового з'являється в програмах зі складними циклами в порівнянні із програмами простих циклічних процесів? 5. Яким чином можна додати в проект нові форми і для чого їх можна використовувати? 6. Які можливості створює використання меню в програмі? 7. Яким чином можна використовувати в різних підпрограмах однакові змінні? 8. Напишіть проект для обчислення такої функції: у = n!, вибираючи значення n за допомогою лінійки прокручування. 9. Складіть програму обчислення функції F = S2, де і = l–4–n, виведіть значення і, і2, F. 10. Напишіть проект завантаження масиву чисел і вибору з нього максимального або мінімального значення (використовуючи селекторні кнопки) та вибору можливості розрахунку середнього значення введених чисел (застосовуючи прапорець).
8. ГРАФІКА В VISUAL BASIC
8.1. Загальні положення
Visual Basic дозволяє створювати програми, які працюють з графікою. Програма може вивести зображення на поверхню форми або її компоненти PictureBox. Для того, щоб під час роботи програми на поверхні об'єкта з'явилася, наприклад, ілюстрація або лінія, необхідно використати відповідний метод. Графіку на поверхні об'єкта повинна формувати процедура обробки події Paint. Це пояснюється необхідністю оновлення графіки при кожній появі об'єкта на екрані, а подія Paint якраз і виникає щоразу, коли об'єкт з'являється на екрані (в т. ч. і після того, як користувач зсуне інше вікно, яке частково або повністю перекриває вікно програми).
8.2. Поняття про координатну систему
Коли виконується робота з графічними елементами або використовуються інструменти малювання, необхідно описувати, де саме на формі (або на компоненті PictureBox) розташовуватиметься потрібний елемент (або намалюється вибрана геометрична фігура). Щоб визначити положення того або іншого графічного елемента або образу, використовуються координати. Будь-яка точка на формі або на малюнку може бути описана за допомогою пари чисел X і Y, які задають точне її розташування (X – горизонтальна координата, Y – вертикальна). На відміну від математичних позначень, у середовищі Visual Basic вертикальна координата Y зростає не знизу вгору, а навпаки – згори вниз, а горизонтальна координата X збільшується стандартно – зліва направо (рис. 8.1). При цьому в середовищі Visual Basic робота з графічними елементами може виконуватися в різних системах координат, залежно від яких змінюється здатність розрізнювати зображення. Найбільш звичною для користувачів, як правило, є одиниця вимірювання піксель. У цих одиницях вимірюється розрізнювальна здатність монітора. Крім того, розмір растрових малюнків також вимірюється в пікселях. Проте недолік цієї одиниці вимірювання полягає в тому, що всі графічні об'єкти, які вимірюються за допомогою пікселів, виявляються залежними від встановленої на даний момент розрізнювальної здатності екрана. Стандартна система координат в середовищі Visual Basic припускає використання одиниць вимірювання, які називаються твіпами. Одін твип дорівнює 1/20 пункта або 1/1440 дюйма. Ця одиниця вимірювання є точнішою, ніж піксель. Разом з твіпами використовуються також інші одиниці вимірювання, опис яких наведено в табл. 8.1.
Таблиця 8.1. Опис одиниць вимірювання (властивість ScaleMode), які використовуютьсяв Visual Basic
З метою програмної установки користувацької системи координат використовується метод Scale, для якого характерний такий синтаксис: об'єкт.Scale (XI, Yl) – (Х2, Y2) де об'єкт – поверхня форми Form або об'єкта Picture (компонент PictureBox); X1, Y1 – координати верхнього лівого кута графічного поля в стандартній системі координат; X2, Y2 – координати правого нижнього кута графічного поля в теж у стандартній системі координат.
|