- •Кетков ю.Л.
 - •Раздел 5. Системные данные текстового типа 33
 - •Раздел 6. Основные синтаксические конструкции языка c 46
 - •Раздел 7. Указатели и ссылки 59
 - •Раздел 8. Функции и их аргументы 62
 - •Раздел 9. Работа с массивами. 74
 - •Раздел 10. Пользовательские типы данных. 95
 - •Раздел 11. Работа с файлами 104
 - •Раздел 12. Библиотеки стандартных и нестандартных функций 118
 - •Раздел 15. Классы. Создание новых типов данных 131
 - •Раздел 16. Классы как средство создания больших программных комплексов 150
 - •Раздел 17. Прерывания, события, обработка исключений 167
 - •Введение
 - •Раздел 1. Немного истории
 - •Раздел 2. Структура программы на языке c
 - •Раздел 3. Среда программирования
 - •Раздел 4. Системные данные числового типа
 - •4.1. Типы числовых данных и их представление в памяти эвм
 - •4.1.1. Внутреннее представление целочисленных данных
 - •4.1.2. Однобайтовые целочисленные данные
 - •4.1.3. Двухбайтовые целочисленные данные
 - •4.1.4. Четырехбайтовые целочисленные данные
 - •4.1.5. Восьмибайтовые целочисленные данные
 - •4.2. Внутреннее представление данных вещественного типа
 - •4.3. Внешнее представление числовых констант
 - •4.4. Объявление и инициализация числовых переменных
 - •4.5. Ввод числовых данных по запросу программы
 - •4.5.1. Потоковый ввод данных числового типа
 - •4.5.2. Форматный ввод
 - •4.6. Вывод числовых результатов
 - •4.6.1. Форматный вывод
 - •4.6.2. Потоковый вывод
 - •4.7. Примеры программ вывода числовых данных
 - •4.8. Операции над числовыми данными целого типа
 - •4.9. Операции над числовыми данными вещественного типа
 - •Раздел 5. Системные данные текстового типа
 - •5.1. Символьные данные и их представление в памяти эвм
 - •5.2. Строковые данные и их представление в памяти эвм
 - •5.3. Ввод текстовых данных во время работы программы
 - •5.3.1. Форматный ввод
 - •5.3.3. Потоковый ввод
 - •5.3.4. Специальные функции ввода текстовых данных
 - •5.4. Вывод текстовых данных
 - •5.4.1. Форматный вывод
 - •5.5.2. Операции над строковыми данными
 - •5.6. Управление дисплеем в текстовом режиме
 - •Раздел 6. Основные синтаксические конструкции языка c
 - •6.1. Заголовок функции и прототип функции
 - •6.2. Объявление локальных и внешних данных
 - •6.3. Оператор присваивания
 - •6.4. Специальные формы оператора присваивания
 - •6.5. Условный оператор
 - •6.6. Оператор безусловного перехода
 - •6.7. Операторы цикла
 - •6.8. Дополнительные операторы управления циклом
 - •6.9. Оператор выбора (переключатель)
 - •6.10. Обращения к функциям
 - •6.11. Комментарии в программах
 - •Раздел 7. Указатели и ссылки
 - •7.1. Объявление указателей
 - •7.2. Операции над указателями
 - •7.3. Ссылки
 - •Раздел 8. Функции и их аргументы
 - •8.1. Параметры-значения
 - •8.2. Параметры-указатели
 - •8.3. Параметры-ссылки
 - •8.4. Параметры-константы
 - •8.5. Параметры по умолчанию
 - •8.6. Функции с переменным количеством аргументов
 - •8.7. Локальные, глобальные и статические переменные
 - •8.8. Возврат значения функции
 - •8.9. Рекурсивные функции
 - •8.10. Указатели на функцию и передача их в качестве параметров
 - •8.11. "Левые" функции
 - •Раздел 9. Работа с массивами.
 - •9.1. Объявление и инициализация массивов.
 - •9.2. Некоторые приемы обработки числовых массивов
 - •9.2. Программирование задач линейной алгебры
 - •9.2.1. Работа с векторами
 - •9.2.2.Работа с матрицами
 - •9.3. Поиск
 - •9.3.1. Последовательный поиск
 - •9.3.2. Двоичный поиск
 - •9.4. Сортировка массивов.
 - •9.4.1. Сортировка методом пузырька
 - •9.4.2. Сортировка методом отбора
 - •9.4.3. Сортировка методом вставки
 - •9.4.4. Сортировка методом Шелла
 - •9.4.5.Быстрая сортировка
 - •9.5. Слияние отсортированных массивов
 - •9.6. Динамические массивы.
 - •Раздел 10. Пользовательские типы данных.
 - •10.1. Структуры
 - •10.1.1. Объявление и инициализация структур
 - •10.1.2. Структуры – параметры функций
 - •10.1.3.Функции, возвращающие структуры
 - •10.2. Перечисления
 - •10.3. Объединения
 - •Раздел 11. Работа с файлами
 - •11.1.Файлы в операционной системе
 - •11.1. Текстовые (строковые) файлы
 - •11.2. Двоичные файлы
 - •11.3. Структурированные файлы
 - •11.4. Форматные преобразования в оперативной памяти
 - •11.5. Файловые процедуры в системе bcb
 - •11.5.1. Проверка существования файла
 - •11.5.2. Создание нового файла
 - •11.5.3. Открытие существующего файла
 - •11.5.4. Чтение из открытого файла
 - •11.5.5. Запись в открытый файл
 - •11.5.6. Перемещение указателя файла
 - •11.5.7. Закрытие файла
 - •11.5.8. Расчленение полной спецификации файла
 - •11.5.9. Удаление файлов и пустых каталогов
 - •11.5.10. Создание каталога
 - •11.5.11. Переименование файла
 - •11.5.12. Изменение расширения
 - •11.5.13. Опрос атрибутов файла
 - •11.5.14. Установка атрибутов файла
 - •11.5.15. Опрос и изменение текущего каталога
 - •11.6. Поиск файлов в каталогах
 - •Раздел 12. Библиотеки стандартных и нестандартных функций
 - •12.2. Организация пользовательских библиотек
 - •12.3. Динамически загружаемые библиотеки
 - •13.1. Препроцессор и условная компиляция
 - •13.2. Компилятор bcc.Exe
 - •13.3. Утилита grep.Com поиска в текстовых файлах
 - •14.1. Переопределение (перегрузка) функций
 - •14.2. Шаблоны функций
 - •Раздел 15. Классы. Создание новых типов данных
 - •15.1. Школьные дроби на базе структур
 - •15.2. Школьные дроби на базе классов
 - •15.3. Класс на базе объединения
 - •15.4. Новые типы данных на базе перечисления
 - •15.5. Встраиваемые функции
 - •15.6. Переопределение операций (резюме)
 - •15.8. Конструкторы и деструкторы (резюме)
 - •Раздел 16. Классы как средство создания больших программных комплексов
 - •16.1. Базовый и производный классы
 - •16.1.1.Простое наследование
 - •16.1.2. Вызов конструкторов и деструкторов при наследовании
 - •16.1.3. Динамическое создание и удаление объектов
 - •16.1.4. Виртуальные функции
 - •16.1.5. Виртуальные деструкторы
 - •16.1.6. Чистые виртуальные функции и абстрактные классы
 - •16.2. Множественное наследование и виртуальные классы
 - •16.3. Объектно-ориентированный подход к созданию графической системы
 - •Раздел 17. Прерывания, события, обработка исключений
 - •17.1. Аппаратные и программные прерывания
 - •17.2. Исключения
 
4.1.4. Четырехбайтовые целочисленные данные
Третья категория целых чисел в IBM PC представлена четырехбайтовыми данными. В варианте со знаком они перекрывают диапазон от -2147483648 до +2147483647, в варианте без знака – от 0 до 4294967295.
Для описания четырехбайтовых данных целого типа в языках C, C++ используются спецификаторы long (эквивалент long int) и unsigned long. В среде визуального программирования C++ Builder спецификаторы int и long эквивалентны.
4.1.5. Восьмибайтовые целочисленные данные
Несмотря на то, что микропроцессоры IBM PC уже давно поддерживают восьмибайтовый целочисленный формат, обеспечивающий диапазон от -263 до 263-1, системы программирования довольно долго обходили этот формат или использовали его особым образом. Так, например, системы Turbo Pascal на базе этого формата предложили тип данных comp, который был причислен к разряду данных вещественного типа. В современных визуальных средах этот тип данных в своем естественном виде представляет числовые объекты типа int64. В недалеком будущем системы программирования воспользуются и сверхдлинными целочисленными данными типа int128.
4.2. Внутреннее представление данных вещественного типа
Для внутреннего представления данных вещественного типа характерно то, что в соответствующей области оперативной памяти хранятся две компоненты числа – мантисса m и порядок p. Само число x при этом равно произведению m*2p. Таким образом, мантисса определяет значащие цифры числа и его знак, а порядок – положение запятой, которая благодаря этому как бы "плавает" между значащими цифрами (отсюда и термин – формат с плавающей запятой). Такой способ представления числовых данных позволяет при одинаковом количестве двоичных разрядов, отведенных для хранения чисел существенно расширить диапазон допустимых данных.
Попробуем оценить тот выигрыш в диапазоне допустимых чисел, который обеспечивает формат вещественных данных по сравнению с целочисленным форматом. Рассмотрим 32-битные двоичные числа. Целочисленные значения со знаком в этом формате позволяют работать с числами, принадлежащими по модулю интервалу [0, 2*109]. Предположим, что для числа с плавающей запятой в 32-битном слове отведены 1 двоичный разряд под знак числа, 8 двоичных разрядов под порядок и оставшиеся 23 разряда – под мантиссу. Тогда минимально представимое число равно произведению минимальной мантиссы (2-1) на минимальный порядок (2-128), т.е. 2-129, что примерно соответствует 10-39. Самое большое по модулю число представляет произведение (1-2-23)*2+127, что примерно соответствует 10+38. Таким образом, если целые числа перекрывали диапазон в 9 десятичных порядков, то формат с плавающей запятой при той же разрядности слова перекрывает диапазон в 77 порядков. Однако нельзя не заметить и проигрыш в количестве значащих цифр. Целочисленный 32-битный формат поддерживает 10 значащих цифр, тогда как 23-битные мантиссы вещественных данных позволяют работать с 7-8 десятичными знаками.
Наиболее часто применяемые типы вещественных чисел представлены короткими (4 байта) и длинными (8 байт) данными. Короткий вещественный формат по модулю обеспечивает представление чисел в диапазоне приблизительно от 10-38до 10+38с 7-8 значащими десятичными цифрами. Для 8-байтового формата диапазон существенно расширяется – от 10-308 до 10+308, а количество значащих цифр увеличивается до 15-16. Сопроцессор IBM PC предлагает расширенный десятибайтовый формат вещественных данных, перекрывающий диапазон (по модулю) от 10-4932 до 10+4932 и сохраняющий 19-20 значащих цифр.
В системах программирования Borland C++ для объявления данных вещественного типа используют спецификаторы float (короткое вещественное, 4 байта), double (вещественное с удвоенной точностью, 8 байт) и long double (длинное вещественное с удвоенной точностью, 10 байт).
В машинном представлении вещественных данных разного типа на IBM PC не выдержана какая-то общая идеология. Объясняется это, по всей вероятности, разными наслоениями на прежние аппаратные решения, которые принимались при разработке процессоров в разных отделениях фирмы Intel. Поэтому здесь имеют место такие нюансы как сохранение в оперативной памяти или не сохранение старшего бита мантиссы, представление мантиссы в виде чисто дробного (0.5  m < 1) или смешанного (1  m < 2) числа и т.п. Прикладных программистов эти детали мало интересуют, однако при создании специальных системных компонент с точным представлением данных приходится считаться.
