Н. И. Лобачевского Факультет Вычислительной Математики и Кибернетики Кафедра иисгео Язык программирования Си Курс лекций
| Вид материала | Курс лекций |
Содержание4. Язык программирования С 4.1. Символика языка Си |
- Н. И. Лобачевского Факультет Вычислительной математики и кибернетики Кафедра Математического, 169.45kb.
- Н. И. Лобачевского Факультет Вычислительной математики и кибернетики Кафедра Математического, 172.6kb.
- Н. И. Лобачевского Факультет Вычислительной математики и кибернетики Кафедра Математического, 123.69kb.
- Н. И. Лобачевского Факультет Вычислительной математики и кибернетики Кафедра Математического, 132.68kb.
- М. В. Ломоносова Факультет вычислительной математики и кибернетики Кафедра математической, 6.81kb.
- Методы интеллектуального анализа данных и некоторые их приложения, 29.22kb.
- М. В. Ломоносова Факультет Вычислительной Математики и Кибернетики Кафедра Системного, 124.67kb.
- Н. И. Лобачевского факультет вычислительной математики и кибернетики лаборатория «информационные, 1555.24kb.
- И кибернетики факультет вычислительной математики и кибернетики, 138.38kb.
- М. В. Ломоносова факультет Вычислительной математики и кибернетики Кафедра «Математических, 39.24kb.
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 ;
Символом этой операции является знак вопроса, а выполняется она следующим образом. Если условие, заключенное в скобках выполнено, то значение присваиваемого выражения задается выражением, расположенным справа от знака вопроса. В противном случае вычисляется значение выражения, расположенного справа от двоеточия.
