ПиОА_1 семестр_1 / ПОСОБИЕ_VB.Net
.pdf
|
Таблица 2.9. Некоторые математические функции |
|
Метод |
Назначение |
|
Abs(a) |
абсолютное значение (модуль) числа а |
|
|
|
|
Acos(a) |
арккосинус числа а |
|
|
|
|
Asin(a) |
арксинус числа а |
|
|
|
|
Atan(a) |
арктангенс числа а |
|
|
|
|
Cos(a) |
косинус числа а |
|
|
|
|
Sin(a) |
синус числа а |
|
|
|
|
Tan(a) |
тангенс числа а |
|
|
|
|
Log() |
натуральный логарифм числа а |
|
|
|
|
Log10(a) |
десятичный логарифм указанного числа а |
|
|
|
|
Exp(a) |
экспоненту от числа а (ea) |
|
|
|
|
Pow(a,b) |
число а в степень b |
|
|
|
|
PI |
число π |
|
|
|
|
Sqrt(a) |
корень квадратный числа а |
|
|
|
|
Формат вызова необходимого математического метода:
Math.Имя метода(список аргументов)
Например, Math.sin(x) – возвращает значение sin(x).
Замечание. Чтобы при вызове математического метода не указывать имя класса Math, его следует импортировать в модуль с помощью оператора Imports (рис. 2.4).
Рис. 2.4 Импортирование в модуль класса Math
41
2.9.Практическая часть. Создание приложения линейной структуры
Задача 2.1. Создать приложение, вычисляющее сумму двух чисел.
Шаг 1. Перейдите на стартовую страницу, где выберите ссылку Create. Дайте название проекту Сумма двух чисел.
Шаг 2. Создайте интерфейс формы как показано на рис. 2.5.
Объект
класса
Button
Рис. 2.5 Интерфейс формы приложения для задачи 2.1
Шаг 3. Создайте событийную процедуру Click для элемента Button. В открывшейся событийной процедуре Button1_Click запишите программный код:
Dim a, b, c As Double
a = Double.Parse(TextBox1.Text) b = Double.Parse(TextBox2.Text) c = a + b
TextBox3.Text = Convert.ToString(c)
Шаг 4. Запустите проект на выполнение. Проверьте, как он работает: сначала с целыми числами, а затем с вещественными (используйте запятую для отделения дробной части числа от целой). Остановите работу проекта.
Шаг 5. Добавьте на форму еще один элемент управления Button. Измените размер шрифта (свойство Font) и надпись на Закрыть. Создайте событийную процедуру Click для нового элемента Button2, в которой используйте метод Close для прекращения выполнения проекта (рис. 2.6).
Шаг 6. Запустите проект на выполнение. Проверьте как работает кнопка Закрыть.
42
Рис. 2.6 Закрытие формы
Задача 2.2. Создать приложение, вычисляющее значение функции
y = sin x − e x + 0,25 для заданного пользователем аргумента.
На рис. 2.7 представлен интерфейс формы проекта.
|
|
|
|
|
|
|
|
|
Объект |
|
Объекты |
|
|
|
|
|
|
|
|
класса |
|
класса |
|
|
|
|
|
|
|
|
PictureBox |
|
Label |
|
|
|
|
|
|
|
|
|
Объекты |
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
класса |
|
|
|
|
|
|
|
|
|
|
TextBox |
|
|
|
|
|
|
|
|
|
Объекты |
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
класса |
|
|
|
|
|
|
|
|
|
|
Button |
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
Рис. 2.7 Интерфейс формы для задачи 2.2
Пояснение. При создании интерфейса были использованы следующие элементы управления:
Элемент управления |
Использование в проекте |
|
Form1 |
Основное окно проекта |
|
|
|
|
TextBox1 |
Ввод значения аргумента x |
|
|
|
|
TextBox2 |
Вывод значения y, рассчитанного по заданной фор- |
|
муле |
||
|
||
|
|
|
Label1, Label2 |
Для вывода пояснений |
|
|
|
|
PictureBox1 |
Для размещения картинки с формулой |
|
|
|
|
Button1 |
Для запуска программного кода расчета по заданной |
|
формуле |
||
|
||
|
|
|
Button2 |
Для запуска программного кода окончания работы |
|
проекта |
||
|
||
|
43 |
На этапе проектирования у элементов управления были изменены следующие свойства:
Элемент управления |
Измененные свойства |
|
|
Text – «Вычисление по заданной формуле» |
|
Form1 |
BackColor – светло-зеленый, |
|
|
Font Size – 12 |
|
|
|
|
TextBox1 |
Text – «1.426» |
|
|
|
|
PictureBox1 |
SizeMode – AutoSize |
|
Image – загружаемый графический файл |
||
|
||
|
|
|
Label1 |
Text – «x = » |
|
|
|
|
Label2 |
Text – «y = » |
|
|
|
|
Button1 |
Text – «Вычислить» |
|
|
|
|
Button2 |
Text – «Выход» |
|
|
|
Программный код приложения и окно работающего приложения представлены на рис. 2.8 и рис. 2.9.
Рис. 2.8 Программный код задачи 2.2
44
13. К какому классу относятся математические функции?
14. Как использовать стандартные математические функции в приложении?
15. Как можно организовать ввод данных в приложениях VB.Net?
16. Как можно организовать вывод данных в приложениях
VB.Net?
17. Создайте проект вычисления значения функции
y = (e x + sin(x 2 )2 cos(−2x 3 + π / 2)
для заданного пользователем аргумента.
Рис. 2.9 Работающее приложение проекта задачи 2.2
2.10. Контрольные вопросы и задания
1.Перечислите простые типы данных, используемые в VB.Net.
2.Для чего служат идентификаторы пользователя?
3.На какие два класса делятся операторы?
4.Какова структура блочного структурного оператора?
5.Приведите примеры типов данных, принадлежащих классу
System.Object библиотеки FCL.
6.Что означает символ u в начале имен некоторых типов?
7.Для чего необходима «Область видимости переменных и констант»?
8.Какие операции используются в арифметических выражениях?
9.Какие методы FCL для явного преобразования типов вы знаете?
10.Какой метод позволяет преобразовать строку символов в указанный тип данных:
11.Расставьте приоритеты операций в сложных выражениях.
12.Какой тип получит результат операции a Mod b, если оба операнда целого типа, а какой, если один из операндов имеет вещественный тип?
45 |
46 |
3.СОЗДАНИЕ ПРИЛОЖЕНИЙ РАЗВЕТВЛЯЮЩЕЙ СТРУКТУРЫ
3.1. Операторы ветвления
Условный оператор. Структуру разветвляющегося алгоритма можно реализовать с помощью ветвления – выбора одного из двух вариантов действий (рис. 3.1).
Рис. 3.1 Структуры операторов ветвления
Однострочная конструкция условного оператора
Полная форма:
If Лог_выр Then Оператор_1 Else Оператор_2
Если логическое выражение принимает значение True, то выполняется Оператор_1, если False, то выполняется Оператор_2.
Сокращенная форма:
If Лог_выр Then Оператор
Блочная конструкция условного оператора
If Лог_выр Then
Оператор_1
Else
Оператор_2
End If
47
Здесь End If означает конец многострочной конструкции. Eсли логическое выражение принимает значение True, то выполняется Оператор_1, если – False, то выполняется Оператор_2.
Команда If может проверить только одно условие. Если необходимо осуществить передачу управления в зависимости от результатов проверки нескольких условий, то их можно задать с помощью оператора Elseif:
If Лог_выр_1 Then
Оператор_1
ElseIf Лог_выр_2 Then
Оператор_2
Else
Оператор_3
End If
Оператор Elseif будет выполняться только в том случае, если Лог_выр_1 ложно.
Один условный оператор может входить в состав другого условного оператора:
If Лог_выр_1 Then
If Лог_выр_2 Then
Оператор_1
Else
Оператор_2
End If
Else
Оператор_3
End If
Оператор выбора. Структуру разветвляющегося алгоритма можно реализовать с помощью выбора одного варианта из нескольких (рис. 3.2) в зависимости от значения некоторой величины (селектора).
48
Рис. 3.2 Структура оператора выбора
Формат оператора выбора:
Select Case Селектор |
|
|
|
|
Case Диапазон значений _1 |
|
|
|
|
операторы, |
выполняемые |
при |
попадании |
значения |
Селектора в Диапазон значений _1 |
|
|
||
Case Диапазон значений _2 |
|
|
|
|
операторы, |
выполняемые |
при |
попадании |
значения |
Селектора в Диапазон значений _2 |
|
|
||
. . . |
|
|
|
|
Case Диапазон значений _N |
|
|
|
|
операторы, |
выполняемые |
при |
попадании |
значения |
Селектора в Диапазон значений _ |
N |
|
|
|
[Case Else |
|
|
|
|
операторы, которые выполняются, если значение Селектора |
||||
не попало ни в один из указанных диапазонов] |
|
|||
End Select |
|
|
|
|
Селектором может быть переменная, константа или выражение. Диапазон значений можно задать:
-простым перечислением значений через запятую (Case 3,5,9);
- с помощью ключевого слова To (Case 1 To 9);
-с помощью ключевого слова Is при использовании операций от-
ношения <, >, <=, >= (Case Is > 0).
49
В следующем примере в качестве селектора используется вы-
ражение, а в диапазоне значений – операции отношения:
Select Case b^2-4*a*c
Case Is < 0
Textbox4.Text = "действительных корней нет"
Case Is = 0
Textbox4.Text = (-b / (2 * a)).ToString("0.000")
Case Is > 0
x1=(-b + Math.Sqrt(d)) / (2 * a) x2=(-b - Math.Sqrt(d)) / (2 * a)
Textbox4.Text = x1.ToString("0.000") & " " & _ x2.ToString("0.000")
End Select
Пример использования оператора Case, в котором в качестве селектора используется значение свойства Text объекта
TextBox1:
Select Case TextBox1.Text
Case "+"
c = a + b
TextBox2.Text = Convert.ToString(c)
Case "-"
c = a - b
TextBox2.Text = Convert.ToString(c)
Case "/"
If b = 0 Then
TextBox2.Text = "Деление на 0 запрещено"
Else
c = a / b
TextBox2.Text = Convert.ToString(c)
End If
Case "*"
c = a * b
TextBox2.Text = Convert.ToString(c)
End Select
50
3.2.Элементы управления, используемые для создания разветвляющих конструкций
RadioButton
(Переключатель) – элемент управления, предназначенный для установки только одной опции (одного действия) из группы (рис. 3.3).
Основные свойства компонента RadioButton:
|
Свойство |
|
Описание |
|
Name |
|
Имя компонента |
|
|
|
|
|
Checked |
|
Имеет значения True (включен) или False (вы- |
|
|
ключен). По умолчанию имеет значение False. |
|
|
|
|
|
|
|
|
|
Использование в программном коде:
If RadioButton1.Checked Then c = a + b
If RadioButton2.Checked Then c = a - b
If RadioButton3.Checked Then c = a * b
If RadioButton4.Checked Then
If b = 0 Then
c = Double.NaN : MsgBox("На ноль делить нельзя!")
Else : c = a / b
End If
End If
Рис. 3.3 Интерфейс проекта Простой калькулятор
51
CheckBox
(Флажок) – элемент управления, с помощью которого можно выбирать одну или несколько опций, отмечая их галочкой, как на рис. 3.3.
Основные свойства компонента CheckBox:
|
Свойство |
Описание |
|
Name |
Имя компонента |
|
|
|
|
Checked |
Имеет значения True (галочка есть) или False (га- |
|
лочки нет). По умолчанию – значение False. |
|
|
|
|
|
|
|
Использование в программном коде:
If CheckBox1.Checked Then
TextBox3.Text = c.ToString("0.00")
Else : TextBox3.Text = Convert.ToString(c)
End If
Panel 
– область для размещения на ней однотипных компонентов. Используется для размещения групп RadioButton
или CheckBox.
Если необходимо объединить несколько объектов, используя этот компонент, то сначала нужно расположить на форме именно его, а затем добавить на панель необходимые объекты.
3.3. Практическая часть. Создание приложений разветвленной структуры
Задача 3.1. Организовать вычисление значения переменной по формуле, выбранной пользователем.
На рис. 3.4 представлен интерфейс формы проекта задачи 3.1.
52
Рис. 3.4. Пример оформления формы проекта задачи 3.1
При создании интерфейса были использованы следующие эле-
менты управления:
Элемент управления |
Использование в проекте |
|
Form1 |
Основное окно проекта |
|
|
|
|
TextBox1, |
|
|
TextBox2, |
Ввод исходных данных - параметров x, y, z |
|
TextBox3 |
|
|
|
|
|
TextBox4 |
Вывод значения y, рассчитанного по выбранной форму- |
|
ле |
||
|
||
|
|
|
Label1, Label2 |
Для вывода пояснений |
|
|
|
|
PictureBox1 |
Для размещения картинки с формулами |
|
|
|
|
Panel1, Panel2 |
Для объединения элементов управления |
|
|
|
|
RadioButton1, |
Для выбора одного переключателя из группы |
|
RadioButton2 |
||
|
||
|
|
|
CheckBox1 |
Для выбора формата вывода результата |
|
|
|
|
Button1 |
Для запуска программного кода расчета по выбранной |
|
формуле |
||
|
||
|
|
|
Button2 |
Для запуска программного кода окончания работы про- |
|
екта |
||
|
||
|
53 |
На этапе проектирования были изменены следующие свойства
элементов управления:
Элемент управления |
Измененные свойства |
|
|
Text |
|
Form1 |
BackColor – цвет формы |
|
|
Font Size |
|
TextBox1, TextBox2, TextBox3 |
Text |
|
|
|
|
PictureBox1 |
SizeMode |
|
Image |
||
|
||
|
|
|
Label1, Label2 |
Text |
|
|
|
|
Panel1, Panel2 |
BackColor – цвет панели |
|
|
|
|
|
Text |
|
RadioButton1 |
AutoCheck – True |
|
|
TabIndex - 0 |
|
|
|
|
RadioButton2 |
Text |
|
TabIndex - 1 |
||
|
||
CheckBox1 |
Text |
|
Checked - True |
||
|
||
|
|
|
Button1 |
Text |
|
|
|
|
Button2 |
Text |
|
|
|
Ниже представлен программный код примера.
Imports System.Math
Public Class Form1
Private Sub Button1_Click(...) Handles Button1.Click
Dim x, y, z, s As Double
x = Double.Parse(TextBox1.Text) y = Double.Parse(TextBox2.Text) z = Double.Parse(TextBox3.Text) TextBox4.Text = "Результат"
If RadioButton1.Checked Then
s = 2 * Cos(x - PI / 6) / _ (1 / 2 + Sin(y) ^ 2) TextBox4.Text &= " a ="
ElseIf RadioButton2.Checked Then
s = 1 + z ^ 2 / (3 + z ^ 2 / 5) TextBox4.Text &= " b ="
End If
54
If CheckBox1.Checked Then
TextBox4.Text &= s.ToString("0.00")
Else
TextBox4.Text &= Convert.ToString(s)
End If
End Sub
End Class
На рис. 3.5 представлено окно работающего приложения.
Рис. 3.5 Работающее приложение проекта задачи 3.1
Задача 3.2. Создание кнопочного калькулятора. Интерфейс приложения задачи представлен на рис. 3.6.
Описание интерфейса. Использовались объекты двух классов:
Button и TextBox.
Объект TextBox1 предназначен для показа набора чисел, участвующих в арифметической операции, а также для вывода результата.
Объекты Button1 – Button12 предназначены для задания цифр, набираемого числа, разделителя дробной части – это запятая, а также знака числа. Кроме местоположения, эти объекты имеют разное значение свойства Text.
55
Объекты Button13 – Button16 предназначены для выбора арифметической операции. Кроме местоположения, эти объекты имеют разное значение свойства Text.
Объект Button17 предназначен для запуска процедуры, выполняющей выбранную операцию.
Объект Button18 предназначен для очистки текстового окна.
|
|
|
|
|
|
|
|
|
Группа кнопок |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Кнопка (18), |
|
|
|
|
|
|
|
|
(с 13 по 16), |
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
отвечающих за |
||
сброса |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
выбор |
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
арифметической |
|
|
|
|
|
|
|
|
|
операции |
|
|
|
|
|
|
|
|
|
|
Группа кнопок |
|
|
|
|
|
|
|
Кнопка (17), |
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|||
(с 1 по 12), |
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
выполняющая |
||
отвечающих |
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
выбранную |
||
за набор чисел |
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
операцию |
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Рис. 3.6 Интерфейс приложения Калькулятор
Пояснение. Так как группа кнопок с 1 по 12, отвечающих за набор чисел, выполняет однотипные действия, следует вначале сформировать процедуру для кнопки 1 (Button1_Click), записать в ней программный код как на рис. 3.9.
Затем назначить эту же процедуру для всех кнопок этой группы. Для этого можно выделить все оставшиеся кнопки группы, удерживая клавишу Ctrl, затем перейти в окне Properties на вкладку События и назначить событию Click процедуру Button1_Click
(рис. 3.7).
Аналогично следует назначить одну и ту же процедуру группе кнопок, отвечающих за выбор арифметической операции (рис. 3.8).
Программный код, предназначенный для выбора арифметической операции, представлен на рис. 3.10.
56
Рис. 3.7 Назначение Button1_Click процедуры группе кнопок
Рис. 3.8 Назначение Button13_Click процедуры группе кнопок
57
Рис. 3.11 представляет программный код процедуры, выполняющей выбранную арифметическую операцию.
Рис. 3.12 представляет программный код процедуры, выполняющей очистку окна вывода результата и сброса значений переменных.
Рис. 3.13 показывает место, где следует глобально описать переменные a и b, отвечающие за хранения первого и второго введенных чисел, соответственно, и переменную oper, отвечающую за хранение выбранной арифметической операции.
Private Sub Button1_Click(ByVal sender As _ System.Object, _
ByVal e As System.EventArgs) _ Handles Button1.Click, _
Button9.Click, Button8.Click, Button7.Click, _ Button6.Click, Button5.Click, Button4.Click, _ Button3.Click, Button2.Click, Button11.Click, _
Button10.Click, Button12.Click
TextBox1.Text &= DirectCast(Sender, Button).Text
If TextBox1.Text = "+/-" Then TextBox1.Text = "-"
End Sub
Рис. 3.9 Процедура обработки кнопок с цифрами
Пояснение к коду на рис. 3.9. Так как процедура Button1_Click определена для нескольких кнопок, применение оператора DirectCast позволит их различить, так как он преобразует выражение объекта Sender в выражение для объекта Button. Фактически DirectCast позволяет определить: свойство Text какой кнопки будет использовано, т.е. какая цифра будет добавлена в набираемое число.
Private Sub Button13_Click(ByVal sender As _ System.Object, _
ByVal e As System.EventArgs) _ Handles Button13.Click, _ Button14.Click, Button15.Click, _
Button16.Click oper = DirectCast(sender, Button).Text a = Convert.ToDouble(TextBox1.Text) TextBox1.Text = ""
End Sub
Рис. 3.10 Процедура выбора арифметической операции
58
Private Sub Button17_Click(ByVal sender As _ System.Object, _
ByVal e As System.EventArgs) _ Handles Button17.Click
b = Convert.ToDouble(TextBox1.Text)
Select oper Case "+"
a = a + b
Case "-"
a = a - b
Case "*"
a = a * b
Case "/"
If b = 0 Then
a = Double.NaN
MsgBox("На ноль делить нельзя")
Else
a = a / b
End If End Select
TextBox1.Text = Convert.ToString(a)
End Sub
Рис. 3.11 Процедура выполнения выбранной арифметической операции
Private Sub Button18_Click(ByVal sender As _ System.Object, _
ByVal e As System.EventArgs) _ Handles Button18.Click
TextBox1.Text = "" a = 0
b = 0 oper = ""
End Sub
Рис. 3.12 Процедура очистки окна для вывода результата
Public Class Form1 Dim oper As String Dim a, b As Double
'процедура обработки кнопок с цифрами 'процедура выбора арифметической операции
'процедура выполнения выбранной арифметической операции 'процедура очистки окна для вывода результата
End Class
Рис. 3.13 Место глобального описания переменных в коде приложения
59
3.4. Контрольные вопросы и задания
1.Назовите основные логические операции, используемые для написания логических выражений.
2.Назовите функции преобразования типов, их параметры и порядок следования.
3.С помощью какого оператора реализуется алгоритмическая структура «Развилка»? Нарисуйте ее блок-схему.
4.С помощью какого оператора реализуется алгоритмическая структура «Выбор»? Нарисуйте ее блок-схему.
5.Что такое селектор в операторе выбора?
6.Приведите пример на использование условного оператора.
7.Приведите пример на использование оператора выбора.
8.В чем различие между элементами управления CheckBox и RadioButton?
9.Какое свойство элементов управления CheckBox и RadioButton позволяет узнать, какая опция выбрана? Опишите использование этого свойства в программном коде.
10.Даны две точки A(x1 , y1 ) и B(x2 , y 2 ) . Составить алгоритм, определяющий, которая из точек находится ближе к началу координат.
11.Дано трехзначное число N. Проверить, будет ли сумма его цифр четным числом.
12.Дана точка A(x, y) . Определить, принадлежит ли она треугольнику с вершинами в точках (x1 , y1 ), (x1 , y1 ), (x1 , y1 ).
13.Найдите наибольшее из двух заданных действительных чисел, используя оператор выбора.
14.Создать проект, который по номеру года определяет его название в старояпонском календаре. В этом календаре был принят двенадцатилетний цикл. Годы внутри цикла носили названия животных: крыса, корова, тигр, заяц, дракон, змея, лошадь, овца, обезьяна, петух, собака, свинья. Например, 1996 г. был годом крысы.
60
