Н. И. Лобачевского Факультет Вычислительной Математики и Кибернетики Кафедра иисгео Язык программирования Си Курс лекций

Вид материалаКурс лекций

Содержание


4. Язык программирования С 4.1. Символика языка Си
Подобный материал:
1   ...   10   11   12   13   14   15   16   17   ...   29
^

4. Язык программирования С

4.1. Символика языка Си


Как и любой другой алгоритмический язык Си базируется на трех китах, соответственно представляющих:
  • изобразительные средства языка – алфавит;
  • объекты – данные разного типа;
  • процедуры обработки данных – операторы.

Все это, естественно, дополняется синтаксисом языка – сводом правил по написанию предложений (строк программы) и оформлению программных модулей.

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

Таблица 1

Операции над одним операндом

Обозначение

операции

Пояснение

&x

адрес переменной x

*p

имя переменной, на которую смотрит указатель p

–x

смена знака значения переменной x

+x

редко используемая операция, не меняющая значения x

~x

инвертирование битов целочисленного значения x

!x

отрицание значения x (0 или не 0)

+ +x

увеличение значения x на 1 до его использования в последующих вычислениях

x+ +

увеличение значения x на 1 после его использования в последующих вычислениях

– –x

уменьшение значения x на 1 до его использования в последующих вычислениях

x– –

уменьшение значения x на 1 после его использования в последующих вычислениях

sizeof x

определение размера значения переменной x в байтах

Таблица 2

Операции над двумя операндами

Обозначение

операции

Пояснение

a + b

сложение числовых данных

a – b

вычитание числовых данных

a * b

умножение числовых данных

a / b

деление числовых данных. Если операнды целочисленные, то дробная часть результата теряется.

a % b

остаток от деления целочисленных данных

a << k

сдвиг значения a на k двоичных разрядов влево (аналог умножения a на 2k)

a >> k

сдвиг значения a на k двоичных разрядов вправо (аналог деления a на 2k)

a & b

поразрядное логическое умножение целочисленных операндов (операция «И»)

a | b

поразрядное логическое сложение целочисленных операндов (операция «ИЛИ»)

a ^ b

операция «исключающее ИЛИ» над целочисленными операндами

a < b

сравнение числовых или символьных данных на «меньше»

a <= b

сравнение числовых или символьных данных на «меньше или равно»

a > b

сравнение числовых или символьных данных на «больше»

a >= b

сравнение числовых или символьных данных на «больше или равно»

a == b

сравнение числовых или символьных данных на «равно»

a != b

сравнение числовых или символьных данных на «не равно»

y1 && y2

проверка одновременного выполнения условий y1 и y2

y1 || y2

проверка выполнения хотя бы одного из условий y1 или y2

p + int

прибавление к адресу (указатель p) целочисленного смещения int*sizeof, определяемого типом данных, на которые смотрит указатель

p – int

вычитание из адреса (указатель p) целочисленного смещения int*sizeof, определяемого типом данных, на которые смотрит указатель

Таблица 3

Операции присваивания

Обозначение операции

Пояснение

v = e

присвоить переменной v значение выражения e

v1=v2=...=e

множественное присвоение значения выражения e переменным v1,v2,...

a += b

аналог оператора a = a + b

a –= b

аналог оператора a = a – b

a *= b

аналог оператора a = a * b

a /= b

аналог оператора a = a / b

a %= b

аналог оператора a = a % b

a <<= k

аналог оператора a = a << k

a >>= k

аналог оператора a = a >> k

a &= b

аналог оператора a = a & b

a |= b

аналог оператора a = a | b

a ^= b

аналог оператора a = a ^ b

Таблица 4

Символы некоторых однобайтовых констант

Символ

Код ASCII

Пояснение

\0xHH

0xHH

шестнадцатеричный код (H – цифра от 0 до F)

\0qqq




восьмеричный код (q – цифра от 0 до 7)

\a

0x07

символ bel, генерирующий звук при выводе

\b

0x08

символ backspace, отменяющий предшествующий символ

\f

0x0C

символ Form Feed – перевод страницы

\n

0x0A

символ Line Feed – перевод строки

\r

0x0D

символ Carriage Return – перевод курсора в начало строки

\t

0x09

символ Tab – горизонтальная табуляция

\v

0x0B

символ вертикальной табуляции

\\

0x5C

символ \ – обратная наклонная черта (обратный слэш)

\’

0x27

символ одинарной кавычки

\

0x22

символ двойной кавычки

\?

0x3F

символ знака вопроса

Вообще говоря, к «символам» алфавита причисляют и набор служебных слов, используемых в оформлении программы. Ядро Си насчитывает порядка 40 таких слов (см. табл. 5), а с появлением расширения языка в виде C++ к ним добавилось еще порядка 20 новых терминов. С большинством из них мы будем знакомиться по мере освоения материала последующих разделов.

Таблица 5

Служебные слова ядра входного языка Borland C

Служебное слово

Назначение

Asm

включение команд на языке ассемблера

Auto

редко используемое объявление локальных переменных

Break

досрочный выход из циклов и переключателей

Case

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

Cdecl

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

Char

объявление однобайтовых символьных или числовых данных

Const

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

continue

переход на продолжение цикла

default

строка выбора в переключателе, на которую переходят в случае, если не выбрана ни одна предыдущая строка

do

оператор цикла с постусловием

double

объявление вещественных данных с удвоенной точностью

else

начало альтернативной ветки в условном операторе if

enum

объявление перечислимых данных

extern

ссылка на глобальные данные, описанные в других файлах

far

объявление дальних указателей

float

объявление вещественных данных с обычной точностью

for

оператор цикла

goto

оператор безусловного перехода

huge

объявление дальних указателей

if

условный оператор

int

объявление целочисленных двухбайтовых данных

long

объявление целочисленных или вещественных данных повышенной длины

near

объявление ближних указателей

Pascal

объявление стиля Pascal для функций и данных (большие и малые буквы не различаются, параметры в стек заносятся с начала)

register

указание о размещении переменных в регистровой памяти

return

возврат из функции

short

объявление целочисленных двухбайтовых данных

signed

объявление целочисленных данных со знаком

sizeof

определение длины данных

static

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

struct

объявление данных типа структура

switch

оператор выбора – переключатель

typedef

переименование стандартного типа данных

union

объявление данных типа объединение

unsigned

объявление целочисленных данных без знака

void

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

volatile

указание о том, что значение переменной может быть изменено другой программой

while

описание условия прекращения цикла

В программах на языке Си можно встретить операцию, в которой участвуют одновременно 3 операнда :

min = (a < b) ? a : b ;

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