Тип данных char : символы и малые целые числа
ОПиБД 10КС
Тема занятия. Представление данных
Литература:
1. Прата, Стивен. П70 Язык программирования С++. Лекции и упражнения,6-е изд.:: Пер. с англ.- М. : ООО "И.Д. Вильямс", 2012.-1248с.
2. Страуструп, Бьярне. С83 Программирование: принципы и практика использования С++.: Пер. с англ.- М.: ООО "И.Д. Вильямс", 2011.-1248с.:
Задание:
1. Лекцию изучить.
2. ПРОГРАММУ выполнить. Скрин выполненной программы прислать личным сообщение ВК - https://vk.com/id9418169.
Ребята, там несколько программ. Хорошо, если вы все их скопируете и выполните
План.
1. Простые переменные.
2. Типы данных short, int, long.
3. Типы данных без знака.
4. Квалификатор const.
5. Типы данных с плавающей точкой.
Простые переменные
Для хранения в компьютере элемента информации программа должна отслеживать три основных свойства этого элемента информации, в частности, она определяет:
• где хранится информация
• какое значение там хранится
• какой вид информации хранится
Используемый в объявлении тип данных описывает вид информации, а имя переменной является символическим представлением значения переменной.
Для переменных рекомендуется выбирать имена, имеющие смысл. Если переменная представляет стоимость поездки, назовите ее costoftrip или costOfTrip, а не просто х или cot. Вы должны следовать нескольким простым правилам именования переменных в языке C++:
• В именах можно использовать только следующие символы: буквы алфавита, цифры и символ подчеркивания (_).
|
|
• Первый символ имени не может быть цифрой.
• Символы верхнего и нижнего регистров рассматриваются как разные.
• В качестве имен нельзя использовать ключевые слова языка C++.
• Имена, начинающиеся с двух символов подчеркивания или с символа подчеркивания и следующей за ним буквы верхнего регистра, зарезервированы для использования реализацией языка. Имена, начинающиеся с символа подчеркивания, зарезервированы для использования реализацией языка в качестве глобальных идентификаторов.
• В языке C++ на длину имени не накладывается никаких ограничений и учитывается значение каждого символа имени.
Целочисленные типы данных
Целые числа — это числа без дробной части, например, 2, 98, -5286 и 0. В природе существует огромное количество целых чисел (это количество является бесконечным), поэтому ни в какой самой большой оперативной памяти компьютера не могут быть представлены все возможные целые числа. Следовательно, в любом языке программирования может быть представлена только часть всех целых чисел. В некоторых языках программирования. например в языке Standard Pascal, существует только один тип целочисленных данных (один тип данных служит для представления всех целых чисел!), но в языке C++ имеется несколько типов целочисленных данных. Это позволяет программистам выбирать такой тип целочисленных данных, который лучше всего соответствует требованиям конкретной программы. Подобная забота о том, чтобы тип данных соответствовал конкретным требованиям, облегчает создание новых типов данных в ООП.
|
|
В языке C++ различные типы целочисленных данных различаются объемом памяти, используемым для их хранения. Больший блок памяти может представлять больший диапазон целых чисел. Кроме того, одни типы данных (типы данных со знаком) могут представлять и положительные, и отрицательные значения, тогда как другие типы данных (типы данных без знака) не могут представлять отрицательные значения. Основные типы целочисленных данных языка C++ (в порядке возрастания размера) именуются char , short , int и long . Каждый из этих типов данных подразделяется на две разновидности: со знаком и без знака. В результате вы имеете на выбор восемь различных типов целочисленных данных! Давайте рассмотрим эти типы целочисленных данных более подробно. Поскольку тип данных char обладает некоторыми особыми свойствами (чаще всего он используется для представления символов, а не чисел), в настоящей главе сначала рассматриваются другие типы целочисленных данных.
|
|
Типы даных short, int и long
Оперативная память компьютера состоит из элементов, называемых битами. Располагая различным числом битов для хранения значений, типы данных short , int и long могут представлять целые числа трех разных величин. Было бы удобно, если бы данные каждого типа во всех системах были одной определенной величины; например, величина данных типа short всегда была бы равна 16 битам, типа int — 32 битам и т.д. Но не все так просто. А все потому, что ни один вариант не подходит для всех типов компьютеров. В языке C++ предлагается гибкий стандарт с некоторыми гарантированными минимальными размерами:
• Величина данных типа short не меньше 16 битов.
• Величина данных типа int не меньше размера данных типа short .
• Величина данных типа long не меньше 32 битов и не меньше размера данных типа int .
БИТЫ И БАЙТЫ
Основным элементом памяти компьютера является бит. Представьте себе бит в виде электронного переключателя, который можно либо включить, либо выключить. Если переключатель отключен, то он представляет значение О, а если включен — то значение 1. Элемент памяти из 8 битов может принимать 256 различных значений. Число 256 получается потому, что каждый бит имеет два возможных значения, и тогда общее число возможных значений для 8 битов равно 28, или 256. Таким образом, 8-битовый элемент памяти может представлять, скажем, значения в диапазоне от 0 до 255 или в диапазоне от -128 до 127. Каждый дополнительный бит удваивает число возможных значений. ЭTO означает, что 16-битовый элемент памяти может принимать 65 536 различных значений, а 32-битовый элемент — 4 294 672 296 различных значений. Байт — это обычно 8-битовый элемент памяти. В этом смысле байт является единицей измерения, описывающей объем памяти компьютера; при этом один килобайт равен 1024 байтам, а один мегабайт — 1024 Кб. Однако в языке C++ байт определяется иначе. В языке C++ байт состоит из такого числа смежных битов, которого достаточно для того; чтобы вместить основной набор символов для данной реализации языка. Другими словами, число возможных значений_должно быть равно или превышать число различных символов. В США основными наборами символов являются, как правило, наборы символов ASCII или EBCDIC, для представления которых достаточно 8 битов. Поэтому в системах, где используются эти наборы символов, один байт языка C++ равен 8 битам. Однако при программировании для других стран могут потребоваться расширенные наборы символов, такие как Unicode, поэтому в некоторых реализациях могут использоваться 16-битовые байты.
|
|
В настоящее время во многих системах используются минимальные гарантированные размеры данных и данные типа short имеют величину, равную 16 битам, а данные типа long — величину, равную 32 битам. Для данных типа int остается возможность выбора.
При объявлении переменных имена данных этих типов используются точно так же, как имена данных типа int:
short score;//создает переменную типа short
int temperature; //создает переменную типа int
long position; //создает переменную типа long
В действительности, short — это сокращение от short int, a long — сокращение от long int, но вряд ли кто-нибудь использует расширенные формы записи.
Данные этих трех типов: int, sort и long — являются данными со знаком, а это означает, что диапазон их возможных значений разделяется приблизительно поровну между положительными и отрицательными значениями. Например, 16-битовые данные типа int могут лежать в диапазоне от -32768 до +32767.
Если вам требуется узнать величины целых чисел в конкретной системе, то это можно сделать с помощью программных инструментов, имеющихся в языке C++. Во-первых, операция sizeof возвращает размер данных какого-либо типа или размер переменной (в байтах). (Оператор (операция) — это элемент языка, с помощью которого выполняются определенные действия над одним или несколькими элементами данных и в результате получается некоторое значение. Например, операция сложения, представленная знаком +, вызывает сложение двух чисел. Обратите внимание, что значение термина "байт" зависит от реализации, поэтому двухбайтовые данные типа int могут иметь величину 16 битов в одной системе и 32 бита — в другой). Во-вторых, заголовочный файл climits (в более ранних реализациях — заголовочный файл limits.h) содержит информацию о предельных значениях целочисленных данных различных типов. В частности, в нем определены символические имена для представления различных предельных значений. Например, в этом файле определена константа INT_MAX, которая является самым большим возможным значением данных типа int. В программе из листинга демонстрируется, как использовать описанные средства. Там же иллюстрируется использование инициализации, которая заключается в присваивании переменной некоторого значения.
Листинг Программа limits.cpp.// limits.cpp — некоторые предельные значения для целых чисел
#include <iostream>
using namespace std;
#include <climits>
int main()
{
int n_int= INT_MAX;
short n_short = SHRT_MAX;
long n_long = LONG_MAX;
// операция sizeof выдает размер данных какого-либо типа или переменной
cout « "int is " « sizeof (int) « " bytes. \n";
cout « "short is " « sizeof n_short « " bytes.\n";
cout « "long is " « sizeof n_long « " bytes. \n\n" ;
cout « "Maximum values:\n";
cout « "int: " « n_int « "\n";
cout « "short: " « n_short « "\n";
cout « "long: " « n_long « "\n\n";
return0;}
В результате выполнения программы на платформе Microsoft Visual C++ 5.0 получились следующие результаты:
int is 4 bytes.
short is 2 bytes.
long is 4 bytes.
Maximum values:
int: 2147483647
short: 32767
long: 2147483647
Инициализация представляет собой объединение присваивания значения с объявлением. Например, оператор
int n_int = INT_MAX;
объявляет переменную n_int и присваивает ей максимальное значение, возможное для типа данных int. Для инициализации значения переменных можно также использовать стандартные константы. Инициализировать переменную можно, присваивая ей значение другой переменной, при условии, что эта переменная была определена раньше. Можно даже инициализировать переменную значением выражения при условии, что значения всех компонентов выражения известны во время компиляции:
int uncles = 5; //инициализирует переменную uncles значением 5
int aunts = uncles; //инициализирует переменную aunts значением 5
int chairs = aunts + uncles + 4 ;//инициализирует переменную chairs значением 14,
Типы данных без знака
Для каждого из трех только что рассмотренных типов данных имеется его разновидность: тип данных без знака. Данные этих типов не могут принимать отрицательные значения. Преимуществом здесь является то, что увеличивается максимально возможное значение данных. Например, тип данных short представляет данные, лежащие в диапазоне от -32768 до +32767, тогда как разновидность этого типа данных без знака может представлять данные, лежащие в диапазоне от 0 до 65535. Конечно, типы данных без знака можно использовать только для величин, которые никогда не бывают отрицательными и которые касаются, например, населения, чисел в инвентаризационной ведомости и количества осадков в месяц. Чтобы создать разновидность целочисленной переменной без знака, просто модифицируйте объявление с помощью ключевого слова unsigned : unsigned short change;
План.
1. Константи. Визначення типу константи в С++.
2. Тип даних char. Константи типу char.
3. Тип даних bool.
Целочисленные константы
Целочисленная константа — это константа, записываемая явно, например: 212 или 1776. В языке C++, так же как и в языке С, целочисленные константы могут записываться в трех системах счисление в десятичной системе счисления (самая популярная система), восьмиричной системе счисления (фаворит системы UNIX старого выпуска) и в шестнадцатиричной системе счисления (любимая система хакеров, стремящихся получить доступ к данным на аппаратном уровне). Эти системы счисления описываются в приложении А; здесь мы рассмотрим, как в языке C++ представлены числа для этих трех систем счисления. Чтобы определить, к какой системе счисления относится числовая константа, в языке C++ используется одна или две первые цифры константы. Если первая цифра находится в диапазоне 1—9, то число является десятичным; так, число 93 является десятичным. Если первая цифра равна 0, а вторая находится в диапазоне от 1 до 7, то число является восьмеричным; так, число 042 — это восьмеричное число, эквивалентное десятичному числу 34. Если первыми двумя символами являются Ох или ОХ, то речь идет о шестнадцатиричном числе; так, число 0x42 — это шестнадцатиричное число, эквивалентное десятичному числу 66. В шестнадцатиричных числах символы a-f и A-F обозначают соответственно шестнадцатиричные цифры 10—15. Шестнадцатиричное число OxF эквивалентно десятичному числу 15, а 0хА5 — десятичному числу 165 (10 умножить на 16 и прибавить 5, умноженное на 1). Программа из листинга 3.3 была написана специально, чтобы продемонстрировать использование этих трех систем счисления.
Листинг 3.3 Программа hexoct . cpp .
// hexoct.cpp — демонстрирует использование
// шестнадцатиричных и восьмеричных констант
#include <iostream>
using namespace std;
int main()
{
int chest=42; //десятичная целочисленная константа
int waist=0x42; //шестнадцатиричная
int inseam = 042;//восьмеричная
cout « "Monsieur cuts a striking figure!\n";
cout « "chest = " « chest « "\n";
cout « "waist = " « waist « "\n";
cout « "inseam = " « inseam « "\n";
return 0 ;
}
По умолчанию объект cout отображает на экране целые числа в десятичном виде, независимо от того, как они записаны в программе; это демонстрируют следующий результат выполнения программы.
Monsieur cuts a striking figure!
chest = 42
waist = 66
inseam = 34
Помните, что все эти системы счисления используются только лишь для удобства. Но независимо от того, в каком виде вы записываете число 10: как 10, 012 или ОхА, — оно сохраняется в компьютере одним и тем же способом: как двоичное число.
Тип данных char : символы и малые целые числа
Теперь пора вернуться к последнему упомянутому типу целочисленных данных — типу char. Как можно судить по его имени, тип данных char предназначен для представления символов, например, букв и цифр. Но если хранение чисел не является для компьютеров большой проблемой, то хранение символов — это совсем другое дело. В языках программирования был найден простой выход: для представления символов используется числовой код. Таким образом, тип данных char — это еще один тип целочисленных данных. Гарантируется, что данные этого типа имеют достаточные размеры для представления всего диапазона основных символов — всех букв, цифр, знаков препинания и т.п. — вычислительной системы, для которой предназначена реализация языка. На практике в большинстве систем основной набор символов содержит менее 256 символов, поэтому для его представления достаточно одного байта. Поэтому, хотя тип данных char чаще всего используется для представления символов, его также можно использовать для представления целых чисел, меньших, чем числа типа short.
Наиболее распространенным набором символов в США является набор символов ASCII, описанный в приложении С. Символы этого набора представлены числовым кодом (кодом ASCII). Например, 65 — это код символа А. Работа с данными типа char демонстрируется в листинге.
Листинг Програ ммы ehart . ype . cpp .
// chartype.cpp — применение данных типа char
#include <iostream>
using namespace std;
int main{ )
{
char ch; //объявление переменной типа char
cout « "Enter a character:\n";
cin » ch ;
cout « "Holla! ";
cout « "Thank you for the "
« ch « " character.\n"; return 0 ; }
Как обычно, запись \п в языке C++ означает символ новой строки. В результате выполнения программы получается следующий результат:
Enter a character:
М
Holla! Thank you for the M character.
Интересно здесь то, что вы вводите символ М, а не соответствующий код символа 77. И программа также печатает символ М, а не код 77. Однако, если вы "заглянете" в память, то обнаружите, что в переменной ch хранится значение 77. Это чудесное превращение связано не с данными типа char , а с объектами cin и cout . Эти интересные конструкции выполняют преобразование от вашего имени. При вводе данных объект cin преобразует входные данные, являющиеся результатом нажатая клавиши М, в значение 77. При выводе данных объект cout преобразует значение 77 в отображаемый символ М; функционирование объектов cin и cout определяет тип переменной. Если то же самое значение 77 присвоить переменной типа int , то объект cout отобразит его как 77 (т.е. объект cout отобразит два символа 7). Этот момент иллюстрируется в программе из листинга 3.5. В ней также показано, как в языке C++ определяются символьные константы: символ заключается в одинарные кавычки, например, 'М'. (Обратите внимание, что в этом примере программы не используются двойные кавычки. В языке C++ одинарные кавычки применяются для задания символов, а двойные кавычки — для задания строк. Объект cout может обрабатывать и символы, и строки, но, как будет показано в главе 4, это две совершенно разные вещи.) И наконец, в программе применяется новое свойство объекта cout — функция cout.put(), которая отображает одинарный символ.
Дата добавления: 2022-01-22; просмотров: 20; Мы поможем в написании вашей работы! |
Мы поможем в написании ваших работ!