Visual Basic .NET для чайников - У. Вонг. Visual Basic .NET для чайников - У. Диалектикамосква СанктПетербург Киев
Скачать 7.1 Mb.
|
Глава Займемся математикой 187 Список функций, изменяющих тип данных, приведен в табл. Таблица 17.2. Функции преобразования типов данных Функция Тип возвращаемых данных Диапазон принимаемых аргументов Cbyte CDec Boolean Byte Char Date Decimal Double CObj CShort CSng Intege Long Object Short Single CStr String Любое допустимое числовое или символьное выражение 255 От 0 до 65535 Любое допустимое представление даты или времени без десятичной запятой; с 28 знаками после запятой; до числа) и от до Е+308 (положительные числа) 147 483 648 до 2 147 483 647; дробные части чисел округляются от -9 223 372 036 854 775 808 до 9 223 372 036 854 775 807; дробные части чисел округляются Любое допустимое выражение От -32 768 до 32 767; дробные части чисел округляются От -3,402823Е+38 до (отрицательные числа) От до (положительные числа) Любое допустимое выражение Логические Логические операторы предназначены для обработки значений True (Истина) и F a l s e (Ложь). В языке Visual Basic значению True соответствует число 1, а значению F a l s e — число 0. В табл. приведен список наиболее часто используемых логических Таблица Логические операторы Оператор Пример использования And Or And Переменная2 Or Переыенная2 Переменная1 Переменная2 Not Переменная 188 Часть IV. Основы создания кодов Применение оператора Not Оператор Not меняет одно логическое значение на противоположное, т.е. вместо значе- ния F a l s e присваивает значение True и наоборот: Переменная Значение True Not F a l s e Для большей ясности и выразительности кода некоторые программисты используют круглые скобки. При их наличии приведенный выше пример будет выглядеть так: Применение оператора And Оператор And сравнивает логические значения двух переменных и на основании результатов такого сравнения возвращает новое значение F a l s e или True. Рассмотрим следующий пример. Поездка = Машина And Бензин В каком случае переменная Поездка будет иметь значение True, а в каком F a l s e ? Воз- можны четыре варианта. Бензин Поездка True True F a l s e F a l s e True F a l s e F a l s e F a l s e Обратите внимание на следующее обстоятельство: переменная Поездка будет иметь значение True лишь при условии, что обе переменные и Машина, и Бен- зин — будут иметь значение Применение оператора Or Подобно оператору And, оператор Or сравнивает значения двух переменных и возвраща- ет новое логическое значение. Рассмотрим это на следующем примере: Осадки = Дождь Or Снег В зависимости от значений, принимаемых переменными Дождь и Снег, возможны такие четыре варианта: Дождь Снег Осадки True True True F a l s e True True True F a l s e True F a l s e F a l s e F a l s e Глава 17. Займемся математикой Оператор Or возвращает значение True, если хотя бы одна из переменных имеет значение True. Применение оператора Оператор равно как операторы And и Or, сравнивает значения двух переменных и возвращает новое логическое значение. Рассмотрим это на таком примере: Конфликт = Эксперт2 Два эксперта принимают одно из двух возможных решений (и соответствующие им пере- менные принимают значение True либо False). Посмотрим, в каких случаях будет возни- кать конфликтная ситуация (переменная Конфликт будет принимать значение True). Эксперт2 Конфликт F a l s e True True True True F a l s e F a l s e F a l s e Итак, оператор возвращает значение True, если две переменные имеют раз- ные логические значения. Операторы сравнения сопоставляют два числовых значения и определяют, равны они или не равны, какое из них больше, а какое меньше. Эти же операторы могут использоваться для определения равенства или неравенства текстовых значений. Перечень операторов сравнения приведен в табл. 17.4. Таблица 17.4. Операторы сравнения Оператор Определяет Равенство <> Неравенство Меньше чем Меньше или равно > Больше чем Больше или равно Сравнение числовых и текстовых значений Операторы сравнения сравнивают между собой два значения и в зависимости от результа- тов сравнения возвращают логическое значение F a l s e или True. Проиллюстрируем сказан- ное следующим примером: Часть IV. Основы создания кодов Dim Доход, Расход Integer Dim Рентабельность As Boolean Доход = 1 2 0 Расход = 140 Рентабельность = (Доход >= Расход) Вот как Visual Basic интерпретирует эти коды. 1. Первая строка говорит: "Создай переменные Доход и Расход типа I n t e g e r " . 2. Вторая строка: переменную Рентабельность типа Boolean". 3. Третья строка: "Присвой переменной Доход значение 4. Четвертая строка: "Присвой переменной Расход значение 140". 5. А пятая строка говорит: "Сравни значение переменной Доход со значением переменной Расход. Если значение переменное Доход будет больше или равным значению переменной Расход, присвой переменной Р е н т а б е л ь - ность значение True (Истина); в противном случае присвой переменной Рентабельность значение F a l s e (Ложь)." В нашем примере значение пе- ременной Доход (12 0) меньше значения переменной Расход 0), поэтому переменной Рентабельность будет присвоено значение F a l s e . Как видите, процесс сравнения числовых значений очевиден и прост. Со строковыми пе- ременными все несколько сложнее. Сопоставляя строки, Visual Basic определяет значе- ние кода ANSI для каждого сравниваемого символа. На самом нижнем (машинном) уровне компьютер способен различать только два числа: нуль и единицу. Поскольку компьютер на самом "понимает" только числовую информацию (и не различает букв и знаков), была придумана нехитрая система, связывающая с каждой буквой, знаком или символом определенное число. Так, букве соответствует число 97, букве "А"— число 65, а восклицательному знаку ( ! ) — число 33. Чтобы не было путаницы и все компьютеры использовали для представления букв и знаков одни и те же числа, Американский Национальный институт стандартизации (American National Standards Institute, ANSI) определил общую систему кодов для представления всех текстовых символов. Использование для сравнения строк операторов = и О Две строки равны только в том случае, если они абсолютно идентичны. Рассмотрим это на следующих примерах. Операция Возвращаемый результат V = True = False = F a l s e Если строки хоть чем-то различаются, они не являются равными другу. Следователь- но, если проверяется неравенство строк, то оно будет неверно только при условии, что строки абсолютно одинаковы, например: Операция Возвращаемый результат "A" "Образ" <>'Образ' False Глава Займемся математикой 191 Сравнивая строки, Visual Basic воспринимает прописные и строчные буквы как совершенно разные знаки. Использование для сравнения строк операторов >=, < и <= Сравнивая строки, Visual Basic определяет и сопоставляет значения кодов ANSI для первых букв в каждой строке. Если они совпадают, сравниваются коды вторых букв и т.д. Та строка, чей сравниваемый символ имеет больший код, считается большей. Например, букве "А" соответствует код ANSI, равный числу 65, а букве соответствует код ANSI, равный числу 97. С учетом этого рассмотрим такой пример: Flag = ("Air" < Поскольку первой букве строки Air соответствует меньшее значение кода ANSI, чем первой букве строки aardvark, Visual Basic расценивает строку Air как меньшую, чем строка aardvark. Поэтому сравнение считается корректным и переменной Flag будет присвоено значение True. Теперь рассмотрим другой пример: Flag ( " a i r " < " a a r d v a r k " ) Переменной Flag будет присвоено значение F a l s e , поскольку строка a i r больше, чем строка aardvark. Почему? Первые буквы строк совпадают, следовательно, совпадают и значения их кодов ANSI. Поэтому Visual Basic переходит ко вторым буквам. Код, соот- ветствующий букве i, больше, чем код, соответствующий букве а, вот почему Visual Basic решает, что строка a i r больше строки aardvark. И последний пример: Flag = ( " a i r " < " a i r p l a n e " ) Теперь переменной Flag будет присвоено значение True. Первые три буквы у обеих строк одинаковы, поэтому Visual Basic переходит к четвертой паре. Поскольку в первой строке четвертой буквы нет, а во второй таковая есть, вторая строка считается большей, и операция сравнения воспринимается как правильная (возвращается значение True). Тест на проверку полученных вами знаний Чем различаются принципы использования операторов косая черта и обратная ко- сая черта (\}? а. Косая черта делит одно число на другое, а обратная косая черта снова возвращает все на свои места. б. Обратная косая черта создана для лев- шей, в то время как прямой косой чертой пользуются в основном правим. в. Косая черта возвращает результат с пла- вающей запятой (тип Decimal), а об- ратная косая черта возвращает целое число (тип г. Ничем не различаются, но если набрать их вместе получится эффект, который называется дяди Тома*. :. или лозою выражение а. Ложно. Слово a e r o p l a n e больше, по- скольку оно одну букву длиннее. б. Истинно, поскольку a e r o p l a n e является названием летательных аппаратов. в. Слова равнозначны, поскольку обозначают, по сути, одно и то же. г. Истинно, поскольку второй букве в слове меньший код 192 Часть IV. Основы создания кодов Что если в одной строке будут использованы сразу несколько операторов, например: Dim Mess As S i n q l e Mess = 4 / 7 + 9 * 2 Значение, которое будет присвоено переменной Mess, равно Почему получено именно такое значение? Потому что вначале вычисляются те операторы, которые имеют больший Если одном выражении используется несколько операторов, Visual Basic выполня- ет операции поочередно, в соответствии с приоритетом каждого оператора. В табл. 17.5 все рассмотренные нами операторы расположены в порядке уменьшения их приоритета. Те из них, у кого приоритет больше, расположены выше остальных. Следовательно, приоритет оператора умножения (*) выше, чем приоритет оператора равенства Таблица 17.5. Приоритет операторов Оператор Тип оператора Возведение в Умножение и деление (/) Деление без остатка {\) Остаток от деления (mod) Сложение (+) и вычитание (-) Конкатенация строк (&) Равенство Неравенство ( о ) Больше чем (>) и меньше чем (<) Больше или равно (>=) Меньше или равно Not And Or Арифметический Арифметический Арифметический Арифметический Арифметический Арифметический Арифметический Сравнения Сравнения Сравнения Сравнения Сравнения Логический Логический Логический Логический Вы спросите, как же Visual Basic вычисляет значение для переменной Mess в при- веденном ниже примере? Dim Mess As S i n g l e Mess -= 4 / 7 + 9 * 2 Глава Займемся математикой 193 помочь вам в этом разобраться, рассмотрим данный процесс пошагово. 1. Вначале Visual Basic смотрит на используемые в выражении операторы и определяет приоритет каждого из них. 2. Поскольку операторы деления и умножения имеют одинаковый приоритет, обрабатывается вначале тот из них, который расположен левее. Таким обра- зом, первым вычисляется выражение 4/7, его результат 3) под- ставляется в общее выражение: Mess = 0 , 5 7 1 4 3 + 9 * 2 3. Далее Visual Basic определяет, что приоритет оператора умножения вы- ше, чем оператора сложения, поэтому следующим вычисляется выражение 9 2 и его результат также подставляется в общее выражение: Mess 18 4. Последней выполняется операция сложения, и переменной Mess присваива- ется значение Не исключено, что из каких-то соображений вы решите, что вначале должна быть выпол- нена операция сложения. Чтобы задать порядок производимых операций, воспользуйтесь круглыми скобками. Те операции, которые заключены в круглые скобки, будут выполнены первыми, вне зависимости от их приоритета. Например, добавим скобки в рассмотренное выше выражение: Mess = 4 / ( 7 + 9 ) * 2 Вот какими будут действия Visual Basic в этом случае. 1. Расположение скобок означает, что вначале должна быть выполнена операция сложения, в результате чего исходное выражение принимает следующий вид: Mess =4 / 16 2 2. Поскольку операторы деления и умножения имеют одинаковый приоритет, обрабатывается вначале тот из них, который расположен левее. Левее распо- ложен оператор деления. Определяется, что равно 2 и исходное выражение выглядит уже так: Mess = 0 . 2 5 2 3. Последней выполняется операция умножения, и переменной присваива- ется значение 0 , 5 . Если ваше выражение состоит из нескольких операторов, то, воспользовавшись круглыми скобками, сможете облегчить его чтение и получить гарантию того, что Visual Basic выполнит операции в требуемом порядке. 194 Часть IV. Основы создания кодов Глава Обработка текстовой информации Определение длины строки Изменение регистра Удаление лишних пробелов > Поиск текстовых значений > Преобразование строк в коды ASCII программа может обрабатывать текстовую информацию не менее эффективно, чем числовые данные. Любое текстовое значение называется строкой и представля- ет собой произвольный набор букв, цифр и вы хотите присвоить текстовое значение, осязательно возьмите его в кавычки, например, "как эту строку". Кавычки дадут понять программе, что это значение является именно строкой. Чтобы присвоить переменной тексто- вое значение наберите код Dim Phone As S t r i n g Phone = "123-4567" Сохранив какую-либо информацию как строку, вы получаете доступ к огромным возможно- стям Visual Basic ,NET по обработке, изменению и манипулированию текстовыми данными. Длина строки определяется количеством символов (включая пробелы), из которых она со- стоит. Для того чтобы установить длину строки, нужно воспользоваться командой Len: Переменная Например: Dim Строка As String Dim Длина As Integer Строка = "Раз дза три" Длина = В этом примере переменной Длина будет присвоено значение (строка состоит из девя- ти букв и двух пробелов). Если вам не нравится, как выглядит строка, можете изменить регистр букв, например, сделать все буквы строчными или, наоборот, прописными. Для этих целей в Visual Basic предусмотрены три команды: LCase, и Глава Обработка текстовой информации Как сделать ПРОПИСНЫЕ буквы строчными Чтобы все буквы строки стали строчными (нижний наберите следующую коман- ду BASIC: LCase ( "Строка") Dim Строка, строчные As S t r i n g Строка = "ЕСТЬ Ж ЖИЗНЬ НА МАРСЕ?" строчные = Переменной с т р о ч н ы е будет присвоено значение есть ли жизнь на марсе? Обратите внимание, что операция изменения регистра касается только букв. (Нельзя же сделать, например, вопросительный знак большим или маленьким.) Как сделать строчные буквы ПРОПИСНЫМИ Чтобы все буквы строки стали прописными (верхний регистр), наберите команду BASIC, приведенную ниже: Например: Строка, ПРОПИСНЫЕ As S t r i n g Строка = "хочу быть большой" ПРОПИСНЫЕ = Переменной ПРОПИСНЫЕ будет присвоено значение ХОЧУ БЫТЬ БОЛЬШОЙ Как сделать Первые Буквы Всех Слов Прописными Visual Basic может не только делать все буквы строки большими или маленькими, по и преобразовывать строку к специальному виду, при котором первые буквы слов ста- новятся прописными, а все остальные строчными. Для выполнения операции наберите следующий код BASIC: Например: Dim Строка, ProperCase As S t r i n g Строка = "хочу быть большой" = Переменной будет присвоено значение Хочу Быть Уд аление лишних Текстовая информация не всегда изначально имеет корректное представление. Иногда строки могут содержать лишние символы, которые вы хотели бы удалить. очень часто в начале и в конце строк присутствуют лишние пробелы: " Лишние пробелы в начале строки" "Лишние пробелы в конце строки " Часть Основы создания кодов Удаление пробелов в начале строки Если строка начинается с некоторого количества пробелов, наличие которых вовсе не обязательно, удалить их можно с помощью команды Например: As S t r i n g = " Мартин Лютер" = В результате выполнения этих кодов переменной будет присвоено значение Лютер". Удаление пробелов в конце строки Если строка заканчивается несколькими пробелами, наличие которых не обязательно, удалить их можно с помощью команды ( "ИсходнаяСтрока") Например: Dim ПолноеИмя As String = "Альберт " ПолноеИмя. = ПолноеИмя = " " & "Эйнштейн" В этом примере после применения команды RTrim в конце строки удаляются пробелы и переменной ПолноеИмя присваивается значение '"Альберт". Затем к этому значению до- бавляется один пробел и слово "Эйнштейн", в результате чего в переменной ПолноеИмя уже содержится строка "Альберт Эйнштейн". Удаление пробелов в начале и в конце строки Если лишние пробелы имеются и в начале, и в конце строки, примените сразу обе рас- смотренные выше команды: По сути, этот код говорит компьютеру: "Сперва удали лишние пробелы в начале строки, а затем удали лишние пробелы в конце строки". можете упростить ситуацию, заменив две команды одной командой Trim: Например: As String = " Мартин Лютер " ПолноеИмя Trim (ПолноеИмя) ПолноеИмя ПолноеИмя & " " "Кинг" |