Ульяновск: УлГУ, 2015. – 319 с. Учебное пособие предлагает читателю курс программирования, ориентированный на язык Си. Пособие содержит много примеров с часто применяемыми алгоритмами и фундаментальными структурами данных, при этом для некоторых задач приводится несколько способов решения в зависимости от начальных данных. Также имеется большое количество задач для отработки основных приемов программирования на языке Си. Целью данного учебного пособия является не только познакомить читателя с языком Си, но и показать тонкости данного языка, а также научить писать правильные и эффективные программы. Предназначено для студентов, изучающих язык программирования Си, а также для программистов разной квалификации.
ОГЛАВЛЕНИЕ
Введение 7
1. ТИПЫ ДАННЫХ И ОПЕРАТОРЫ 8
1.1. Переменные и базовые типы данных 8
1.2. Операции и выражения 13
1.3. Символические константы 16
1.4. Типизированные константы 19
1.5. Несколько слов о функции main() 19
2. ВВОД И ВЫВОД В СИ 21
2.1. Стандартный ввод-вывод 21
2.2. Форматный ввод-вывод 25
3. ЦИКЛЫ И ОПЕРАТОРЫ СРАВНЕНИЯ 30
3.1. Условный оператор 30
3.2. Оператор выбора switch 31
3.3. Операторы цикла 32
3.4. Операторы break и continue 35
3.5. Примеры 36
3.6. Вычисление значений элементарных функций 42
3.7. Задачи 44
4. ОБРАБОТКА ПОСЛЕДОВАТЕЛЬНОСТЕЙ 46
4.1. Примеры 46
4.2. Задачи 49
5. ОДНОМЕРНЫЕ МАССИВЫ 51
5.1. Начальные сведения о массивах 51
5.2. Примеры работы с массивами 53
5.3. Задачи 62
6. МНОГОМЕРНЫЕ МАССИВЫ 65
6.1. Определение и инициализация двумерных массивов 65
6.2. Примеры с двумерными массивами 66
6.3. Задачи 71
7. УКАЗАТЕЛИ И МАССИВЫ 73
7.1. Указатели и адреса 73
7.2. Указатели и аргументы функций 74
7.3. Указатели и массивы 80
7.4. Операции с указателями 83
7.5. Указатели с типом void 85
7.6. Модификатор const 86
7.7. Массивы переменного размера 86
7.8. Массивы указателей 89
7.9. Двумерные массивы переменного размера 91
8. СИМВОЛЫ И СТРОКИ 98
8.1. Представление символьной информации в ЭВМ 98
8.2. Библиотека обработки символов 99
8.3. Строки в языке Си 100
8.4. Функции обработки строк 105
8.5. Функции преобразования строк 110
8.6. Примеры работы со строками 111
8.7. Разбиение строки на лексемы 126
8.8. Задачи 142
9. СТРУКТУРЫ 145
9.1. Основные сведения о структурах 145
9.2. Объединения 148
10. ДИРЕКТИВЫ ПРЕПРОЦЕССОРА 151
10.1. Директива #include 151
10.2. Директива #define 151
10.3. Директива #undef 153
10.4. Условная компиляция 154
11. ФУНКЦИИ 157
11.1. Основные сведения о функциях 157
11.2. Прототипы функций 158
11.3. Классы памяти 159
11.4. Указатели на функции 163
11.5. Рекурсия 167
11.6. Примеры с использованием рекурсии 168
11.7. Метод «разделяй и властвуй» 177
11.8. Задачи на применение рекурсии 181
12. РАБОТА С БИТАМИ ПАМЯТИ 183
12.1. Битовые операции 183
12.2. Примеры с использованием битовых операций 186
12.3. Задачи 193
13. РАБОТА С ФАЙЛАМИ 195
13.1. Файлы и потоки 195
13.2. Текстовые файлы 199
13.3. Двоичные файлы 204
13.4. Шифрование файлов 211
13.5. Задачи на текстовые файлы 215
13.6. Задачи на двоичные файлы 219
14. СТРУКТУРЫ ДАННЫХ 223
14.1. Односвязные списки 223
14.2. Примеры работы с односвязными списками 226
14.3. Задачи на односвязные списки 239
14.4. Стеки, очереди 241
14.5. Задачи на стеки и очереди 244
14.6. Двусвязные списки 245
14.7. Задачи на двусвязные списки 247
14.8. Бинарные деревья 248
14.9. Примеры с использованием бинарных деревьев 249
14.10. Задачи на бинарные деревья 276
Приложение
1. АЛГОРИТМЫ ПОИСКА 278
1. Линейный поиск 278
2. Поиск с барьером 278
3. Двоичный поиск 279
Приложение
2. АЛГОРИТМЫ СОРТИРОВКИ 281
Несколько слов о сложности алгоритмов 281
1. Метод прямого выбора 282
2. Метод прямого включения 283
3. Пузырьковая сортировка 285
4. Шейкерная сортировка 286
5. Быстрая сортировка 287
6. Сортировка подсчетом 290
Приложение
3. СОРТИРОВКА ИНДЕКСОВ И УКАЗАТЕЛЕЙ 294
1. Сортировка индексов на основе метода прямого выбора 294
2. Сортировка индексов на основе пузырьковой сортировки 296
3. Сортировка индексов на основе быстрой сортировки 296
4. Сортировка двумерных массивов 298
5. Сортировка строк 300
Приложение
4. СОРТИРОВКА ФАЙЛОВ И СПИСКОВ 304
1. Сортировка двоичных файлов 304
2. Сортировка линейных списков 306
Приложение
5. СОРТИРОВКА С УСЛОВИЕМ 307
1. Сортировка с условием на базе пузырьковой сортировки 307
2. Сортировка с условием на базе быстрой сортировки 309
3. Сортировка с условием двоичных файлов 310
4. Сортировка с условием линейного списка на базе
пузырьковой сортировки 313
5. Сортировка с условием линейного списка на базе быстрой сортировки 315
ЛИТЕРАТУРА 317