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



ЗНАЕТЕ ЛИ ВЫ?

Общие сведения о программах, лексемах и алфавите

Поиск

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

Алфавит и лексемы языка Си++.

В алфавит языка Си++ входят:

· прописные и строчные буквы латинского алфавита;

· цифры 0, 1, 2, 3, 4, 5, 6, 7, 8, 9;

· специальные знаки:

“ {}, | [] () + = / % \; ‘:? < = > _! & # ~ ^. *

Из символов алфавита формируются лексемы языка:

· идентификаторы;

· ключевые (служебные, иначе зарезервированные) слова;

· константы;

· знаки операций;

· разделители (знаки пунктуации).

Поскольку в алфавит языка Си++ не входят символы кириллицы, то, следовательно, нельзя их использовать при создании программ на этом языке.

 

Идентификаторы и служебные слова

Идентификатор (имя) – последовательность из букв латинского алфавита, десятичных цифр и символов подчеркивания, начинающаяся не с цифры:

Array, point1, a, point_2, Point_2, refer

Прописные и строчные буквы различаются. Допустимое число символов в имени зависит от версии компилятора. Компиляторы фирмы Borland различают не более 32-х первых символов любого идентификатора.

Ключевые (служебные) слова – это идентификаторы, зарезервированные в языке для специального использования. Ключевые слова Си++:

asm double New Switch
Auto else operator template
Break enum private this
Case extern protected throw
Catch float public try
Char for register typedef
Class friend return typeid
Const goto Short union
continue if signed unsigned
default inline sizeof virtual
Delete int Static void
Do long Struct volatile
      while

Для компиляторов фирмы Borland дополнительно введены ключевые слова:

Cdecl _export _loads _saveregs
_cs far Near _seg
_ds huge Pascal _ss
_es interrupt _regparam  

Там же введены как служебные слова регистровые переменные:

_AH _BH _CH _DH _SI _SP _SS
_AL _BL _CL _DL _DI _CS _ES
_AX _BX _CX _DX _BP _DS _FLAGS

Кроме того, идентификаторы, включающие два подряд символа подчёркивания (__), резервируются для дальнейших реализаций Си++ и стандартных библиотек. Идентификаторы, начинающиеся с символа подчёркивания (_), используются в реализациях языка Си. В связи с этим не рекомендуется выбирать идентификаторы, начинающиеся с одного или двух знаков подчёркивания.

 

Типы данных

Понятие типа данных является одним из ключевых в языке программирования Си++. Любая переменная, константа, объект, определенный пользователем, неименованный объект, являющийся результатом выполнения какой-либо операции, всегда относится к какому-то типу. Зная тип объекта, всегда можно сказать сколько байт памяти отводится под объект, в каком диапазоне значений могут лежать значения объекта, какое множество операций определено над объектом данного типа, т.е. информация о типе объекта даёт нам представление о его свойствах.

Для определения и описания типа объекта (переменной) используются следующие ключевые слова (имена типов):

сhar (символьный);

short (короткий целый);

int (целый);

long (длинный целый);

float (вещественный);

double (вещественный с удвоенной точностью);

void (отсутствие значения).

Перед именем символьного и целых типов может стоять ключевое слово signed (знаковый – значения объекта могут меняться от –N до N-1), или unsigned (беззнаковый - значения объекта могут меняться от 0 до 2*N-1), которое позволяет выбрать способ учёта знакового разряда. По умолчанию символьный и целые типы являются знаковыми, т.е., например, записи signed int и int являются полными синонимами, поэтому на практике ключевое слово signed почти не употребляется. Напротив, использование ключевого слова unsigned позволяет сделать символьный и целые типы беззнаковыми, поэтому оно используется довольно часто. В выражении unsigned int и signed int слово int можно опустить, компилятор будет подразумевать его по умолчанию.

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

Типы, введенные с помощью взятых по отдельности или в допустимом сочетании ключевых слов char, short, int, long, signed, unsigned, float, double, void, называются базовыми (фундаментальными, встроенными).

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

Таблица 2.1

Таблица целых и вещественных типов данных

Тип данных Размер в байтах Диапазон значений Примечание – назначение типа
unsigned char   0…255 Небольшие целые числа и коды символов
сhar   -128…127 Очень малые целые числа и ASCII коды
enum   -32768… 32767 Упорядоченные наборы целых чисел
unsigned int   0 …65535 Большие целые и счетчики циклов
short int   -32768… 32767 Небольшие целые, управление циклами.
int   -32768… 32767 Небольшие целые, управление циклами
unsigned long   0…4294967295 Астрономические расстояния
long   -2147483648...2147483648 Большие целые, популяции
float   3.4E-38…3.4E+38 Научные расчёты (7 значащих цифр)
double   1.7E-308…1.7E+308 Научные расчеты (15 значащих цифр)
long double   3.4E-4932…3.4E+4932 Финансовые расчёты (19 значащих цифр)

 

Из табл. 2.1 видно, например, что объект типа char является объектом символьного типа, занимает в памяти 1 байт и его значения лежать в диапазоне от –128 до 127. Обычно этот тип используется для небольших целых чисел и ASCII кодов.

Количество значащих цифр - это количество цифр, которым представлено число. Так, в числе 2147483648 десять значащих цифр, в числе 0.789 четыре значащих цифры. Следует отметить, что объект типа long имеет больше значащих цифр, чем объект типа float. Поэтому при переходе от типа long к типу float может быть потеряна точность.

Приведем примеры нескольких вариантов определения с помощью базовых типов переменных (объектов) различных типов (объектов):

unsigned char sym; /*В этой строке определяется переменная sym типа unsigned char. Это значит, что переменная занимает в памяти 1 байт и диапазон её возможных значений лежит в интервале от 0 до 255 (см. табл. 2.1). Sym – это идентификатор (имя) переменной придуманное программистом. В конце строки программы стоит точка с запятой, символизирующая конец выражения. */

char Sm1, Sm2, Sm3 = 50; /*В строке программы определены три переменные типа char (свойства см. табл. 2.1). Sm1, Sm2, Sm3 – идентификаторы (имена) переменных. Переменная Sm3 инициализирована неименованной десятичной константой 50 типа int. Значение переменных Sm1, Sm2 неопределено, т. е. может быть любым числом в допустимом для этого типа диапазоне. */

double pi = 3.14159; /* Определена и инициализирована переменная pi типа double. Значение 3.14159 – это неименованная десятичная константа типа double. Как определить тип неименованной константы по её внешнему виду станет ясно при прочтении следующего параграфа. */

По аналогии с приведенными примерами можно вводить переменные и других базовых типов. Более подробное и полное описание таких понятий как определение, описание, область существования, области видимости переменных отложим на некоторое время.

 

Константы

Константа – это лексема, представляющая изображение фиксированного числового, строкового или символьного значения.

Константы бывают нескольких групп: целые, вещественные (с плавающей точкой), перечислимые, символьные и строковые.

Компилятор при анализе текста программы определяет по «внешнему виду» и числовому значению, к какой группе относится константа.

Целые константы могут быть десятичными, восьмеричными и шестнадцатеричными.

Десятичная целая константа определена как последовательность десятичных цифр, начинающаяся не с нуля, если это не число нуль. Для компиляторов BC++ версии 3.11 диапазон допустимых целых положительных значений от 0 до 4294967295. Константы, превышающие указанное максимальное значение, вызывают ошибку на этапе компиляции. Отрицательные константы – это константы без знака, к которым применена операция изменения знака. Абсолютное значение отрицательных десятичных констант для BC++ 3.11 не должно превышать 2147483647.

В табл. 2.2 приведены типы, выбираемые компилятором по умолчанию на основании значения констант. То есть, например, если константа лежит в диапазоне от 0 до 32767, то для неё по умолчанию будет выбран тип int.

 

Таблица 2.2



Поделиться:


Последнее изменение этой страницы: 2016-08-10; просмотров: 208; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.116.40.53 (0.009 с.)