КАТЕГОРИИ: Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748) |
Обратите внимание, что в лабораторных работах приведенные выше установки обязательно необходимо использоватьПреобразование данных в выражениях и операторе присваивания У многих программистов при работе на VB часто возникают проблемы с правильным преобразованием вещественных чисел или же строк, содержащих числа, к целым числам. Рассмотрим более подробно проблему преобразования данных в выражениях и операторах присваивания. В процессе рассмотрения примеров мы уже встречались с проблемой преобразования данных. При работе с данными в VB нужно иметь в виду поддерживаемые в VS преобразования. Во-первых, это расширяющие, не приводящие к потерям данных, преобразования, например,
Integer →Long, Decimal, Single, Double.
Во-вторых, это сужающие – преобразования (с возможностью потерей данных) в тип данных, содержащий меньшие значения данных, например,
Single→Integer; Double→Integer.
Потери данных, связанных с сужающими преобразованиями, можно избежать, используя установки
Option Strict On Option Explicit On.
Напомним, что первая установка (оператор Option Strict On) разрешает все расширяющие преобразования, а все сужающие преобразования заставляет программиста делать осознанно, т.е. явно вызывая нижеописанные функции преобразования типов. Вторая установка (оператор Option Explicit On) принуждает программиста объявлять все переменные до их использования в программе. Приведем список функций языка Visual Basic, являющихся ключевыми словами, и, которые позволяют осуществлять явные преобразования типов: · 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.
Кроме «внутренних» функций языка Visual Basic для явных преобразований можно использовать классы и модули как VB, так и .NET. В модуле Microsoft.VisualBasic.Conversion определено множество методов преобразования значений, включая: · Int() и Fix() –функции возвращают целую часть числа. Предполагается, что аргумент имеет тип Double или является числовым выражением. Возвращается тип Double. А уже этот Double затем можно преобразовать в Integer или Long. Главное, чтобы число уместилось в диапазон нужного вам типа. Разность при использовании Int() и Fix() заметна только лишь при отрицательном значении аргумента. Дело в том, что Int() всегда возвращает ближайшее меньшее целое число, а Fix() просто отбрасывает дробную часть. То есть, для числа 4.5 и Int() и Fix() вернут 4, тогда как для числа -4.5, Int() вернет – 5, а Fix() – -4. · Val(x) – преобразует значение параметра x строкового типа String к числовому значению типа Double. · Str(x) – преобразует число в строку, причем перед положительным числом вставляется пробел.
Приведем несколько примеров:
В модуле Microsoft.VisualBasic.String определено множество методов работы со строками, в том числе: · Format(x, строка символов) - преобразует числовое значение параметра xв заданный формат, который определяется строкой символов.
Если в качестве параметра функции передается булево значение, то возвращается строка True или False. Если передаются данные типа Date, то функцией возвращается строка, содержащая обозначение даты в принятом для системы формате. Любое числовое значение преобразовывается в символьное представление данного числа.
Функции CLng() и CInt(). Эти функции преобразовывают числовые аргументы в целое число типа Long и Integer соответственно. Дробная часть при этом округляется по правилам математики. Таким образом, если исходное число будет равно 1.5, то результатом преобразования при помощи CInt() или CLng() будет целое число 2. А если аргументом будет 1.4, то в результате получим 1. Знак числа при этом роли не играет, то есть -1.5 будет преобразована в -2, а -1.4 – в -1. При преобразовании из строки, содержащей число, важно помнить, что функции преобразования используют национальные настройки для получения символа разделения целой и дробной частей числа. Поэтому, если у вас разделителем целой и дробной частей числа является точка «.», а в строковом представлении числа будет фигурировать запятая, то вы получите ошибку несовпадения типов при попытке преобразовать такую строку в целое число (кстати, эта ошибка возникнет и при попытке использования CDbl() или CSng() для преобразования строки в вещественное число, а также и при использовании Int() или Fix()).
Функции Val(), CDbl() и CSng(). При использовании этих функций имеются свои нюансы. CDbl() и CSng() аналогичны CLng() и CInt(). CDbl() преобразовывает аргумент в вещественное число типа Double, а CSng() соответственно в Single. Естественно, надо обращать внимание на попадание аргумента в диапазон представления и на правильность разделителя целой и дробной частей. Для функций CDbl() и CSng() разделителем целой и дробной части числа обязательно должен быть символ запятая «,», а для функции Val() разделителем целой и дробной частей числа является точка «.». Функция Val() возвращает число, содержащееся в строке - аргументе как числовое значение типа Double. Данная функция будет пытаться преобразовать строку до тех пор, пока не встретит символ, который не может быть распознан как часть числа. В частности, функция прекрасно принимает точку в качестве разделителя, а вот пробелы просто игнорирует. Таким образом, функция Val()преобразует строки в соответствии с таблицей 4.2.4-1. Таблица 4.2.4-1
Ещё раз обратите внимание, что функции Val(x) и Str(x) при преобразовании в качестве разделителя целой и дробной частей числа функции Val(x) распознают только точку, а функция СDbl() и ей подобные – запятую, но та и другая функция игнорирует пробелы в числе. Рассмотрим несколько примеров:
Округление. Для округления используется функция Round(). Она возвращает число с заданным количеством цифр после запятой. Однако есть один нюанс. Функция Round() именно округляет (что собственно видно из названия). То есть, вызов Round(1.15, 1) даст результат 1.2. А иногда возникает ситуация, когда необходимо отбросить лишние цифры, то есть для числа 1.15 получить 1.1. Тогда надо пользоваться конструкцией вида: Fix(10*n)/10. Здесь вместо 10 должна использоваться степень 10, соответствующая количеству оставляемых цифр после запятой. Универсальный вариант будет таким:
Обратите внимание, что здесь используется именно функция Fix(), а не Int(), которая для отрицательных чисел будет работать некорректно.
В модуле Microsoft.VisualBasic.String определенно множество методов работы со строками, в том числе Format(x, строка символов) - преобразует числовое значение параметра xв заданный формат, который определяется строкой символов. Если в качестве параметра функции передается булево значение, то возвращается строка True или False. Если передаются данные типа Date, то функцией возвращается строка, содержащая обозначение даты в принятом для системы формате. Любое числовое значение преобразовывается в символьное представление данного числа. Если параметр строка символов опущен, то функция производит тоже действие, что и функция Str() для численного выражения. Положительные числа, преобразуемые в строки, теряют пробел слева, зарезервированный для знака. Если положительное число преобразовано в строку функцией Str(), то пробел слева сохраняется. Например,
Для всех числовых типов VB и всех соответствующих классов .NET определен метод ToString(x), который преобразует числовое значение в строку. Этот метод особенно полезен, когда строковое представление числа нужно добавить к другой строке:
Метод ToString(x) учитывает региональные настройки и по умолчанию используются настройки, связанные с текущим потоком. Например, в качестве десятичного разделителя он использует точку, если национальные настройки – это русский язык.
Все числовые классы поддерживают перегруженную форму метода ToString(), которая позволяет использовать строку форматирования целых действительных чисел в однотипные строки:
Запятая в строке форматирования означает отделение каждых трех цифр в числе пробелом, а точка – представление дробной части числа. Для явного преобразования любого числового типа в строку, кроме функций Str() и CStr(), можно использовать метод ToString() класса Convert:
Напомним также, что обратное преобразование из строки в число можно выполнить или с помощью функций Val(), CDbl(), CInt(), или с помощью соответствующих методов класса Convert – ToDouble(), ToInt32() и других. Причем список методов можно увидеть с помощью технологии IntelliSense при вводе точки после Convert(рис. 4.2.4-1): Рис. 4.2.4-1 4.2.5. Задачи для самостоятельного решения по теме «Основные средства языка программирования
4.2.6. Тестовые задания по теме 1. Синтаксис языка программирования – это 1) набор правил истолкования отдельных языковых конструкций 2) грамматические правила языка 3) правила компиляции операторов языка
2. Алфавит языка программирования – это 1) переменные и операторы языка 2) множество символов, из которых строятся все конструкции языка 3) множество идентификаторов
3. Идентификаторы – это 1) имена лексических элементов языка 2) имена переменных 3) ключевые слова 4) имена операторов
4. Ключевые слова – это 1) идентификаторы, зарезервированные для специального использования 2) операторы языка 3) константы языка 4) операторы языка
Дата добавления: 2014-12-27; Просмотров: 464; Нарушение авторских прав?; Мы поможем в написании вашей работы! Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет |