Тип данных 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; Мы поможем в написании вашей работы!

Поделиться с друзьями:






Мы поможем в написании ваших работ!