Программирование на языке Си/§1

В этой лекции мы рассмотрим базовый синтаксис языка Си.

## Элементы языка Си

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

- Символы, используемые для образования ключевых слов и идентификаторов. В эту группу входят прописные и строчные буквы английского алфавита, а также символ подчеркивания. Следует отметить, что одинаковые прописные и строчные буквы считаются различными символами, так как имеют различные коды.
- Группа прописных и строчных букв русского алфавита и арабские цифры
- Знаки нумерации и специальные символы. Эти символы используются с одной стороны для организации процесса вычислений, а с другой - для передачи компилятору определенного набора инструкций.
- Управляющие и разделительные символы. К той группе символов относятся: пробел, символы табуляции, перевода строки, возврата каретки, новая страница и новая строка. Эти символы отделяют друг от друга объекты, определяемые пользователем, к которым относятся константы и идентификаторы. Последовательность разделительных символов рассматривается компилятором как один символ (последовательность пробелов).
- Кроме выделенных групп символов в языке Си широко используются так называемые, управляющие последовательности, т.е. специальные символьные комбинации, используемые в функциях ввода и вывода информации. Управляющая последовательность строится на основе использования обратной дробной черты (\) (обязательный первый символ) и комбинацией латинских букв и цифр.

Управляющая последовательность | Наименование | Шеснадцатеричная замена |
---|---|---|

\a | Звонок | 007 |

\b | Возврат на шаг | 008 |

\t | Горизонтальная табуляция | 009 |

\n | Переход на новую строку | 00A |

\v | Вертикальная табуляция | 00B |

\r | Возврат каретки | 00C |

\f | Перевод формата | 00D |

\" | Кавычки | 022 |

\' | Апостроф | 027 |

\0 | Ноль-символ | 000 |

\\ | Обратная дробная черта | 05C |

\ddd | Символ набора кодов ПЭВМ в восьмеричном представлении | |

\xddd | Символ набора кодов ПЭВМ в шестнадцатеричном представлении |


Последовательности вида \ddd и \xddd (здесь d обозначает цифру) позволяет представить символ из набора кодов ПЭВМ как последовательность восьмеричных или шестнадцатеричных цифр соответственно. Например символ возврата каретки может быть представлен различными способами:

\r - общая управляющая последовательность,

\015 - восьмеричная управляющая последовательность,

\x00D - шестнадцатеричная управляющая последовательность.

Следует отметить, что в строковых константах всегда обязательно задавать все три цифры в управляющей последовательности. Например отдельную управляющую последовательность \n (переход на новую строку) можно представить как \010 или \xA, но в строковых константах необходимо задавать все три цифры, в противном случае символ или символы следующие за управляющей последовательностью будут рассматриваться как ее недостающая часть. Например:

"ABCDE\x009FGH" данная строковая команда будет напечатана с использованием определенных функций языка СИ, как два слова ABCDE FGH, разделенные 8-ю пробелами, в этом случае если указать неполную управляющую строку"ABCDE\x09FGH",то на печати появится ABCDE=|=GH, так как компилятор воспримет последовательность \x09F как символ "=+=".

Отметим тот факт, что, если обратная дробная черта предшествует символу не являющемуся управляющей последовательностью (т.е. не включенному в табл. и не являющемуся цифрой, то эта черта игнорируется, а сам символ представляется как литеральный. Например:

символ \h представляется символом h в строковой или символьной константе.

Кроме определения управляющей последовательности, символ обратной дробной черты (\) используется также как символ продолжения. Если за (\) следует (\n), то оба символа игнорируются, а следующая строка является продолжением предыдущей. Это свойство может быть использовано для записи длинных строк.



## Константы и строки

Константа - это значение, которое не может быть изменено. В языке СИ разделяют четыре типа констант:

- целые константы
- константы с плавающей запятой
- символьные константы
- строковые литералы

**Целая константа:** это десятичное, восьмеричное или шестнадцатеричное число, которое представляет целую величину в одной из следующих форм: десятичной, восьмеричной или шестнадцатеричной.

- Десятичная константа состоит из одной или нескольких десятичных цифр, причем первая цифра не должна быть нулем (в противном случае число будет воспринято как восьмеричное).
- Восьмеричная константа состоит из обязательного нуля и одной или нескольких восьмеричных цифр (среди цифр должны отсутствовать восьмерка и девятка, так как эти цифры не входят в восьмеричную систему счисления).
- Шестнадцатеричная константа начинается с обязательной последовательности 0х или 0Х и содержит одну или несколько шестнадцатеричных цифр (цифры представляющие собой набор цифр шеснадцатеричной системы счисления: 0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F)

**Константа с плавающей точкой** - десятичное число, представленное в виде действительной величины с десятичной точкой или экспонентой.

Число с плавающей точкой состоит из целой и дробные части и (или) экспоненты. Константы с плавающей точкой представляют положительные величины удвоенной точности (имеют тип double). Для определения отрицательной величины необходимо сформировать константное выражение, состоящее из знака минуса и положительной константы.

**Символьная константа** - представляется символом заключенном в апострофы. Управляющая последовательность рассматривается как одиночный символ, допустимо ее использовать в символьных константах. Значением символьной константы является числовой код символа.

**Строковая константа (литерал)** - последовательность символов (включая строковые и прописные буквы русского и латинского языка, а также цифры) заключенные в кавычки (") . Например: "Школа N 35", "город Тамбов", "YZPT КОД".



## Служебные слова

Спецификаторы типа:

- char - символьный;
- double - вещественный двойной точности с плавающей запятой;
- enum - перечисление - определение целочисленных констант, для каждой из которых выводится имя и значение;
- float - вещественный с плавающей точкой;
- int - целочисленный тип;
- long - длинное целое;
- short - короткое целое;
- struct - структурный тип;
- signed - целое со знаком;
- union - объединяющий тип;
- unsigned - целое без знака;
- void - отсутствие значения;
- typedef - вводит синоним обозначения типа.

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

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

Операторы:

- if - если ( if (условие) - если условие выполняется, то)
- for - для ( for(i=0;i<10;i++) - для i=0, пока i<0 увеличиваем на единицу (i++) )
- while - пока (while (K<4) пока k<4 выполняем)
- return - возврат из функции
- break - выйти из цикла или переключиться
- continue - завершить текущую итерацию цикла
- goto - безусловный переход
- switch - переключатель

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

- default - определяет действия при отсутствии нужного варианта в операторе switch;
- sizeof - операция определения размера операнда в байтах;
- case - определяет вариант в операторе switch;
- else - иначе в операторе if (if (условие) k=1; else k=2;- если выполняется условие, то к=1. иначе к=2.)