Опубликован: 07.03.2015 | Уровень: для всех | Доступ: свободно | ВУЗ: Компания ALT Linux
Лекция 2:

Общие сведения о языке С++

< Лекция 1 || Лекция 2: 123456 || Лекция 3 >
Аннотация: В этой главе читатель познакомится с основными элементами языка С++: алфавитом, переменными, константами, типами данных, основными операциями, стандартными функциями, структурой программы и средствами ввода-вывода данных.

2.1 Алфавит языка

Программа на языке С++ может содержать следующие символы:

  • прописные, строчные латинские буквы A, B, C,.. ., x, y, z и знак подчёркивания;
  • арабские цифры от 0 до 9;
  • специальные знаки: " \{ \}, | [ ] ( ) + — / \% *.\ " : ? < = > ! \& \# \sim;^\wedge
  • символы пробела, табуляции и перехода на новую строку.

Из символов алфавита формируют ключевые слова и идентификаторы. Ключевые слова — это зарезервированные слова, которые имеют специальное значение для компилятора и используются только в том смысле, в котором они определены (операторы языка, типы данных и т.п.). Идентификатор — это имя программного объекта, представляющее собой совокупность букв, цифр и символа подчёркивания. Первый символ идентификатора — буква или знак подчёркивания, но не цифра. Идентификатор не может содержать пробел. Прописные и строчные буквы в именах различаются, например, ABC, abc, Abc — три различных имени. Каждое имя (идентификатор) должно быть уникальным в пределах функции и не совпадать с ключевыми словами.

В тексте программы можно использовать комментарии. Если текст начинается с двух символов "косая черта" // и заканчивается символом перехода на новую строку или заключён между символами /* и */, то компилятор его игнорирует.

/* Комментарий может
выглядеть так! */
//А если вы используете такой способ,
//то каждая строка должна начинаться
//с двух символов "косая черта".
		

Комментарии удобно использовать как для пояснений к программе, так и для временного исключения фрагментов программы при отладке.

2.2 Данные

Для решения задачи в любой программе выполняется обработка каких-либо данных. Данные хранятся в памяти компьютера и могут быть самых различных типов: целыми и вещественными числами, символами, строками, массивами. Типы данных определяют способ хранения чисел или символов в памяти компьютера. Они задают размер ячейки, в которую будет записано то или иное значение, определяя тем самым его максимальную величину или точность задания. Участок памяти (ячейка), в котором хранится значение определённого типа, называется переменной. У переменной есть имя (идентификатор) и значение. Имя служит для обращения к области памяти, в которой хранится значение. Во время выполнения программы значение переменной можно изменить. Перед использованием любая переменная должна быть описана. Оператор описания переменных в языке С++ имеет вид:

тип имя_переменной;
		

или

тип список_переменных;
		

Типы данных языка С++ можно разделить на основные и составные.

К основным типам данных языка относят:

  • char — символьный;
  • int— целый;
  • float— с плавающей точкой;
  • double — двойной точности;
  • bool — логический.

Для формирования других типов данных используют основные типы и так называемые спецификаторы. Типы данных, созданные на базе стандартных типов с использованием спецификаторов, называют составными типами данных. В С++ определены четыре спецификатора типов данных:

  • short — короткий;
  • long — длинный;
  • signed — знаковый;
  • unsigned — беззнаковый.

Далее будут рассмотрены назначение и описание каждого типа.

2.2.1 Символьный тип

Данные типа char в памяти компьютера занимают один байт1В кодировке utf-8 каждый символ кириллицы занимает 2 байта.Это связано с тем, что обычно под величину символьного типа отводят столько памяти, сколько необходимо для хранения любого из 256 символов клавиатуры. Символьный тип может быть со знаком или без знака (табл. 2.1).

Таблица 2.1. Символьные типы данных
Тип Диапазон Размер
char –128... 127 1 байт
unsigned char 0... 255 1 байт
signed char –128... 127 1 байт

Пример описания символьных переменных:

char c, str; //Описаны две символьные переменные.
			

При работе с символьными данными нужно помнить, что если в выражении встречается одиночный символ, он должен быть заключён в одинарные кавычки.

Например, 'a', 'b', '+', '3'.

Последовательность символов, то есть строка, при использовании в выражениях заключается в двойные кавычки: "Hello!".

2.2.2 Целочисленный тип

Переменная типа int в памяти компьютера может занимать два, четыре или восемь байтов. Это зависит от разрядности процессора.

Диапазоны значений целого типа представлены в таблице 2.2. По умолчанию все целые типы считаются знаковыми, т.е. спецификатор signed можно не указывать.

Таблица 2.2. Целые типы данных
Тип Диапазон Размер
int –2147483647...2147483647 4 байта
unsigned int 0...4294967295 4 байта
signed int –2147483647...2147483647 4 байта
short int –32767...32767 2 байта
long int –2147483647...2147483647 4 байта
unsigned short int 0...65535 2 байта
signed short int –32767...32767 2 байта
long long int –(263–1)...(263–1) 8 байт
signed long int –2147483647...2147483647 4 байта
unsigned long int 0...4294967295 4 байта
unsigned long long int 0...264–1 8 байт

Пример описания целочисленных данных:

int a, b, c;
unsigned long int A, B, C;
			

2.2.3 Вещественный тип

Внутреннее представление вещественного числа в памяти компьютера отличается от представления целого числа. Число с плавающей точкой представлено в экспоненциальной форме mE \pm p, где m — мантисса (целое или дробное число с десятичной точкой), p — порядок (целое число). Для того чтобы перевести число в экспоненциальной форме к обычному представлению с фиксированной точкой, необходимо мантиссу умножить на десять в степени порядок. Например,

-6.42E + 2 = -6.42 · 10^2 = &-642,\\ 3.2E - 6 = 3.2 · 10^{-6} = 0.0000032

Обычно величины типа float занимают 4 байта, из которых один двоичный разряд отводится под знак, 8 разрядов под порядок и 23 под мантиссу. Поскольку старшая цифра мантиссы всегда равна 1, она не хранится.

Величины типа double занимают 8 байт, в них под порядок и мантиссу отводится 11 и 52 разряда соответственно. Длина мантиссы определяет точность числа, а длина порядка его диапазон. Спецификатор типа long перед именем типа double указывает, что под величину отводится 10 байт.

Диапазоны значений вещественного типа представлены в табл. 2.3.

Таблица 2.3. Вещественные типы данных
Тип Диапазон Размер
float 3.4Е-38...3.4E+38 4 байта
double 1.7Е-308...1.7E+308 8 байт
long double 3.4Е-4932...3.4E+4932 10 байт

Пример описания вещественных переменных:

double x1, x2, x3;
float X, Y, Z;
			

2.2.4 Логический тип

Переменная типа bool может принимать только два значения true (истина) или false (ложь). Любое значение не равное нулю интерпретируется как true, а при преобразовании к целому типу принимает значение равное 1. Значение false представлено в памяти как 0.

Пример описания данных логического типа:

bool F, T;
			

2.2.5 Тип void

Множество значений этого типа пусто. Он используется для определения функций, которые не возвращают значения, для указания пустого списка аргументов функции, как базовый тип для указателей и в операции приведения типов.

< Лекция 1 || Лекция 2: 123456 || Лекция 3 >
Сергей Радыгин
Сергей Радыгин

Символы кириллицы выводит некорректно. Как сделать чтобы выводился читабельный текст на русском языке?

Тип приложения - не Qt,

Qt Creator 4.5.0 основан на Qt 5.10.0. Win7.

 

Юрий Герко
Юрий Герко

Кому удалось собрать пример из раздела 13.2 Компоновка (Layouts)? Если создавать проект по изложенному алгоритму, автоматически не создается  файл mainwindow.cpp. Если создавать этот файл вручную и добавлять в проект, сборка не получается - компилятор сообщает об отсутствии класса MainWindow. Как правильно выполнить пример?