
- •Общие сведения
- •Средства разработки
- •Структура программы
- •Алфавит
- •Лексемы
- •1.2. Переменные. Типы данных
- •Простые типы данных
- •Структурированные типы данных
- •1.3. Константы
- •1.4. Операции Арифметические
- •Присваивание
- •1.5. Операторы ветвления и цикла
- •1.6. Функции Описание и вызов
- •Неявно заданные параметры функции
- •Рекурсия
- •Механизм вызова функций, подставляемые функции
- •Перегрузка функций. Параметры по умолчанию
- •1.7. Указатели. Массивы. Строки Обзор
- •Приведение типов
- •Типизированные и нетипизированные указатели
- •Операции над указателями
- •Массивы
- •Многомерные массивы
- •Указатели в качестве параметров функций
- •Указатель на функцию
- •Функции работы с указателями и памятью
- •Строки.
- •1.8. Организация ввода-вывода
- •Форматированный ввод-вывод
- •1.9. Директивы препроцессора
- •1.10. Метки. Безусловный переход
- •1.11. Время жизни и область видимости переменных
- •1. 12. Многофайловые проекты
- •1.13. Введение в объектно-ориентированное программирование
- •2.3. Проблемы разработки сложных программных систем
- •2.4. Жизненный цикл программного продукта
- •Модели жц.
- •Экстремальное программирование
- •2.5. Оценка качества процессов создания программного обеспечения
- •2.6. Проектирование надёжного программного средства
- •2.7. Процессы проектирования
- •2.8. Требования, цели
- •2.9. Внешнее проектирование
- •Диаграммы потоков данных (Data Flow Diagrams).
- •Диаграммы переходов состояний (State Transition Diagrams). Функциональные диаграммы.
- •Описание структур данных
- •2.10. Проектирование архитектуры
- •2.11. Проектирование модульной структуры. Модуль
- •Внешнее проектирование модулей
- •Модульная декомпозиция
- •2.12. Кодирование.
- •2.13. Тестирование
- •2.14. Документирование
- •2.15. Проектирование пользовательского интерфейса
- •Реализация многомерных массивов
- •Очередь и стек
- •Ассоциативные массивы
- •3.3. Упорядоченные структуры данных.
- •Сортировка методом пузырька
- •Быстрая сортировка
- •3.4. Деревья
- •Бинарное дерево
- •Обход дерева
- •3.5. Множества, графы Множества
- •3.6. Строки Константные строки
- •Списковое представление строк
- •Представление массива строк
- •3.7. Библиотека stl
- •3.8. Реализация некоторых структур данных Реализация двусвязанного списка.
- •Реализация массива переменного размера:
- •Примеры программ
- •Список литературы
Алфавит
Стандарт С99 выделяет два набора символов, входящих в алфавит: базовый и расширенный. Базовый набор включает следующие символы:
- прописные и строчные буквы латинского алфавита;
- арабские цифры;
- специальные знаки: “ { } , | [ ] ( ) + - / % \ ; ‘ : ? < = > _ ! & # ~ ^ . *
Расширенный набор символов может быть как пустым, так и содержать, например, символы национальных алфавитов. Например, Ms Visual Studio 2008 позволяет использовать некоторые подмножества пространства Юникод, в том числе, кириллицу.
Есть специальные группы из трех символов (трехсимвольные последовательности / trigraph sequences), которые на этапе препроцессорной обработки преобразуются в другие символы, например, ??= соответствует #, ??( соответствует [, ??/ соответствует \ и другие.
Лексемы
Из символов алфавита формируются следующие лексемы языка.
1. Идентификаторы – набор символов, используемый для идентификации объектов (переменных, функций, классов, типов данных и т.д.) Идентификаторы записываются в соответствии с правилами – это последовательность букв, цифр и символов подчёркивания, начинающаяся не с цифры. Идентификаторы в языках С, С++ чувствительны к регистру букв, в отличие, например, от ЯВУ Pascal.
Особым видом идентификаторов являются ключевые (служебные) слова – они зарезервированы для специального использования и не могут быть переопределены.
Стандарт С99 закрепляет следующие ключевые слова: auto, break, case, char, const, continue, default, do, double, else, enum, extern, float, for, goto, if, inline, int, long, register, restrict, return, short, signed, sizeof, static, struct, switch, typedef, union, unsigned, void, volatile, while, _Bool, _Complex, _Imaginary
2. Константы – это объекты, обращение к которым происходит «по значению» (терминология Э.Дейкстры, определявшего отличие констант и переменных по способу их использования в программах, – используя имя переменной, мы указываем адрес данного, а используя константу, мы записываем её саму, т.е. её значение). В Си поддерживается четыре простых типа констант – символьные, целые, с плавающей точкой и строковые. Тип константы определяет способ ее хранения в памяти и операции, допустимые по отношению к ней. Значение типа задается формой записи константы (её внешним видом).
3. Знаки операций.
4. Разделители. В качестве разделителей выступают пробел, табуляция и переход на новую строку.
5. Комментарии – наиболее простой элемент. Их назначение – улучшить «читаемость» текста человеком, они необходимы для сопровождения программ и являются элементом технологии разработки программного обеспечения. В языке поддерживаются два типа комментариев – блочные и строчные.
Блочные комментарии включают любую последовательность символов на одной или нескольких строках, они начинаются и заканчиваются специальной комбинацией символов /* и */ , которые нельзя использовать ни в каком другом контексте.
Строчные комментарии располагаются на одной строке и начинаются двойным слешем
Примеры:
// Комментарий должен уместиться до конца строки
/*
а между этими символами можно писать многострочные комментарии
*/
Если некоторый текст программы занимает несколько строк, но должен быть обработан компилятором как одна строка, используют символ «\».
Пример:
printf(“Это \
всё \
одна \
строка\
“);