Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Зачет по ИСИС.docx
Скачиваний:
1
Добавлен:
21.09.2019
Размер:
49.29 Кб
Скачать

2 Вопрос

Целочисленные типы

В новой версии языка есть четыре целочисленных типа данных: Integer, Short, Long и Byte. Следует внимательно отнестись к тому, что теперь тип Integer - это 4-байтовое число, т.е. он соответствует старому типу Long, а вот Long становится 8-байтовым. Что это означает на практике? Дело в том, что если раньше при вызове функции API вы писали Long, то теперь в тех же ситуациях нужно применять Integer.

Очень существенным изменением является то, что все типы данных обладают методами и свойствами. Например, содержат метод ToString, который можно использовать для преобразования числа в строковую переменную с одновременным ее форматированием в соответствии с заданным форматом. Но вот вопрос: нужно ли? Что это может дать программисту? Конечно, неоспоримо то, что это позволяет сделать ваш код более читабельным, однако меня интересует другой вопрос - не скажется ли это на производительности программы? Если вы читали мою статью "Оптимизация кода в Visual Basic" 1, то видели, насколько объектно-ориентированный код снижал производительность в VB6. Так вот давайте проверим, как изменится производительность при использовании функции Format и метода ToString. Более того, я позволил себе некоторое пижонство и написал подобные тесты для компилятора VB6.

3Й вопрос

Типы данных с плавающей запятой

Для работы с вещественными числами в VB .NET имеется три типа: Single, Double и Decimal. Первые два вы должны хорошо знать еще со времен VB, а вот Decimal - новый тип, и по заверениям Microsoft, именно этот тип должен заменить старый Currency. Я пока еще не совсем представляю, зачем нужно было увеличивать "денежный" тип до 12 байт, но полагаю, что доходы Microsoft уже не поддаются исчислению в 8 байтах.

Итак, теперь деньги нужно считать в 12 байтах, а вот Single и Double какими были, такими и остались. Отмечу, что эти типы данных также имеют свойства и методы, как и целочисленные типы. Например, вам могут быть полезны такие их свойства, как MaxValue и MinValue, позволяющие узнать верхнюю и нижнюю границы диапазона допустимых значений.

Обратите внимание на тип данных Double. Это нужный и полезный во всех отношениях тип данных. Почему? Все очень просто. Библиотека классов .NET Framework устроена таким образом, что практически все математические функции класса Math возвращают значения именно этого типа. Это означает, что, используя этот тип в своей программе, вам не придется тратить время на преобразование типов из Double в тот, который используете вы. Более того, многие математические функции VB .NET также возвращают результаты работы именно этого типа.

4Й вопрос

Строки String и Char

Насчет строк у меня две новости, одна плохая, а вторая еще хуже. И это не шутка. Но начнем по порядку. VB 6 поддерживал особый тип строк, которые назывались строками фиксированной длины. Такие строки в отдельных случаях обладали целым рядом преимуществ по сравнению с обычными строками. Одним из главных преимуществ было то, что компилятор сразу выделял под них нужный нам объем памяти, который к тому же брался из стека. При изменениях самой строки память под нее не перераспределялась, что в некоторых случаях, хотя и крайне редких, давало преимущество в скорости работы. Теперь в VB отсутствует понятие строк фиксированной длины, и все строки являются динамическими. Но даже не это главное, гораздо важнее другое изменение – теперь строки «неизменны». Иными словами, если вы хотите изменить значение строковой переменной, то VB .NET вместо модификации старого экземпляра строки создает совершенно новую строку, а старая удаляется при следующем вызове сборщика мусора. Кроме типа String существуют переменные типа Char, которые используются для работы с Unicode-символами. Переменная Char представляет собой 16-битовый код Unicode-символа.

Итак, в новой версии Visual Basic .NET вы можете для работы со строками использовать обычные переменные типа String, либо воспользоваться классом System.Text.StringBuilder из .NET Framework для создания и модификации строки текста. Чем они отличаются? Как раз тем, что StringBuilder при модификации строки не создает новую, а модифицирует исходную.

Asc Возвращает код первого символа в строке

Chr Преобразует число в символ Unicode

Filter Получает строковый массив и искомую строку; возвращает одномерный массив всех элементов, в которых был найден заданный текст

GetChar Возвращает символ строки с заданным индексом в формате Char. Индексация символов начинается с 1. Например, команда GetChar("Hello",2) возвращает символ «е» в виде типа Char

InStr Возвращает позицию первого вхождения одной строки в другой строке

InStrRev Возвращает позицию последнего вхождения одной строки в другой строке

Join Строит большую строку из меньших строк

LCase Преобразует строку к нижнему регистру

Left Находит или удаляет заданное количество символов от начала строки

Len Возвращает длину строки

LTrim Удаляет пробелы в начале строки

Mid Находит или удаляет символы в строке

Replace Заменяет одно или более вхождений одной строки в другой строке

Right Находит или удаляет заданное количество символов в конце строки

RTrim Удаляет пробелы в конце строки

Space Генерирует строку заданной длины, состоящую из пробелов

Split Позволяет разбивать строку по заданным разделителям (например, пробелам)

Str Возвращает строковое представление числа

StrComp Альтернативный способ сравнения строк

StrConv Преобразует строку из одной формы в другую (например, с изменением регистра)

String Создает строку, состоящую из многократно повторяющегося символа

Trim Удаляет пробелы в начале и конце строки

UCase Преобразует строку к верхнему регистру

Функции с строками

Chars Возвращает символ, находящийся в заданной позиции строки

Compare Сравнивает две строки

Copy Копирует существующую строку

Copy To Копирует заданное количество символов, начиная в заданную позицию массива символов

Empty Константа, представляющая пустую строку

EndsWith Проверяет, завершается ли заданная строка определенной последовательностью символов

IndexOf Возвращает индекс первого вхождения подстроки в заданной строке

Insert Возвращает новую строку, полученную вставкой подстроки в заданную позицию

Join Объединяет массив строк с заданным разделителем

LastlndexOf Возвращает индекс последнего вхождения заданного символа или подстроки в строке

Length Возвращает количество символов в строке

PadLeft Выравнивает символы строки по правому краю. Строка дополняется слева пробелами или другими символами до заданной длины

PadRight Выравнивает символы строки по левому краю. Строка дополняется справа пробелами или другими символами до заданной длины

Remove Удаляет из строки заданное количество символов, начиная с заданной позиции

Replace Заменяет все вхождения подстроки другой подстрокой

Split Разбивает строку, превращая ее в массив подстрок

Starts With Проверяет, начинается ли заданная строка определенной последовательностью символов

Substring Возвращает подстроку, начинающуюся с заданной позиции

ToCharArray Копирует символы строки в символьный массив

ToLower Возвращает копию строки, преобразованную к нижнему регистру

ToUpper Возвращает копию строки, преобразованную к верхнему регистру

Trim Удаляет пробелы или все символы из набора, заданного в виде массива символов Unicode, в начале и конце строки

TrimEnd Удаляет пробелы или все символы из набора, заданного в виде массива символов Unicode, в конце строки

TrimStart Удаляет пробелы или все символы из набора, заданного в виде массива символов Unicode, в начале строки