- •Лекция №1. Заглянем в компьютер Введение
- •Структура компьютера
- •Данные и программы
- •Языки высокого уровня и системы программирования
- •Состав языка
- •Алфавит языка
- •Идентификаторы
- •Ключевые слова
- •Знаки операций
- •Константы
- •Комментарии
- •Концепция типа данных
- •Основные типы данных
- •Целый тип (int)
- •Символьный тип (char)
- •Расширенный символьный тип (wchar_t)
- •Логический тип (bool)
- •Типы с плавающей точкой (float, double и long double)
- •Диапазоны значений простых типов данных для ibm pc
- •Переменные
- •Лекция № 3. Структура программы. Операции. Выражения
- •Структура программы
- •Спецификации формата для функций семейства printf
- •Модификаторы формата
- •Операции
- •Выражения
- •Арифметические преобразования типов
- •Лекция № 4. Структура программы. Операции. Выражения
- •Базовые конструкции структурного программирования
- •Оператор «выражение»
- •Операторы ветвления
- •Условный оператор if
- •If ( выражение) оператор_1; [else оператор_2]
- •Оператор switch
- •Операторы цикла
- •Цикл с предусловием (while)
- •Цикл с постусловием (do while)
- •Цикл с параметром (for)
- •Операторы передачи управления
- •Оператор goto
- •Оператор break
- •Оператор continue
- •Оператор return
- •Лекция 5. Указатели и массивы
- •Указатели
- •Инициализация указателей
- •1. Присваивание указателю адреса существующего объекта:
- •2. Присваивание указателю адреса области памяти в явном виде:
- •3. Присваивание пустого значения:
- •4. Выделение участка динамической памяти и присваивание ее адреса указателю:
- •Операции с указателями
- •Массивы
- •5.1. Стандартные алгоритмы работы с одномерными массивами
- •7. Сортировка целочисленного массива методом пузырьковой сортировкой.
- •5.2. Динамические массивы
- •5.3. Многомерные массивы
- •5.4. Стандартные алгоритмы работы с двумерными массивами
- •Лекция 6. Введение в обработку символов и строк
- •Основы теории символов и строк
- •Функции работы со строками из библиотеки обработки строк
- •Функции работы со строками из библиотеки обработки
- •Работа с символами
- •Модульное программирование Лекция № 7 Функции
- •Функции
- •Объявление и определение функций
- •Глобальные переменные
- •Возвращаемое значение
- •Параметры функции
- •Передача массивов в качестве параметров
- •Передача имен функций в качестве параметров
- •Параметры со значениями по умолчанию
- •Функции с переменным числом параметров
Символьный тип (char)
Под величину символьного типа отводится количество байт, достаточное для размещения любого символа из набора символов для данного компьютера, что и обусловило название типа. Как правило, это 1 байт. Тип char, как и другие целые типы, может быть со знаком или без знака. В величинах со знаком можно хранить значения в диапазоне от -128 до 127. При использовании спецификатора unsigned значения могут находиться в пределах от 0 до 255. Этого достаточно для хранения любого символа из 256-символьного набора ASCII. Величины типа char применяются также для хранения целых чисел, не превышающих границы указанных диапазонов.
Расширенный символьный тип (wchar_t)
Тип wchar_t предназначен для работы с набором символов, для кодировки которых недостаточно 1 байта, например, Unicode. Размер этого типа зависит от реализации; как правило, он соответствует типу short. Строковые константы типа wchar_t записываются с префиксом L, например, L"Gates".
Логический тип (bool)
Величины логического типа могут принимать только значения true и false, являющиеся зарезервированными словами. Внутренняя форма представления значения false – 0 (нуль). Любое другое значение интерпретируется как true. При преобразовании к целому типу true имеет значение 1.
Типы с плавающей точкой (float, double и long double)
Стандарт С++ определяет три типа данных для хранения вещественных значений: float, double и long double.
Типы данных с плавающей точкой хранятся в памяти компьютера иначе, чем целочисленные. Внутреннее представление вещественного числа состоит из двух частей – мантиссы и порядка. В IBM PC-совместимых компьютерах величины типа float занимают 4 байта, из которых один двоичный разряд отводится под знак мантиссы, 8 разрядов под порядок и 23 под мантиссу. Мантисса – это число, большее 1.0, но меньшее 2.0. Поскольку старшая цифра мантиссы всегда равна 1, она не хранится.
Для величин типа double, занимающих 8 байт, под порядок и мантиссу отводится 11 и 52 разряда соответственно. Длина мантиссы определяет точность числа, а длина порядка – его диапазон. Как можно видеть из табл. 9.1, при одинаковом количестве байт, отводимом под величины типа float и long int, диапазоны их допустимых значений сильно различаются из-за внутренней формы представления.
Спецификатор long перед именем типа double указывает, что под величину отводится 10 байт.
Константы с плавающей точкой имеют по умолчанию тип double. Можно явно указать тип константы с помощью суффиксов F, f (float) и L, 1 (long). Например, константа 2E+6L будет иметь тип long double, а константа 1.82f – тип float.
Таблица 9.1.
Диапазоны значений простых типов данных для ibm pc
Тип |
Диапазон значений |
Размер (байт) |
bool |
true и false |
1 |
signed char |
-128 ... 127 |
1 |
unsigned char |
0 ... 255 |
1 |
signed short int |
-32 768 ... 32 767 |
2 |
unsigned short int |
0 ... 65 535 |
2 |
signed long int |
-2 147 483 648 ... 2 147 483 647 |
4 |
unsigned long int |
0 ... 4 294 967 295 |
4 |
float |
3.4e-38 ... 3.4e+38 |
4 |
double |
1.7e-308 ... 1.7С+308 |
8 |
long double |
3.4e-4932 ... 3.4e+4932 |
10 |
Для вещественных типов в таблице приведены абсолютные величины минимальных и максимальных значений.
Для написания переносимых на различные платформы программ нельзя делать предположений о размере типа int. Для его получения необходимо пользоваться операцией sizeof, результатом которой является размер типа в байтах. Например, для операционной системы MS-DOS sizeof (int) даст в результате 2, а для Windows 9Х или OS/2 результатом будет 4.
В стандарте ANSI диапазоны значений для основных типов не задаются, определяются только соотношения между их размерами, например:
sizeof(float) < sizeof(double) < sizeofdong double)
sizeof(char) < sizeof(short) < sizeof(int) < sizeofdong)
Различные виды целых и вещественных типов, различающиеся диапазоном и точностью представления данных, введены для того, чтобы дать программисту возможность наиболее эффективно использовать возможности конкретной аппаратуры, поскольку от выбора типа зависит скорость вычислений и объем памяти. Но оптимизированная для компьютеров какого-либо одного типа программа может стать не переносимой на другие платформы, поэтому в общем случае следует избегать зависимостей от конкретных характеристик типов данных.
Тип void
Кроме перечисленных, к основным типам языка относится тип void, но множество значений этого типа пусто. Он используется для определения функций, которые не возвращают значения, для указания пустого списка аргументов функции, как базовый тип для указателей и в операции приведения типов.