- •Введение
- •Структура программы на языке Си
- •Директивы препроцессора
- •Константы
- •Переменные
- •Арифметические выражения
- •Операция присваивания
- •Ввод информации с клавиатуры и вывод на экран
- •Логические выражения
- •Операторы управления
- •Оператор условного перехода if
- •Оператор выбора варианта
- •Перечисляемый тип данных
- •Циклы
- •Оператор цикла while
- •Оператор цикла do-while
- •Оператор цикла for
- •Локальные и глобальные переменные
- •Переменные с индексами (массивы)
- •Примеры обработки одномерных массивов
- •Многомерные массивы
- •Массивы и указатели
- •Арифметические и логические операции с указателями
- •Обработка массивов с помощью указателей
- •Обработка массивов переменной размерности
- •Обработка матриц переменной размерности
- •Обработка текстовой информации
- •Стандартные строки языка С++
- •Пример 1. Определение длины строки.
- •Пример 2. Копирование одной строки в другую
- •Пример 3. Исключение из строки символа.
- •Пример 4. Вставка в строку символа
- •Пример 5. Проверка правильности расстановки скобок.
- •Строки типа string
- •Массивы указателей
- •Указатели на функции
- •Сводная таблица форм объявления указателей
- •Преобразование типов
- •Ссылки
- •Структуры
- •Объединения
- •Файлы
- •Чтение файла в матрицу
- •Чтение файла в структуру
- •Функции для обработки произвольных полей структур
- •Связные списки
- •Контейнерные классы
- •Стеки
- •Рекурсия
- •Вопросы для самопроверки
- •Литература
17
после цифры 0 записана буква х (заглавная или строчная), то следующее далее число записано в шестнадцатеричной системе счисления, например:
31 десятичное число;
031 восьмеричное число (равно десятичному числу
25);
0х31 шестнадцатеричное число (равно десятичному числу 49).
Константы, соответствующие символам управления можно задавать в апострофах, но в коде должна быть записана обратная косая черта, и буква или цифра, задающая управляющий символ. Например, символ перевода на новую строку записывают как '\n', а символ признака конца строки '\0'.
Переменные
Переменными называются величины, которые в процессе выполнения программы могут изменять свои значения. Каждая переменная имеет имя. Имя может содержать строчные и заглавные буквы латинского алфавита, символ знака подчеркивания ('_') и цифры. Первым символом не может быть цифра. В языке С++ при написании имени переменной учитывается регистр. Поэтому одно и то же имя, записанное строчными буквами и заглавными буквами, компилятор воспринимает, как разные имена.
Обычно принято заглавными буквами обозначать имена констант, задаваемых директивой #define, а имена обычных переменных строчными буквами. Если в состав имени переменной входит слово, то его желательно начинать с заглавной буквы. Длина имени не должна превышать 31 символа. В качестве имен переменных нельзя использовать ключевые слова языка С++: 'for', 'if', double и т.д.
Имя переменной может относиться к одиночной величине. Такую переменную называют скалярной. Но имя переменной может также обозначать совокупность величин. Такие переменные называются агрегатными. Некоторые агрегатные переменные имеют названия,
18
уточняющие принципы группировки величин. Например: "массив", "структура", "файл" и т.д.
Каждая скалярная переменная имеет строго определенный тип для величины, которую она представляет (целое число, указатель, число с плавающей точкой и т. д.). Агрегатные переменные могут состоять из величин одного и того же типа (массивы) или из величин разных типов (структуры, классы).
Все переменные должны быть объявлены в программе явно. Никакой тип величины для любых имен переменных по умолчанию не назначается. Транслятор языка С++ обнаруживает отсутствие объявления типа переменной и расценивает это как грубую ошибку. Это позволяет увидеть такие трудно обнаруживаемые ошибки, как описки.
Примеры объявления типов переменных:
double x, y; int n;
Вместе с объявлением можно присвоить переменной начальное значение:
int count = 0;
В языке С++ предусмотрены перечисленные ниже типы величин, каждый из которых определен ключевым словом. Ключевое слово описания типа, кроме самого типа, определяет также диапазон изменения величины, а для чисел с плавающей точкой задается также точность представления числа. В некоторых случаях для описания переменной могут применяться два и более ключевых слова, уточняющие диапазон изменения величины и/или указывающие на класс памяти (класс памяти задает либо способ хранения величины, либо место хранения).
Основные ключевые слова описания типа переменной:
int- целое число
double - число с плавающей точкой двойной точности char- символьная величина.
19
Для описания целочисленных переменных могут использоваться дополнительные ключевые слова:
long - длинное целое число unsigned - целое число без знака
Эти ключевые слова могут использоваться без основного ключевого слова int, например, записи long int и long равнозначны.
Для описания целых чисел можно использовать всего три слова: int, long и unsigned. Причем слово unsigned по умолчанию относится к слову int, а для того, чтобы переменная типа long рассматривалась как целое число без знака, следует записать unsigned long.
Для объявления символьной переменной в однобайтовой кодировке используется атрибут char, а символы в двухбайтовой кодировке объявляются с атрибутом wchar_t.
По определению символьные переменные типа char предназначены для хранения символьной информации, например, текстовой. Но эти переменные могут также рассматриваться как целые числа без знака длиной в 1 байт с диапазоном значений от 0 до 255 или как числа со знаком в диапазоне от +127 до -128, и они могут использоваться в арифметических операциях. (Для типа wchar_t соответственно 2 байта и диапазон значение от -32768 до 32767).
Целые числа типа int в старом языке С занимали 2 байта и имели диапазон значений от +32767 до -32768. В современных компьютерах эти числа занимают 4 байта и совпадают с типом long.
Целые числа типа long занимают 32 двоичных разряда (4 байта) Самый старший двоичный разряд выделен для знака числа (0 - число положительное, 1 - число отрицательное).и имеют диапазон зна-
чений от +2147483647 до -2147483648.
Целые числа без знака (тип unsigned) используют то же количество байт, что и числа типа int и long, но поскольку они рассматриваются как числа без знака, то их диапазон значений составляет 4294967295. Хотя числа типа unsigned и рассматриваются как числа без знака, однако в программе им разрешается присваивать от-
20
рицательные значения. При этом следует не забывать о последствиях, поскольку числа в компьютере представляются в виде двоичных чисел, и весь диапазон представления чисел данного типа разбивается на две части. Первая часть в самом старшем раз ряде содержит 0. Эти числа рассматриваются как положительные. Вторая часть диапазона чисел имеет в старшем разряде единицу, и эти числа рассматриваются как отрицательные (в действительности это так называемый дополнительный код числа). Из такого представления чисел следует, во-первых, что целочисленный нуль имеет различное значение для +0 (число, состоящее из одних нулей) и -0 (1 в самом старшем разряде, а остальные разряды равны 0), а, вовторых, отрицательные числа физически больше положительных. При обработке числовой информации внутри компьютера такая форма представления чисел учтена, и ошибок не возникает, но при присвоении отрицательных значений переменным, имеющим тип unsigned, этот факт вскрывается. Для переменной типа unsigned long число -1 соответствует +4294967295.
Числа типа double внутри компьютера всегда представлены в форме двоичного числа с плавающей точкой и имеют диапазон значе-
ний от -1.7Е+308 до +1.7Е+308.
Во время выполнения арифметических операций с числами с плавающей точкой возможны две ошибки: переполнение и исчезновение порядка. Переполнение, т.е. получение числа больше максимально возможного, может возникнуть, например, при делении на число, близкое к 0 (при переполнении порядок достигает значений, равных максимально возможному). При исчезновении порядка его значение становится равным минимально возможному.
Переменная может быть описана с атрибутом const, который позволяет запретить изменение значения переменной в процессе выполнения программы. Переменные, объявленные с атрибутом const, называются константными. Другими словами, если переменная записана с атрибутом const, то имя такой переменной не может появиться с левой стороны от знака равенства после объявления