Диапазоны значений широко применяются в программировании для решения некоторых задач. Но самое важное их применение – распределение оперативной памяти между различными типами переменных. Также они применяются для указания границ индексации в статическом массиве, интервала значений переменной в качестве одного из значений в управляющей структуре множественного выбора, при создании цикла с фиксированным числом повторений и т. д. Рассмотрим применение диапазонов значений на примере Visual Basic 6.0.
В языке Visual Basic 6.0 существует 12 типов переменных, каждая из которых имеет свой диапазон значений. Типы переменных, их диапазоны значений и количество потребляемой ими оперативной памяти указаны в таблице 1
Таблица 1
Типы переменных в Visual Basic 6.0 и их диапазоны значений
Тип переменной | Суффикс | Количество занимаемой памяти | Диапазон значений |
Байт (Byte) | (нет) | 1 байт | Целые числа от 0 до 255 |
Целое (Integer) | % | 2 байта | Целые числа от -32 768 до 32 767 |
Длинное целое (Long) | & | 4 байта | Целые числа от -2 147 483 648 до 2 147 483 647 |
Логический (Boolean) | (нет) | 2 байта | True или False |
Дробные числа с плавающей точкой одинарной точности (Single) | ! | 4 байта | От -3,402823Е38 до -1,401298E-45 для отрицательных чисел. От 1,401298E-45 до 3,402823Е38 для положительных чисел. |
Дробные числа с плавающей точкой двойной точности (Double) | # | 8 байт | От -1,79769313Е308 до -4,94065645E-324 для отрицательных чисел. От 4,94065645E-324 до 1,79769313Е308 для положительных чисел. |
Денежный (Currency) | @ | 8 байт | От -922 337 203 685 477,5808 до 922 337 203 685 477,5807 |
Масштабируемое целое (Decimal) | (нет) | 16 байт | Целые числа: От - 79 228 162 514 264 337 593 543 950 335 до 79 228 162 514 264 337 593 543 950 334. Дробные числа (с 28 знаками справа от запятой): От 0,000000000000 000000000000001 до 79,228162514264 |
Дата и время (Date) | (нет) | 8 байт | Дата: от 1 января 100 г. до 31 декабря 9999 г. Время: от 00:00:00 до 23:59:59 |
Строковый (String) | $ | 1 байт на символ | Строка переменной длины: до 2 миллиардов символов. Строка фиксированной длины: до 65 400 символов |
Вариантный (Variant) | (нет) | 16 + 1 байт/символ | Любое числовое или строковое значение |
Объектный (Object) | (нет) | 4 байта | Экземпляр класса, объект типа OLE |
Из этой таблицы видно, что тип переменной нужно выбирать в зависимости от того, для чего она используется в программе. Это необходимо для того, чтобы программа потребляла как можно меньше оперативной памяти и, как следствие, работала быстро и стабильно.
В статическом массиве (массиве с фиксированным числом элементов) диапазоны значений применяются для указания его границ.
Dim Massiv(1 To 10) As String ‘ Объявление статического массива, где:
Index – имя массива.
(1 To 10) – диапазон индексации элементов массива (границы массива).
String – тип переменной массива.
Следует отметить, что диапазон индексации элементов массива является его размерностью, а их в одном массиве может быть несколько. Массивы, имеющие только одну размерность, называются одномерными, а те массивы, у которых их несколько – многомерными.
Dim Massiv(1 To 10, 1 To 20) As String ‘ Объявление многомерного массива, где:
(1 To 10, 1 To 20) – размерности массива, разделенные запятыми.
При создании цикла с фиксированным числом повторений диапазон значений необходим для указания границ значений переменной цикла.
For Index = 1 To 10 Step 1 ‘ Оператор цикла с фиксированным числом повторений, где:
Index – имя переменной цикла.
1 To 10 – диапазон значений переменной цикла.
Step 1 – шаг приращения значения переменной цикла.
Такой цикл выполняется до тех пор, пока значение переменной цикла не превысит верхнюю границу диапазона его значений.
Также они применяются для указания интервала значений переменной в качестве одного из значений в управляющей структуре множественного выбора (часть 2.1, стр. 7-8) и при создании поисковых шаблонов (раздел 3, стр. 15).
Практическая часть
В данном разделе курсовой работы будет рассмотрено практическое применение основных управляющих структур программирования, в данном случае управляющих структур выбора (часть 2.1) и диапазонов значений (часть 2.2) на примере программы выделения текста «ChkTxt».
Программа выделения текста «ChkTxt», созданная специально для рассмотрения темы курсовой работы, обрабатывает введенный в текстовое поле текст и сразу же выводит его в текстовую метку. В текстовой метке текст выделяется по правилам, приведенным в таблице 2
Таблица 2
Правила выделения текста в текстовой метке
Если текст содержит: | Цвет текста: | Размер шрифта: |
Только русские символы | Красный | Укрупненный |
Только латинские символы | Синий | Обычный |
Как русские, так и латинские символы | Зеленый | Обычный |
Ни одного из приведенных символов | Черный | Обычный |
Эта программа устроена следующим образом: на главной форме программы расположены текстовое поле Text1 и текстовая метка Label1. Стандартный шрифт для обеих элементов: Microsoft Sans Serif, размер 11. Кодом этой программы является локальная процедура (Private Sub) Change для текстового поля Text1 (исходный код в части 6.1), которая выполняется при каждом изменении его текста (при вводе или удалении только одного символа). Данная процедура является локальной потому, что она действует только в пределах текстового поля Text1. Для полноценной работы программы этого вполне достаточно. Код программы содержит переменную под названием txt, которая обеспечивает передачу текстовых данных от текстового поля к текстовой метке, чтобы текстовые данные отображались как в текстовом поле, так и в текстовой метке. Также эта переменная служит для организации поискового алгоритма.
Данный алгоритм выполняет функцию поиска русских и латинских символов во введенном тексте, и затем выбирает цвет текста и размер шрифта текстовой метки в зависимости от наличия или отсутствия во введенном тексте данных символов. Ключевым элементом этого алгоритма являются управляющие структуры выбора, необходимые для поиска вышеприведенных символов.
Алгоритм локальной процедуры Change для текстового поля Text1 приведен на рис. 5
Рисунок 5 – Алгоритм локальной процедуры Change для текстового поля Text1.
Эти управляющие структуры составлены из операторов If. Каждая из них имеет условие следующего вида:
LCase$( txt ) Like "*[a-z]*" ‘ условие, необходимое для поиска символов, где:
LCase$( txt ) – преобразует заглавные буквы в строчные в значении переменной txt. Служит для поисковой оптимизации переменной, ибо в поисковом шаблоне содержатся только строчные буквы.
Like – оператор сравнения двух строковых выражений. Здесь он предназначен для сравнения значения переменной с поисковым шаблоном.
"*[a-z]*" – поисковый шаблон. Служит для отбора букв алфавита. В квадратных скобках прописан диапазон символов, входящих в поисковый шаблон. В поисковом шаблоне для русских букв "*[а-яё]*" буква ё как бы вынесена из диапазона русских символов. Это сделано по той простой причине, что в таблице символов ASCII буква ё так же вынесена за пределы русского алфавита. Звездочки (*) рядом со скобками обозначают наличие или отсутствие любых произвольных символов рядом с искомыми. Поисковый шаблон заключен в кавычки, поскольку в ходе поиска он сравнивается со значением строковой переменной txt.
Цвет текста и размер шрифта текстовой метки Label1 выбираются посредством следующих команд:
Label1.ForeColor = &H8000& ‘ цвет текста (по цветовой модели RGB)
Label1.FontSize = 11 ‘ размер шрифта (в пунктах)
Цвет текста (ForeColor) указывается по цветовой модели RGB, то есть здесь указывается интенсивность трех основных цветов: красного, зеленого и синего:
Label1.ForeColor = &H <синий> <зеленый> <красный> &
Интенсивность каждого цвета указывается в виде двух шестнадцатеричных цифр, причем значения интенсивности не отделяются пробелами друг от друга. Размер шрифта (FontSize) указывается в пунктах. Цвета текста и размеры шрифта, использованные в программе, указаны в алгоритме (стр. 14, рис. 5) и в исходном коде (часть 6.1).
Заключение
В ходе выполнения работы показано практическое значение применения основных управляющих структур программирования (структур выбора) и продемонстрировано использование диапазонов значений в переменных, массивах, циклах и поисковых шаблонах на примере реализации программы выделения текста.
Библиографический список
1. Лавлинский В. В., Коровина О. В. – Высокоуровневые методы программирования, ВГЛТУ, 2014 г.
2. Культин Н. Б., Цой Л. Б. – Visual Basic для студентов и школьников,
БХВ-Петербург, 2010 г.
3. Быков В. Л. – Основы программирования на языке Visual Basic 6.0,
БГТУ, 2002 г.
Приложение (листинг)
Исходный код программы
Private Sub Text1_Change() ‘ Изменение текстового поля Text1
‘ Объявление переменной
Dim txt As String
‘ Присвоение переменной начального значения
Let txt = “” ‘ где “” – пустая строка
‘ Ввод и вывод данных
txt = CStr( Text1.Text )
Label1.Caption = txt
‘ Поиск и индикация символов
If LCase$( txt ) Like "*[a-z]*" Then ‘ как латинские,
If LCase$( txt ) Like "*[а-яё]*" Then ‘ так и русские символы
Label1.ForeColor = &H8000& ‘ зеленый цвет
Label1.FontSize = 11 ‘ обычный шрифт
Else ‘ только латинские символы
Label1.ForeColor = &HFF0000 ‘ синий цвет
Label1.FontSize = 11 ‘ обычный шрифт
End If
ElseIf LCase$( txt ) Like "*[а-яё]*" Then ‘ только русские символы
Label1.ForeColor = &HFF ‘ красный цвет
Label1.FontSize = 14 ‘ укрупненный шрифт
Else ‘ ни одного из приведенных здесь символов
Label1.ForeColor = &H0 ‘ черный цвет
Label1.FontSize = 11 ‘ обычный шрифт
End If
End Sub
Скриншоты
Ниже приведены скриншоты программы (рис. 6 и рис. 7):
Рисунок 6 – Окно программы «ChkTxt», где:
A – Текстовое поле Text1, необходимое для ввода данных
B – Текстовая метка Label1, необходимая для вывода данных
Рисунок 7 – Пример работы программы