3.1.2. Вещественные константы

13. Таблица кодов ASCII

13. Таблица кодов ASCII

00

10

20

30

40

50

60

70

0

nul

dle

0

@

P

`

p

1

soh

dcl

!

1

A

Q

a

q

2

stx

dc2

"

2

B

R

b

r

3

ltx

dc3

#

3

C

S

c

s

4

eot

stp

$

4

D

T

d

t

5

enq

nak

%

5

E

U

e

u

6

ack

syn

&

6

F

V

f

v

7

bel

etb

'

7

G

W

g

w

8

bs

can

(

8

H

X

h

x

9

ht

em

)

9

I

Y

i

y

A

lf

sub

*

:

J

Z

j

z

B

vt

esc

+

;

K

[

k

{

C

ff

fs

,

<

L

\

l

|

D

cr

gs

-

=

M

]

m

}

E

so

rs

.

>

N

^

n

~

F

si

us

/

?

O

_

o

del

Код символа равен коду столбца+номер строки. Например код буквы F: 40+6=46.

Надо отметить, что первые 32 кода (от 0 до 1F) в таблице АSCII являются управляющими. Они предназначены для представления сигналов для устройств вывода и передачи информации. Некоторые управляющие коды, хотя и имеют специальное назначение, могут быть использованы пользователями по своему усмотрению. Нередко управляющим кодам соответствуют специальные изображения, но эти изображения не зафиксированы в стандарте ASCII и на компьютерах разных типов могут иметь различный вид в зависимости от знакогенератора дисплея.

Назначение некоторых управляющих кодов:

soh - Start of Heading; stx - Start of Text;

etx - End of Text; eot - End of Transmition;

enq - Enquire; ack - Acknoledge;

so - Shit Out; si - Shit In;

dke - Data Link Escape; dc1 - Device Control 1;

dc2 - Device Control 2; dc3 - Device Control 3;

nak - Negative Acknoledger; nak - Synchronous Idle;

etb - End of Transmition Block; can - Cancel; em - End of Medium;

sub - Substitute; esc - Escape; fs - File Separator; gs - Group Separator;

rs - Record Separator; us - Unit Separator;

 bs - возврат; ht - табуляция;

 lf - перевод строки; ff - подача бланка;

cr - возврат каретки; esc - спецсимвол;

 fs - разделитель файлов; gs - разделитель групп;

 rs - разделитель записей; del - символ удаления;

Часть таблицы от кода 80 до FF является расширением стандарта ASCII и может изменяться на различных моделях компьютеров. В этой части таблицы, как правило, размещают буквы национальных алфавитов, символы псевдографики и др.

Расширенная таблица ASCII

 

char  hexa decim char hexa decim char hexa decim char hexa decim
Nul 00 0 пробел 20 32 @ 40 64 ` 60 96
SOH ☻ 01 1 ! 21 33 A 41 65 a 61 97
STX J 02 2 " 22 34 B 42 66 b 62 98
ETX  ♥ 03 3 # 23 35 C 43 67 c 63 99
EOT ♦ 04 4 $ 24 36 D 44 68 d 64 100
ENQ ♣ 05 5 % 25 37 E 45 69 e 65 101
ACK ♠ 06 6 & 26 38 F 46 70 f 66 102
BEL 07 7 ' 27 39 G 47 71 g 67 103
BS 08 8 ( 28 40 H 48 72 h 68 104
HT 09 9 ) 29 41 I 49 73 i 69 105
LF 0a 10 * 2a 42 J 4a 74 j 6a 106
VT   ♂ 0b 11 + 2b 43 K 4b 75 k 6b 107
FF  ♁ 0c 12 , 2c 44 L 4c 76 l 6c 108
CR 0d 13 - 2d 45 M 4d 77 m 6d 109
SO  ♫ 0e 14 . 2e 46 N 4e 78 n 6e 110
SI   ☼ 0f 15 / 2f 47 O 4f 79 o 6f 111
DLE  ▶ 10 16 0 30 48 P 50 80 p 70 112
DC1  ◀ 11 17 1 31 49 Q 51 81 q 71 113
DC2  ↕ 12 18 2 32 50 R 52 82 r 72 114
DC3  !! 13 19 3 33 51 S 53 83 s 73 115
DC4  ¶ 14 20 4 34 52 T 54 84 t 74 116
NAK§ 15 21 5 35 53 U 55 85 u 75 117
SYN━ 16 22 6 36 54 V 56 86 v 76 118
ETB 17 23 7 37 55 W 57 87 w 77 119
CAN↑ 18 24 8 38 56 X 58 88 x 78 120
EM ↓ 19 25 9 39 57 Y 59 89 y 79 121
SUB→ 1a 26 : 3a 58 Z 5a 90 z 7a 122
ESC ← 1b 27 ; 3b 59 [ 5b 91 { 7b 123
FS 1c 28 < 3c 60 \ 5c 92 | 7c 124
GS 1d 29 = 3d 61 ] 5d 93 } 7d 125
RS  ▴ 1e 30 > 3e 62 ^ 5e 94 ~ 7e 126
US  ▾ 1f 31 ? 3f 63 _ 5f 95 DEL 7f 127

 

char  hexa decim char hexa decim char hexa decim char hexa decim
Ç 80 128 á a0 160 c0 192 α e0 224
ü 81 129 í a1 161 c1 193 ß e1 225
é 82 130 ó a2 162 c2 194 Γ e2 226
â 83 131 ú a3 163 c3 195 π e3 227
ä 84 132 ń a4 164 c4 196 Σ e4 228
à 85 133 Ń a5 165 c5 197 σ e5 229
ĺ 86 134 ª a6 166 c6 198 µ e6 230
ç 87 135 º a7 167 c7 199 τ e7 231
ê 88 136 ¿ a8 168 c8 200 Φ e8 232
ë 89 137 a9 169 c9 201 Θ e9 233
è 8a 138 ¬ aa 170 ca 202 Ω ea 234
ď 8b 139 ˝ ab 171 cb 203 δ eb 235
î 8c 140 Ľ ac 172 cc 204 ec 236
ì 8d 141 ˇ ad 173 cd 205 φ ed 237
Ä 8e 142 « ae 174 ce 206 ε ee 238
Ĺ 8f 143 » af 175 cf 207 ef 239
É 90 144 b0 176 d0 208 f0 240
ć 91 145 b1 177 d1 209 ± f1 241
Æ 92 146 b2 178 d2 210 f2 242
ô 93 147 b3 179 d3 211 f3 243
ö 94 148 b4 180 Ô d4 212 f4 244
ò 95 149 b5 181 d5 213 f5 245
û 96 150 b6 182 d6 214 ÷ f6 246
ù 97 151 b7 183 d7 215 f7 247
ÿ 98 152 b8 184 d8 216 f8 248
Ö 99 153 b9 185 d9 217 f9 249
Ü 9a 154 ba 186 da 218 fa 250
˘ 9b 155 bb 187 db 219 fb 251
Ł 9c 156 bc 188 dc 220 fc 252
Ą 9d 157 bd 189 dd 221 ˛ fd 253
9e 158 be 190 de 222 fe 254
ƒ 9f 159 bf 191 df 223 ff 255

3.1.4. Строки

3.1.4. Строки

Строка – это последовательность символов алфавита, заключенных в двойные кавычки:

"<последовательность символов>"

 Примером строки является следующая конструкция: "Это строка языка Си". Пробел является значащим символом строки, а двойные кавычки вводятся для того, чтобы отметить в программе начало и конец строки. По тому, как строки выглядят в тексте программы, их можно отнести к классу строковых констант, однако, строго говоря, строка не является константой и рассматривается компилятором как массив (последовательность элементов), в котором каждый элемент занимает один байт и имеет значение кода соответствующего символа, входящего в состав строки.

В конец строки компилятор помещает нулевой байт – "нуль-символ" (NULL), который используется для того, чтобы отметить конец строки. Таким образом, строка занимает в памяти на 1 байт больше, чем количество содержащихся в ней символов. Нуль-символ – это не символ алфавита 0, он не выводится на печать, в таблице кодов ASCII имеет номер 0 и его двоичный код состоит только из нулей (\0). В отличие от нуль-символа "символ-цифра 0" имеет код \60.

Ввиду того, что строка рассматривается компилятором не как константа, а как массив символов, каждая строка сохраняется в отдельном месте памяти, даже если она идентична уже имеющейся в памяти какой-либо другой строке.

В состав последовательности символов строки могут входить любые символы, в том числе символы из таблицы 3.3 (без обрамления их одинарными кавычками) и символы, определяемые кодами \ddd и \xHHH. Например, чтобы напечатать из программы текст Запомните, "символ \ называется обратной дробной чертой (back slash)", выводимую строку в программе можно записать так:

"Запомните, \"символ \\ называется обратной дробной чертой (back slash)\".\n"
или
"Запомните, \x22 символ \x5c называется обратной дробной чертой (back slash)\x22.\n"

В состав строки включены символы таблицы 3.3: \" , \\ и \n. Наличие управляющего символа \n в конце сроки вызовет после вывода текста перевод на новую строку.

Необходимо четко различать символьные константы и строки. Например, 'xy' – это двухбайтовая символьная константа, "xy" – строка, занимающая 3 байта памяти, "" – пустая строка, занимающая 1 байт памяти, в котором записан нуль-символ.

Так как строки – это, по сути, массивы, их можно программным путем обрабатывать, заменяя или перекомпоновывая в памяти символы, определять длину строки по конечному нуль-символу и т.д.

Компилятор Турбо-Си производит объединение нескольких строк в одну, если они записаны в программе друг за другом.

Например:

"Это пример того, как Турбо-Си"
"автоматически \n осуществляет объединение"
"строк в одну длинную строку, \n"
"что может быть нами использовано для большей"
"наглядности программы. \n"

В этом случае в памяти будет сформирована одна длинная строка, в конце которой будет проставлен нуль-символ.

3.1.3. Символьные константы

3.1.3. Символьные константы

Символьная константа – это некоторый символ алфавита, заключенный в одиночные кавычки: '<символ_алфавита>' .

Примеры символьных констант:  'a'    'B'    '='    '+'    'F'    '['    'd'.

Значением символьной константы является целое число, равное ASCII-коду (American Standard Code for Information Interchange, Американский стандартный код обмена информацией) данного символа. Символьная константа имеет тип int(char) и представляется 16(8)-битной величиной.

В таблице кодов ASCII (см. приложение) имеются коды, которые не отображаются при печати, а производят некоторые действия, например, перевод на новую строку (LF), подача звукового сигнала, гудка – BELL) и т. д. Для таких кодов на клавиатуре не предусмотрено отдельных клавиш, и при вводе с клавиатуры они набираются сочетанием определенных клавиш: например, нажатие клавиши Ctrl и G влечет за собой поступление в память кода "гудок", а при выводе символа, имеющего значение кода "гудок", компьютер подает звуковой сигнал.

Возникает вопрос: каким образом использовать подобные коды в программе? Для этого Си предоставляет два способа, имеющих непосредственное отношение к символьным константам.

Первый способ. Любой символ таблицы ASCII-кодов можно определить в виде символьной константы следующим образом:

'\ddd'  или  '\xHHH',

где ddd – восьмеричный, а HHH шестнадцатеричный код символа. Ведущие нули в представлении кода символа можно не записывать. Таким образом, в соответствии с этим вышеуказанные примеры символьных констант можно записать

символ

'a'

'B'

'='

'+'

'F'

'['

'd'

код

'\141'

'\102'

'\75'

'\53'

'\106'

'\133'

'\144'

код

'\x61'

'\x42'

'\x3D'

'\x2B'

'\x46'

'\x5B'

'\x64'

Символ, вызывающий подачу звукового сигнала, записывается в виде '\07', а символ, вызывающий перевод печати на новую строку – '\x0A'.

Второй способ заключается в том, что часто используемые неотображаемые символы не нужно записывать их кодами, а можно использовать для них зарезервированные обозначения. Эти символы в Си выделены в класс управляющих символов, представленных в таблице 3.3.

Таблица 3.3. Управляющие символы

Символ Си Символ ASCII Название символа

\n'

LF

Новая строка

'\t'

HT

Горизонтальная табуляция

'\v'

VT

Вертикальная табуляция

'\b'

BS

Шаг назад

'\r'

CR

Возврат каретки

'\f'

FF

Подача бланка

\a'

BEL

Гудок

'\''

'

Одинарная кавычка

'\"'

"

Двойная кавычка

'\\'

\

Обратная дробная черта

'\?'

?

Вопрос

Если управляющие символы встречаются, например, в строке вывода, то они вызывают соответствующее действие. Первые шесть управляющих символов являются символами управления работой печатающего устройства: символ "новая строка" переводит печать на начало следующей строки; символ "горизонтальная табуляция" продвигает печать в текущей строке в очередную фиксированную позицию строки. По умолчанию позиции в строке фиксируются через каждые 8 символов. Фиксированные позиции можно изменять, используя так называемые ESC-последовательности, формат которых описывается в документации по принтеру.

Символ "вертикальная табуляция" продвигает печать на начало очередных фиксированных номеров строк, которые также определяются ESC-последовательностью принтера.

Символ "шаг назад" производит сдвиг печати в текущей строке на одну позицию назад, т.е. позволяет на одном и том же знакоместе напечатать некоторое количество символов.

Символ "подача бланка" производит пропуск оставшейся части текущего текста и начинает печать со следующего нового листа.

Седьмой символ таблицы "гудок" инициирует подачу звукового сигнала. Оставшиеся четыре символа не относятся, по сути, к управляющим, но они включены в таблицу, так как имеют аналогичные зарезервированные обозначения. Их обычное использование в строковых константах (см. следующий раздел 3.1.4.) в качестве символов могло бы привести к ошибке, а использование именно в таком виде позволяет печатать их в строке вывода.

Сказанное не относится к символу "вопрос". По всей вероятности, символ "вопрос" попал в число зарезервированных символов в связи с тем, что в Си имеется операция, обозначаемая знаком "?", и в некоторых ситуациях это могло бы привести к неоднозначному толкованию конструкций языка. Знак "вопрос", как символьную константу, можно записать любым рассмотренным способом: '?' '\77' 'x3F' '\?' .

В заключение раздела обращаем внимание на то, что символьные константы являются целыми константами. Следовательно, допустима запись и двухсимвольных констант, например, таких:  'ab' 'ta' 'ma' 'do'. Однако в этом случае их необходимо обрабатывать как данные типа int. Если двухсимвольную константу попытаться присвоить переменной типа char, то произойдет потеря второго символа.

Двухсимвольную константу можно записать в виде '\ddC' или в виде '\xHHc', где С – символ алфавита отличный от восьмеричной цифры, с – символ, отличный от шестнадцатеричной цифры. Например, '\538' все равно что '+8', ибо компилятор воспринимает \53 как восьмеричный код символа +, за которым стоит символ 8. Аналогично '\x6DQ'воспринимается как 'mQ', т.е. \x6D – шестнадцатеричный код символа m, за которым записан символ Q. Мы не советуем применять такие "хитроумные штучки", хотя Си предоставляет в этом плане широчайшие возможности.

Таблица символьного типа

Тип и стандартная длина Модифи-катор Реакция компилятора длина
char(1 байт) signed 
unsined
Первый бит рассматривается, как знаковый, остальные 7 определяют значение
Наибольшее значение 127.Значение от 0 до 255. Гарантия непринятия отрицательного значения
char16_t(2 байта) Значение от 0 до 65538.
char32_t(4 байта) Значение от 0 до 4294967295.

Для работы с расширенным набором символов используется, таких как Unicode, тип wchar_t (широкий символ, 16 бит в Windows, 32 ,бита в GNU/Linux , но может представляться и 8 битовым значением.

В стандарте С и С++ от 2011 года введены фиксированные символьные типы char16_t and char32_t для обеспечения недвусмысленного представления 16-битового и 32 битового преобразования Unicode форматов.

Урок 3.2. Переменные

3.2. Переменные

Понятие переменная аналогично общепринятым математическим понятиям. Например, если вычисляются значения точек графика функции у=2*sin(x)-5, то ясно, что 2 и 5 - это константы, а х и у переменные, так как в ходе вычислений х и у могут принимать различные значения.

Переменная - это некоторая величина, которая в ходе выполнения программы может принимать различные значения

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

Урок 3.1. Константы

3.1. Константы

Как видно из приведенного примера в разделе 2, в программе на Си в явном виде записаны различные числовые и текстовые значения. Такие значения, появляющиеся в программе, принято называть константами.

Константа - это числовое или текстовое значение,  которое всегда определено и в ходе выполнения программы не может изменяться.

Тип константы определяется формой ее записи, а значение заключено в ней самой.

Translate Переводчик

Подписка на новости

SmartResponder.ru
Ваш e-mail: *
Ваше имя: *

Хостинг для Wordpress сайтов