Скачать презентацию Типы данных в С Лекция 2 Определение Скачать презентацию Типы данных в С Лекция 2 Определение

Типы данных, операции, выражения.ppt

  • Количество слайдов: 50

Типы данных в С++ Лекция 2 Типы данных в С++ Лекция 2

Определение типа данных p Типом данных называется понятие языка программирования, включающее: n n n Определение типа данных p Типом данных называется понятие языка программирования, включающее: n n n p внутреннее представление данных в памяти компьютера; определение множества возможных значений данных этого типа (его области определения); определение множества возможных операций над данными этого типа Типы данных языка C++ делят на скалярные и составные (агрегатные) 2/17/2018 Типы данных в C++ 2

Значения переменных Переменной скалярного типа в каждый момент времени соответствует одно единственное значение p Значения переменных Переменной скалярного типа в каждый момент времени соответствует одно единственное значение p Переменной составного типа в каждый момент времени соответствует некоторое множество значений p 2/17/2018 Типы данных в C++ 3

Скалярные типы данных называют также арифметическими, т. к. данные этих типов можно использовать в Скалярные типы данных называют также арифметическими, т. к. данные этих типов можно использовать в арифметических выражениях p Скалярные типы данных делятся на целые и вещественные p Большинство скалярных типов являются стандартными, т. е. они присутствуют во всех реализациях языка p 2/17/2018 Типы данных в C++ 4

Стандартные типы данных p Для задания целых типов используются ключевые слова: n n p Стандартные типы данных p Для задания целых типов используются ключевые слова: n n p int – целый тип char – символьный тип wchar_t – расширенный символьный тип bool – логический тип Для задания вещественных типов используются ключевые слова: n n 2/17/2018 float – одинарная точность double – двойная точность Типы данных в C++ 5

Спецификаторы типов p При задании типов данных можно использовать спецификаторы типов: n n p Спецификаторы типов p При задании типов данных можно использовать спецификаторы типов: n n p short – короткий long – длинный signed – знаковый unsigned – беззнаковый Спецификаторы уточняют внутреннее представление и диапазон значений стандартных типов 2/17/2018 Типы данных в C++ 6

Размеры типов данных Количество байт памяти, отводимых для представления данных того или иного типа, Размеры типов данных Количество байт памяти, отводимых для представления данных того или иного типа, зависит от реализации p Это определяет и диапазон значений, представимых этим типом данных p Для реализации с 32 -разрядной арифметикой размеры целых типов данных и диапазоны представимых значений приведены в таблице на следующем слайде p 2/17/2018 Типы данных в C++ 7

Целые типы данных Тип bool signed char unsigned char 0, 1 -128 … 127 Целые типы данных Тип bool signed char unsigned char 0, 1 -128 … 127 0 … 255 Длина 1 байт signed wchar_t unsigned wchar_t signed short int unsigned short int signed long int unsigned long int – 32768. . . 32767 0 … 65535 – 2147483648. . 2147483647 0 … 4294967295 2 байта 4 байта 2/17/2018 Диапазон Типы данных в C++ 8

Целые типы данных При задании типов можно использовать отдельные слова: int, char, short, long, Целые типы данных При задании типов можно использовать отдельные слова: int, char, short, long, unsigned p Это эквивалентно: long signed int, signed char, signed short int, signed long int, unsigned int, соответственно p 2/17/2018 Типы данных в C++ 9

Представление целых чисел p p В памяти компьютера целые числа представляются в двоичной системе Представление целых чисел p p В памяти компьютера целые числа представляются в двоичной системе счисления Для знаковых типов (int, signed short int и signed long int) старший разряд является знаковым n n s=0 для положительных чисел s=1 для отрицательных чисел s 2/17/2018 d Типы данных в C++ 10

Представление целых чисел Положительное и отрицательное числа, равные по модулю, представляются в памяти компьютера Представление целых чисел Положительное и отрицательное числа, равные по модулю, представляются в памяти компьютера взаимно дополнительными кодами p Например значение переменной типа char, равное 25 представляется кодом 00011001, а значение -25 представляется кодом 11100111 p 2/17/2018 Типы данных в C++ 11

Вещественные типы данных Математическое множество вещественных чисел бесконечно и непрерывно p В силу ограниченности Вещественные типы данных Математическое множество вещественных чисел бесконечно и непрерывно p В силу ограниченности объема памяти, отводимой для хранения одного числа, в памяти компьютера может быть представлено лишь ограниченное дискретное подмножество вещественных чисел p 2/17/2018 Типы данных в C++ 12

Способы представления p Используются два способа представления вещественных чисел: n в форме с фиксированной Способы представления p Используются два способа представления вещественных чисел: n в форме с фиксированной точкой (Fixed point format) n в форме с плавающей точкой (Floating point format) 2/17/2018 Типы данных в C++ 13

Форма с фиксированной точкой p Число представлено в виде s*c. d где s – Форма с фиксированной точкой p Число представлено в виде s*c. d где s – знаковый множитель (+1 или -1), c – последовательность цифр целой части числа, d – последовательность цифр дробной части числа p Двоичный код, представляющий вещественное число в этой форме, имеет следующую структуру s 2/17/2018 c Типы данных в C++ d 14

Форма с плавающей точкой p Число представлено в виде s*m*2 (p-p 0) где s Форма с плавающей точкой p Число представлено в виде s*m*2 (p-p 0) где s – знаковый множитель (+1 или -1), p – целое, являющееся порядком числа, p 0 – константа, m – мантисса числа, подчиняющаяся условию нормализации 0. 5<= m <1 p Представляющий число двоичный код имеет следующую структуру s 2/17/2018 p m Типы данных в C++ 15

Вещественные типы данных Тип float double Диапазон 3, 4 E– 38. . . 1, Вещественные типы данных Тип float double Диапазон 3, 4 E– 38. . . 1, 7 E+38 1, 7 E– 308 … 1, 7 E+308 long double 3, 4 E– 4932 … 3, 4 E+4932 2/17/2018 Типы данных в C++ Значащих Размер цифр (байт) 15– 16 4 8 19– 20 12 16

Структура кодов p Размеры полей n n n p p s - 1 бит Структура кодов p Размеры полей n n n p p s - 1 бит p – 8 бит для float, 11 бит для double, 17 бит для long double m – 23 бит для float, 52 бит для double, 78 бит для long double Таким образом, типы float, double и long double представляют вещественные данные в форме с плавающей точкой Примеры внутреннего представления 2/17/2018 Типы данных в C++ 17

Тип char Для хранения данных типа char отводится 1 байт памяти, что достаточно для Тип char Для хранения данных типа char отводится 1 байт памяти, что достаточно для представления всех символов таблицы ASCII p Литералы этого типа записываются в виде одиночных символов либо восьмеричных (шестнадцатеричных) кодов символов с предшествующим символом «обратный слэш» , заключенных в апострофы: ‘A’, ‘#’, ‘102’, ‘x 31’ p 2/17/2018 Типы данных в C++ 18

Операции Операцией называется действие над значениями, в результате которого получается новое значение p Операции Операции Операцией называется действие над значениями, в результате которого получается новое значение p Операции обозначаются ключевыми словами, а также одиночными или двойными специальными символами p Значения, над которыми выполняется операция, называются операндами p 2/17/2018 Типы данных в C++ 19

Характеристики операций Число операндов, участвующих в операции, называется ее арностью p В зависимости от Характеристики операций Число операндов, участвующих в операции, называется ее арностью p В зависимости от числа операндов операции делятся на: p n n n p унарные, бинарные, тернарные Кроме арности операции различаются уровнем приоритета 2/17/2018 Типы данных в C++ 20

Характеристики операций Наконец еще одной характеристикой операций в C++ является направление ассоциативности, которая определяет Характеристики операций Наконец еще одной характеристикой операций в C++ является направление ассоциативности, которая определяет последовательность выполнения операций одного уровня приоритета при вычислении значения выражений p Операция называется лево-ассоциативной, если несколько подряд записанных таких операций выполняются в порядке слева направо, и правоассоциативной, если выполнение происходит в порядке справа налево p 2/17/2018 Типы данных в C++ 21

Операции наивысшего приоритета p Наивысшим 0 -м уровнем приоритета обладают следующие операции: ( ) Операции наивысшего приоритета p Наивысшим 0 -м уровнем приоритета обладают следующие операции: ( ) – вызов функций [ ] – индексирование элементов массива -> – косвенный выбор компонента (через указатель на объект). – прямой выбор компонента (через имя объекта) p Все эти операции являются правоассоциативными 2/17/2018 Типы данных в C++ 22

Унарные операции p Требуют для своего выполнения одного операнда. К числу этих операций относятся: Унарные операции p Требуют для своего выполнения одного операнда. К числу этих операций относятся: ++ – инкремент -– декремент sizeof – размер в байтах ~ – поразрядное отрицание ! – логическое отрицание – арифметическое отрицание (унарный минус) + – унарный плюс & – извлечение адреса * – разыменование 2/17/2018 Типы данных в C++ 23

Унарные операции Операция инкремента (декремента) увеличивает (уменьшает) исходное значение операнда на 1 и возвращает Унарные операции Операция инкремента (декремента) увеличивает (уменьшает) исходное значение операнда на 1 и возвращает измененное значение p Таким образом, оператор i = ++j эквивалентен паре операторов: p j = j + 1; i = j; p Перечисленные унарные операции имеют 1 -й уровень приоритета и являются правоассоциативными 2/17/2018 Типы данных в C++ 24

Операция приведения типа p Еще одна унарная операция, имеющая однако более низкий 2 -й Операция приведения типа p Еще одна унарная операция, имеющая однако более низкий 2 -й уровень приоритета (имя_типа) операнд Преобразует значение операнда к указанному типу; операция является право-ассоциативной p Например: p (double) 17/5 p В результате вычисления этого выражения будет получено значение 3. 4 2/17/2018 Типы данных в C++ 25

Бинарные мультипликативные операции Бинарные операции требуют для своего выполнения двух значений p Мультипликативные операции: Бинарные мультипликативные операции Бинарные операции требуют для своего выполнения двух значений p Мультипликативные операции: p * / % p - умножение - деление - остаток от деления Имеют 3 -й уровень приоритета и являются левоассоциативными 2/17/2018 Типы данных в C++ 26

Бинарные аддитивные операции p К этой группе операций относятся: + - p - сложение Бинарные аддитивные операции p К этой группе операций относятся: + - p - сложение - вычитание Имеют 4 -й уровень приоритета и являются левоассоцитивными 2/17/2018 Типы данных в C++ 27

Бинарные операции сдвига Применяются к операндам целых типов и производят сдвиг кода левого операнда Бинарные операции сдвига Применяются к операндам целых типов и производят сдвиг кода левого операнда на число бит, равное значению правого операнда p Биты, выходящие за разрядную сетку теряются, а освобождающиеся разряды заполняются нулями p Направление сдвига: p << – сдвиг влево >> – сдвиг вправо p Операции лево-ассоциативные с 5 -м уровнем приоритета 2/17/2018 Типы данных в C++ 28

Бинарные операции отношения p К этой группе операций относятся: < <= >= > p Бинарные операции отношения p К этой группе операций относятся: < <= >= > p - меньше или равно - больше Операции лево-ассоциативные с 6 -м уровнем приоритета 2/17/2018 Типы данных в C++ 29

Проверка на равенство == != p Операции имеют 7 -й уровень приоритета и являются Проверка на равенство == != p Операции имеют 7 -й уровень приоритета и являются лево-ассоциативными 2/17/2018 Типы данных в C++ 30

Побитовые операции Логические операции, выполняемые над соответствующими битами операндов целого типа; являются лево-ассоциативными p Побитовые операции Логические операции, выполняемые над соответствующими битами операндов целого типа; являются лево-ассоциативными p К их числу относятся следующие операции: p & – поразрядная конъюнкция (8 -й уровень приоритета) ^ – поразрядная исключающая дизъюнкция (9 -й уровень приоритета) | – поразрядная дизъюнкция (10 -й уровень приоритета) 2/17/2018 Типы данных в C++ 31

Бинарные логические операции p К этой группе операций относятся: && || – конъюнкция – Бинарные логические операции p К этой группе операций относятся: && || – конъюнкция – дизъюнкция Операнды могут иметь любой скалярный тип, который преобразуется к целому p Полученный после этого код считается соответствующим значению TRUE, если он отличен от нуля p Операции имеют 11 -й и 12 -й уровень приоритета, соответственно, и являются лево-ассоциативными p 2/17/2018 Типы данных в C++ 32

Условная операция p Право-ассоциативная операция с 13 -м уровнем приоритета: операнд_1 ? операнд_2 : Условная операция p Право-ассоциативная операция с 13 -м уровнем приоритета: операнд_1 ? операнд_2 : операнд_3 p Вычисляется операнд_1; если его значение отлично от нуля, результатом будет значение операнда_2, иначе – значение операнда_3 2/17/2018 Типы данных в C++ 33

Операции присваивания p Имеют приоритет 14 и являются правоассоциативными: = , +=, -=, *=, Операции присваивания p Имеют приоритет 14 и являются правоассоциативными: = , +=, -=, *=, /=, %=, <<=, >>=, &=, ^=, |= Для простого присваивания (=) результатом является значение правого операнда, которое присваивается левому операнду p Для составного присваивания предварительно выполняется соответствующая операция с участием левого и правого операндов p 2/17/2018 Типы данных в C++ 34

Операция запятая p Называется операцией запятая: операнд_1 , операнд_2 Вычисляется значение левого, затем – Операция запятая p Называется операцией запятая: операнд_1 , операнд_2 Вычисляется значение левого, затем – правого операндов p Тип и значение результата совпадают с типом и значением правого операнда p Имеет 15 -й (самый низкий) уровень приоритета и является лево-ассоциативной p 2/17/2018 Типы данных в C++ 35

Выражения Операции являются основными (базовыми) действиями над значениями p Более сложные действия над значениями Выражения Операции являются основными (базовыми) действиями над значениями p Более сложные действия над значениями могут быть представлены как последовательность операций. Одним из способов описания такой последовательности являются выражения p 2/17/2018 Типы данных в C++ 36

Выражения p Выражение – это запись, которая может содержать: n n n p литералы Выражения p Выражение – это запись, которая может содержать: n n n p литералы константы переменные вызовы функций операции круглые скобки Наличие в выражении хотя бы одного из первых четырех элементов обязательно 2/17/2018 Типы данных в C++ 37

Примеры выражений x+y*4 65 a && (b || c) (v<=w) && (x!=5) Z 2/17/2018 Примеры выражений x+y*4 65 a && (b || c) (v<=w) && (x!=5) Z 2/17/2018 Типы данных в C++ 38

Выражения Литералы, константы, переменные и вызовы функций , входящие в состав выражения, называются операндами Выражения Литералы, константы, переменные и вызовы функций , входящие в состав выражения, называются операндами p Переменные, входящие в состав выражения, должны иметь определенные значения p Выражение, не содержащее переменных, называется константным p 2/17/2018 Типы данных в C++ 39

Вычисление выражения Выполнение операций, указанных в выражении, над входящими в него операндами называется вычислением Вычисление выражения Выполнение операций, указанных в выражении, над входящими в него операндами называется вычислением выражения p Результатом вычисления выражения является получение нового значения, которое называется значением выражения, а тип этого значения называется типом выражения p 2/17/2018 Типы данных в C++ 40

Приоритет операций При вычислении выражения выполнение операций над операндами происходит в определенном порядке p Приоритет операций При вычислении выражения выполнение операций над операндами происходит в определенном порядке p Порядок выполнения операций определяется приоритетом соответствующей группы операций p 2/17/2018 Типы данных в C++ 41

Приоритет операций Приоритет операции Операция 0 Вызов функций, индексирование, выбор компонента 1 Унарные операции Приоритет операций Приоритет операции Операция 0 Вызов функций, индексирование, выбор компонента 1 Унарные операции 2 Приведение типа 3 Бинарные мультипликативные операции 4 Бинарные аддитивные операции 5 Операции сдвига 6 Операции отношения 7 Проверка на равенство 8 -10 11 -12 Побитовые логические операции Логические операции 13 14 Присваивания 15 2/17/2018 Условная операция Операция запятая Типы данных в C++ 42

Порядок выполнения операций p Приоритетный порядок выполнения операций может быть изменен с помощью круглых Порядок выполнения операций p Приоритетный порядок выполнения операций может быть изменен с помощью круглых скобок. Например: x+y*4 или (x + y) * 4 p Порядок выполнения операций с одинаковым приоритетом определяется с учетом направления ассоциативности операций 2/17/2018 Типы данных в C++ 43

Направление ассоциативности p Унарные операции, условная операция и операции присваивания право-ассоциативны, остальные лево-ассоциативны 2/17/2018 Направление ассоциативности p Унарные операции, условная операция и операции присваивания право-ассоциативны, остальные лево-ассоциативны 2/17/2018 Типы данных в C++ 44

Операция инкремента p Операция инкремента ++ имеет две формы: n n префиксную (например, ++x) Операция инкремента p Операция инкремента ++ имеет две формы: n n префиксную (например, ++x) постфиксную (например, x++) Операция инкремента в префиксной форме выполняется обычным образом в соответствии с приоритетностью операций p Эта же операция в постфиксной форме выполняется после завершения процесса вычисления выражения p 2/17/2018 Типы данных в C++ 45

Пример x = ++y * 2 + x p При x = 2 и Пример x = ++y * 2 + x p При x = 2 и y = 3 значение выражения будет равно 10; значение переменной x после завершения вычисления выражения будет равно 10, а значение переменной y будет равно 4 x = y++ * 2 + x p При тех же значениях x и y значение выражения будет равно 8; значение переменной x после завершения вычисления выражения будет равно 8, а значение переменной y будет равно 4 2/17/2018 Типы данных в C++ 46

Функции Если правило получения нового значения не может быть представлено в виде выражения, то Функции Если правило получения нового значения не может быть представлено в виде выражения, то его оформляют в виде функции p Операнды функции называют ее параметрами p Для обращения к функции используется вызов функции. Вызов функции состоит из имени функции и заключенного в круглые скобки списка ее параметров p 2/17/2018 Типы данных в C++ 47

Стандартные функции Наиболее часто используемые функции включены в состав языка и называются стандартными функциями Стандартные функции Наиболее часто используемые функции включены в состав языка и называются стандартными функциями p Примеры стандартных функций: p abs(x) sqrt(x) log(x) sin(x) и т. д. p Для их использования в программе нужно подключить заголовочный файл math. h 2/17/2018 Типы данных в C++ 48

Выражения с вызовами функций p Параметрами функции в общем случае являются выражения. Например: sqrt(x Выражения с вызовами функций p Параметрами функции в общем случае являются выражения. Например: sqrt(x + y) sin(fi/3 + psi) p Если вызовы функций входят в выражение, то они вычисляются до выполнения всех других операций в этом выражении 2/17/2018 Типы данных в C++ 49

Конец лекции 2/17/2018 Типы данных в C++ 50 Конец лекции 2/17/2018 Типы данных в C++ 50