Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
1_Типы.doc
Скачиваний:
3
Добавлен:
10.02.2015
Размер:
165.89 Кб
Скачать

16

1 ОСНОВНЫЕ ТИПЫ ДАННЫХ ЯЗЫКА СИ

    1. Алфавит и идентификаторы

Алфавит. Управляющие последовательности. Кодовая страница. Комментарии. Идентификаторы.

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

Первая группа состоит из пятидесяти двух латинских букв (заглавных и строчных):

Aa, Bb, Cc, Dd, Ee, Ff, Gg, Hh, Ii, Jj, Kk, Ll, Mm,

Nn, Oo, Pp, Qq, Rr, Ss, Tt, Uu, Vv, Ww, Xx, Yy, Zz.

Десять арабских цифр

0, 1, 2, 3, 4, 5, 6, 7, 8, 9.

образуют вторую группу.

Третья группа включает тридцать символов, которые называются специальными. Их вид и наименование приводятся в табл. 1.1.

Таблица 1.1 - Специальные символы

Вид

Наименование

Вид

Наименование

,

Запятая

Кавычки

.

Точка

|

Вертикальная черта

;

Точка с запятой

/

Наклонная вправо черта

:

Двоеточие

\

Наклонная влево черта

?

Знак вопроса

~

Тильда

!

Восклицательный знак

_

Подчеркивание

(

Левая круглая скобка

#

Номер

)

Правая круглая скобка

%

Процент

{

Левая фигурная скобка

&

Амперсанд

}

Правая фигурная скобка

^

Стрелка вверх

[

Левая квадратная скобка

-

Минус

]

Правая квадратная скобка

+

Плюс

<

Меньше

=

Равно

>

Больше

*

Звездочка

Апостроф

Пробел

При управлении выводом на дисплей или принтер возникает необходимость в специальных командах. Для обозначения каждой такой команды используется пара символов, называющаяся управляющей после­довательностью. Первым символом управляющей последовательности является всегда обратная косая черта \. Полный список из десяти управляющих последовательностей представлен в табл. 1.2.

Таблица 1.2 - Управляющие последовательности

Вид

Назначение

Вид

Назначение

\n

Новая строка

\f

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

\t

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

\a

Звуковой сигнал, BEL

\v

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

\\

Обратная косая черта, \

\b

Возврат на одну позицию

\’

Кавычка, ‘

\r

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

\”

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

При хранении в памяти компьютера каждый символ алфавита заменяется (кодируется) последовательностью из восьми нулей и единиц, называемой его кодовым словом или просто кодом. Максимальное количество различных символов, которые могут быть закодированы таким образом, равняется 256. Каждую двоичную последовательность удобно считать целым положительным числом, записанным в двоичной системе счисления. Взаимно однозначное соответствие между этими символами и их кодовыми словами называется кодовой страницей. Очевидно, что количество различных кодовых страниц равняется 256!. На практике, количество используемых кодовых страниц гораздо меньше. Первая половина кодовой страницы содержит заглавные и строчные латинские буквы, арабские цифры, знаки препинания и некоторые другие знаки, применяемых для управления выводом и передачей сообщений. Изменять кодировку этих символов запрещается. Она называется американским стандартным кодом для обмена информацией (American Standard Code for Information Inter­change) или ASCII-кодом, а образующие ее символы ASCII-символами.

Вторую половину кодовой страницы программисты могут использовать по своему усмотрению. Как правило, она используется для добавления в алфавит языка Си букв национальных алфавитов и дополнительных графических знаков, не уместившихся на первой половине.

В любое место программы можно поместить пояснительный текст (комментарий), используя любые символы выбранной кодовой страницы. Современные синтаксические правила разрешают включать комментарий двумя способами. В первом случае его началом являются две косые черты //, а окончанием - последний символ строки. Например,

// Это однострочный комментарий.

Во втором случае началом комментария является пара символов, состоящая из косой черты и звездочки /*, а его окончанием – пара тех же символов, но переставленных местами */. Например,

/*

Еще один способ включения в программу

пояснительного текста, расположенного на нескольких

строках.

*/

Последовательность из букв, цифр и знаков подчеркивания, начинающаяся со знака подчеркивания или буквы, называется идентификатором или именем. На основании этого определения конструкции вида

A, a, d1, MyFunc, Alfa_1, _Omega

являются примерами разных идентификаторов, а конструкции

21fff, n+m, A1&B1

таковыми не являются. В самом деле, первая начинается с цифры, а вторая и третья содержат знаки + и &, запрещенные к использованию в идентификаторах.

Применение идентификатора начинается с разъяснения его назначения компилятору, которое называется определением идентификатора. В соответствии с правилами языка Си определение идентификатора действует (справедливо) только в некоторой части программы, называемой его областью видимости. Это означает, что один и тот же идентификатор можно определять в программе несколько раз. Подробно области видимости будут обсуждаться в главе “Функции”.

Назначение некоторых идентификаторов было определено авторами языка. Поэтому применять их разрешается только в соответствии с этими определениями. Такие идентификаторы называются служебными или ключевыми словами. По правилам языка их областью видимости является вся программа. Знакомство с ключевыми словами начинается в следующем пункте и будет продолжаться в течение всего курса.

1.2. Определение типа данных. Переменные и константы

Встроенные и пользовательские типы. Операции и операнды. Переменные и константы. Оператор-определение.

Под типом данных в языках программирования подразумевают конечное множество, элементы которого называются данными или объектами и характеризуются, во-первых, оп­ределенным набором допустимых над ними операций, во-вторых, объемом памяти, отводимой для хранения каждого объекта, а так же способом ее использования. Для обозначения типов данных используются идентификаторы, называемые идентификаторами типов.

При разработке программ можно пользоваться типами данных, определенных авторами языка. Они называются предопределенными или встроенными. В качестве идентификаторов таких типов служат соответствующие служебные слова. Например, слово int используется для обозначения конечного множества целых (положительных и отрицательных) чисел. Для хранения каждого числа типа int отводятся четыре байта (или тридцать две двоичные цифры). Нетрудно подсчитать, что количество различных объектов (чисел) типа int равняется 232. Идентификатором float обозначается конечное множество вещественных чисел. Для хранения каждого числа отводятся также четыре байта. Очевидно, что количество объектов (чисел) типа float также равняется 232. Способ использования памяти для хранения объектов типа float отличается от способа, применяемого для хранения объектов типа int, поэтому множество объектов типа float не совпадает с множеством объектов типа int. Наконец, типы int и float различаются множествами операций, допустимых над их объектами. Каждая такая операция обозначается специальным символом и называется встроенной операцией. Язык Си насчитывает более четырех десятков таких операций. Данные, над которыми выполняются операции, называются операндами. Операции с одним операндом называются унарными, с двумя операндами - бинарными. В Си имеется единственная операция с тремя операндами. Она называется тернарной. Подробнее типы int и float будут рассматриваться далее в настоящей главе.

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

При разработке приложений вместо конкретные объекты заменяются идентификаторами. Если программист разре­шает изменять значение иденти­фикатора в ходе выполнения приложения, то такой идентификатор называется переменной. Для создания переменной, предназначенной для хранения объектов нужного типа, необходимо поместить в текст приложения соответствующее указание (команду). Такое указание называется оператором-определением и включает тип объекта, имя переменной и точку с запятой:

// Правило создания переменной

Тип Имя;

// Правило создания n (списка) однотипных переменных

Тип Имя_1,..., Имя_n;

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

// Пример создания переменной типа int

int n;

// Пример создания списка из трех переменных типа float

float v1, v2, var3;

Одновременно с созданием переменной программист может указать объект, который будет ее начальным значением. Такая операция называется созданием переменной с инициализацией. В этом случае кроме типа и имени переменной оператор-определение должен содержать знак равенства и сам объект:

// Правило создания переменной с инициализацией

Тип Переменная=Объект;

Правила представления самих объектов на языке Си зависят от их типов. Они будут излагаться при рассмотрении соответствующего типа. Сейчас же приведем пример создания переменной типа int с инициализацией:

// Пример создания переменной с инициализацией

int n=123;

Идентификатор, значение которого не должно меняться в ходе выполнения приложения, называется константой. Программист может поручить контроль за выполнением этого требования компилятору. Для этого он должен поместить в приложение команду, начинающуюся со служебного слова const. Далее следуют Тип объекта, Идентификатор, знак равенства и сам Объект:

// Правило создания константы

const Тип Идентификатор=Объект;

// Пример создания константы типа float

const float x=3.14;

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

Использование переменных и констант начнется со следующего пункта.

1.3. Тип int

Определение типа int. Представление объектов типа int. Арифметические операции. Операции сравнения. Логические операции. Операции присваивания. Тернарная операция. Типы short и unsigned int.

Для хранения в запоминающих устройствах данных типа int, как правило, отводится четыре байта или 32 двоичных цифры: 31,...,0. Цифра 31 используется для хранения знака числа. Плюс обозначается нулем, а минус – единицей. Остальные цифры предназначены для представления абсолютной величины целого числа N по правилам двоичной системы счисления:

|N| = 200 + 211 + ... + 23030.

Таким образом, тип int является множеством {-231,...,-1,0,1,…,231 - 1} из 232 целых положительных и отрицательных чисел.

Разработка, практически, любой программы требует использования в ее тексте некоторого количества объектов. Для того, чтобы компилятор по виду объектов мог правильно определять их тип, представление (запись) объектов в тексте программы должно удовлетворять определенным правилам. Для представления объектов (чисел) типа int в приложениях разрешается применять системы счисления с основаниями 8, 10 и 16. Так как символы 0, 1, 2, 3, 4, 5, 6, 7 используются во всех трех системах счисления в качестве цифр, то для распознавания выбранного способа представления применяют соответствующие префиксы. Для восьмеричных чисел префиксом служит цифра 0. То есть, если число начинается с нуля, то оно является положительным восьмеричным числом. Отрицательные вось­меричные числа должны иметь перед нулем знак минус. Ниже в качестве примера приводятся шесть чисел, записанных в восьмеричной системе:

023, 0744, -0123, 01, 0100, 03.

Отметим, что появление в тексте приложения конструкций 028 или 09 является синтаксической ошибкой. В самом деле, обе конструкции начинаются с нуля, указывающего на то, что они является восьмеричными числами. С другой стороны, обе содержат символы 8 и 9, запрещенные при использовании восьмеричной системы счисления. В ходе преобразования программы с языка Си на машинный язык компилятор обнаружит эту ошибку и сообщит о ней программисту.

Все положительные целые числа, для представления которых применяется шестнадцатеричная система счисления, должны начинаться с префикса 0x или 0X. При этом в качестве шестнадцатеричных цифр используются десять арабских цифр и шесть первых латинских букв (прописных или строчных): Aa, Bb, Cc, Dd, Ee, Ff. Таким образом, конструкции вида

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]