Поможем написать учебную работу
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.
Базовые элементы языка С
2.1 Алфавит и словарь языка
2.2 Константы и переменные
2.3 Типы данных
2.4 Выражения, операнды, операции.
При записи алгоритма решения задачи на языке С необходимо знать правила написания и использования элементарных языковых и информационных единиц.
Программа на С формируется с помощью конечного набора знаков, образующих алфавит языка, и состоит из букв, цифр и специальных символов. Алфавит (или множество литер) языка программирования C++ основывается на множестве символов таблицы кодов ASCII. Алфавит C++ включает:
Комбинации специальных символов образуют составные символы:
<< поразрядный сдвиг влево
>> поразрядный сдвиг
= =тождественно равно
<= меньше или равно
>= больше или равно
!= не равно
&& И
|| ИЛИ
? : операция условия
Неделимые последовательности знаков алфавита образуют слова, отделенные друг от друга разделителями и несущие определенный смысл в программе. Алфавит C++ служит для построения слов, которые в C++ называются лексемами. Различают пять типов лексем:
Почти все типы лексем (кроме ключевых слов и идентификаторов) имеют собственные правила словообразования, включая собственные подмножества алфавита. Лексемы разделяются разделителями. Этой же цели служит множество пробельных символов, к числу которых относятся пробел, символы горизонтальной и вертикальной табуляции, символ новой строки, перевода формата и комментарии.
Слова разделяются на зарезервированные слова, стандартные идентификаторы и идентификаторы пользователя.
Зарезервированные слова являются составной частью языка, имеют фиксированное начертание и раз и навсегда определенный смысл.
Стандартные идентификаторы служат для обозначения заранее определенных разработчиками языка типов данных, констант и функций.
Идентификаторы пользователя применяются для обозначения констант, переменных , функций и т.д. определенных программистом. Правильно выбранные идентификаторы значительно облегчают чтение и понимание программы, а также позволяют избежать появление ошибок при модификации программы.
Правила написания идентификаторов в С
При написании идентификаторов можно использовать как прописные так и строчные буквы, однако между ними существует существенная разница для транслятора (идентификаторы регистро чувствительны).
Ключевые слова и имена
Часть идентификаторов C++ входит в фиксированный словарь ключевых слов. Эти идентификаторы образуют подмножество ключевых слов (они так и называются ключевыми словами). Прочие идентификаторы после специального объявления становятся именами. Имена служат для обозначения переменных, типов данных, функций и меток. Обо всём этом позже.
Ниже приводится список ключевых слов:
asm auto break case catch char class const continue default do double else enum extern float for friend goto if inline int long new operator private protected public register return short signed sizeof static struct switch template this throw try typedef typeid union unsigned virtual void volatile while.
Символы операций и разделителей
Множество лексем, соответствующее множеству символов операций и разделителей строится на основе набора специальных символов и букв(!) алфавита. Единственное правило словообразования для этих категорий лексем заключается в задании фиксированного множества символов операций и разделителей.
Слеующие последовательности специальных символов и букв алфавита образуют множество символов операций (часть из них в зависимости от контекста может быть использована в качестве разделителей):
, |
! |
!= |
| |
|= |
% |
%= |
& |
&& |
&= |
() |
* |
*= |
+ |
++ |
+= |
- |
-- |
-= |
-> |
->* |
. |
.* |
/ |
/= |
:: |
< |
<< |
<= |
<<= |
> |
>> |
>= |
>>= |
== |
?: |
[] |
^ |
^= |
~ |
|| |
# |
## |
sizeof |
new |
delete |
typeid |
throw |
Кроме того, к числу разделителей относятся следующие последовательности специальных символов:
... |
; |
{} |
Литералы
В C++ существует четыре типа литералов:
Это особая категория слов языка. Для каждого подмножества литералов испольльзуются собственные правила словообразования. Мы не будем приводить здесь эти правила. Ограничимся лишь общим описанием структуры и назначения каждого подмножества литералов. После этого правила станут более-менее понятны.
Список литер организован по следующему принципу: сначала приводится представление литеры в специальном формате, затем - эквивалентное представление в шестнадцатеричном формате, далее - обозначение или название литеры, за которым приводится краткое описание реакции на литеру (смысл литеры).
\0 \x00 null пустая литера
\a \x07 bel сигнал
\b \x08 bs возврат на шаг
\f \x0C ff перевод страницы
\n \x0A lf перевод строки
\r \x0D cr возврат каретки
\t \x09 ht горизонтальная табуляция
\v \x0B vt вертикальная табуляция
\\ \x5C \ обратная косая черта
\' \x27 '
\" \x22 "
\? \x3F ?
Константы и переменные
При решении любой задачи требуются данные, над которыми выполняются определенные действия для получения конечного результата. В программе каждый элемент данных является либо константой, либо переменной. Константы и переменные определяются идентификаторами (именами), по которым к ним можно обращаться для получения текущих значений.
Константами называется элементы данных, значения которых известны заранее и в процессе выполнения программы не изменяются.
Синтаксис языка программирования это набор грамматических правил, котрые нужно соблюдать при использовании языка. В С++ имеется два вида констант основанные на макроопределениях и формальные, которые задаются при помощи объявления константы.
Общий синтаксис директивы #define:
#define имя_константы значение_константы;
Директива #define дает указание транслятору вызвать препроцессор и выполнить замену имени константы ее значением в виде подставляемого текста. Замена происходит до того, как транслятор обработает операторы программы.
Вторым типом константы в языке С++ является формальная константа.
Общий синтаксис записи формальной константы:
Const тип_данных имя_константы = значение_константы;
Элемент тип_данных является необъязательным. Он определяет тип_данных элемента значение_константы. По умолчанию присваивается тип int.
Переменные в отличие от констант могут менять свои значения в процессе выполнения программы. Каждая переменная и константа принадлежат к определенному типу данных. Тип констант распознается компилятором без предварительного описания.
Понятие типа является одним из фундаментальных понятий любого языка программирования. Объекты (константы, переменные, функции, выражения ит.д.), которыми оперирует программа, относятся к определенному типу. Тип это множество значений, которые могут принимать объекты программы, и совокупность операций, допустимая над этими значениями.
Тип является основной характеристикой объекта и функции. Тип определяет, что и как следует делать со значениями объектов и функций. Значение функции выполняется, значение константы читается, константой переменной модифицируется. Тип определяет структуру и размеры объекта, диапазон и способы интерпретации его значения, множество допустимых операций.
Поскольку конкретное значение может быть зафиксировано в области памяти, которая соответствует объекту определённого типа, можно также говорить о типе значения. Значения представляются выражениями. Поэтому имеет смысл также говорить и о типе выражения. Таким образом, тип оказывается важнейшей характеристикой языка.
Все допустимые типы можно подразделить на две большие группы: скалярные и структурированные. Скалярные типы подразделяются на стандартные и пользовательские. Структурированные типы базируются на скалярных типах и могут содержать их различные комбинации.
Тип переменных должен быть описан перед тем, как с переменными будут выполняться какие-либо действия. Числа разной величины с большей или меньшей точностью можно представить с помощью разных типов.
Основные типы в C++ подразделяются на две группы: целочисленные типы и типы с плавающей точкой (для краткости их будем называть плавающими типами). Это арифметические типы.
В C++ нет жёсткого стандарта на диапазоны значений арифметических типов (в стандарте языка оговариваются лишь минимально допустимые значения). В принципе, эти диапазоны определяются конкретной реализацией. Обычно выбор этих характеристик диктуется эффективностью использования вычислительных возможностей компьютера. Зависимость языка от реализации создаёт определённые проблемы переносимости. C++ остаётся машинно-зависимым языком.
К стандартным скалярным типам относятся int, char, float, double, bool для представления соответственно данных целого типа, литер, чисел с плавающей запятой, чисел с плавающей запятой с двойтой точностью и логических переменных. Кроме того в С++ используются данные типа void для обозначение типа возвращаемого функцией значения в том случае, если она не генерирует никого результата (действует как процедура).
К целочисленным типам относятся типы, представленные следующими именами основных типов:
char
short
int
long
Имена целочисленных типов могут использоваться в сочетании с парой модификаторов типа:
signed
unsigned
Эти модификаторы изменяют формат представления данных, но не влияют на размеры выделяемых областей памяти.
Модификатор типа signed указывает, что переменная может принимать как положительные, так и отрицательные значения. Возможно, что при этом самый левый бит области памяти, выделяемой для хранения значения, используется для представления знака. Если этот бит установлен в 0, то значение переменной считается положительным. Если бит установлен в 1, то значение переменной считается отрицательным.
Модификатор типа unsigned указывает, что переменная принимает неотрицательные значения. При этом самый левый бит области памяти, выделяемой для хранения значения, используется так же, как и все остальные биты области памяти - для представления значения.
В ряде случаев модификаторы типа можно рассматривать как имена основных типов.
К плавающим типам относятся три типа, представленные следующими именами типов, модификаторов и их сочетаний:
float
double
long double
Как и ранее, модификатор типа входит в число имён основных типов.
Плавающие типы используются для работы с вещественными числами, которые представляются в форме записи с десятичной точкой, так и в "научной нотации". Разница между нотациями становится очевидной из простого примера, который демонстрирует запись одного и того же вещественного числа в различных нотациях.
297.7 2.977*10**2 2.977E2
В научной нотации слева от символа E записывается мантисса, справа - значение экспоненты, которая всегда равняется показателю степени 10.
Таким образом, система представления данных в языке С++ обладает достаточной гибкостью, так как поддерживает модификаторы типа данных. Модификаторы типов signed, unsigned, sort, long изменяют их точность и диапазон значений.
Общий синтаксис объявления переменных следующий:
type имя_переменной;
type имя_переменной = начальное_значение;
type имя_переменной_1[ = начальное_значение_1], type имя_переменной_2[ = начальное_значение_2], type имя_переменной_3[ = начальное_значение_3],…;
type{int, bool, char, signed char, unsigned char, unsigned int, short int, unsigned short int, long int, unsigned long int, float, double, long double }