[На главную] [Назад на предыдущую] [Вперёд на следующую]

5. Написание кода

После размещения элементов на форме можно попробовать запустить проект на исполнение. Найдём на Стандартной панели кнопку с треугольником. О правильности выбора сообщит всплывающая подсказка Start Debugging (Начать отладку). Делаем щелчок мышью. Несколько секунд проект компилируется, то есть с языка VB переводится на машинный, после чего на экране появляется ещё одна форма. Чисто внешне она точная копия прежней формы, но это уже работающий проект, это уже окно маленького, но независимого приложения Windows. Как обычное окно его можно перемещать по экрану, зацепив курсором синюю строку заголовка. Можно даже свернуть главное окно Visual Basic и любоваться созданным приложением на фоне рабочего стола. Можно ввести в текстовые поля числа и нажимать на кнопки арифметических действий. Нажиматься кнопки будут, но ничего не будет происходить, потому что пока мы ещё не написали код для обработки нажатия кнопки. Внимание, вводим новый термин: нажатие кнопки (или по другому щелчок, клик, click) называется событием (event). Естественно, щелчок мышью на копке не единственное событие компьютерной жизни. Нажатие клавиш на клавиатуре, изменение содержания текстового окна, наведение курсора на какой-либо объект - всё это события. Завершим работу приложения нажатием квадратика со всплывающей подсказкой Stop Debugging.

Кодом называется текст программы. Для его создания надо войти в окно кода. Это можно сделать несколькими способами. Можно щёлкнуть опцию Code в менюView, а можно в окне Solution Explorer воспользоваться кнопкой View  Code. В нашем случае, когда нет ни строчки кода лучше всего сделать двойной щелчок на кнопке сложения. Этим действием мы не только вызовем окно кода, но и одновременно создадим в нём заготовку процедуры. Что такое процедура (Sub)? Это часть кода, предназначенная для обработки какого-то одного события. Ниже приведен заголовок процедуры. Не переводя отдельных слов заголовка передадим его смысл: процедура в которой будет написана инструкция что делать компьютеру, если нажата кнопка btnAdd.

Private Sub btnAdd_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnAdd.Click       

End Sub

Место между  заголовком и служебными словами End Sub называется телом процедуры, сюда и впишем нужный код, см ниже:

Private Sub btnАdd_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnАdd.Click
txtRez.Text = txtA.Text + txtB.Text
End Sub

Тело процедуры состоит из единственной строки. Разберём все её компоненты.  В строке мы используем три элемента управления (Controls), которые мы идентифицируем (различаем, определяем, вызываем) по их именам txtA, txtB, txtRez. Далее, довольно часто, мы будем использовать для этих трёх элементов управления (и для других тоже) более общее слово - объекты. Это необходимо некоторым причинам, о которых говорить пока рано. Что такое объект? Философское словечко обозначающее нечто существующее в реальной действительности. А раз это нечто существует, то оно обладает какими-то свойствами. Наши текстовые окна, как объекты, также обладают множеством разных свойств, из которых главное - Text. Оно нам и нужно. Его мы и вписали в код. Обратите внимание на синтаксис: сначала пишем имя объекта, потом ставим точку, а потом пишем свойство объекта. Кстати синтаксис это просто-напросто правила языка, по которым строятся конструкции, более длинные, чем слово. В русском языке один синтаксис, в Visual Basic другой. Идём дальше. Итак: объекты обладают свойствами, а свойства имеют какие-то значения. В нашей компьютерной науке мы будем присваивать свойствам нужные нам значения. Как мы это будем делать? По разному, например, мы намереваемся вводить с клавиатуры в окна txtA и txtB какие-то числа, скажем 8 и 5, но тем самым мы и присваиваем свойствам Text этих объектов значения 8 и 5. А вот в окне txtRez мы хотим увидеть вычисленную компьютером сумму этих чисел, то есть число 13. Поэтому мы и пишем:  txtRez.Text = txtA.Text + txtB.Text "Эй, компьютер, присвой тексту в окне результата значение равное сумме значений в двух верхних окнах". Теперь о знаке равенства, строго говоря это не вполне знак равенства, а скорее символ присваивающий свойству какое-то значение, то есть нечто вроде команды на исполнение. И ещё раз о синтаксисе. Расширим его первое и главное правило: сначала пишем имя объекта, ставим точку, после точки пишем свойство, потом ставим знак равенства (присвоения!!!) и справа от равенства - значение свойства.  Об изменении значений свойств объектов через окно Properties см предыдущую страницу(2)

Окно кода в Visual Basic это окно обычного текстового редактора, такого же как Word или Блокнот. Мы могли бы нашу пока единственную строку набрать в Word, а потом скопировать и вставить в окно кода. Так иногда и делают. Но конечно удобнее писать код непосредственно в окне кода, потому что это специализированный редактор, предоставляющий в распоряжение пишущего (программиста) дополнительные возможности. Среда обитания Visual Basic интерактивна, то есть она оперативно реагирует на действия пишущего: сообщает ему об ошибках синтаксиса, предлагает варианты возможного завершения начатых предложений (конструкций) и делает другие полезные подсказки. В нашем случае необязательно набивать с клавиатуры каждый символ. Набрали txtRez, поставили точку и тут же выскочит список всех возможных свойств этого объекта, причем главное свойство Text уже выбрано, нажмите клавишу Tab (табулятор) и редактор допишет его.

Запускаем проект на исполнение щелчком по кнопке  Start Debugging (см начало страницы). Вводим в два окна ввода числа 8 и 5. Нажимаем кнопку "Плюс". (см рис 1). Смотрим результат. 85. Почему 85? Ни фига себе, какое фиаско! Повторим номер, допишем к восьмерке в первом окне пару нулей и снова нажмём "Плюс". 800+5 у нас получилось 8005. Компьютер нас не понимает. Он просто склеивает записи (тексты) в окнах. К первому числу дописывает цифры (символы) второго, как будто составляет слова из букв. Разъясним компьютеру, что речь о числах. Остановим работу приложения и войдём в среду разработки. Программисты Microsoft научили Visual Basic различать разные типы чисел, и в числе прочих VB знает тип Single. В этот тип входят десятичные дроби "умеренной" точности. Поскольку целые числа разных типов являются подмножествами типа Single, то этот тип для нас самый подходящий. Изменим строку кода, что бы она стала такой: txtRez.Text = CSng(txtA.Text) + CSng(txtB.Text). Здесь мы использовали функцию Csng( ), она переделывает (преобразует) наборы символов в десятичное число. Теперь приложение будет работать правильно.

Напишем аналогичные процедуры для остальных кнопок. Получится

Public Class Form1


Private Sub btnAdd_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnAdd.Click
txtRez.Text = CSng(txtA.Text) + CSng(txtB.Text)
End Sub
Private Sub
btnMinus_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnMinus.Click
txtRez.Text = CSng(txtA.Text) - CSng(txtB.Text)
End Sub
Private Sub
btnMult_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnMult.Click
txtRez.Text = CSng(txtA.Text) * CSng(txtB.Text)
End Sub
Private Sub
btnDiv_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnDiv.Click
txtRez.Text = CSng(txtA.Text) / CSng(txtB.Text)
End Sub
End Class

[На главную] [Назад на предыдущую] [Вперёд на следующую]


Сайт управляется системой uCoz