- •Раздел 4. Разработка по Тема 4.1. Проектирование интерфейса с пользователем
- •4.1.1. Типы пользовательских интерфейсов.
- •4.1.2. Пользовательская и программная модели интерфейса.
- •4.1.3. Разработка диалогов.
- •4.1.4. Основные компоненты графических пользовательских интерфейсов.
- •Тема 4.2. Реализация графических пользовательских интерфейсов.
- •4.2.1. Диалоги, управляемые пользователем.
- •4.2.2. Диалоги, управляемые системой.
- •4.2.3. Использование метафор.
- •4.2.4. Технология Drag and Drop.
- •4.2.5. Интеллектуальные элементы.
- •4.3.1. Базовые типы данных.
- •Константы
- •Область действия имен
- •4.3.2. Указатели и адресная арифметика.
- •4.3.3. Составные типы данных. Структуры
- •Битовые поля
- •Определение типов
- •Перечислимые типы
- •4.3.4. Выражения и операции.
- •4.3.5. Управляющие конструкции. Условные операторы
- •Операторы циклов
- •4.4.1. Статические одномерные массивы.
- •4.4.2. Статические многомерные массивы.
- •4.4.3. Динамические массивы.
- •4.4.4. Массивы указателей.
- •4.5.1. Стеки.
- •4.5.2. Очереди.
- •4.5.3. Списки.
- •4.5.4. Бинарные деревья.
- •4.6.1. Объявление классов и экземпляров классов.
- •4.6.2. Инкапсуляция данных и методов.
- •4.6.3. Конструкторы классов.
- •Конструктор по умолчанию
- •Конструктор копирования
- •4.6.4. Деструкторы классов.
- •4.7.1. Разделы в описании класса.
- •4.7.2. Friend-конструкции.
- •4.7.3. Статические члены классов.
- •4.7.4. Использование описателя const в классах.
- •4.8.1. Вложенность классов.
- •4.8.2. Наследование данных и методов.
- •4.8.3. Типы наследования.
- •4.9.1. Полиморфизм раннего связывания.
- •4.9.2. Полиморфизм позднего связывания и виртуальные функции.
- •4.9.3. Абстрактные методы и классы.
- •4.10.1. Функции консольного ввода-вывода.
- •4.10.2. Функции файлового ввода-вывода.
- •4.10.3. Использование библиотеки классов потокового ввода-вывода.
- •4.11.1. Перегрузка операций.
- •4.11.2. Шаблоны функций.
- •4.11.3. Шаблоны классов.
- •4.11.4. Обработка исключений.
- •Тема 4.12. Com-технология.
- •4.12.1. Основные понятия.
- •4.12.2. Типы интерфейсов.
- •Свойства интерфейсов
- •Типы интерфейсов
- •4.12.3. Типы com-объектов.
- •4.12.4. Фабрика классов.
- •Тема 4.13. Построение com-сервера.
- •4.13.1. Язык idl.
- •Содержимое файла idl
- •4.13.2. Определение пользовательского интерфейса.
- •4.13.3. Реализация пользовательского интерфейса.
- •4.13.4. Создание тестового клиента.
- •Тема 4.14. Обзор платформы ms .Net.
- •4.14.1. Общая идея архитектуры .Net.
- •4.14.2. Достоинства и недостатки .Net.
- •4.14.3. Схема трансляции программ в .Net.
- •4.14.4. Язык msil.
- •4.14.5. Объектно-ориентированная модель .Net.
Константы
В отличие от переменной PERM (с описателем const) число 1.256Е6 представляет собой "настоящую" константу. Рассмотрим примеры констант, допустимых в языке C++.
Объявление int i=10; j=010; k=0х10; инициализирует переменные (устанавливает их начальные значения) i, j и k числами 10, 8 и 16. Левый ноль (leading zero) в числе 010 сообщает компилятору, что целая константа записана в восьмеричном виде. Аналогично символы 0х или ОХ в левых позициях константы означают, что число записано в шестнадцатеричной форме. Константа 1234L использует суффикс L для обозначения типа long. Суффиксы U,u,L,l, а также комбинации вида UL,LU,ul,lu,Lu,uL,... обозначают типы unsigned и long.
Например, присвоения FilePosition=45642ul; elements=8u: означают, что переменные теперь содержат целые положительные числа 45642 и 8 соответственно. Если стандартный тип какой-то переменной не соответствует типу присваиваемой константы, то компилятор автоматически произведет преобразование по правилам, приведенным выше. Большое разнообразие допустимо при записи вещественных констант, например:
double a=.0, b=0., c=1e6, d=.009E34, е=6.78, f=2e-6;
При отсутствии суффиксов все константы имеют тип double. Если константе надо задать другой вещественный тип, то следует использовать суффиксы: f,F,l,L. Например, константа 69E7f имеет тип float, а константа 54.27E3L - long double. Число бит, отводимое в Visual C++ для констант и переменных вещественных типов, и диапазон значений абсолютных величин соответствующих типов таковы:
float 32 бита 3.4*10ехр(-38), 3.4*10ехр(+38) double 64 бита 1.7*10ехр(-308). 1.7*10ехр(+308) long double 80 бит 1.2*10ехр(-4932). 1.2*10ехр{+4932)
Символьные константы также имеют весьма разнообразный вид. Например, объявление char ch='A'; определяет и одновременно инициализирует переменную ch значением <символ А>. Оператор ch='\007'; присваивает переменной значение символа, восьмеричный код которого есть 007 (звуковой сигнал). Символ \ используется для задания символов типа escape sequence (последовательности), которые позволяют визуально представить непечатаемые символы ASCII таблицы (American Standard Code for Information Interchange). Например: '\n' (возврат каретки — перевод строки), '\r' (возврат каретки), '\t' (горизонтальная табуляция), '\v' (вертикальная табуляция), '\b' (шаг назад (backspace)), '\f '(начало страницы (formfeed)), '\\' (символ \). За символом \ может также следовать шестнадцатеричный или восьмеричный (теперь не обязательно трех-символьный) ASCII-код, например, '\03' для Ctrl+C или '\х40' для символа '@' (несмотря на то, что он печатаемый). Если вывести на экран строку символов "\n'\х40'=\х40", то она будет выведена с новой строки и выглядеть так: '@'=@. Небольшое изменение "\n'\\х40'=\х40" преобразует вывод к виду '\х40'=@. При задании шестнадцатеричного кода символа не допускается наличие ведущего нуля.
Описатель wchar_t в языке C++ определяет тип «расширенный символ» (wide character type). Константа или переменная этого типа занимает 2 байта, a wchar_t — его ключевое слово. Символьная константа типа wchar_t обозначается предшествующим символом L (префиксом). Например, wchar_t c=L'AX'; определяет переменную с типа, два байта которой инициализированы символами А и X. В 32-битном компиляторе C++ поддерживаются максимум 4-байтные символьные константы (multicharacter constants). Например, возможна декларация вида: int i='An\n\t'. j='\007br\n':
Строка символов в языках С и C++ определяется как массив символов, последним элементом которого является символ '\0' (то есть с кодом 0). Не путайте с символом '0', код которого 48 или З0Н. Объявление char s[]="string"; задает строку (массив) символов. Здесь инициализатором строки является строковая константа (literal), заключенная между символами "" (двойные кавычки). Литерал всегда имеет тип static массив переменных типа char. Среди своих символов, то есть внутри строки, литерал может содержать символы типа escape-noследовательности. Например, "\n\tEfforts\t\tResults". Пустая строка "" (null string), тем не менее, содержит один символ '\0' (null character). Группа символов носит название пустые символы (whitespace), если и нее входят только пробелы, табуляции и новые строки. Литералы, разделенные только пустыми символами, автоматически склеиваются (concatenated) компилятором во время синтаксического анализа (parsing). Примеры склеивания строк будут часто встречаться далее в операторах вывода. Если смысл приводимых терминов вам не вполне ясен, это не должно вас останавливать, так как по мере движения вперед (выполнения и отладки примерок) он постепенно прояснится.