- •05:58 Хвилини :q Секунди о
- •Puc.X.Is Форма та вікно програми «Таймер»
- •IfInStr(Text3.Text, ".") 00 Then
- •Десяткова крапка ","
- •Під час ініціалізації форми властивості Tag кожній цифровій кнопці треба привласнити значення, рівне цифрі, яка повинна з'явиться на індикаторі калькулятора.
- •Процедура DigitClick обробляє клацання на кнопках йди _ йди % якості вхідного параметра цієї процедури використовується ім'я кнопки, для якої ця процедура повинна виконатися.
- •Pue.1.10 Форма та вікно програми «Час»
- •VbOkOnly, "Таймер")
- •1 Пал під таймера
IfInStr(Text3.Text, ".") 00 Then
KeyAscii =o End If
Case 13 ' клавіша <Enter>
при натисненні клавіші <Enter> встановлюється фокус на кнопку Обчислити
Cammandi .SetFocus Case Else
Завдання 6. Програма обчислює дохід по вкладу. Вона забезпечує розрахунок простих і складних відсотків. Прості відсотки
нараховуються в кінці терміну вкладу, складні — щомісячно і додаються до первинної суми вкладу. В наступному місяці відсотки нараховуються на нову суму. Форма програми приведена на рис.1.4.
Puc.1.4. Форма програми « Дохід no вкладу»
клацання на кнопці Обчислити Private Sub Conmandi_ClickQ Dim sum As Single ' сума вкладу
Dim pr As Single ' процентна ставка Dim srok As Integer ' термін вкладу Dim dohod As Single ' дохід no вкладу Dim buf As Single Dim і As Integer
отримання початкових даних sum = Val(Texti.Text) srok = Val(Text2.Text)
pr = Val(Text3.Text)
If Optioni.Value = True Then
вибраний перемикач Прості відсотки
dohod » sum * (pr/ioo) * (srok/360)
Else
вибраний перемикач Складні відсотки buf = sum For i = 1 To srok buf= buf+ buf*(pr/ioo) сума в кінці терміну вкладу записується в buf dohod = buf - sum Next і End If
sum = sum + dohod
Labebt.Caption = "Дохід:" +Format$(dohod, "0.00") +. Chr(i3) +_
"Сума в кінці терміну вкладу: " +_ Format$(sum, "0.00")
End Sub
вибір перемикача Прості відсотки Private Sub Optioni_Click()
Labels.Caption = "Термін (днів):"
LabeLfCaption = ""
End Sub
вибір перемикача Складні відсотки Private Sub Option2_Cliek()
Labels.Caption = "Термін (міс.):" LabeLf.Caption =
End Sub
ШІЕМВД
Програма обраховує опір електричного ланцюга, то складається з двох резисторів
Опір R1 (Ом): Опір R2 (Ом):
Тип з'єднання
Послідовне
Паралельне
Завдання 7* Програма обчислює опір електричному ланцюгу, що складається з двох опорів. Опори можуть бути сполучені послідовно або паралельно. Форма програми приведена на рис.1.5. Якщо величина опору ланцюгу перевищує юооОм, результат виводиться в кОм.
Обрамувати
Рис.1.5. Форма програми «Опір електричного ланцюга»
клацання на кнопці Обчислити
Private Sub Convnandi_Click Q
Dim rl, Г2 At Single ' значення опорів
Ri і R2
Dim r KB Single ’ опір ланцюгу Отримання початкових даних
Ri = Val(Texti.Text) гг = Val(Text2.Text)
If (ri = o)And (гг = o) Then
LabeLf.Caption = "Потрібно задати величину хоч би " + _ "одного опору."
Exit Sub End If
Перемикачі "Послідовне з'єднання" і "Паралельне з'єднання" залежні, тому про типа з'єднання можна судити за станом одного з них.
If Optioni.Value = True Then вибраний перемикач Послідовне з'єднання
Г = Г1 + Г2
Else
вибраний перемикач Паралельне з'єднання
Г =(п* Г2)/(Г1 + Г2)
End If
I.abeLf.Caption = "Опір ланцюгу: "
Ifr< іооо Then
Labe I4.Caption = La ЬеІ4- Cap lion + _
Format$(r/ "0.00") + "Ом"
Else
r = r / IOOO Label4.Caption = LabeL%. Caption +__
Format$(r, "0.00")+ " kOm"
End If End Sub
клацання на перемикачі "Послідовне з'єднання"
Private Sub Optioni_Click() користувач змінив типа з'єднання очистимо поле виводу від попереднього обчислення
Label4.Caption = ""
End Sub
клацання на перемикачі "Паралельне з'єднання”
Private Sub Option2_Click()
Label4.Caption = ""
End Sub
Завдання 8. Програма обчислює силу струму, напругу або опір електричному ланцюгу, використовуючи закон Ома. Форма програми приведена на рис.1.6.
ЦП
Струм
Напруга
Опір
Напруга (Вольт) Опір (Ом)
Обрахувати
Рис.і.6. Форма програми «Закон Ома»
обчислення струму, напруги або опору Sub CalculateQ Dim I As Single ' струм
Dim U As Single ' напруга
Dim R As Single ' опір
If Optioni.Value = True Then ' струм U = Val(Textl. Text)
R = Val(Text2.Text)
IfR <> o Then I = U / R
Label3.Caption = "Струм: " + Format$(I, "o.oo") + "A"
Else
ЬаЬеїз.Caption = "Опір не має бути "+ "дорівнює нулю." End If Exit Sub End If
If Option2.Value = True Then ' напруга I = Val( Texti.Text)
R = Val(Text2.Text)
U= I * R
Label3.Caption = "Напруга: " + __Format$(U, "o.oo") + ” B" Exit Sub
End If
If Options-Value = True Then ' опір U= Val(Texti. Text)
I = Val(Text2.Text)
If I <> o Then R=U / I
Label3.Caption = "Опір: " +
Format$(R, "o.oo”) + " Ом"
Else
Labels.Caption = "Струм не має дорівнювати нулю. End If End If End Sub
клацання на кнопці Обчислити Private Sub Commandl_Click()
If Text і.Text <> "" And Text2.Text <> ""Then
Calculate
Else
ЬаЬеІз.Caption = "Потрібно ввести початкові дані "у обидва поля."
End If End Sub
вибір перемикача Струм
Private Sub Optionl_ClickQ
Labeli.Caption = "Напруга (Вольт):"
Labehi.Caption = "Опір (Ом):"
Labels.Caption = ""
End Sub
вибір перемикача Напруга
Private Sub Option2_Click()
Labeli.Caption = "Струм (Ампер):"
LabeІ2.Caption = "Опір (Ом):"
Label3.Caption =
End Sub
вибір перемикача Опір
Private Sub Option3_Click()
Labeli.Caption = "Напруга (Вольт):"
Label2 Caption = "Струм (Ампер):"
Labels.Caption = ""
End Sub
натиснення клавіші в полі Напруга/Струм
Private Sub TextUKeyPress(KeyAscii As Integer)
Select Case KeyAscii
Case 48 To 57, 8 ' цифри і <Backspace>
Case 13 ' клавіша <Enter>
Texts,SetFocus Case 44, 46 ' крапка і кома KeyAscii =46 не дозволяє вводити знак коми повторно
IfInStr(Texti.Text, ") про о Then KeyAscii =0 End If Case Else
KeyAscii = о 'решта символів не відображується End Select End Sub
натиснення клавіші в полі Опір/Струм
Private Sub Тexts_ KeyPress(KeyAscii As Integer)
Select Case KeyAscii
Case 48 To 57, 8 ’ цифри і <Backspace>
Case 13 ' клавіша <Enter>
Calculate
Case 44, 46 ' крапка і кома KeyAscii =46 не дозволяє вводити знак коми повторно
IfInStr(Text2.Text, о о Then KeyAscii =0 End If Case Else
KeyAscii = о 'решта символів не відображується End Select End Sub
Завдання 9* Програма обчислює вартість поїздки на автомобілі, наприклад, на дачу. Форма програми приведена на рис.1.7.
Відстань (км)
Ц іна бензину (грв^літр)
Використання бензину [літрів на 1 00км)
Обрахувати
Label5
Рис.7-1. Форма програми «Поїздка на дачу»
При ініціалізації форми властивості Tag компонентів Texti, Text2 і Text3 привласнюються відповідне значення і, 2 і 3. Властивість Tag використовується в процедурі KeyPress.
Private Sub Fomr\_Initialixe()
Texti.Tag = 1 ' значення властивості Tag поля Texti
Textz.Tag - 2 ' Tag поля Text2
Texts. Tag =3 ' Tag поля Texts
End Sub
клацання на кнопці Обчислити Private Sub Cammandi_Click()
Dim rast As Single ' відстань
Dim cena As Single ’ ціна
Dim potr As Single ' споживання на іоо km.
Dim summ As Single 1 сума Dim mes As String отримання початкових даних rast = Val(Textl.Text) cena = Val(Text2.Text) potr = Val(Text3.Text)
При читанні даних з полів введення можливий випадок, коли користувач залишить одне з полів введення незаповненим.
If rast = о Or cena = о Or potr = o Then
Labels.Caption = "Дані потрібно ввести у всі поля. "
If Len(Textl.Text) = о Then Texti SetFocus Else
If Len(Text2.Text) = o Then Text2.SetFocus Else Text3.SetFocus End If End If Exit Sub End If
sumn = (rast / 100) *potr *cena mes = "Поїздка на дачу "
If Cheeki.Value = Checked Then summ = summ * 2 mes = mes + "і назад "
End If
mes = mes + Chr(i3) + "обійдеться в " + _
Formats (suiran, "0.00") + "руб."
ЬаЬеЦ. Caption = mes End Sub
Процедура KeyPress обробляє натиснення клавіш в полях Відстань, Ціна і Споживання. Як вхідні параметри цієї процедури використовуються код клавіші KeyAscii і ім’я поля, для якого ця процедура повинна виконатися, що натискує.
Sub KeyPressÇKeyAsdi As Integer, Text As TextBox)
Select Case KeyAscii
Case 48 To 57, 8 ' цифри і <Backspace>
Case 44, 46 ' крапка і кома KeyAscii =46
не дозволяє вводити знак коми повторно IflnStr{Texti.Text, ".”) 00 Then KeyAscii =0 End If
Case 13 ' клавіша <Enter>
Select Case Text.Tag
Case 1 ' клавіша натискає в полі Texti Texts.SetFocus
Case 2 ' клавіша натискає в полі Texts Text3.SetFocus
Case 3 ' клавіша натискає в полі Tetx3 Commandi .SetFocus End Select Case Else
KeyAscii s= о ’решта символів не відображається End Select
End Sub
натиснення клавіші в полі Відстань
Private Sub Texti_KeyPress(KeyAscii A* Integer)
Call KeyPress(KeyAscii, Texti)
End Sub
натиснення клавіші в полі Ціна
Private Sub Texts_keypress(KeyAscii A* Integer)
Call KeyPress(KeyAscii, Text2)
End Sub
натиснення клавіші в полі Споживання
Private Sub Text3_KeyPress (KeyAscii A* Integer)
Call KeyPress(KeyAscii, Text3)
End Sub
Завдання Ю. Програма "Калькулятор" виконує складання і віднімання. Форма програми приведена на рис.1.8. Нижче представлено два варіанти програми. У першому варіанті для кожної цифрової кнопки створена окрема процедура обробки події click. У другому варіанті подію click всіх цифрових кнопок обробляє одна процедура, що дозволило скоротити текст програми.
Базові компоненти 1
Загальні зауваження 1
JË iüLJ 4
клацання на кнопці "Пуск/стоп" 5
Завдання 5. Програма обчислює швидкість (км/год), з якою бігун пробіг дистанцію. Форма програми приведена на рис.1.3. Кількість хвилин задається цілим числом, кількість секунд - дробом. 6
клацання на кнопці Обчислити Private Sub Commandi_Click() 6
обчислення 6
виведення результату 7
натиснення клавіші в полі Дистанція 8
KeyAscii - код символу, відповідного що натискає клавіші. Якщо символ неприпустимий, то процедура замінює його на символ з кодом о. В результаті цього символ в полі редагування не з'являється. 8
при натисненні клавіші <Enter> курсор переводиться у поле Время:мінут 8
натиснення клавіші в полі Час:хвилин 8
натиснення клавіші в полі Час:секунд 8
клацання на кнопці Обчислити 12
клацання на перемикачі "Послідовне з'єднання" 12
клацання на перемикачі "Паралельне з'єднання” 12
Завдання 8. Програма обчислює силу струму, напругу або опір електричному ланцюгу, використовуючи закон Ома. Форма програми приведена на рис.1.6. 14
клацання на кнопці Обчислити Private Sub Commandl_Click() 15
вибір перемикача Струм 15
вибір перемикача Напруга 15
вибір перемикача Опір 15
натиснення клавіші в полі Напруга/Струм 15
натиснення клавіші в полі Опір/Струм 16
Завдання 9* Програма обчислює вартість поїздки на автомобілі, наприклад, на дачу. Форма програми приведена на рис.1.7. 16
При ініціалізації форми властивості Tag компонентів Texti, Text2 і Text3 привласнюються відповідне значення і, 2 і 3. Властивість Tag використовується в процедурі KeyPress. 17
клацання на кнопці Обчислити Private Sub Cammandi_Click() 17
При читанні даних з полів введення можливий випадок, коли користувач залишить одне з полів введення незаповненим. 17
кнопка"2” 14
кнопка"з" 15
кнопка"4" 15
кнопка"5" 15
кнопка"6" 15
кнопка "7" 16
кнопка"8" 16
кнопка"9" 16
кнопка "c" - очищення 16
кнопка"+" 17
кнопка 17
кнопка "=" 17
десяткова крапка "," 17
процедура обробки клацання на кнопках "+" і "=" 19
кнопка"о" 20
кнопка ”i " 20
кнопка"2" 20
кнопка"з" 20
кнопка"4” 20
кнопка"5" 20
кнопка"6" 21
кнопка"7" 21
кнопка"8" 21
кнопка"g" 21
кнопка "c" - очищення 21
кнопка "+" 21
кнопка 21
кнопка "=" 21
десяткова крапка "," 21
ініціалізація форми 22
натиснення клавіші в полі введення цифр 22
Завдання 11. Програма "Електронний годинник", що відображує поточний час. Форма і вікно програми приведені на рис.і.д. 22
ініціалізація форми 22
обробка події Paint 23
обробка сигналу таймера 23
Завдання. 12, Програма "Електронний годинник" відображує поточний час і дату. Форма і вікно профаммьі приведені на рис.і.ю. 23
12.10.2009 23
ініціалізація форми 23
обробка події Paint 24
обробка сигналу таймера 24
Завдання 13. Програма "Електронний годинник" відображує поточний час, дату і день тижня. Форма і вікно програми приведені нарис.і.и. 24
ініціалізація форми 24
налаштування і запуск таймера 25
налаштування полів виводу 26
обробка події Paint 26
обробка сигналу таймера 26
ВВЕВВШ 26
клацання на кнопці "Пуск/стоп" 26
ініціалізація форми 27
обробка сигналу таймера 27
Кнопка Перерахунок доступна тільки в тому випадку, якщо у полі Фунти є дані. Тому наявність інформацїіу полі можна не перевіряти. 30
ініціалізація форми 30
натиснення клавіші в полі Фунти 30
Case 44, 46 ' 44 - код коми, 46 - код крапки якщо в полі Фунти введена кома, то замінимо її на десятковий роздільник 30
дниюрення звуку: 31
клацання на кнопці "Пуск/стоп" 33
If Timerl.Enabled Then таймер працює, потрібно зупинити 33
ініціалізація форми 33
заборона введення даних з клавіатури KeyAscii =о End Sub 34
заборона введення даних з клавіатури KeyAscii =о End Sub 34
' о- "виконати” (кнопка "=")
Dim f As Integer
f = о очікування першої цифри нового числа, наприклад, після виконання операції, коли на індикаторі результат, f = і очікування введення решти цифр.
кнопка "о"
Private Sub Commando_Click()
Iff = o Then ' перша цифра числа Texti.Text = "о" f-i' очікування решти цифр Else
Наступна умова потрібна для того, щоб на індикаторі і не з'являлося декількох нулів на початку числа.
If Texti.Text о "о" Then Texti.Text = Texti.Text + "о"
End If End If End Sub
кнопка "i"
Private Sub Commandi.ClickQ
Iff= o Then ' перша цифра числа Texti.Text = "і"
f= і ' очікування решти цифр
Else
У випадку, коли після вибору операції користувач натискав "о", змінною f привласнюється значення і, очікується введення решти цифр числа. Для того, щоб в полі введення не з’являлося чисел, що починається з нуля та є дробами (наприклад "оі"), необхідне виконання наступної умови. IfTexti.Text про "О" Then Texti.Text = Texti.Text + "і"
Else: Texti.Text = "1 ”
End If End If End Sub
кнопка"2”
Private Sub Command2_ClickO Iff= o Then Texti.Text = "2" f=i Else
IfTexti.Text 0 "o" Then Texti.Text = Texti.Text + "2"
Else: Texti.Text = ’’2'’
End If End If End Sub
кнопка"з"
Private Sub Commands Click ()
Iff= o Then Texti.Text = "3"
f=*
Else
If Texti.Text 0 "o"Then Texti.Text = Texti.Text + "3"
Else: Texti.Text = "3”
End If End if End Sub
кнопка"4"
Private Sub Command4_Click()
Iff = o Then Texti.Text = "4"
/=1
Else
IfTexti.Text <> "o” Then
Texti.Text = Texti.Text + "4" Else: Texti.Text = "4"
End If End If End Sub
кнопка"5"
Private Sub Commands Click!) Iff= О Then Texti.Text = "5" f=i Else
If Texti.Text <> "o " Then Texti.Text = Texti.Text + "5" Else: Texti.Text = "5"
End If End If End Sub
кнопка"6"
Private Sub Command6__ClickO Iff = о Then Texti.Text = "6" f=i
Else
If Texti.Text <> "o" Then Texti.Text = Texti.Text + "6" Else: Texti.Text = "6"
End If End If End Sub
кнопка "7"
Private Sub Command7_Click()
Iff - о Then Texti.Text = "7" f=i Else
If Texti.Text < > "o " Then Texti.Text = Texti.Text + "7" Else: Texti.Text = ”7"
End If End If End Sub
кнопка"8"
Private Sub Command8_Click()
Iff = о Then
Texti.Text = "8"
f=i
Else
IfTexti.Text <> "o " Then Texti.Text = Texti.Text + "8”
Else: Texti.Text = "8"
End If End If End Sub
кнопка"9"
Private Sub Commandg__Click()
Iff= o Then Texti.Text = "9"
f=i
Else
If Texti.Text 0 "o" Then Texti.Text = Texti.Text + "9"
Else: Texti.Text = "9"
End If End If End Sub
кнопка "c" - очищення
Private Sub CommandC_Click ()
Texti.Text = "o" accum =0 oper=0
f- o' очікування першої цифри числа End Sub
кнопка"+"
Private Sub CommandPlus_Click()
При натисненні на кнопку "+ " потрібне: виконати попередню операцію, вивести результат на індикатор, запам'ятати поточну операцію і встановити режим очікування першої цифри нового числа.
Iff= о Then
користувач клацнув мишею по кнопці операції, але поле введення знаходиться в очікуванні введення першої цифри числа орег = і 'запам'ятовування операції Else
на індикаторі є число, користувач клацнув мишею по кнопці операції DoOper орег = і f=o End If End Sub
кнопка
Private Sub CommandMinus_Click()
дивитеся коментар до процедури обробки події Click на кнопці "+ "
Iff = о Then
ррег = 2 ' запам'ятовування операції Else
DoOper ' виконання попередньої операції орег = 2 ' запам'ятовування поточної операції /= о' очікування першої цифри нового числа End If End Sub
кнопка "="
Private Sub CommandEnter__Click()
IfJ = o Then oper = o Else DoOper oper - o f= o"
End End Sub
