Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ИТ11зт / лекции СИ.doc
Скачиваний:
18
Добавлен:
11.06.2015
Размер:
588.8 Кб
Скачать

ЯЗЫК СИ

Глава 1. Базовые понятия языка

1.1 Словарь языка си

Язык СИ оперирует со следующим набором символов:

1) большие и маленькие буквы латинского алфавита A,B,C,..., Z, a,b,c,...,z

2) арабские цифры 0,1,2,...,9;

3) Специальные символы:

“ , { } [ ] ( ) + - / % \ ; ‘ . : ?

< = > _ !  * # ~ ^

4) неизображаемые символы – пробел, табуляция, переход на новую строчку;

5) В комментариях, строках и символьных константах могут использоваться другие символы (например, русские буквы).

6) комбинации специальных символов образуют составленные символы:

/* - комментарий;

/* это комментарий*/

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

/* текст-1 /* текст-2 */ текст-3 */ текст-3 не считается комментарием.

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

В языке СИ 6 классов лексем: свободно выбираемые и используемые идентификаторы, служебные (ключевые) слова, константы, строки (строковые константы), операции (знаки операций), разделители (знаки пунктуации).

Идентификаторы.

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

X D8 d8 G_ALT GAMMA128 _X .

Прописные и строчные буквы различаются.

Идентификаторы могут иметь любую длину, но компилятор учитывает не более 31 символа.

В качестве идентификаторов нельзя использовать служебные (ключевые) слова и стандартные имена языка (sin, printf и т.д.).

Служебные (ключевые) слова.

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

auto

break

case

char

const

continue

default

do

double

else

enum

extern

float

for

goto

if

int

long

register

return

short

signet

sizeof

Static

struct

switch

typedef

union

unsigned

void

volatile

Wile

По смысловой нагрузке служебные слова группируются следующим образом:

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

К спецификаторам типов относятся:

char - символьный;

double - вещественный двойной точности с плавающей точкой;

enum - перечисляемый тип (перечисление) - определе­ние целочисленных констант, для каждой из ко­торых вводятся имя и значение;

float - вещественный с плавающей точкой;

int - целый;

long - целый увеличенной длины (длинное целое);

short - целый уменьшенной длины (короткое целое);

struct - структура (структурный тип);

signed - знаковый, т.е. целое со знаком (старший бит считается знаковым);

union - объединение (объединяющий тип);

unsigned - беззнаковый, т.е. целое без знака (старший бит не считается знаковым);

void - отсутствие значения;

typedef - вводит синоним обозначения типа (определяет сокращенное наименование для обозначения типа).

Квалификаторы типа:

const - квалификатор объекта, имеющего постоянное значение, т.е. доступного только для чтения;

volatile - квалификатор объекта, значение которого может измениться без явных указаний программиста.

Квалификаторы типа информируют компилятор о необходимости и (или) возможности особой обработки объектов в процессе оптимизации кода программы.

Для обозначения классов памяти используются:

auto - автоматический;

extern - внешний; register - регистровый; static - статический.

Для построения операторов используются служебные слова:

break - выйти из цикла или переключателя;

continue - завершить текущую итерацию цикла (продолжить цикл, перейдя к следующей итерации);

do - выполнять (заголовок оператора цикла с постусловием);

for - для (заголовок оператора параметрического цикла);

goto - перейти (безусловный переход);

if - если - обозначение условного оператора;

return - возврат (из функции);

switch - переключатель;

while - пока (заголовок цикла с предусловием или завершение цикла do).

К служебным словам также отнесены следующие идентификаторы:

default - определяет действия при отсутствии нужного варианта в операторе switch;

case - определяет вариант в операторе switch;

else - входит в оператор if, определяя альтернативную ветвь;

sizeof - операция определения размера операнда (в байтах).

Добавим еще одно соглашение, обычно соблюдаемое авторами компиляторов и стандартных библиотек языка Си. Идентификаторы, начинающиеся с одного или двух символов подчеркивания "_", зарезервированы для использования в библиотеках и компиляторах. Поэтому такие идентификаторы не рекомендуется выбирать в качестве имен в прикладной программе на языке Си. Следующее соглашение относительно имен относится уже не к стандарту и не к реализациям, а отображает стиль оформления текста программы. Рекомендуется при программировании имена констант записывать целиком заглавными буквами.

Стандартные математические функции (файл math.h):

Функция

Краткое описание

abs

нахождение абсолютного значения выражения типа int

acos

вычисление арккосинуса. Аргументы этой и других  тригонометрических функций задаются в радианах

asin

вычисление арксинуса

atan

вычисление арктангенса х

atan2

вычисление арктангенса от у/х

cabs

нахождение абсолютного значения комплексного числа

ceil

нахождение наименьшего целого, большего или равного х

_clear87

получение значения и инициализация слова состояния сопроцессора и библиотеки арифметики с плавающей точкой

_control87

получение старого значения слова состояния для функций арифметики с плавающей точкой и установка нового состояния

cos

вычисление косинуса

cosh

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

exp

вычисление экспоненты

fabs

нахождение абсолютного значения типа double

floor

нахождение наибольшего целого, меньшего или равного х

fmod

нахождение остатка от деления х/у

_fpreset

повторная инициализация пакета плавающей арифметики

frexp

вычисляет для х вещественную мантиссу m и целое n так, что x=m*2n

hypot

вычисление гипотенузы

labs

нахождение абсолютного значения типа long

ldexp

вычисление х*2e

log

вычисление натурального логарифма

log10

вычисление логарифма по основанию 10

matherr

управление реакцией на ошибки при выполнении функций математической библиотеки

modf

разложение х на дробную и целую часть

pow

вычисление х в степени у

sin

вычисление синуса

sinh

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

sqrt

нахождение квадратного корня

_status87

получение значения слова состояния с плавающей точкой

tan

вычисление тангенса

tanh

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

В библиотеке определен также ряд констант, таких как M_PI (число π), M_E (основание натурального логарифма e) и др.

Соседние файлы в папке ИТ11зт