Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лабораторный практикум по Visual Basic.doc
Скачиваний:
51
Добавлен:
31.08.2019
Размер:
10.63 Mб
Скачать

3. Функции преобразования

Для работы с числовыми переменными (типы переменных и правила их объявления рассмотрены в Лабораторной работе 5) необходимо иметь представление о том, как преобразовать введенные данные, представляющие собой текст, в числовое выражение, и как отобразить результат, представляющий собой число, на форме в виде текста.

Функция Str() преобразовывает численное значение в символьное представление. Синтаксис функции:

Str (число)

Для преобразования символьной строки в численное выражение используется функция Val:

Val (символьное выражение)

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

Рассмотрим пример. Пусть заданы две символьные строки a и b следующего вида:

A = “10” B = “12”

При сложении этих двух строк получается символьная строка “1012”.

Если сложить две символьные сроки, предварительно преобразовав их в числа, и распечатать с помощью команды

Print Val (a) + Val (b)

то получится число 22.

Полный перечень функций работы со строками приведен в Приложении 3.

Практическая часть

Задание 1. Разработка приложения, выполняющего арифметические операции и вычисляющего математические функции (калькулятор)

Постановка задачи.

Разработать приложение, осуществляющее арифметические операции с двумя числами, введенными пользователем, и вычисляющее математические функции. Приложение должно обеспечивать:

  • ввод данных пользователя – два числа;

  • выполнение арифметических операций с введенными числами;

  • вычисление математических функций от одного из аргументов;

  • вывод данных в метках (Label)

Примерный внешний вид приложения представлен на Рис.4.1.

Ход работы.

  1. Создайте папку Лабораторная_работа_№4, а в ней папку 4.1.

  2. Запустите программу Microsoft Visual Basic 6.0.

  3. В появившемся окне выберите тип приложения STANDARD.exe и нажмите кнопку «Открыть».

  4. Расположите на форме три компонента TextBox, 21 компонент CommandButton, 23 компонента Label для вывода результата, свойства которых установите согласно Таблице 4.1 или ориентируясь на внешний вид приложения (Рис.4.1).

Таблица 4.1 – Свойства компонентов приложения «Арифметические выражения и функции»

Компонент

Свойство

Значение

Form1

Caption

Арифметические выражения и функции

Name

frmАрифметика

MaxButton, MinButton

False

Icon

Загрузите любое графическое изображение формата *.ico

Label1

Caption

Первое число (X)

Label2

Caption

Второе число (Y)

Label3

Caption

Третье число (Z)

Label4…Label23

Caption

CommandButton1

Caption

X + Y

CommandButton2

Caption

X – Y

CommandButton3

Caption

X * Y

CommandButton4

Caption

X / Y

CommandButton5

Caption

X \ Y

CommandButton6

Caption

X Mod Y

CommandButton7

Caption

X ^ Y

CommandButton8

Caption

Abs (Z)

CommandButton9

Caption

Atn (Z)

CommandButton10

Caption

Sin (Z)

CommandButton11

Caption

Cos (Z)

CommandButton12

Caption

Tan (Z)

CommandButton13

Caption

Exp (Z)

CommandButton14

Caption

Log (Z)

CommandButton15

Caption

Sqr (Z)

CommandButton16

Caption

Rnd (Z)

CommandButton17

Caption

Int (Z)

CommandButton18

Caption

Fix (Z)

CommandButton19

Caption

CInt (Z)

Продолжение таблицы 4.1

CommandButton20

Caption

Sgn (Z)

CommandButton21

Caption

Очистить

TextBox1

Text

TextBox2

Text

TextBox3

Text

Свойство Font и BackColor установите у компонентов по своему усмотрению

Свойство Style у компонентов CommandButton установите равным 1 - Graphical

  1. О ткройте окно программного кода (View - Code).

  2. В верхних строках программного кода опишите переменные входных и выходных данных (подробно типы переменных и правила их описания рассмотрены в Лабораторной работе 5):

Dim x As Single, y As Single, z As Single 'входные данные

'переменная для операций \, Mod, Rnd, Int, Fix, CInt, Sgn

Dim a As Integer

'переменная для остальных функций

Dim b As Single

  1. Щелкните по кнопке CommandButton1 («X + Y») и напишите следующий обработчик события Click (после знака апострофа приведены необходимые комментарии):

'щелчок по кнопке "+"

Private Sub Command1_Click()

x = Val(Text1.Text) 'перевод строки в число X

y = Val(Text2.Text) 'перевод строки в число Y

b = x + y 'выполнение операции

Label4.Caption = Str(b) 'вывод результата

End Sub

  1. Аналогично напишите обработчики события Click для остальных кнопок:

Private Sub Command2_Click() 'щелчок по кнопке "-"

x = Val(Text1.Text)

y = Val(Text2.Text)

b = x - y

Label5.Caption = Str(b)

End Sub

Private Sub Command3_Click() 'щелчок по кнопке "*"

x = Val(Text1.Text)

y = Val(Text2.Text)

b = x * y

Label6.Caption = Str(b)

End Sub

Private Sub Command4_Click() 'щелчок по кнопке "/"

x = Val(Text1.Text)

y = Val(Text2.Text)

b = x / y

Label7.Caption = Str(b)

End Sub

Private Sub Command5_Click() 'щелчок по кнопке "\"

x = Val(Text1.Text)

y = Val(Text2.Text)

a = x \ y

Label8.Caption = Str(a)

End Sub

Private Sub Command6_Click() 'щелчок по кнопке "Mod"

x = Val(Text1.Text)

y = Val(Text2.Text)

a = x Mod y

Label9.Caption = Str(a)

End Sub

Private Sub Command7_Click() 'щелчок по кнопке "^"

x = Val(Text1.Text)

y = Val(Text2.Text)

b = x ^ y

Label10.Caption = Str(b)

End Sub

Private Sub Command8_Click() 'щелчок по кнопке "Abs"

z = Val(Text3.Text)

b = Abs(z)

Label11.Caption = Str(b)

End Sub

Private Sub Command9_Click() 'щелчок по кнопке "Atn"

z = Val(Text3.Text)

b = Atn(z)

Label12.Caption = Str(b)

End Sub

Private Sub Command10_Click() 'щелчок по кнопке "Sin"

z = Val(Text3.Text) 'будем считать, что введено число в градусах

b = Sin((z * Atn(1) * 4) / 180) 'переводим исходное число Z в радианы и вычисляем синус данного угла

Label13.Caption = Str(b)

End Sub

Private Sub Command11_Click() 'щелчок по кнопке "Cos"

z = Val(Text3.Text) 'будем считать, что введено число в градусах

b = Cos((z * Atn(1) * 4) / 180) 'переводим исходное число Z в радианы и вычисляем косинус данного угла

Label14.Caption = Str(b)

End Sub

Private Sub Command12_Click() 'щелчок по кнопке "Tan"

z = Val(Text3.Text) 'будем считать, что введено число в градусах

b = Tan((z * Atn(1) * 4) / 180) 'переводим исходное число Z в радианы и вычисляем тангенс данного угла

Label15.Caption = Str(b)

End Sub

Private Sub Command13_Click() 'щелчок по кнопке "Exp"

z = Val(Text3.Text)

b = Exp(z)

Label16.Caption = Str(b)

End Sub

Private Sub Command14_Click() 'щелчок по кнопке "Log"

z = Val(Text3.Text)

b = Log(Abs(z))

Label17.Caption = Str(b)

End Sub

Private Sub Command15_Click() 'щелчок по кнопке "Sqr"

z = Val(Text3.Text)

b = Sqr(Abs(z))

Label18.Caption = Str(b)

End Sub

Private Sub Command16_Click() 'щелчок по кнопке "Rnd"

Randomize Timer 'для неповторяемости числа

z = Val(Text3.Text)

a = (z - 0 + 1) * Rnd() + 0 'случайное число в диапазоне от 0 до Z

Label19.Caption = Str(a)

End Sub

Private Sub Command17_Click() 'щелчок по кнопке "Int"

z = Val(Text3.Text)

a = Int(z)

Label20.Caption = Str(a)

End Sub

Private Sub Command18_Click() 'щелчок по кнопке "Fix"

z = Val(Text3.Text)

a = Fix(z)

Label21.Caption = Str(a)

End Sub

Private Sub Command19_Click() 'щелчок по кнопке "CInt"

z = Val(Text3.Text)

a = CInt(z)

Label22.Caption = Str(a)

End Sub

Private Sub Command20_Click() 'щелчок по кнопке "Sgn"

z = Val(Text3.Text)

a = Sgn(z)

Label23.Caption = Str(a)

End Sub

  1. Для обработчика события Click по кнопке «Очистить» напишите следующий код:

'щелчок по кнопке "Очистить"

Private Sub Command21_Click()

Text1.Text = ""

Text2.Text = ""

Text3.Text = ""

Label4.Caption = ""

Label5.Caption = ""

Label6.Caption = ""

Label7.Caption = ""

Label8.Caption = ""

Label9.Caption = ""

Label10.Caption = ""

Label11.Caption = ""

Label12.Caption = ""

Label13.Caption = ""

Label14.Caption = ""

Label15.Caption = ""

Label16.Caption = ""

Label17.Caption = ""

Label18.Caption = ""

Label19.Caption = ""

Label20.Caption = ""

Label21.Caption = ""

Label22.Caption = ""

Label23.Caption = ""

End Sub

  1. Запустите приложение на выполнение (F5). Проверьте его работоспособность.

  2. Попробуйте в качестве третьего числа Z ввести разные числа – положительные целые и дробные, отрицательные целые и дробные. Проанализируйте отличие результатов.

  3. Закройте запущенное приложение.

  4. Сохраните форму и проект (выбрав File – Save FrmАрифметика.frm и Save Арифметика.vbp) в папке 4.1.

  5. Создайте exe-файл программы с помощью команды File Make Арифметика.exe.

  6. Выйдите из среды Visual Basic.

  7. Запустите на выполнение файл Арифметика.exe и убедитесь, что проект работает автономно, как любые другие Windows-приложения.

Задание 2. Разработка приложения, выполняющего перевод чисел в восьмеричную и шестнадцатеричную системы счисления и вычисляющего корень n-ной степени

Постановка задачи.

Разработать приложение, которое переводит введенные пользователем числа в восьмеричную и шестнадцатеричную систему счисления, а также вычисляет корень n-ной степени из числа X.. Приложение должно обеспечивать:

  • ввод данных пользователя – два числа – одно число для перевода, одно – показатель степени n;

  • выполнение операций, заданных по условию задачи;

  • вывод данных в метках (Label)

П римерный внешний вид приложения представлен на Рис.4.2.

Ход работы.

  1. Создайте в папке Лабораторная_работа_№4 папку 4.2.

  2. Запустите программу Microsoft Visual Basic 6.0.

  3. В появившемся окне выберите тип приложения STANDARD.exe и нажмите кнопку «Открыть».

  4. Расположите на форме два компонента TextBox, 4 компонента CommandButton, 5 компонентов Label, свойства которых установите согласно Таблице 4.2 или ориентируясь на внешний вид приложения (Рис.4.2).

Таблица 4.2 – Свойства компонентов приложения «Перевод числа. Вычисление корня»

Компонент

Свойство

Значение

Form1

Caption

Перевод числа. Вычисление корня

Name

frmПеревод

MaxButton, MinButton

False

Icon

Загрузите любое графическое изображение формата *.ico

Label1

Caption

Исходное число

Label2

Caption

Степень корня (n)

Label3

Caption

Label4

Caption

Label5

Caption

TextBox1

Text

TextBox2

Text

CommandButton1

Caption

Перевести в восьмеричную систему

CommandButton2

Caption

Перевести в шестнадцатеричную систему

CommandButton3

Caption

Извлечь корень

CommandButton4

Caption

Очистить

Свойство Font и BackColor установите у компонентов по своему усмотрению

Свойство Style у компонентов CommandButton установите равным 1 - Graphical

  1. Откройте окно программного кода (View - Code).

  2. В верхних строках программного кода опишите переменные входных и выходных данных:

Dim a As Integer 'исходное число

Dim n As Integer 'степень корня

Dim b As Single 'результат

  1. Для перевода исходного числа в восьмеричную и шестнадцатеричную системы счисления воспользуемся стандартными функциями. Для перевода в восьмеричную систему щелкните по кнопке «Перевести в восьмеричную систему» и напишите следующий обработчик события Click:

Private Sub Command1_Click()

Label3.Caption = Oct(Val(Text1.Text))

End Sub

а для перевода в шестнадцатеричную систему щелкните по кнопке «Перевести в шестнадцатеричную систему» и напишите следующий код:

Private Sub Command2_Click()

Label4.Caption = Hex(Val(Text1.Text))

End Sub

  1. Для вычисления корня n-ной степени необходимо введенные данные преобразовать в строку, а затем вычислить корень как показатель степени 1/n:

Private Sub Command4_Click()

a = Val(Text1.Text)

n = Val(Text2.Text)

b = a ^ (1 / n)

Label5.Caption = Str(b)

End Sub

  1. Обработчик события Click для кнопки «Очистить» напишите самостоятельно, используя навыки, полученные при выполнении предыдущих лабораторных работ.

  2. Запустите приложение на выполнение (F5). Проверьте его работоспособность.

  3. Закройте запущенное приложение.

  4. Сохраните форму и проект (выбрав File – Save FrmПеревод.frm и Save Перевод.vbp) в папке 4.2.

  5. Создайте exe-файл программы с помощью команды File Make Перевод.exe.

  6. Выйдите из среды Visual Basic.

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

Подведем итоги

В работе были использованы новые

Арифметические операции:

\ - целочисленное деление

^ - возведение в степень

Mod – остаток от целочисленного деления

функции:

Abs (x) – модуль аргумента

Atn (x) – арктангенс числа x

Sin (x) – синус числа x

Cos (x) – косинус числа x

Tan (x) – тангенс числа x

Exp (x) – экспонента

Log (x) – натуральный логарифм

Sqr (x) – квадратный корень

Rnd () – случайное число в диапазоне от 0 до 1

Int (x) – наибольшее целое число, не превышающее x

Fix (x) – округленное число (отбрасывает дробную часть аргумента)

CInt(x) – аргумент, округленный до целого по правилам округления математики

Sgn (x) – знак числа

X^(1/n) – корень n-ной степени из X

Hex (x) – перевод десятичного числа в шестнадцатеричное

Oct (x) – перевод десятеричного числа в восьмеричное

Задания для самостоятельного выполнения

1. Составьте конспект по теоретической части лабораторной работы. Выполненное задание покажите преподавателю.

2. Разработать приложения, вычисляющие следующие выражения при заданных значениях x, a, b, c, y.

1) 2)

3) 4)

5) 6)

7) 8)

9) 10)

11) 12)

13) 14)

15) 16)

17) 18)

19) 20)

Вопросы для контроля

  1. Какие встроенные функции Visual Basic Вам известны?

  2. Какие функции служат для перевода числа из одной системы счисления в другую?

  3. В чем разница между функциями Fix(x), Int(x) и CInt(x)?

  4. Какие строки необходимо закладывать в программный код для обеспечения неповторяемости числа при использовании функции Rnd()?

  5. Чем отличается операция Mod от операции целочисленного деления?