Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

ПиОА_1 семестр_1 / ПОСОБИЕ_VB.Net

.pdf
Скачиваний:
658
Добавлен:
06.03.2016
Размер:
3.4 Mб
Скачать

 

Таблица 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