Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Символьні типи даних




Логічний тип даних

Порожній тип

Базові типи даних

Порожній тип (void) синтаксично поводиться як базовий тип. Однак використовувати його можна тільки як частину похідного типу, оскільки об'єктів типу voіd не існує. Він використовується для того, щоб вказати, що функція не повертає ніякого значення, або як базовий тип для вказівників на об'єкти невідомого типу, наприклад:

void f() // функція f не повертає ніякого значення

void* pv; // вказівник на объект невідомого типу

В мові C++ логічний тип (bool) характеризується двома значеннями: false (0) і true (1). На відміну від мови С++ в мові С логічний тип даних іменується Bool, але при включенні заголовочного файлу <stdbool.h> можна використовувати ключові слова bool, true, false.

В пам'яті комп'ютера змінна типу bool займає 1 байт. Логічні значення можна асоціювати зі значеннями типу int: значенню false відповідає нуль, значенню true відповідають всі інші числа.

В арифметичних і логічних виразах логічні значення перетворюються в цілі числа. Арифметичні та бітові логічні операції виконуються над перетвореними величинами. Якщо результат приводиться знову до логічного типу, то 0 перетворюється в false, а ненульове значення перетворюється в true.

Приклад 1.

bool x = true; // в пам’яті комп’ютера змінна х зберігається як послідовність: 0000 0000

bool y = false; // в пам’яті комп’ютера змінна y зберігається як послідовність: 0000 0001

bool a = 2*x+y; // значення виразу 2*x+y дорівнює 2, тому змінна a отримує значення

// true (1); отже, в пам’яті комп’ютера змінна a зберігається як наступна

// послідовність біт: 0000 0001 (або в 16-ковій системі числення як 01).

Ідентифікатором символьного типу є ключове слово char.

Символьні константи (символьні літерали) можна представляти як:

1) клавіатурні: '1','s','Y' – записуються як символи в одинарних лапках;

2) кодові: '\n','\\','\?', які використовуються для представлення деяких керуючих символів та символів-розділювачів – записуються як escape-послідовності (вони починаються з символу зворотної косої риски). Перелік кодових символьних літералів наведено в Таблиці 4.1.

Таблиця 4.1.

Назва Кодові символьні літерали Код
Новий рядок \n 0A
Горизонтальна табуляція \t  
Забій \b  
Вертикальна табуляція \v 0B
Повернення каретки \r 0D
Прогін аркуша \f 0C
Дзвінок \a  
Зворотня коса риска \\ 5C
Знак питання \? 3F
Одиночні лапки \'  
Подвійні лапки \"  

 

Не дивлячись на свій зовнішній вигляд, це одиночні символи.

 

3) кодові числові: '\0','\x5C','\124', які використовуються для представлення будь-яких символів – записуються у вигляді однієї, двох або трьох вісімкових цифр з символом зворотної косої риски (\) перед ними або довільним шістнадцятковим числом з послідовністю \х перед ним. Послідовність вісімкових або шістнадцяткових цифр закінчується першим символом, який не є відповідно вісімковою або шістнадцятковою цифрою. Приклади таких представлень наведені в Таблиці 4.2.

Таблиця 4.2.

Десяткова Вісімкова Шістнадцяткова Символ
  '\7' '\x7' Дзвінок
  '\60' '\x30' '0'
  '\062' '\x32' '2'
  '\137' '\x005f' '_'

 

Значеннями змінних типу char є множина символів таблиці ASCII (American Standard Code For Information Interchange – американський стандартний код для обміну інформацією). Таблиця кодів ASCІІ містить 256 символів, кожний з яких має строго визначене місце і свій порядковий номер від 0 до 255. Код символу - це його порядковий номер у таблиці символів ASCІІ.

Таблиця кодів ASCІІ складається з 2 таблиць:

1. Основної (з кодами від 0 до 127). Вона містить у собі:

- символи керування,

- символи арифметичних операцій, розділові знаки, цифри,

- букви латинського алфавіту (прописні, рядкові).

2. Розширеної (з кодами від 128 до 255). Вона містить у собі:

- символи псевдографіки (символи, що застосовуються для побудови найпростіших фігур),

- букви національних алфавітів,

- математичні символи.

Всі символи, крім символів керування, є графічними. Вони на пристроях зображення відображаються, а в таблиці кодів ASCІІ мають графічне зображення.

Символи з кодами від 0 до 31 і код 127 відносяться до керуючих. В текстовому режимі їм відповідають графічні зображення. При використанні цих символів або кодів в операціях виведення вони набувають самостійного значення. Приклади символів керування наведені в Таблиці 4.3.

Таблиця 4.3

Символ Код Значення
BEL   Дзвоник. Виведення на екран цього символу супроводжується звуковим сигналом.
НТ   Горизонтальна табуляція. При виведенні на екран зміщує курсор у позицію, кратну 8 плюс 1 (9, 17, 25 і т.д.).
LF   Перехід рядка. При виведенні його на екран всі наступні символи будуть виводитися, починаючи з тієї ж позиції, але на наступному рядку.
VT   Вертикальна табуляція. При виведенні на екран замінюється спеціальним знаком (♂).
FF   Прогін сторінки. При виведенні на принтер формує нову сторінку, при виведенні на екран замінюється спеціальним знаком (♀).
CR   Повернення каретки. Вводиться натисканням на клавішу Enter. При введенні за допомогою операторів мови програмування означає команду "введення" і в буфер введення не кладеться. При виведенні означає команду "продовжити виведення з початку біжучого рядка"
SUB   Кінець файлу. Вводиться з клавіатури натисканням Ctrl - Z. При виведенні заміняється спеціальним знаком (→).
SSC   Кінець роботи. Вводиться з клавіатури натисканням на клавішу ESC. При виведенні заміняється спеціальним знаком (←).

 

Перша основна половина символів таблиці ASCII (коди 0...127) побудована по стандарту ASCІІ і вона є однаковою на всіх ІBM-сумісних комп’ютерах. Принцип послідовного кодування алфавіту полягає в тому, що в кодовій таблиці ASCII латинські букви (прописні та строчні) розташовуються в алфавітному порядку. Розташування цифр також впорядковано по зростанню їх значень.

Друга половина символів (коди 128...255) може відрізнятися на комп’ютерах різного типу. У стандартному знакогенераторі фірми ІBM символи псевдографіки займають позиції з кодами від 176 до 223. Позиції з кодами від 128 до 175 і від 224 до 239 використовуються для розміщення деяких символів національних алфавітів різних європейських мов, а позиції з кодами від 240 до 255 - для розміщення спеціальних знаків. З врахуванням цього розташування символів розробляється переважна більшість програм закордонного походження.

Стандартний вітчизняний знакогенератор був побудований за рекомендаціями Міжнародного консультаційного комітету з телеграфії і телефонії (МККТТ). Розташування символів у другій половині таблиці цього знакогенератора відрізнялось від прийнятого фірмою ІBM, що утруднювало використання закордонного програмного забезпечення на вітчизняних ПК. У зв'язку з цим, стандартний варіант кодування був заміняний альтернативним, головна перевага якого - розташування символів псевдографіки на тих же місцях, що й у знакогенераторі ІBM. Недолік такого знакогенератора полягає у тому, що символи кирилиці не утворюють безперервну послідовність. Такий варіант у даний час одержав найбільше поширення на вітчизняних ПК. Саме на нього розраховані практично всі програми вітчизняного виробництва. Він став фактичним стандартом для закордонних фірм, що виготовляють комп'ютери для експорту в нашу країну.

Таблиця символів ASCII наведена в Таблиці 4.4. В ній прийняті такі позначення:

DEC– код в 10-ковій системі числення,

HEX – код в 16-ковій системі числення,

CH – символ.

Таблиця 4.4

 

DEC   HEX   CH DEC   HEX   CH   DEC   HEX   CH   DEC   HEX   CH   DEC   HEX   CH DEC   HEX   CH DEC   HEX   CH DEC   HEX   CH
  0     20     40 @   60 `   80 А   A0 а   C0   E0 р
  1   21 !   41 A   61 a   81 Б   A1 б   С1   El с
  2   22   42 B   62 b   82 В   A2 в   C2   E2 т
  3   23 #   43 C   63 c   83 Г   A3 г   C3   E3 у
  4   24 $   44 D   64 d   84 Д   A4 д   C4   E4 ф
  5   25 %   45 E   65 e   85 Е   A5 е   C5   E5 х
  6   26 &   46 F   66 f   86 Ж   A6 ж   C6   E6 ц
  7   27 '   47 G   67 g   87 З   A7 з   C7   E7 ч
  8   28 (   48 H   68 h   88 И   A8 и   C8   E8 ш
  9   29 )   49 I   69 i   89 Й   A9 й   C9   E9 щ
  A   2A *   4A J   6A j   8A К   AA к   CA   EA ъ
  B   2B +   4B K   6B k   8B Л   AB л   CB   EB ы
  C   2C ,   4C L   6C     8C М   AC м   CC   EC ь
  D   2D -   4D M   6D m   8D Н   AD н   CD   ED э
  E   2E .   4E N   6E n   8E О   AE о   CE   EE ю
  F   2F /   4F O   6F o   8F П   AF п   CF   EF я
  10   30     50 P   70 p   90 Р   B0   D0   F0 Ё
  11   31     51 Q   71 q   91 С   В1   Dl   Fl ё
  12   32     52 R   72 r   92 Т   B2   D2   F2 Є
  13   33     53 S   73 s   93 У   B3   D3   F3 є
  14   34     54 T   74 t   94 Ф   B4   D4   F4 Ї
  15 §   35     55 U   75 u   95 Х   B5   D5   F5 ї
  16   36     56 V   76 v   96 Ц   B6   D6   F6 І
  17 ↨     37     57 W   77 w   97 Ч   B7   D7   F7 і
  18 ↑     38     58 X   78 x   98 Ш   B8   D8   F8 °
  19 ↓     39     59 Y   79 y   99 Щ   B9   D9   F9
  1A →     3A :   5A Z   7A z   9A Ъ   BA   DA   FA ·
  1B ←     3B ;   5B [   7B {   9B Ы   BB   DB   FB
  1C   3C <   5C \   7C |   9C Ь   BC   DC   FC
  ID (   3D =   5D ]   7D }   9D Э   BD   DD   FD ¤
  1E   3E >   5E ^   7E ~   9E Ю   BE   DE   FE
    IF   3F ?   5F _   7F    9F Я   BF   DF   FF  

 

В пам’яті комп’ютера дані символьного типу зазвичай займають 1 байт. В цей байт записується порядковий номер символа в таблиці ASCII.

Приклад 2.

За системою ASCII символ ’O’ має порядковий номер 7910 = 4F16 = 10011112

Отже, цей символ в пам’яті комп’ютера буде представлений як послідовність 0100 1111.

 

Оскільки значенню типу char відводиться 8 бітів, то значення типу unsigned char має значення в діапазоні від 0 до 255, a signed char – від -128 до 127, але тільки величини від 0 до 127 мають символьний еквівалент. Чи є значення типу просто char знаковим чи беззнаковим, залежить від реалізації, але в будь-якому випадку коди друкованих символів завжди є додатніми. Далі будемо вважати, що тип char є знаковим.

Таблиця 4.5

Тип Розмір пам'яті в байтах 16 (32) Діапазон значень
[signed] char 1 (1) -128..127
unsigned char 1 (1) 0..255

 

Для представлення символів українського алфавіту, специфікатортипу даних повинен мати вигляд unsigned char, тому що коди українських літер перевищують величину 127.

Протягом довгого часу поняття "байт" і "символ" були майже синонімами. Однак, з часом, стало зрозуміло, що 256 різних символів – це не так і багато. Математикам необхідно використовувати в формулах спеціальні математичні знаки, перекладачам необхідно створювати тексти, де можуть зустрічатися символи з різних алфавітів, економістам необхідні символи валют ($, £, ¥). Для вирішення цих проблем була розроблена універсальна система кодування текстової інформації – Unicode. В цьому кодуванні для кожного символа відводиться не один, а два байта, тобто шістнадцять біт. Таким чином, доступно 65536 (=216) різних кодів. Цього вистарчить на латинський алфавіт, кирилицю, іврит, африканські і азіатські мови, різні спеціальні символи: математичні, економічні, технічні і багато іншого. Головний недолік системи Unicode полягає в тому, що всі тексти в цьому кодуванні стають в два рази довшими в пам’яті комп’ютера. В даний час стандарти ASCII і Unicode мирно співіснують.

Символьна константа може мати префікс L (наприклад, L'a'), який означає спеціальний розширений символьний тип (wchar_t), що застосовується для зберігання символів національних алфавітів, якщо вони не можуть бути представлені звичайним однобайтовим типом char, наприклад, Unicode. Розмір цього типу залежить від реалізації; як правило, він відповідає типу short і займає 2 байта пам'яті.

В стандарті С99 тип wchar_t визначений в декількох заголовних файлах: <stddef.h> <stdlіb.h> <wchar.h> <wctype.h>. В мові С++ реалізується підтримка введення - виведення для розширених символів за допомогою заголовного файлу <іostream.h>.




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


Дата добавления: 2014-01-05; Просмотров: 1143; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.027 сек.