Лабораторная работа № 11
Тема: Разработка линейных программ
Общие сведения (дополнительно см. теорию)
Выражения представляют собой комбинацию переменных и операндов, соединенных знаками отношения. В зависимости от используемых знаков операций различают арифметические выражения, логические выражения и строковые выражения.
Синтаксис всех выражений одинаков:
<операнд> знак_операции <операнд>
В качестве операндов в выражениях могут использоваться константы, переменные, функции и другие выражения. Математические функции, используемые в языке Visual Basic приведены в табл. 1.
Кроме этого, необходимо помнить всегда об одной из особенностей работы с формой и другими объектами в среде VB6: числовые данные вводятся в программу и выводятся в объекты и на форму в символьном виде. Поэтому при вводе данные должны переводиться из символьной формы в числовую с помощью функции Val(C), а при выводе - переводиться из числовой формы в символьную с помощью функции Str(N) или Str$(N).
Таблица 1 Математические функции | |
Функция | Описание |
Abs(N)[1] | Вычисляет абсолютное значение числа N |
Atn(N)[2] | Вычисляет арктангенс числа N. Значение аргумента должно находиться в интервале от – ¥ до + ¥ |
Cos(N) | Вычисляет косинус аргумента. |
Exp(N) | Возвращает число е, возведенное в указанную степень |
Int(N) | Возвращает целое число, меньшее или равное N как для положительных, так и для отрицательных чисел |
Log(N) | Вычисляет натуральный логарифм аргумента |
Round(N[, дес]) | Возвращает число, округленное к заданному числу десятичных знаков |
Sgn(N) | Возвращает знак числа: 1, если N>0; 0, если N=0; -1, если N<0 |
Sin(N) | Вычисляет синус угла |
Sqr(N) | Вычисляет корень квадратный из аргумента |
Tan(N) | Вычисляет тангенс угла |
Val(C) | Преобразует аргумент строкового типа в число |
Arcsin(x)=arctg(x / Sqr(1-x2))
Ввод данных осуществляется с помощью оператора Let:
Let <имя переменной> = <выражение>
Let a=2
Let b1=Sin(x)+exp(x)
Оператор LET может быть опущен, поэтому выражения
Let A= Sqr(x)+ Log(x) и A= Sqr(x)+ Log(x) эквивалентны.
Вывод данных осуществляется с помощью метода Print.
Метод Print выводит данные на форму. Синтаксис метода Print:
Print "Комментарий"; <список выражений>
Комментарии делают понятным пользователю, что выводится на экран методом Print. В качестве выражений могут использоваться константы, переменные, функции и выражения:
Print x, y
Print “х=”;х, “y=”;y
Print “Значение функции Sin(x) при x = “;x;” равно ”;Sin(x)
При использовании в качестве разделителя символа “;” значения выводятся без пробела, при использовании в качестве разделителя символа “,” значения выводятся в разных зонах.
В методе Print могут использоваться функции Tab(N) и Spc(N). Здесь N – число знакомест:
Print “х=”;х; Tab(20); “y=”;y
Результат:
1.754 3,564354
Print “х=”;х; Spc(20); “y=”;y
Результат:
1.754 3,564354
При использовании функции Tab отсчет символов ведется от края формы, а при использовании функции Spc – от текущего положения курсора.
Если в конце оператора Print стоят символы разделители, то курсор ввода остается в текущей строке и следующий оператор Print будет выводить информации с этой позиции. Если символы-разделители в конце оператора Print отсутствуют, то курсор переводится на следующую строку.
Позиционирование точки вставки можно осуществлять также с помощью операторов CurrentX, CurrentY. Оператор CurrentX задает расстояние до точки вставки по горизонтали, а CurrentY – по вертикали от края формы. Расстояния задаются в твипах. Например: CurrentX=500: CurrentY=200.
Результаты вычислений можно вывести также в окно Immediate оператором Debug.Print. Здесь Debug – объект для отладки программы, Print – метод данного объекта. Например: Debug.Print “Объем куба = ”,V
Функция InputBox позволяет вводить данные в режиме диалога. Синтаксис функции:
<переменная>=InputBox(“Сообщение”, “Заголовок окна”, X, Y, Справка, Подсказка)
X и Y здесь координаты верхнего левого угла окна диалога. Например:
sA= InputBox(“Введите Фамилию”, “Список студентов”,,1500,500).
iA = Val(InputBox(“Введите значение аргумента”, “Вычисление функции”)
В первом примере переменная символьного типа, во втором примере переменная числовая целого типа.
Функция MsgBox используется в двух форматах: как функция и как команда. При использовании в качестве функции аргументы заключаются в скобки, при использовании в качестве команды аргументы не заключаются в скобки. Команда MsgBox предназначена для вывода сообщений и результатов вычислений в окно диалога.
Синтаксис команды:
MsgBox “Сообщение”, <Состав кнопок>, “Заголовок окна”, Файл справки, Подсказка
Задание
1. Запишите выражения по правилам языка Visual Basic. Данные вводите с помощью оператора Let.
2. Определите и запишите область определения функции.
3. Напишите текст программы и вычислите значение функции при произвольном значении аргумента из области определения функции. Результаты выводить в форму с использованием Метода Print (или объекта Debug и его метода Print: Debug.Print(<список элементов>)) и функций Tab, Spc или операторов CurrentX, CurrentY.
4. Изобразите схему алгоритма.
Примечание: если области определения функции в целом не существует, проанализируйте отдельно числители и знаменатели и решите задачу по частям. Укажите для каждой части область определения функции.
Варианты заданий
№ вар | Y = | |
![]() | ||
![]() | ||
![]() | ||
![]() | ||
![]() | ||
![]() | ||
![]() | ||
![]() | ||
![]() | ||
![]() | ||
Пример выполнения задания
Пример 3.4.1. Вычислить выражение:
(3.1.1) Решение.
1.Запись выражения по правилам языка Visual Basic:
y=(exp(2*x+3)+log(3*x^2+1)/log(10))/(sqr(5*sin(x))-atn(x^2))+atn(x/sqr(1-x^2))
2. Определение области допустимых значений аргумента:
Функция e2x+3 не накладывает никаких ограничений на значение аргумента.
У функции lg(3x2+1) значение аргумента должно быть больше 0, то есть, 3х2+1>0. Так как х2 будет положительным при любом значении х, то областью определения х будет вся числовая ось.
Для функции : функция Sin(х) – периодическая, ее значение должно быть больше или равено нулю, следовательно значение х должно быть расположено в интервалах [kp, k1p], где k четные члены натурального ряда и 0, а k1 – нечетные члены натурального ряда чисел.
У функции arctg(x2) нет ограничения на значение аргумента, функция принимает значение 0 при х=k2p, где k2 - любое целое число или 0. Но знаменатель в выражении (3.1.1) не должен быть равен нулю. Следовательно, х может принимать значения из интервалов kp< х< k1p.
Для функции arcsin(x) аргумент должен находиться в интервале -1<= x<=1. Окончательно получаем: 0<x<=1
Текст программы:
Private Sub Form_Click()
x=0.5
y=(EXP(2*x+3)+LOG(3*x^2+1)/LOG(10))/(SQR(5*sin(x))- _
ATN(x^2))+ATN(x/sqr(1-x^2))
PRINT “x=”x, “y=”y
Debug.Print “x=”;x;Spc(20);"y=";y
End Sub
Результат: х=0.5 y=42.60272
----------------------------------------------------------------------------
Private Sub Form_Click()
x=Val(InputBox(“Введите значение х ”, “Вычисление функции”))
y=(EXP(2*x+3)+LOG(3*x^2+1)/LOG(10))/(SQR(5*sin(x))- _
ATN(x^2))+ATN(x/sqr(1-x^2))
MsgBox “x= ” & Str(x) & VbCr & “y=” & Str(Round(y,2))
End Sub
Результат: х=0.5 y=42.60272
Контрольные вопросы
1. Что такое линейная программа? Изобразите схему алгоритма линейной программы.
2. Напишите арифметические функции языка Visual Basic.
3. Напишите тригонометрические и обратные тригонометрические функции языка Visual Basic.
4. Как вычисляется логарифм функции по произвольному основанию?
5. Приведите формат оператора Let и дайте пояснение.
6. Приведите формат метода Print и дайте пояснение.
9. Назовите функции и методы используемые для управления выводом информации на форму.
10. Изобразите схему алгоритма программы и поясните принцип работы программы по этой схеме.
[1] N – переменная числового типа, С –переменная строкового типа
[2] В тригонометрических функциях аргумент измеряется в радианах. Для пересчета радианов в градусы надо умножить значение аргумента на 180/p. Для пересчета градусов в радианы следует умножить аргумент на p/180. Точное значение p вычисляется по формуле p=4Atn(1). VB6 имеет только одну обратную тригонометрическую функцию Atn(x). Другие обратные тригонометрические функции вычисляются через Atn(x) с помощью функций преобразования.