|
Пример 4.2.2-2.Создать проект, показывающий использование фундаментальных (базовых) типов данных.Стр 1 из 4Следующая ⇒ 1) Запустить VS. 2) Выполнить команды, позволяющие создать проект Пример-2.2-2. В окне Конструктор форм появится пустая форма Пример2.2-2. На ней необходимо создать форму проекта Пример 2.2-2 (рис.4.2.2-4). Проект Фундаментальные типы данных – это учебный проект, который будет демонстрировать работу основных типов данных. Необходимо обратить внимание, на то, где должны располагаться объявления переменных так, чтобы они были доступны для всех процедур событий проекта. Кроме того, в этом проекте используется элемент управления ListBox . ListBox – это список, в который можно записывать и из которого можно выбирать одно из предложенных значений. Значения в списке могут размещаться в одну или несколько колонок в зависимости от значения свойства MultiColumn. Если элементы списка расположены в нескольких колонках, с помощью свойства ColumnWidth можно изменить заданную по умолчанию ширину колонок.
Рис. 4.2.2-4. Форма проекта Пример 4.2.2-2
Элементы в списке могут добавляться во время разработки проекта и программой – во время выполнения программы. При формировании списка во время проектирования с помощью свойства Itemsвручную задается весь необходимый список. После задания всех элементов нужно нажать кнопку OK, окно редактора элементов управления закроется, а элемент управления ListBox будет отображать указанные значения. 3) В окне Редактор кода дописатьпрограммный код (рис. 4.2.2-5).
Рис. 4.2.2-5. Программный код проекта Пример 2.2-2
Необходимо отметить, что все переменные, объявленные в модуле формы, будут доступны, т.е. будут иметь область видимости во всех процедурах событий формы. Таким образом, можно установить значение переменной в одной процедуре события, а прочитать его – в другой. Обычно переменные доступны только в той процедуре события, в которой они объявлены. Чтобы сделать их доступными для всей формы, их требуется объявить в верхней части кода формы, перед событийными процедурами. Необходимо также отметить, что в процедуре событий PrivateSubListBox1_SelectedIndexChanged(…) используется оператор SelectCase, который подробно будет рассмотренв Теме 4.4. 4) Щелкнуть по кнопке Начать отладку на стандартной панели инструментов.
Рис. 4.2.2-6. Форма проекта Пример.2.2-2 после загрузки формы
Появится окно приложения, изображенное на рис. 4.2.2-6. Программа Фундаментальные типы данных позволяет проводить эксперименты с 11 типами данными. При щелчке на имени типа в поле списка программа отображает пример данных этого типа. 5) Щелкнуть в поле списка на типе Integer. В поле формы Пример данных появится число 37 500 000. Заметьте, что ни один из типов, данных Short, Integer и Long не позволяет вводить или отображать в их значениях десятичные точки. 6) Щелкнуть в поле списка на типе Date. В поле формы Пример данных появится дата 3/1/1963. 7) Чтобы увидеть, как VB отображает типы данных в поле Пример данных, необходимо щелкнуть в поле списка на каждом из них. 8) Чтобы остановить программу, щелкните на кнопке формы Выход 9) Теперь необходимо посмотреть, как в форме объявляются базовые типы данных и как они используются в процедуре ListBox1_Selected_IndexChanged(…). 10) Рассмотрим процедуру события Form1_Load(…) (рис.4.2.2-5). Операторы этой процедуры добавляют значения в элемент управления ListBox при загрузке формы в начале отладки. 11) Процедуру ListBox1_SelectedIndexChanged(…) обрабатывает выбор, сделанный в поле списка. Основой этой процедуры события является условная конструкция SelectCase. Обратите внимание, как каждый выбор блока SelectCase присваивает заданное значение одной из переменных базового типа данных, а затем присваивает значение этой переменной свойству Text объекта Label3 формы. Попробуйте изменить данные в нескольких операторах присвоения переменных и запустить эту программу, чтобы увидеть, как изменились данные. В частности, вы можете попробовать присвоить переменным значения, которые находятся вне области допустимых значений, показанных в таблице типов данных. Если вы сделаете такую ошибку, VB в окне Редактор кода подчеркнет некорректное значение волнистой линией, и программа не запустится до тех пор, пока вы не исправите это значение. Чтобы узнать об ошибке поподробнее, поместите мышь над подчеркнутым волнистой линией значением и прочтите всплывающую подсказку, содержащую сообщение об этой ошибке. 12) Если были сделаны какие-то изменения, которые необходимо записать на диск, то щелкнуть на кнопке Сохранить на Стандартной панели инструментов.
Константы. Рассмотрим правила объявления констант. Если переменная в программе содержит значение, которое никогда не меняется (такое, например, как число π, являющееся фиксированной математической величиной), то целесообразно хранение такого значения не в переменной, а в виде константы. Имя константы – это осмысленное имя, которое заменяет неизменяемое при выполнении программы число или тестовую строку. Константы увеличивают читаемость кода программы, снижают количество программных ошибок и облегчают внесение в код глобальных изменений. Константы действуют как переменные, но при работе программы их значение не изменяется. Они объявляются с помощью ключевого слова Const, в соответствии со следующим правилом:
Например,
Этот оператор создает константу с именем Pi, которая может быть использована в коде программы вместо значения 3.14159265. Чтобы сделать константу доступной для всех объектов и процедур формы, поместите этот оператор в верхней части кода формы вместе с другими объявлениями переменных и структур, область видимости которых распространяется на все процедуры формы. Инициализаторы – это значения, которые присваиваются переменным во время ее объявления. Это позволяет упростить код и облегчить его чтение.
Инициализировать переменную можно только тогда, когда это единственная переменная, объявляемая в выражении Dim, Public или Private:
4.2.3. Выражения,
Выражение – это единица программного кода, которая определяет способ вычисления некоторого значения. Выражения в языке программирования формируются в соответствии с определенными правилами из констант и переменных, компонент массивов, полей записей, функций и знаков операций. Запись в тексте программного кода отличается от обычной математической записи. Операции подразделяются на следующие типы: · арифметические; · логические; · строковые.
Здесь подробно рассмотрим только арифметические операции, строковые операции кратко, а логические операции будут рассмотрены в Теме 4.4.
Таблица 4.2.3-1
Таблица 4.2.3-2
Принято различать унарные и бинарные операции. Унарный знак плюс «+» перед величиной не изменяет ее значения. Унарный знак минус «-» перед величиной изменяет ее знак на противоположный. К бинарным арифметическим операциям относятся сложение, вычитание, умножение, деление, целочисленное деление (без остатка), остаток от деления, возведение в степень. Если в выражении используются несколько данных (переменных, констант и функций), то их типы должны быть идентичными либо совместимыми. Далее об этом поговорим подробнее. Например, арифметические операции, применимые только к величинам целых и вещественных типов, приведены в табл.4.2.3-1. В выражениях используются круглые скобки для заключения в них тех частей выражения, которые необходимо вычислить в первую очередь. Количество открывающих скобок должно быть равно количеству закрывающих. Вычисление выражений выполняется в определенном порядке, установленном круглыми скобками, и в соответствии с приоритетом операций (табл. 4.2.3-2). Операции с равным приоритетом обычно выполняют слева направо. Операция Mod возвращает остаток, полученный путем деления двух операндов целого типа. Пример 4.2.3-1. Создать проект,демонстрирующий использование операций +, -, * и /. 1) Запуститt VS. 2) Выполнить команды, позволяющие создавать новый проект с именем Пример 2.3-1. Базовые математические операции. В окне Конструктор форм появится пустая форма. 3) Создать форму проекта Пример 2.3-1 (рис.4.2.3-1).
Рис.4.2.3-1. Исходная форма проекта Пример 4.2.3-1
4) Проект Пример 2.3-1 демонстрирует, как с вводимыми числами работают операторы сложения, вычитания, умножения и деления. Он также демонстрирует, как использовать для обработки в программе ввода пользователя объекты текстового поля, переключателя и кнопки. 5) В форме проекта Пример 2.3-1 используются элементы управления RadioButton (переключатели). Так как обычно эти элементы располагаются в группах, то они позволяют выбрать одно из нескольких значений. Установка одного переключателя в группе (присвоение его свойству Checked значения True) автоматически сбрасывает другие переключатели, присваивая аналогичным свойствам значение False. 6) При размещении в форме нескольких групп переключателей, каждая логическая группа должна помещаться в отдельный контейнер, например, в элемент управления GroupBox. В этом случае для создания в форме группы переключателей необходимо сначала поместить в форму рамку, а затем разместить в ней поочередно необходимое количество переключателей RadioButton. 7) Для написания программного кода этого проекта необходимо дважды щелкнуть на кнопке Вычислить формы. Окно Редактор кода отобразит пока пустую процедуру события Sub Button1_Click(…). Ввести в нее код, приведенный на рис.4.2.3-3. 8) Дважды щелкнуть на кнопке Выход формы и в появившуюся процедуру события Sub Button2_Click(…) ввеcти оператор End (рис. 4.2.3-3). 9) Щелкнуть на кнопке Начать отладку, наГлавной панели инструмен- тов. Проект начнет выполняться. Эта программа отображает два текстовых поля, в которые вводятся числовые значения, группу переключателя операторов, поле, которое отображает результаты, и два объекта кнопок. 10) В текстовом поле Переменная1 ввести число 100, а затем нажать на 11) <Tab > клавиатуры. Курсор ввода переместится во второе текстовое 12) поле (это поле получит фокус ввода). 13) В текстовом поле Переменная2 ввести число 17.
Рис. 4.2.3-2. Результат работы проекта Пример 2.3-2
14) К двум значениям применить любой из математических операторов. Например, щелкнуть на переключателе Сложение, а затем щелкнуть на кнопке Вычислить. В поле Результат появится число 117, как показано на рисунке 4.2.3-2. 10) Попрактикуйтесь в использовании операторов вычитания, умножения и деления для чисел, указанных в полях переменных. (Для вычисления каждой из формул необходимо щелкнуть на кнопке Вычислить.) Результат появляется в поле Результат. Также поэкспериментируйте с другими числами, введя их в текстовые поля переменных. (Если хотите, можете попробовать использовать числа с десятичными точками.) Для объявления соответствующих переменных использован тип данных Double, так что можете использовать очень большие числа. 11) Далее ввести в текстовом поле Переменная1 число 100, в текстовом поле Переменная2 – число 0, щелкнуть на переключателе Деление, а затем щелкнуть на кнопке Вычислить. 12) Деление на ноль при математических вычислениях запрещено, так как оно дает бесконечный результат. Но VB может справиться с таким вычислением и отобразить в текстовом поле Результат значение Infinity (Бесконечность). Способность обрабатывать некоторые условия деления на ноль является автоматически предоставляемой функцией VB. 13) Когда закончится процесс изучения щелкнуть на кнопке Выход. Программа остановится. 14) Теперь, чтобы узнать, как были получены такие результаты, необходимо проанализировать код программы (рис.4.2.3-3). Код использует несколько стандартных элементов управления ввода и содержит процедуру события, которая использует переменные и операторы для вычисления простых математических формул. Программный код объявляет переменные в верхней части кода формы, и, таким образом, они могут быть использованы во всех процедурах событий Form1. 15) В верхней части кода также записан оператор, который объявляет две переменные типа Double:
Тип Double был использован для того, чтобы использовать тип переменных общего назначения, который может работать с различными числами - целыми, числами с десятичной точкой, очень большими числами, маленькими числами и тому подобным. Переменные объявлены в одной и той же строке с помощью сокращенной записи. Обе переменные FirstNum и SecondNum имеют тип Double, и они используются для хранения значений, вводимых в первом и втором текстовых полях соответственно.
Рис. 4.2.3-3. Программный код проекта Пример 2.3-1
Первые два оператора этой процедуры события передают данные, введенные в объектах текстовых полей, в переменные FirstNum и SecondNum.
Элемент TextBox осуществляет передачу с помощью свойства Text, которое принимает текст, введенный пользователем, и делает его доступным для использования в программе. После того, как значения текстовых полей присваиваются переменным, процедура события определяет, какой переключатель был отмечен, вычисляет математическую формулу и отображает результат в третьем текстовом поле. Первая проверка переключателя выглядит так:
В каждый момент времени из группы объектов может быть выбран только один объект переключателя. Чтобы определить, был ли выбран переключатель, проверьте значение свойства Checked. Если оно равно True, то переключатель был выбран. Если свойство Checkedравно False, то переключатель не был выбран.
Часто возникает необходимость выполнить в программе более сложные действия с числами. Например, может понадобиться округлить число, вычислить сложное математическое выражение или использовать в программе случайные числа. Математические методы (функции), показанные в табл. 4.2.3-3, могут помочь в работе с числами в ваших формулах. Эти методы (процедуры) предоставляются MS.NETFramework– библиотекой классов, которая позволяет выполнить множество часто возникающих задач программирования, требуемых реализовать в проекте. Известно, что платформа.NETFrameworkорганизована в виде библиотек классов, которые могут быть включены в проекты программирования по их именам с помощью оператора Imports. Этот процесс достаточно прост, и далее мы поэкспериментируем с математическими методами (процедурами) из класса System.Math.
В табл. 4.2.3-3 представлен неполный список математических методов класса System.Math. Аргумент x в этой таблице представляет число, переменную или оператор, которые требуется передавать в метод для обработки. При использовании каких-либо из этих методов необходимо убедиться, что оператор ImportsSystem.Math находится в окне Редактор кода в самом начале программного кода.
Таблица 4.2.3-3
Прокомментируем некоторые методы. Функция Log(x[, n]) поддерживает один аргумент (натуральный логарифм) или два аргумента (логарифм по основанию n):
Методы Min(x,y) и Max(x,y) вычисляют минимальное и максимальное значения, соответственно, и используются для работы со всеми числовыми типами данных. Метод Floor(x) возвращает целое число, которое меньше или равно аргументу метода, в то время как метод Ceiling(x) возвращает целое число, которое больше или равно аргументу метода. Метод Truncate(x) просто отбрасывает дробную часть и, следовательно, работает отлично от метода Ceiling(x), если аргумент отрицателен:
Метод DivRem(x,y,r) выполняет целочисленное деление и возвращает остаток (r) в третий аргумент:
Напомним, если логарифм имеет не натуральное основание, то его можно преобразовать к натуральному логарифму – Logab=Log(b)/Log(a). Значение аргумента х в тригонометрических функциях дается в радианах. Обычно по традиции, используемые в языках программирования библиотечные функции, называют «встроенными функциями». На самом деле они представляют собой стандартные методы (процедуры) из библиотеки VB или из библиотеки классов Microsoft.NETFramework, которым передается один или несколько аргументов и которые возвращают вычисленное значение через имя функции. Обращение ко всем функциям всегда происходит по их именам, за которыми в скобках следуют аргументы. Вычисление функций в арифметическом выражении предшествует выполнению арифметических операций. Аргументом встроенной функции может быть любое арифметическое выражение. Кроме того, если в начале программного кода отсутствует оператор ImportsSystem.Math, то перед обращением к функциям необходимо указать имя класса с точкой, например, Math.Sin(x). Обратите внимание, что в табл.4.2.3-3 описаны две системные константы (E и PI) .
Пример 4.2.3-2. Создать проект, использующий метод класса 1) В меню Файл выполнить команду Создать проект. Появится диалоговое окно Создать проект. 2) Создать новый проект типа с именем Пример 4.2.3-2 (Встроенные математические функции). В окне Конструктор появится пустая форма. 3) Щелкнуть на элементе управления Button окна Панель элементов и создать в верхней части формы объект кнопку. 4) Щелкнуть в окне Панель элементов на элементе управления TextBox и отобразитьпод объектом кнопка два объекта текстового поля. 5) Установить свойство Textобъекта кнопки равным Квадратный корень. 6) Вызвать окно Редактор кода. 7) В самом верху окна Редактор кода, над оператором PublicClassForm1, ввести оператор программы: ImportsSystem.Math Оператор Imports добавляет в проект библиотеку объектов, свойств и методов. Этот оператор должен быть первым оператором программы - он должен идти даже перед переменными, которые объявляются для всей формы, и перед оператором PublicClassForm1, который в VB создается автоматически. Конкретной библиотекой классов, которую мы выбрали, является System.Math, которая является коллекцией объектов, свойств и методов, предоставляемой.NETFrameworkдля выполнения математических операций. 8) Спуститься в окне Редактор кода вниз и в процедуру события
Эти операторы объявляют переменную типа Double с именем Result, используют метод Sqrt() для вычисления квадратного корня из числа, введенного в поле TextBox2.Text, и присваивают значение переменной Result свойству Textобъекта текстового поля TextBox1 так, что в нем отображается результат вычисления. 9) Чтобы сохранить изменения, щелкнуть на кнопке Сохранить Все стандартной панели инструментов. В качестве места сохранения укажите необходимую папку (каталог). 10) Щелкнуть на кнопке Начать отладку на стандартной панели инструментов. 11) Введите число 625 в поле TextBox2.Text. 12) Щелкнуть на кнопке формы Квадратный корень. VB вычислит квадратный корень из 625 и отобразит в текстовом поле результат этого вычисления (рис. 4.2.3-8).
Рис. 4.2.3-4. Форма проекта Пример 2.3-2
Рассмотрим члены базовых числовых классов, а именно, методы и поля (свойства), которые будут полезны при разработке проектов лабораторных работ. Для всех числовых типов VBи всех соответствующих классов
Числовые классы, которые поддерживают значения с плавающей точкой, а именно, классы Single и Double, имеют несколько дополнительных статических свойств, предназначенных только для чтения. Свойство Epsilon возвращает наименьшее положительное (не равное нулю) число, которое можно хранить в переменной данного типа:
В классах Single и Double, к тому же, определены статические методы, которые позволяют проверять то, что переменные их типа содержат специальные значения, такие как IsNegativelnfinity(), IsPositivelnfinity() и IsNaN(). В классе Microsoft.VisualBasic.Interaction определено множество полезных команд и методов взаимодействия программ, включая Beep(), Кроме числовых данных, при написании программного кода активно используются строковые и символьные данные. Подробно они будут рассмотрены в Теме 4.9, где будут описаны свойства и методы классов System.String и System.StringBuilder.NET. Здесь кратко рассмотрим строковые типы данных, так как они будут использоваться почти во всех программных кодах проектов для ввода и отображения данных на форме. Основная операция со строка – это операция конкатенации – & (+):
Объявленная строковая переменная, которой еще не присвоено никакое значение, содержит значение Nothing или, точнее, не указывает на какую-либо последовательность символов в памяти. Такая переменная отличается от переменной, которая равна пустой строке:
Необходимо обратить внимание, что VB не предлагает способа ввода в строку непечатных символов, например, символов табуляции или новой строки. Строковые константы, такие как vbCrLf, vbTab и другие, поддерживаются как свойствами класса Microsoft.VisualBasic.Constants. Этот класс обозначен как глобальный, поэтому в программный код необязательно включать имя этого класса. В качестве альтернативы можно использовать свойства класса Класс ControlChars содержит константы Back, Cr, CrLf, FormFeed, NewLine, NullChar, Quote, Tab и VerticalTab. Наиболее используемые константы представлены в табл.4.2.3-4.
Таблица 4.2.3-4
Чтобы включить эти символы в строку, необходимо использовать конкатенацию строк. Например,
Класс Microsoft.VisualBasic.Strings содержит большинство строковых функций языка VB, включая Asc, Chr, ChrW, Filter, Format, FormatCurrency, FormatDateTime, FormatNumber, FormatPercent, InStr, InStrRev, Join, LCase, Left, Len, LTrim, Mid, Replace, Right, RTrim, Space, Split, StrComp, StrReverse, Trimи UCase. Эти методы определены глобально, поэтому для их вызова необязательно указывать полное имя класса, хотя нужно указывать полное имя связанных с ними констант. Подробнее эти функции будут рассмотрены в Теме 4.9.
4.2.4. Преобразование данных в выражениях
У многих программистов при работе на VBчасто возникают проблемы с правильным преобразованием вещественных чисел или же строк, содержащих числа, к целым числам. Рассмотрим более подробно проблему преобразования данных в выражениях и операторах присваивания. В процессе рассмотрения примеров мы уже встречались с проблемой преобразования данных. При работе с данными в VBнужно иметь в виду поддерживаемые в VS преобразования. Во-первых, это расширяющие, не приводящие к потерям данных, преобразования, например, Integer → Long, Decimal, Single, Double. Во-вторых, это сужающие – преобразования (с возможностью потерей данных) в тип данных, содержащий меньшие значения данных, например, Single → Integer; Double → Integer . Потери данных, связанных с сужающими преобразованиями, можно из бежать, используя установки Option Strict On Option Explicit On. Напомним, что первая установка (OptionStrictOn) разрешает все расширяющие преобразования, а все сужающие преобразования заставляет программиста делать осознанно, т.е. явно вызывая нижеописанные функции преобразования типов. Вторая установка (OptionExplicitOn) принуждает программиста объявлять все переменные до их использования в программе. Обратите внимание, что в лабораторных работах приведенные выше установки обязательно необходимо использовать. Приведем список функций языка VB, являющихся ключевыми словами, и, которые позволяют осуществлять явные преобразования типов: · CBool(x) - возвращает логическое значение. В качестве параметра x функции может быть передано условие или числовое значение. · CByte(x) - возвращает значение типа Byte. В качестве параметра x передается соответствующая строка или числовое значение. · CChar(x) - возвращает символ. В качестве параметра x передается целое число, находящееся в промежутке от 0 до 65 535. · CDate(x) - возвращает значение типа Date. В качестве параметра x можно использовать любое принятое обозначение даты. · CDbl(x) - преобразовывает значение параметра x к типу Double. · CDec(x) - применяется для преобразования параметра x к типу Decimal. · CInt(x) - преобразовывает значения параметра x к целочисленному типу Integer. Если в качестве параметра x передано дробное число, то дробная часть просто округляется по правилам математики. · CLng(x) - возвращает значение типа Long. Обработка параметра x производится по образцу функции CInt(x). · CShort(x) - преобразовывает значение параметра x к типу Short. · CSng(x) - применяется для преобразования значения параметра x к типу Single. · CStr(x) - используется для преобразования данных в строковый тип String.
Кроме «внутренних» функций языка VB для явных преобразований можно использовать классы и модули как VB, так и.NET. В модуле Microsoft.VisualBasic.Conversion определено множество методов преобразования значений, включая: · Int() и Fix() – функции возвращают целую часть числа. Предполагается, что аргумент имеет тип Double или является числовым выражением. Возвращается тип Double. А уже этот Double затем можно преобразовать в Integer или Long. Главное, чтобы число уместилось в диапазон нужного вам типа. Разность при использовании Int() и Fix() заметна только лишь при отрицательном значении аргумента. Дело в том, что Int() всегда возвращает ближайшее меньшее целое число, а Fix() просто отбрасывает дробную часть. То есть, для Int(4.5)и Fix(4.5) возвращает 4, тогда как для Int(-4.5) возвращает – 5, а для Fix(-5) – -4. · Val(x) – преобразует значение параметра xстрокового типа String к числовому значению типа Double. · Str(x)– преобразует число в строку, причем перед положительным числом вставляется пробел.
Эти функции преобразовывают числовые аргументы в целое число типа Long и Integer соответственно. Дробная часть при этом округляется по правилам математики. Таким образом, результатом преобразования CInt(1.5) или CLng(1.5) будет целое число 4.2. А если аргументом будет 1.4, то в результате получим 1. Знак числа при этом роли не играет, то есть -1.5 будет преобразовано в -2, а -1.4 – в -1. При преобразовании из строки, содержащей число, важно помнить, что функции преобразования используют национальные настройки для получения символа разделения целой и дробной частей числа. Поэтому, если у вас разделителем целой и дробной частей числа является точка «.», а в строковом представлении числа будет фигурировать запятая, то вы получите ошибку несовпадения типов при попытке преобразовать такую строку в целое число (кстати, эта ошибка возникнет и при попытке использования CDbl() или CSng() для преобразования строки в вещественное число, а также и при использовании Int() или Fix()). Функции Val(), CDbl() и CSng(). При использовании этих функций имеются свои нюансы. CDbl() и Что делать, если нет взаимности? А теперь спустимся с небес на землю. Приземлились? Продолжаем разговор... ЧТО И КАК ПИСАЛИ О МОДЕ В ЖУРНАЛАХ НАЧАЛА XX ВЕКА Первый номер журнала «Аполлон» за 1909 г. начинался, по сути, с программного заявления редакции журнала... Конфликты в семейной жизни. Как это изменить? Редкий брак и взаимоотношения существуют без конфликтов и напряженности. Через это проходят все... Живите по правилу: МАЛО ЛИ ЧТО НА СВЕТЕ СУЩЕСТВУЕТ? Я неслучайно подчеркиваю, что место в голове ограничено, а информации вокруг много, и что ваше право... Не нашли то, что искали? Воспользуйтесь поиском гугл на сайте:
|