- •Представление информации
- •Представление символов
- •Представление целых чисел (способ с фиксированной точкой)
- •Представление чисел с дробной частью (способ с плавающей точкой)
- •Некоторые важные итоги
- •О Visual Basic (далее vb) в сравнении с другими языками.
- •Основные типы данных vb
- •Типы Byte/Integer/Long
- •Типы Single/Double/Currency
- •Структура проекта
- •Переменные
- •Область видимости переменных
- •Время жизни переменных
- •Константы
- •Преобразование и совместимость типов
- •Ввод и вывод значений переменных Ввод данных с помощью функции InputBox
- •Вывод данных с помощью инструкции Print
- •Форматирование вывода
- •Лекция 6 Вывод данных с помощью функции MsgBox
- •Управление порядком выполнения инструкций
- •Условная инструкция If ... End If
- •Однострочный синтаксис
- •Блочный синтаксис
- •Инструкция выбора Select Case (выбрать в случае)
- •Инструкции цикла
- •1. Параметрический цикл For… Next
- •Лекция 7
- •2. Итерационный циклDoWhile...LoopилиDo...LoopWhile
- •3. Итерационный цикл Do Until...Loop или Do...Loop Until
- •Операции и функции
- •Лекция 8 Массив
- •1. Описание массива фиксированного размера
- •2. Описание динамического массива
- •3. Присвоение массивов
- •Лекция 9
- •Логические операции
- •Лекция 10 процедуры и функции
- •Виды процедур и функций
- •Вызов процедур и функций
- •Объявление процедур и функций
- •Именованные аргументы
- •Область действия имен процедур и функций
- •Пример 1.
- •Пример 2.
- •Лекция 11
- •Лекция 12
- •Перечень подзадач
- •Блок-схема алгоритма функции Проверка
- •Разработка программы
- •Лекция 13 Пример 4
- •Передача аргументов по ссылке и по значению
- •Лекция 14 Отладка
- •1. Режим отладки
- •2. Точка останова
- •3. Пошаговое выполнение программы
- •3.1. Шаг с заходом (Step into)
- •3.2. Шаг с обходом (Step Over)
- •3.3. Шаг с выходом (Step Out)
- •3.4. Выполнить до текущей позиции (Run To Cursor)
- •3.5. Список вызовов
- •4. Окна режима отладки
- •4.1. Окно подсказки Data Tips
- •4.2. Окно контрольного значения (WatchWindow)
- •4.3. Окно локальных переменных (LocalWindow)
- •4.4. Окно отладки (ImmediateWindow)
- •4.5. Инструкция Print
- •5. Обработка ошибок времени выполнения
- •5.1. Перехват ошибки
- •5.2 Проверка и устранение ошибки
- •5.3 Продолжение выполнения программы
- •Лекция 15 Пользовательский тип данных
- •ИнструкцияWith
- •Использование в качестве аргументов процедур и функции имен форм и элементов управления
- •Знаки типов
- •Графика
- •1. Система координат
- •1.1 Свойство ScaleMode
- •1.2. СвойстваScaleLeftиScaleTop
- •Лекция 16
- •1.3. СвойстваScaleWidthиScaleHeigt
- •1.4. МетодScale
- •2. Графические изображения
- •3. Графические управляющие элементы
- •4. Работа с рисунками
- •5. Графические методы
- •6. Построение графиков функций
- •Лекция 17 Файлы
- •Номер файла
- •Типы доступа к файлам
- •Последовательный доступ
- •Чтение из файла последовательного доступа
- •Запись в файл последовательного доступа
- •Произвольный доступ
- •Открытие файла
- •Ввод и вывод (Get- чтение,Put- запись)
- •Двоичный доступ
- •Открытие файла для двоичного доступа
- •Ввод и вывод
- •Лекция 18 События
- •События клавиатуры
- •Объекты, классы, коллекции
- •Экзаменационные вопросы
Представление информации
Представление информации будет рассматриваться применительно к языку программирования Visual Basic (далее будет применяться сокращение VB).
Представление символов
Для записи символа отводится ячейка памяти длиной в 1 байт. Каждому символу в соответствии с таблицей ASCII поставлен в соответствие код из диапазона от 0 до 255, например:
Символ |
Десятичный код |
Содержание ячейки памяти |
A |
97 |
01100001 |
B |
98 |
01100010 |
C |
99 |
01100011 |
D |
100 |
01100100 |
. |
. |
. |
. |
. |
. |
. |
. |
. |
0 |
80 |
01010000 |
1 |
81 |
01010001 |
2 |
82 |
01010010 |
3 |
83 |
01010011 |
. |
. |
. |
. |
. |
. |
. |
. |
. |
Пробел |
32 |
00100000 |
Представление целых чисел (способ с фиксированной точкой)
Ячейка памяти может быть длиной 1, 2 или 4 байта.
Целые типы в VB
Название типа |
Длина ячейки памяти в байтах |
Диапазон значений |
Byte (байт) |
1 |
От 0 до 255 |
Integer (целый) |
2 |
От -32 768 до 32 767 |
Long (длинный целый) |
4 |
От -2 147 483 648 до 2 147 483 647 |
Пример представления целого числа 3 типа Byte (снизу указаны веса разрядов):
0 |
0 |
0 |
0 |
0 |
0 |
1 |
1 |
Значения разрядов |
27 |
26 |
. |
. |
. |
22 |
21 |
20 |
Веса разрядов |
Следует сразу обратить внимание на принципиальное отличие символа от числа (например, символа 3 и числа 3). Несмотря на внешнее совпадение их изображений, они рассматриваются как разные объекты, между которыми нет никакой связи. Двоичный код символа 3 (01010011) отличается от двоичного кода числа 3 (00000011).
На запись знака не отведено места. Поэтому числа типа Byte могут быть только положительными. Максимальное значение, которое может быть записано по типу Byte равно 28 – 1 = 255.
Рассмотрим пример представления целого числа 21 типа Integer:
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
1 |
0 |
1 |
0 |
1 |
Знак |
214 |
213 |
|
|
|
|
|
. |
. |
. |
|
|
22 |
21 |
20 |
Знаковый разряд имеет значение 0 для положительных чисел и значение 1 для отрицательных чисел. Отрицательные числа записываются в так называемом дополнительном коде, но это выходит за рамки нашего рассмотрения.
Итак, один разряд отведен под знак и оставшиеся 15 разрядов – под значение числа. Максимальное значение абсолютного значения числа легко вычислить, для неотрицательных чисел это 215 – 1 = 32767, для отрицательных чисел это 215 = 32768.
Обратите внимание, на дробную часть не отведены разряды. Это понятно, ведь целые типы предназначены для данных принципиально принимающих только целочисленные значения.
Представление чисел с дробной частью (способ с плавающей точкой)
Для представления данных, которые имеют или могут иметь дробную часть, применяется способ с плавающей точкой.
Поясним идею этого метода в привычной для нас десятичной системе счисления. Любое действительное число может быть записано в научном формате, например:
123456000000000 = 1,23456*1014= 0,123456*1015 или
0,00000000123456 = 0,123456*10-8
Очевидно, что любое число zв десятичной системе счисления может быть записано в таком формате в виде:
z= + – 0,m* 10+ –p,
где:
m– дробная часть, называемая мантиссой;
p– целое число, называемое порядком.
Для мантиссы должно быть выполнено простое, но принципиально важное требование, заключающееся в том, что ее старший разряд не равен нулю.
Все это верно и для двоичной системы счисления:
z= + – 0,m* 2+ –p,
где z,mиpзаписаны в двоичной системе счисления.
Что нужно записать в ячейке памяти, чтобы было можно восстановить значение записанного числа? Очевидно, это четыре отдельных элемента: знак числа, мантисса, знак порядка и сам порядок.
Ячейка памяти для данных с дробной частью может быть длиной 4 или 8 байтов.
Типы для данных с дробной частью
Название типа |
Длина ячейки памяти в байтах |
Диапазон значений |
Single (с плавающей точкой обычной точности) |
4 |
Абсолютное значение находится примерно в диапазоне от 1,4*10-45до 3,4*1038. Значение 0 не может быть представлено точно. Точность 6 – 7 десятичных разрядов |
Double (с плавающей точкой двойной точности) |
8 |
Абсолютное значение находится примерно в диапазоне от 4,9*10-324до 1,7*10308 Точность 14 – 15 десятичных разрядов |
Посмотрим для примера, как могла бы быть использована для представления числа ячейка памяти длиной 4 байта.
0 |
0 |
0 |
0 |
0 |
1 |
0 |
1 |
0 |
1 |
0 |
1 |
0 |
1 |
1 |
1 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
Знак порядка |
Порядок |
Знак числа |
Мантисса | ||||||||||||||||||||||||||||
Байт |
Байт |
Байт |
Байт |
Один байт отведен под знак порядка и порядок. Оставшиеся три байта отведены под знак числа и мантиссу.
В качестве примера, посмотрим, как будет записано знакомое нам по прошлой лекции число 21,75.
21,75(10)= 10101,11(2) = 0, 1010111*25
Мантисса равна 1010111, порядок равен 5.
5(10)= 101(2)
На расположенном выше рисунке показано, как это число будет записано в ячейке памяти.
Абсолютное значение числа, которое может быть записано по способу с плавающей точкой, ограничено сверху и снизу.
Ограничение сверху происходит из за фиксированного числа разрядов разрядной сетки. Ограничение снизу возникает потому, что старший разряд мантиссы не может быть равен нулю.