Роздрукувати сторінку
Главная \ Методичні вказівки \ Методичні вказівки \ 1553 Практична робота 22 на тему Visual Basic та Розробка додатків, що реалізують циклічний обчислювальний процес

Практична робота 22 на тему Visual Basic та Розробка додатків, що реалізують циклічний обчислювальний процес

« Назад

Практична робота №22

Тема: Visual Basic. Розробка додатків, що реалізують циклічний обчислювальний процес”

Мета: навчитись використовувати засоби Visual Basic для розробки додатків, що реалізують   циклічний обчислювальний процес.

Хід роботи

Запишіть у зошит тему і мету роботи. Складіть звіт виконання практичної роботи. Всі завдання повинні бути сформульовані у звіті. Програмний код процедур у завданнях 2 і 3 охайно запишіть у звіті. Для прикладів, наведених у завданні 1 розробити проекти самостійно.

Завдання 1. Уважно вивчіть теоретичні відомості.

Теоретичні відомості

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

Впорядкована послідовність дій, що повторюється, називають циклом. Перелік дій циклу називають  тілом циклу.

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

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

У VisualBasic існують керуючі конструкції мови програмування, призначені для управління циклічним обчислювальним процесом.Їх називають операторами циклу. Існують такі різновиди операторів циклу.

Оператор циклу з лічильником  For... Next.  Цей оператор циклу має у своїй структурі змінну-лічильник, для якої задають її початкове значення, крок зміни і  кінцеве значення. Цикл виконується доти, доки поточне значення змінної-лічильника не дорівнюватиме кінцевому; далі буде виконуватися оператор, розташований після оператора циклу.

Загальний вигляд оператора такий:

For <змінна циклу = початкове значення> То <кінцеве значення> [Step<крок циклу>]

Тіло циклу

Next [змінна циклу]

Приклад 1. Наприклад, процедура події (клацання на командній кнопці Commandl) може  у формі друкувати номер рядка:

Private Sub Commandl_Click()

Dim i As Integer

For і = 1 To 15 Step 3

Print i

Next

End Sub

У наведеному прикладі початкове значення змінної-лічильника дорівнює 1, крок циклу 3, кінцеве значення змінної-лічильника15. Після виконання чергового кроку циклу до змінної-лічильника додається значення 3, а розраховане значення порівнюється з кінцевим (15). Якщо останнє ще не досягнуто, то друкується черговий рядок, інакше цикл закінчує свою роботу і керування передається оператору, розташованому після оператора Next.

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

Сxoжий на оператор циклу For... Next, але використовується для обробки всіх елементів деякого набору. Наприклад, для елементів управління Форми  (Controls) чи певної властивості цих елементів.

Синтаксис конструкції ForEach... Next:

ForEach елемент In група

конструкції

Next елемент

При використанні конструкції ForEach... Next необхідно завжди мати на увазі, що для набору параметр елемент може бути тільки змінною типу Variant, загальною змінною типу Object або об'єктом, перерахованим в ObjectBrowser.

Приклад 2. В цьому прикладі об’єкти форми змінюють своє положення у формі. Цей процесс реалізований з використанням оператора циклу ForEach... Next. Процедура події (клацання на командній кнопці Commandl) у формі frmRriklad може  мати такий код:

Private Sub Commandl_Click()

For Each  Control in frmRriklad.Controls

Control.Left= Control.Left+200

Next Control

End Sub

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

1. Оператор циклу DoWhile ... Loop

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

Синтаксис конструкції Do... Loop:

DoWhileумова

конструкції

Loop

Умова виконання циклу перевіряється перед кожним проходом циклу. Якщо вона дорівнює True, то виконується послідовність команд, які розташовані між DoWhileі ключовим словом Loop. У такій конструкції можлива ситуація, за якої тіло циклу не виконається жодного разу, якщо при першій перевірці умови вона матиме значення False.

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

Цей  синтаксичний варіант відрізняється від розглянутого вище розташуванням умови. У другому варіанті конструкції умова розташовується наприкінці циклу:

Do

конструкції

LoopWhileумова

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

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

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

Даний оператор  має такий синтаксис:

DoUntilумова

конструкції

Loop

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

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

Do

конструкції

LoopUntil  умова

 

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

Нехай, наприклад, треба розрахувати значення Y за­лежно від введеного значення X. Тоді фрагмент програ­ми матиме такий вигляд:

X = InputBox ("Значення X")

Do While Х> О

Y=sqr(3*Х+7)

X = InputBox ("Значення X")

Print X;Y

Loop

У наведенному вище прикладі цикл працює тоді, коли  введені значення Х задовольняють умову Х>О.

У наведеному нижче прикладі  цикл працює тоді, коли X<5:

X = InputBox ("Значення X")

Do Until X>5

Y=sqr(15-3*Х)

X = InputBox ("Значення X")

Print X;Y

Loop

 

Різновиди процедур: процедура типу Function і процедура типу Sub

Процедури обробки подій є локальними процедурами, пов’язаними з певною формою.

Для того, щоб зробити певні процедури загальнодоступними, їх потрібно оголосити в одному чи декількох стандартних модулях.  Стандартний модуль, або модуль програми, являє собою особливий файл з розширенням bas, який зберігає змінні і процедури,  які можуть бути використані у будь-якому місці програми. Стандартний модуль входить до складу проекту, він, як і форми, може   бути збережений у зовнішній пам’яті: меню File, команда Save Module1 , вказати місце збереження і ім’я модуля. Стандартних модулів, як і форм, у проекті може бути декілька.На відміну від форм, стандартний модуль не містить об’єктів і встановлюваних властивостей об’єктів, а тільки текст програми, який може бути відображеним і відредагованим у вікні редактору коду.

В процедурах обробки подій користувач може використовувати власноруч розроблені  процедури, оголошені у стандартному модулі даного проекту.

Існують такі різновиди процедур стандартного модуля: процедура типу Function (функції) і процедура типу Sub (підпрограми).

Функції створюються тоді, коли деякі дії потрібно виконувати кілька разів у програмі. Для створення власної процедури типу Function необхідно використати такі оператори:

Function <ім'я функції> ([аргументи функції]) [As <тип>]

Конструкції тіла  функції

End Function

Тут:

  • ім'я функції — значення, яке повертається у про­цедуру виклику після виконання процедури;

  • аргументи  функції —імена змінних, значення яких ви­користовуються функцією (якщо аргументи потрібні);

  • тип  — це тип значень, які повертає функція, якщо цей опис відсутній, то за замовчуванням тип Variant.

Зауваження. Квадратні дужки у синтаксичній формулі вказують на необов’язковість наявності параметра.

Останній оператор у тілі функції зазвичай -  оператор присвоєння імені функції обчисленого значення.

Приклад 3.

Function TotalTax(Cost)

StateTax=Cost*0.05  ‘Податки штату 5%

CityTax= Cost*0.015  ‘Міські податки 1,5 %

TotalTax= StateTax + CityTax

End Function

Для активізації процедури типу Function треба ввести в про­граму ім'я процедури з тією кількістю аргументів, які використовувалися при її оголошенні. Зазвичай процедури типу Function (функція) розробляють з метою виконання певних обчислень.

!!!!!Використовуються за тими ж правилами як і стандартні функції: значення функції зазвичай присвоюється змінній чи властивості об’єкта.

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

Процедура типу Sub, на відміну від процедури типу Function, після її виконання повертає значення в аргу­ментах процедури або виконує певні дії (наприклад, дру­кування даних).

Для створення такої процедури використовують опе­ратори

Sub <ім'я > ([аргументи]) [As <тип>]

Конструкції тіла процедури

End Sub

Тут:

•  ім'я  — це ім'я процедури, що створюється;

• аргументи — імена змінних, значення яких використовуються функцією і повертаються у процедуру виклику;

•  тип  — це тип значень, які повертає функція.
Зауваження. Квадратні дужки у синтаксичній формулі вказують на необов’язковість наявності параметра.

Приклад 4.

Процедура, що виконує друкування значень, має вигляд

Sub PR (X,Y)

Printer.FontName = "Arial" ' установлення шрифту

 Printer.FontSize = 16 ' установлення розміру шрифту

 Print X; Y

End Sub

 

Команда Exit

При програмуванні коду інколи виникає ситуація, коли необхідно перервати виконання циклу до його повного завеоршення. Це можна зробити за допомогою команди без­умовного переходу Exit. Ця команда завершує виконання циклу і передає управління наступній за циклом конструкції. Синтаксис цього оператора всередині циклу For - ExitFor, середині циклів Do- ExitDo.

Приклад 5.

X = InputBox ("Значення X",X)

Do Until X>5

If X=2 Then Exit Do

Y=(2*X+5)/(X-2)

X = InputBox ("Значення X",X)

Print X;Y

Loop

Зауважимо, що оператор Exitтакож слугує для виходу з процедур Subі Function. Його синтаксис у цьому випадку відповідно ExitSub і ExitFunction. Ці оператори можуть знаходитися в будь-якому місці тіла процедури і, як правиkо, застосовуються або тоді, коли функція чи процедура ви-конала необхідні дії, і з неї необхідно вийти, або як програмована реакція на виникнення помилки.

Завдання 2. Розробіть додаток для обчислення суми значень функції на відрізку значень аргумента X з заданим кроком зміни, з можливістю у діалоговому режимі задавати відрізок значень аргумента і кроку його зміни.

Інформаційна модель. Обчислювальний процес є циклічним. Нехай значення початку a і кінця b відрізку зберігають змінні відповідно a і b. Змінна циклу - значення аргумента Х, нехай ім’я змінної циклу буде Arg, вона зберігатиме поточне значення аргументу Х.  Крок змінної циклу = кроку зміни аргумента Х, нехай змінна Krok буде зберігати це значення . Поточне значення функції Y  нехай зберігається у змінній Y . Cума обчислених значень функції буде зберігатись у змінній Sum. Тіло циклу складають:

- операція обчислення значення  змінної Y,

- обчислення суми значень функції у змінній Sum,

- зміна значення змінної циклу Arg.

Умова завершення циклу: Arg > b.

Тип змінних a, b, Arg, Krok, Y, Sum − Double.

 

Реалізація проекту у Visual Basic

1. Активізуйте Visual Basic:
Пуск−> Программы−> Visual Basic−> Visual Basic 6.0
.

2. Розробимо форму з назвою Сума, в якій будуть такі об’єкти:

- 5 написів Label1 – Label5

- 3 текстових поля Text1 – Text3 для введення даних (два поля для введення значення початку і кінця відрізка a і b, одне для введення  кроку h зміни аргумента

- одна командна кнопка Command1. З командною кнопкою Command1 пов’язана подія – клік на цій кнопці, який запускає на виконання процедуру обчислення суми виплат.

- Результат обчислення суми значень функції виводиться у напис з ім’ям Label5. Програмний код  процедури потрібно розробити.

3. У вікні властивостей форми задайте для властивості Caption значення Сума, для властивості ForeColor виберіть зі списку вказаний на рисунку колір.

4. Для всіх написів задайте відповідне значення (властивість Caption), колір фону і вирівнювання по центру у відповідності з наведеним нижче рисунком.

5. Для текстових полів також задайте зачення „пусто” (властивість Text), вирівнювання по центру у відповідності з наведеним нижче рисунком.

6. Дотримайтесь вказаного розташування об’єктів і усвідомте логічний зв’язок між об’єктами:

Label1 −> Text1

Label2 −> Text2

Label3 −> Text3

7. Для командної кнопки Command1 встановіть значення Обчислити (властивість Caption), вирівнювання по центру у відповідності з рисунком.

8. Двічі клацніть на командній кнопці і у вікні редактору коду створіть код процедури як у наведеному нижче вікні, після чого закрийте вікно коду.

Private Sub Command1_Click()

Dim a, b, Arg, Y, Krok, Sum As Double

a = Val(Text1.Text)

b = Val(Text2.Text)

Krok = Val(Text3.Text)

Arg = a     ‘ початкове значення змінної циклу

Sum = 0  ‘очищення змінної

Do While Arg <= b

Y = 7 * Arg + Abs(5 * Arg ^ 3 - 7 * Arg + 4) + _

(2 * Arg ^ 2 + 1) / (3 * Abs(Arg) + 5)

Sum = Sum + Y

Arg = Arg + Krok

Loop

Label5.Caption = Sum

End Sub 

Тут використано оператор циклу Do While ... Loop.

!!!!Зверніть увагу на перенесення продовження виразу у наступний рядок (пропуск і символ підкреслення).

9. Збережіть форму і проект у своїй папці на локальному комп’ютері:

збереження форми: меню File −> Save Form −> у діалоговому вікні вкажіть місце збереження Мои документы і ім’я форми Сума, після чого натисніть кнопку Сохранить.

Збереження проекту: меню меню File −> Save Project −> у діалоговому вікні вкажіть місце збереження Мои документы і ім’я проекта Proj_ Сума, після чого натисніть кнопку Сохранить.

10. Запустіть розроблений проект на виконання, скориставшись відповідним меню або кнопкою старт панелі інструментів. При цьому на екрані з’явиться вікно  форми Сума, в якому в текстових полях потрібно задати значення відповідних величин і натиснути кнопку Обчислити. Після виконання обчислень у формі  у написі Label5 буде виведено результат обчислення суми значень функції. Перевірте відповідність отриманого результату наведеному нижче:

11. Виконайте модифікацію коду процедури обробки події для командної кнопки у відповідності  з наведеним нижче текстом:

Private Sub Command1_Click()

Dim a, b, Arg, Y, Krok, Sum As Double

a = Val(Text1.Text)

b = Val(Text2.Text)

Krok = Val(Text3.Text)

Arg = a     ‘ початкове значення змінної циклу

Sum = 0  ‘очищення змінної

Do While Arg <= b

Y = 7 * Arg + Abs(5 * Arg ^ 3 - 7 * Arg + 4) + _

(2 * Arg ^ 2 + 1) / (3 * Abs(Arg) + 5)

Print Y

Sum = Sum + Y

Arg = Arg + Krok

Loop

Label5.Caption = Sum

End Sub 

Команда Print Y буде друкувати на формі значення Y. Запустіть проект на виконання і переконайтесь у цьому.

12. Виконайте модифікацію коду процедури обробки події для командної кнопки у відповідності  з наведеним нижче текстом:

Private Sub Command1_Click()

Dim a, b, Arg, Y, Krok, Sum As Double

a = Val(Text1.Text)

b = Val(Text2.Text)

Krok = Val(Text3.Text)

Arg = a     ‘ початкове значення змінної циклу

Sum = 0  ‘очищення змінної

Do While Arg <= b

Y = 7 * Arg + Abs(5 * Arg ^ 3 - 7 * Arg + 4) + _

(2 * Arg ^ 2 + 1) / (3 * Abs(Arg) + 5)

Form1.ForeColor = vbRed

Form1.Font.Italic = True

Print Y

Sum = Sum + Y

Arg = Arg + Krok

Loop

Label5.Caption = Sum

End Sub 

Команди  Form1.ForeColor = vbRed  і Form1.Font.Italic = True змінюють властивості форми (кольору шрифту і шрифт, яким будуть надруковані дані). Запустіть проект на виконання і переконайтесь у цьому.

13. Виконайте наступну модифікацію коду процедури обробки події для командної кнопки у відповідності  з наведеним нижче текстом, в якому застосований оператор циклу

Do ... Loop While: 

Private Sub Command1_Click()

Dim a, b, Arg, Y, Krok, Sum As Double

a = Val(Text1.Text)

b = Val(Text2.Text)

Krok = Val(Text3.Text)

Arg = a     ‘ початкове значення змінної циклу

Sum = 0  ‘очищення змінної

Do

Y = 7 * Arg + Abs(5 * Arg ^ 3 - 7 * Arg + 4) + _

(2 * Arg ^ 2 + 1) / (3 * Abs(Arg) + 5)

Form1.ForeColor = vbRed

Form1.Font.Italic = True

Print Y

Sum = Sum + Y

Arg = Arg + Krok

Loop While Arg <= b

Label5.Caption = Sum

End Sub 

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

14. Виконайте наступну модифікацію коду процедури обробки події для командної кнопки у відповідності  з наведеним нижче текстом, в якому застосований оператор циклу

Do Until... Loop:

Private Sub Command1_Click()

Dim a, b, Arg, Y, Krok, Sum As Double

a = Val(Text1.Text)

b = Val(Text2.Text)

Krok = Val(Text3.Text)

Arg = a     ‘ початкове значення змінної циклу

Sum = 0  ‘очищення змінної

Do Until Arg > b

Y = 7 * Arg + Abs(5 * Arg ^ 3 - 7 * Arg + 4) + _

(2 * Arg ^ 2 + 1) / (3 * Abs(Arg) + 5)

Form1.ForeColor = vbRed

Form1.Font.Italic = True

Print Y

Sum = Sum + Y

Arg = Arg + Krok

Loop

Label5.Caption = Sum

End Sub 

Запустіть проект на виконання і переконайтесь у його успішній роботі.

15. Виконайте наступну модифікацію коду процедури обробки події для командної кнопки у відповідності  з наведеним нижче текстом, в якому застосований оператор циклу

Do... Loop Until:

Private Sub Command1_Click()

Dim a, b, Arg, Y, Krok, Sum As Double

a = Val(Text1.Text)

b = Val(Text2.Text)

Krok = Val(Text3.Text)

Arg = a     ‘ початкове значення змінної циклу

Sum = 0  ‘очищення змінної

Do

Y = 7 * Arg + Abs(5 * Arg ^ 3 - 7 * Arg + 4) + _

(2 * Arg ^ 2 + 1) / (3 * Abs(Arg) + 5)

Form1.ForeColor = vbRed

Form1.Font.Italic = True

Print Y

Sum = Sum + Y

Arg = Arg + Krok

Loop Until Arg > b

Label5.Caption = Sum

End Sub 

Запустіть проект на виконання і переконайтесь у його успішній роботі. Чим відрізняється остання процедура від попередньої?

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

Private Sub Command1_Click()

Dim a, b, Arg, Y, Krok, Sum As Double

a = Val(Text1.Text)

b = Val(Text2.Text)

Krok = Val(Text3.Text)

Arg = a     ‘ початкове значення змінної циклу

Sum = 0  ‘очищення змінної

Print "x", "Y"

Do

Y = 7 * Arg + Abs(5 * Arg ^ 3 - 7 * Arg + 4) + _

(2 * Arg ^ 2 + 1) / (3 * Abs(Arg) + 5)

Form1.ForeColor = vbRed

Form1.Font.Italic = True

Print Arg, Y

Sum = Sum + Y

Arg = Arg + Krok

Loop Until Arg > b

Label5.Caption = Sum

End Sub

Запустіть проект на виконання і переконайтесь у його успішній роботі. Чим відрізняється остання процедура від попередньої?

17. Щоб надати розробленому проекту статусу незалежного додатку, потрібно зберегти цей проект як виконуваний (скомпільований файл) з розширенням ЕХЕ. Для цього потрібно у меню File вікна редактора Visual Basic  клацнути на команді Make Proj_ Сума.exe і вказати місце збереження та ім’я файлу. Збережіть додаток у вашій власній папці на сервері.

18. Виконайте обчислення для відрізку [0;1] з кроком 0.1.

Завдання 3. Розробіть додаток для обчислення добутку усіх непарних чисел з відрізка [1;20].

Математична модель додатку.

Перше непарне число на цьому відрізку – 1, наступне утворюється додаванням до попереднього числа 2. Щоб отримати добуток, потрібно виконати множення всіх непарних чисел з заданого відрізка. Обчислювальний процес можна розглядати як циклічний.

Реалізація проекту у Visual Basic

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

1. Активізуємо новий проект. Розробимо форму з 3 написами і однією командною кнопкою у відповідності з наведеним нижче рисунком.

2. Створимо код процедури обробки події – клацання на командній кнопці Обчислити. Для реалізації циклічного обчислювального процессу можна застосувати оператори  Do... Loop.  Змінна Arg зберігає поточне значення непарного числа, вона є змінною циклу.  Змінна Dob зберігає поточне і кінцеве значення добутку непарних чисел. Використаємо явне оголошення змінних з застосуванням суфіксів. У вікні редактора коду створіть програмний код:

Private Sub Command1_Click()

Dim Arg!, Dob#

Arg! = 1

Dob# = 1  ’присвоєння значення 1 змінній Dob, в якій буде накоплюватись ’добуток, перед початком циклу є обов’язковим!

Do Until Arg! > 20

Dob# = Dob# * Arg!

Arg! = Arg! + 2

Loop

Label3.Caption = Dob#

End Sub

3. Збережіть форму і проект у своїй папці на локальному комп’ютері:

збереження форми: меню File −> Save Form −> у діалоговому вікні вкажіть місце збереження Мои документы і ім’я форми Добуток, після чого натисніть кнопку Сохранить.

Збереження проекту: меню меню File −> Save Project −> у діалоговому вікні вкажіть місце збереження Мои документы і ім’я проекта Proj_ Добуток, після чого натисніть кнопку Сохранить.

4. Запустіть проект на виконання. Порівняйте отриманий результат з наведеним нижче.

5. Щоб надати розробленому проекту статусу незалежного додатку, потрібно зберегти цей проект як виконуваний (скомпільований файл) з розширенням ЕХЕ. Для цього потрібно у меню File вікна редактора Visual Basic  клацнути на команді Make Proj_Добуток.exe і вказати місце збереження та ім’я файлу. Збережіть додаток у вашій власній папці на сервері.

Завдання 4. Зробіть висновки. Запропонуйте свої варіанти розробки додатків. Захистіть виконану роботу.

Питання до захисту практичної роботи

  1. Яку мовні конструкції для реалізації циклічних обчислювальних процесів має Visual Basic?

  2. Що таке „змінна циклу”, „тіло циклу”, „крок циклу”?

  3. Який синтаксис має оператор циклу For... Next  і як він працює у Visual Basic?

  4. Який синтаксис має оператор циклу DoWhile ... Loop  і як він працює у Visual Basic?

  5. Який синтаксис має оператор циклу Do... Loop  Whileі як він працює у Visual Basic?

  6. Який синтаксис має оператор циклу DoUntil ... Loop  і як він працює у Visual Basic?

  7. Який синтаксис має оператор циклу DoWhile ... Loop  і як він працює у Visual Basic?

  8. Яке призначення має команда Exit?

  9. Які різновиди процедур користувача існують?

  10. Чи відрізняються процедури типу Function від процедур типу Sub?

Завдання 5. Завершіть свій сеанс роботи і впорядкуйте своє  робоче місце.

З повагою ІЦ "KURSOVIKS"!