Дейтел П., Дейтел Х. - C для программистов с введением в C11 [2014, PDF, RUS]

Страницы:  1
Ответить
 

iptcpudp37

Стаж: 14 лет 10 месяцев

Сообщений: 898


iptcpudp37 · 28-Май-20 19:24 (4 года 11 месяцев назад, ред. 29-Май-20 09:29)

C для программистов с введением в C11
Год издания: 2014
Автор: Дейтел П., Дейтел Х.
Издательство: ДМК Пресс
ISBN: 978-5-97060-073-3
Язык: Русский
Формат: PDF
Качество: Издательский макет или текст (eBook)
Интерактивное оглавление: Нет
Количество страниц: 546
Описание: В книге рассказывается о языке C и стандартной библиотеке C, следуя девизу компании Deitel: «обучение на действующих примерах». Понятия представляются в контексте тщательно протестированных программ, с выделением синтаксиса, демонстрацией вывода программ и подробного их обсуждения. Приводится примерно 5 000 строк кода на языке C и даются сотни полезных советов, которые помогут вам создавать надежные приложения. Рассматривается создание собственных структур данных и стандартная библиотека, безопасное программирование на C; описываются особенности новой ревизии стандарта С11, в т. ч. многопоточность. Закончив чтение, вы будете иметь все знания, необходимые для создания приложений на языке C промышленного уровня. Издание предназначено программистам, имеющим опыт работы на
высокоуровневых языках.
Примеры страниц
Оглавление
Предисловие ....................................................................................................15
1 Введение .....................................................................................................23
1.1 Введение ..............................................................................................................24
1.2 Язык программирования C .............................................................................24
1.3 Стандартная библиотека .................................................................................26
1.4 C++ и другие C-подобные языки .................................................................27
1.5 Типичная среда разработки приложений на языке C .............................28
1.5.1 Фаза 1: создание программы ...............................................................29
1.5.2 Фазы 2 и 3: препроцессинг и компиляция программы ................30
1.5.3 Фаза 4: компоновка ................................................................................30
1.5.4 Фаза 5: загрузка .......................................................................................31
1.5.5 Фаза 6: выполнение ...............................................................................31
1.5.6 Потоки стандартного ввода, стандартного вывода
и стандартного вывода ошибок ..........................................................31
1.6 Пробное приложение на языке C для Windows, Linux и Mac OS X ....32
1.6.1 Запуск приложения из командной строки в Windows .................33
1.6.2 Запуск приложения в Linux .................................................................36
1.6.3 Запуск приложения в Mac OS X.........................................................39
1.7 Операционные системы ..................................................................................42
1.7.1 Windows – коммерческая операционная система ..........................42
1.7.2 Linux – открытая операционная система .........................................42
1.7.3 Apple Mac OS X, Apple iOS® для устройств iPhone®, iPad®
и iPod Touch® ...........................................................................................43
1.7.4 Google Android ........................................................................................44
2 Введение в программирование на C ..............................45
2.1 Введение ..............................................................................................................46
2.2 Простая программа на C: вывод строки текста .........................................46
2.3 Еще одна простая программа на C: сложение двух целых чисел ..........51
2.4 Арифметические операции в языке C............................................................. 56
2.5 Принятие решений: операторы сравнения ................................................60
2.6 Безопасное программирование на C ...........................................................65
Содержание 7
3 Управляющие инструкции: часть I ..................................67
3.1 Введение ..............................................................................................................68
3.2 Управляющие структуры ................................................................................68
3.3 Инструкция выбора if .....................................................................................70
3.4 Инструкция выбора if...else ............................................................................71
3.5 Инструкция повторения while ......................................................................75
3.6 Определение средней оценки с помощью инструкции
повторения, управляемой счетчиком ...........................................................76
3.7 Определение средней оценки с помощью инструкции
повторения, управляемой сигнальным значением ...................................77
3.8 Вложенные управляющие инструкции ........................................................... 81
3.9 Операторы присваивания ...............................................................................84
3.10 Операторы инкремента и декремента .........................................................85
3.11 Безопасное программирование на C ...........................................................87
4 Управляющие инструкции: часть II ................................91
4.1 Введение ..............................................................................................................92
4.2 Основы повторения..........................................................................................92
4.3 Повторение со счетчиком ..............................................................................93
4.4 Инструкция повторения for ...........................................................................95
4.5 Инструкция for: замечания .............................................................................98
4.6 Примеры использования инструкции for .................................................99
4.7 Инструкция множественного выбора switch ..........................................103
4.8 Инструкция повторения do…while ............................................................110
4.9 Инструкции break и continue ......................................................................112
4.10 Логические операторы ..................................................................................114
4.11 Путаница между операторами равенства (==) и присваивания (=) .....118
4.12 Безопасное программирование на C .........................................................120
5 Функции .................................................................................................122
5.1 Введение ............................................................................................................123
5.2 Модульное программирование на языке C ..............................................123
5.3 Функции из математической библиотеки ................................................125
5.4 Функции .............................................................................................................126
5.5 Определение функций ..................................................................................127
5.6 Прототипы функций: обсуждение деталей .............................................132
5.7 Стек вызовов функций и кадры стека ........................................................135
5.8 Заголовочные файлы .....................................................................................138
5.9 Передача аргументов по значению и по ссылке ....................................141
8 Содержание
5.10 Генератор случайных чисел .........................................................................141
5.11 Пример: игра в кости .....................................................................................147
5.12 Классы хранения .............................................................................................151
5.13 Правила видимости ........................................................................................153
5.14 Рекурсия .............................................................................................................157
5.15 Пример использования рекурсии: числа Фибоначчи ...........................161
5.16 Рекурсия и итерации ......................................................................................165
5.17 Безопасное программирование на C .........................................................167
6 Массивы..................................................................................................168
6.1 Введение ............................................................................................................169
6.2 Массивы .............................................................................................................169
6.3 Определение массивов ..................................................................................171
6.4 Примеры массивов ..........................................................................................171
6.5 Передача массивов функциям .....................................................................185
6.6 Сортировка массивов .....................................................................................190
6.7 Пример: вычисление математического ожидания, медианы
и моды ................................................................................................................193
6.8 Поиск в массивах .............................................................................................197
6.9 Многомерные массивы ..................................................................................203
6.10 Массивы переменной длины ........................................................................210
6.11 Безопасное программирование на C .........................................................213
7 Указатели ................................................................................................216
7.1 Введение ............................................................................................................217
7.2 Переменные-указатели, определение и инициализация ......................217
7.3 Операторы указателей ...................................................................................219
7.4 Передача аргументов функциям по ссылке..............................................221
7.5 Использование квалификатора const с указателями .............................224
7.5.1 Преобразование строк в верхний регистр с использованием
изменяемого указателя на изменяемые данные ...........................227
7.5.2 Вывод строки по одному символу с использованием
изменяемого указателя на константные данные ...........................228
7.5.3 Попытка изменить константный указатель на изменяемые
данные .....................................................................................................231
7.5.4 Попытка изменить константный указатель на константные
данные .....................................................................................................231
7.6 Пузырьковая сортировка с передачей аргументов по ссылке .............232
7.7 Оператор sizeof ...............................................................................................236
7.8 Выражения с указателями и арифметика указателей .............................238
Содержание 9
7.9 Связь между указателями и массивами.......................................................242
7.10 Массивы указателей ........................................................................................246
7.11 Пример: тасование и раздача карт ..............................................................247
7.12 Указатели на функции ...................................................................................251
7.13 Безопасное программирование на C .........................................................256
8 Символы и строки.........................................................................258
8.1 Введение ............................................................................................................259
8.2 Основы работы со строками и символами ...............................................259
8.3 Библиотека функций для работы с символами ......................................262
8.3.1 Функции isdigit, isalpha, isalnum и isxdigit ......................................263
8.3.2 Функции islower, isupper, tolower и toupper ...................................265
8.3.3 Функции isspace, iscntrl, ispunct, isprint и isgraph .........................266
8.4 Функции преобразования строк ..................................................................268
8.4.1 Функция strtod.......................................................................................268
8.4.2 Функция strtol ........................................................................................269
8.4.3 Функция strtoul......................................................................................270
8.5 Стандартная библиотека ввода/вывода.....................................................271
8.5.1 Функции fgets и putchar ......................................................................271
8.5.2 Функция getchar ....................................................................................274
8.5.3 Функция sprintf .....................................................................................274
8.5.4 Функция sscanf ......................................................................................275
8.6 Функции для работы со строками .............................................................276
8.6.1 Функции strcpy и strncpy ....................................................................277
8.6.2 Функции strcat и strncat ......................................................................278
8.7 Функции сравнения строк .............................................................................279
8.8 Функции поиска в строках ............................................................................281
8.8.1 Функция strchr .......................................................................................282
8.8.2 Функция strcspn ....................................................................................282
8.8.3 Функция strpbrk ....................................................................................283
8.8.4 Функция strrchr .....................................................................................283
8.8.5 Функция strspn ......................................................................................284
8.8.6 Функция strstr ........................................................................................285
8.8.7 Функция strtok .......................................................................................285
8.9 Функции для работы с памятью ..................................................................287
8.9.1 Функция memcpy ..................................................................................288
8.9.2 Функция memmove ..............................................................................288
8.9.3 Функция memcmp ................................................................................289
8.9.4 Функция memchr ..................................................................................290
8.9.5 Функция memset ...................................................................................290
10 Содержание
8.10 Прочие функции для работы со строками ..............................................291
8.10.1 Функция strerror ..................................................................................291
8.10.2 Функция strlen .....................................................................................292
8.11 Безопасное программирование на C ........................................................292
9 Форматированный ввод/вывод ...................................... 294
9.1 Введение ............................................................................................................295
9.2 Потоки данных ................................................................................................295
9.3 Форматированный вывод с помощью printf ...........................................296
9.4 Вывод целых чисел .........................................................................................296
9.5 Вывод вещественных чисел ..........................................................................298
9.6 Вывод строк и символов ...............................................................................300
9.7 Прочие спецификаторы формата ..............................................................301
9.8 Вывод с указанием ширины поля и точности .........................................302
9.9 Использование флагов в строке формата функции printf ................305
9.10 Вывод литералов и экранированных последовательностей ................307
9.11 Чтение форматированного ввода с помощью функции scanf ..........308
9.12 Безопасное программирование на C .........................................................315
10 Структуры, объединения, перечисления
и поразрядные операции .......................................................316
10.1 Введение ............................................................................................................317
10.2 Определение структур ...................................................................................318
10.2.1 Структуры со ссылками на самих себя ..........................................318
10.2.2 Определение переменных структурных типов ..........................319
10.2.3 Имена структур ...................................................................................319
10.2.4 Операции над структурами .............................................................320
10.3 Инициализация структур ..............................................................................321
10.4 Доступ к полям структур ...............................................................................321
10.5 Передача структур функциям ......................................................................323
10.6 typedef ................................................................................................................324
10.7 Пример: высокопроизводительная программа перемешивания
и раздачи колоды карт ...................................................................................325
10.8 Объединения ....................................................................................................327
10.8.1 Объявление объединений ...............................................................328
10.8.2 Операции над объединениями .......................................................328
10.8.3 Инициализация объединений в объявлениях ............................328
10.8.4 Демонстрация объединений ...........................................................329
10.9 Поразрядные операторы ...............................................................................330
10.9.1 Вывод целых чисел без знака в двоичном представлении ......331
Содержание 11
10.9.2 Повышение переносимости и масштабируемости
функции displayBits ...........................................................................333
10.9.3 Поразрядные операторы «И», «ИЛИ», исключающее
«ИЛИ» и дополнение .......................................................................334
10.9.4 Использование операторов поразрядного сдвига влево
и вправо ...............................................................................................337
10.9.5 Операторы поразрядного присваивания .....................................339
10.10 Битовые поля .................................................................................................340
10.11 Константы-перечисления ...........................................................................343
10.12 Безопасное программирование на C .......................................................345
11 Файлы .....................................................................................................347
11.1 Введение ..........................................................................................................348
11.2 Файлы и потоки данных .............................................................................348
11.3 Создание файла с последовательным доступом ..................................349
11.4 Чтение данных из файла с последовательным доступом ..................355
11.5 Произвольный доступ к файлам ..............................................................360
11.6 Создание файла с произвольным доступом .........................................361
11.7 Запись данных в файл с произвольным доступом ..............................363
11.8 Чтение данных из файла с произвольным доступом .........................366
11.9 Пример: реализация программы для работы со счетами ...................368
11.10 Безопасное программирование на C .......................................................373
12 Структуры данных .....................................................................375
12.1 Введение ..........................................................................................................376
12.2 Структуры, ссылающиеся на себя самих ................................................377
12.3 Динамическое выделение памяти ............................................................377
12.4 Связанные списки .........................................................................................379
12.4.1 Функция insert ...................................................................................385
12.4.2 Функция delete ..................................................................................387
12.4.3 Функция printList .............................................................................388
12.5 Стеки ................................................................................................................388
12.5.1 Функция push ....................................................................................392
12.5.2 Функция pop ......................................................................................393
12.5.3 Области применения стеков .........................................................394
12.6 Очереди ...........................................................................................................395
12.6.1 Функция enqueue ..............................................................................399
12.6.2 Функция dequeue ..............................................................................400
12.7 Деревья ............................................................................................................401
12.7.1 Функция insertNode .........................................................................405
12 Содержание
12.7.2 Обход дерева: функции inOrder, preOrder и postOrder ........406
12.7.3 Удаление дубликатов ......................................................................407
12.7.4 Поиск в двоичных деревьях ..........................................................407
12.8 Безопасное программирование на C .......................................................407
13 Препроцессор ................................................................................409
13.1 Введение ..........................................................................................................410
13.2 Директива препроцессора #include ........................................................410
13.3 Директива препроцессора #defi ne: символические константы .......411
13.4 Директива препроцессора #defi ne: макросы ........................................412
13.5 Условная компиляция .................................................................................414
13.6 Директивы препроцессора #error и #pragma .....................................416
13.7 Операторы # и ## .....................................................................................416
13.8 Номера строк .................................................................................................417
13.9 Предопределенные символические константы ....................................418
13.10 Утверждения ..................................................................................................418
13.11 Безопасное программирование на C .....................................................419
14 Разное ......................................................................................................420
14.1 Введение ..........................................................................................................421
14.2 Перенаправление ввода/вывода ...............................................................421
14.3 Функции с переменным количеством аргументов ...............................422
14.4 Использование аргументов командной строки ....................................425
14.5 Замечания о компиляции программ из нескольких исходных
файлов .............................................................................................................426
14.6 Завершение выполнения программ с помощью функций exit
и atexit ..............................................................................................................429
14.7 Окончания в литералах целых и вещественных чисел ......................430
14.8 Обработка сигналов .....................................................................................431
14.9 Динамическое выделение памяти: функции calloc и realloc .............433
14.10 Безусловные переходы с помощью goto ...............................................434
А Таблица предшествования операторов ................ 437
В Набор символов ASCII ........................................................... 439
С Системы счисления .................................................................. 440
C.1 Введение ..........................................................................................................441
C.2 Преобразование двоичных чисел в восьмеричное
и шестнадцатеричное представление .....................................................444
Содержание 13
C.3 Преобразование восьмеричных и шестнадцатеричных чисел
в двоичное представление ............................................................................446
C.4 Преобразование двоичных, восьмеричных
и шестнадцатеричных чисел в десятичное представление ..................446
C.5 Преобразование десятичных чисел в двоичное, восьмеричное
и шестнадцатеричное представление ........................................................447
C.6 Отрицательные двоичные числа: нотация дополнения до двух .......449
D Сортировка: взгляд в глубину ............................................451
D.1 Введение ............................................................................................................452
D.2 Нотация «Большое О» ...................................................................................452
D.3 Сортировка методом выбора........................................................................454
D.4 Сортировка методом вставки .......................................................................457
D.5 Сортировка методом слияния ......................................................................461
E Дополнительные особенности стандарта C ........ 468
E.1 Введение ............................................................................................................469
E.2 Поддержка положений ревизии C99 .........................................................470
E.3 Заголовочные файлы в C99 ........................................................................470
E.4 Включение объявлений в выполняемый код ..........................................471
E.5 Объявление переменных в заголовках инструкций for ........................472
E.6 Назначенные инициализаторы и составные литералы ........................473
E.7 Тип bool .............................................................................................................476
E.8 Неявный тип int в объявлениях функций ................................................477
E.9 Комплексные числа ........................................................................................479
E.10 Массивы переменной длины ........................................................................480
E.11 Дополнительные возможности препроцессора .....................................483
E.12 Другие особенности, определяемые ревизией C99 ..............................485
E.12.1 Минимальные требования компилятора к ресурсам .............485
E.12.2 Ключевое слово restrict ................................................................485
E.12.3 Надежное целочисленное деление ...........................................486
E.12.4 Гибкие члены-массивы .................................................................486
E.12.5 Ослабление ограничений в составных
инициализаторах ............................................................................487
E.12.6 Математические операции обобщенного типа .....................487
E.12.7 Встраиваемые функции ................................................................488
E.12.8 Инструкция return без выражения ..............................................488
E.12.9 Предопределенный идентификатор __func__ ......................488
E.12.10 Макрос va_copy ...............................................................................489
E.13 Новые особенности в ревизии C11 ...........................................................489
14 Содержание
E.13.1 Новые заголовочные файлы в C11 .............................................489
E.13.2 Поддержка многопоточной модели выполнения ..................490
E.13.3 Функция quick_exit ..........................................................................498
E.13.4 Поддержка Unicode® .......................................................................498
E.13.5 Спецификатор функций _Noreturn ...........................................499
E.13.6 Выражения обобщенного типа ...................................................499
E.13.7 Annex L: анализируемость и неопределенное поведение ....499
E.13.8 Анонимные структуры и объединения .....................................500
E.13.9 Управление выравниванием в памяти .......................................501
E.13.10 Статические утверждения ..............................................................501
E.13.11 Вещественные типы .......................................................................501
E.14 Веб-ресурсы ......................................................................................................501
F Отладчик Visual Studio ..............................................................505
F.1 Введение ............................................................................................................506
F.2 Точки останова и команда Continue...........................................................506
F.3 Окна Locals и Watch ......................................................................................511
F.4 Управление выполнением с помощью команд Step Into,
Step Over, Step Out и Continue .....................................................................514
F.5 Окно Autos .......................................................................................................517
G Отладчик GNU ..................................................................................518
G.1 Введение ............................................................................................................519
G.2 Точки останова и команды run, stop, continue и print ...........................519
G.3 Команды print и set .........................................................................................525
G.4 Управление выполнением с помощью команд step, fi nish и next ......527
G.5 Команда watch ..................................................................................................530
Алфавитный указатель .......................................................................533
Исходные коды: https://www.informit.com/content/images/9780133462067/downloads/examples.zip
Download
Rutracker.org не распространяет и не хранит электронные версии произведений, а лишь предоставляет доступ к создаваемому пользователями каталогу ссылок на торрент-файлы, которые содержат только списки хеш-сумм
Как скачивать? (для скачивания .torrent файлов необходима регистрация)
[Профиль]  [ЛС] 

Dotem_DR

Стаж: 16 лет 6 месяцев

Сообщений: 10

Dotem_DR · 30-Май-20 18:04 (спустя 1 день 22 часа)

Книга не для программистов, авторы много разжевывают базовых тем вроде условий/циклов и прочего дефолта, приходится мотать.
[Профиль]  [ЛС] 

iptcpudp37

Стаж: 14 лет 10 месяцев

Сообщений: 898


iptcpudp37 · 30-Май-20 20:09 (спустя 2 часа 4 мин.)

Dotem_DR писал(а):
79539186Книга не для программистов, авторы много разжевывают базовых тем вроде условий/циклов и прочего дефолта, приходится мотать.
да, я тоже не заметил особой разницы с ихней похожей книгой "Как программировать на С". По факту обыкновенное руководство/учебник по С для начинающих.
[Профиль]  [ЛС] 

sllssllsslls

Стаж: 14 лет 8 месяцев

Сообщений: 221

sllssllsslls · 20-Июл-20 22:13 (спустя 1 месяц 21 день)

Там в содержании имеет место быть сбой по номерам страниц
[Профиль]  [ЛС] 

iptcpudp37

Стаж: 14 лет 10 месяцев

Сообщений: 898


iptcpudp37 · 21-Июл-20 12:41 (спустя 14 часов)

sllssllsslls писал(а):
79798569Там в содержании имеет место быть сбой по номерам страниц
с чего Вы взяли? у меня нормально всё.
[Профиль]  [ЛС] 

TheCalligrapher

Стаж: 12 лет 1 месяц

Сообщений: 71


TheCalligrapher · 15-Июл-21 02:18 (спустя 11 месяцев, ред. 15-Июл-21 02:18)

В книге периодически встречаются загадочные, фактографически неверные заявления. Которые к тому же имеют последствия.
Цитата:
Напомню, что компилятор Microsoft Visual C++ требует, чтобы определения переменных помещались сразу за фигурной скобкой, открывающей тело функции, и перед любыми выполняемыми инструкциями.
"Классический" С и компилятор Microsoft вместе с ним требуют, чтобы объявления переменных помещались сразу за фигурной скобкой, открывающей новый блок. Требования помещать их сразу за фигурной скобкой, открывающей именно тело функции, нет и никогда не было. (Точнее такое требование существовало в "зачаточном" С в 1970х годах, но было упразднено уже в K&R).
Тем не менее по примерам в книге видно, что авторы не понимали этой разницы и усердно пихали объявления переменных в начало функций. Это выглядит криво и создает неправильные привычки у читателей.
Цитата:
Стандарт языка C позволяет помещать определения переменных в любом месте, непосредственно перед их использованием в коде. Некоторые компиляторы, такие как GNU gcc , поддерживают подобную возможность.
Книга была издана в 2014 году, когда компилятор С в составе Visual Studio уже поддерживал C99 почти полностью (пока как расширение языка). То есть и в Visual Studio у вас была возможность "помещать определения переменных в любом месте, непосредственно перед их использованием" в С коде.
---
Также постоянно встречается популярная терминологическая ошибка, когда все объявления функций называются "прототипами". В языке С прототипом называется только такое объявление функции, в котором явно указаны количество и типы параметров. Остальные объявления называются "объявлениями без прототипа" или "old-style объявлениями".
В примере E.7 в книге написано такое:
Цитата:
Код:

returnImplicitInt(); /* прототип без типа возвращаемого значения */
int demoImplicitInt( x ); /* прототип без типа параметра */
В первом объявлении ошибка чисто терминологическая - это не прототип, это old-style объявление без прототипа.
Во втором объявлении все совсем плохо: никогда в языке С правило "implicit int" не распространялось на списки параметров в объявлениях (не определениях) функций. Объявление такой функции может быть сделано либо в старом стиле - без прототипа
Код:
int demoImplicitInt();
либо в новом стиле - с прототипом
Код:
int demoImplicitInt(int x);
// или
int demoImplicitInt(int);
Вариант
Код:
int demoImplicitInt( x );
приведенный в книге, вообще не корректен. Он не является и не являлся корректным никогда и нигде.
[Профиль]  [ЛС] 

Mesky85

Стаж: 13 лет 5 месяцев

Сообщений: 2


Mesky85 · 08-Янв-22 10:09 (спустя 5 месяцев 24 дня)

TheCalligrapher ,
Спасибо. Посоветуйте, пожалуйста, книгу для начинающего по Си, с уклоном в микроконтроллеры.
[Профиль]  [ЛС] 

multirun

Стаж: 11 лет 2 месяца

Сообщений: 22


multirun · 13-Фев-22 12:08 (спустя 1 месяц 5 дней, ред. 13-Фев-22 12:08)

Mesky85 писал(а):
82564394TheCalligrapher ,
Спасибо. Посоветуйте, пожалуйста, книгу для начинающего по Си, с уклоном в микроконтроллеры.
Здесь не книга, видеокурс, но офигенная вешь https://mcu-c.ru/
[Профиль]  [ЛС] 

sanek1106

Стаж: 16 лет 10 месяцев

Сообщений: 143


sanek1106 · 07-Авг-22 12:44 (спустя 5 месяцев 22 дня)

Исходными кодами поделитесь кто-нибудь, ссылка не работает
[Профиль]  [ЛС] 

NaYADA68

Стаж: 9 лет 5 месяцев

Сообщений: 4


NaYADA68 · 28-Мар-23 19:27 (спустя 7 месяцев)

Исходными кодами поделитесь кто-нибудь, ссылка не работает
[Профиль]  [ЛС] 
 
Ответить
Loading...
Error