Думай как программист: креативный подход к созданию кода

This document was uploaded by one of our users. The uploader already confirmed that they had the permission to publish it. If you are author/publisher or own the copyright of this documents, please report to us by using this DMCA report form.

Simply click on the Download Book button.

Yes, Book downloads on Ebookily are 100% Free.

Sometimes the book is free on Amazon As well, so go ahead and hit "Search on Amazon"

Author(s): Спрол Антон
Publisher: Эксмо
Year: 2018

Language: Russian
Pages: 274
City: Москва

Обложка 1 ......Page 1
Обложка 2 ......Page 272
Титульный ......Page 4
Выходные данные ......Page 5
Содержание ......Page 6
Экспериментируйте 3 ......Page 10
Введение ......Page 11
Стиль программирования ......Page 14
Почему С++ ......Page 15
Глава 1. Стратегии решения задач ......Page 17
Задача: как пересечь реку ......Page 19
Задача: скользящая восьмерка ......Page 23
Задача: скользящая пятерка ......Page 25
Вынесенные уроки ......Page 27
Задача: заполнить квадрат «Судоку» ......Page 28
Вынесенные уроки ......Page 29
Задача: открыть инопланетный замок ......Page 30
Планируйте решения ......Page 33
Переформулируйте задачи ......Page 35
Делите задачи ......Page 36
Упрощайте задачи ......Page 37
Ищите аналогии ......Page 39
Не расстраивайтесь ......Page 40
Упражнения ......Page 42
Глава2.Истинныеголоволомки ......Page 43
Задача: половина квадрата ......Page 44
Задача: линия (еще большее упрощение задачи с половиной квадрата) ......Page 45
Задача: посчитать на уменьшение, считая на увеличение ......Page 46
Задача: равнобедренный треугольник ......Page 47
Обработка ввода ......Page 50
Задача: проверка контрольной суммы Луна ......Page 51
Разбиение проблемы на части ......Page 52
Задача: преобразовать символ цифры в целое число ......Page 54
Задача: проверка контрольной суммы Луна, фиксированная длина ......Page 55
Задача: проверка простой контрольной суммы, фиксированная длина ......Page 56
Задача: положительное или отрицательное ......Page 58
Соберем все детали вместе ......Page 59
Задача: декодирование сообщения ......Page 61
Задача: чтение трех- или четырехзначного числа ......Page 65
Задача: чтение трех- или четырехзначного числа, дальнейшее упрощение ......Page 66
Упражнения ......Page 74
Глава 3.Решениезадач с массивами ......Page 77
Обзор основных свойств массивов ......Page 78
Копирование ......Page 79
Поиск определенного значения ......Page 80
Поиск по критерию ......Page 81
Быстрая и простая сортировка с помощью функции qsort ......Page 82
Легко модифицируемый алгоритм сортировки — сортировка вставками ......Page 83
Задача: нахождение моды ......Page 85
Рефакторинг ......Page 89
Массивы фиксированных данных ......Page 92
Нескалярные массивы ......Page 94
Многомерные массивы ......Page 96
В каких случаях использовать массивы ......Page 100
Упражнения ......Page 104
Глава 4. Решение задач с указателями и динамической памятью ......Page 106
Обзор основных свойств указателей ......Page 107
Структуры данных, размер которых определяется во время выполнения программы ......Page 108
Разделение памяти ......Page 109
В каких случаях использовать указатели ......Page 110
Стек и куча ......Page 111
Объем памяти ......Page 114
Решение задач с указателями ......Page 116
Задача: операции со строками переменной длины ......Page 117
Проверка на специальные случаи ......Page 123
Копирование созданной динамически строки ......Page 124
Задача: отслеживание неизвестного количества студенческих карточек ......Page 127
Построение списка узлов ......Page 128
Добавление узлов в список ......Page 131
Обход списка ......Page 133
Упражнения ......Page 136
Глава 5. Решение задач с классами ......Page 139
Обзор основных свойств классов ......Page 140
Инкапсуляция ......Page 142
Разделение задачи ......Page 143
Сокрытие ......Page 144
Читабельность ......Page 146
Задача: список класса ......Page 147
Базовый фреймворк класса ......Page 148
Служебные методы ......Page 152
Классы с динамическими данными ......Page 155
Задача: отслеживание неизвестного количества записей студентов ......Page 156
Добавление узла ......Page 158
Перегруппировка списка ......Page 160
Деструктор ......Page 164
Глубокое копирование ......Page 165
Общий обзор классов с динамической памятью ......Page 169
Фальшивый класс ......Page 170
Однозадачники ......Page 171
Упражнения ......Page 172
Глава 6. Решение задач с помощью рекурсии ......Page 174
Задача: подсчет количества попугаев ......Page 175
Подход 1 ......Page 176
Подход 2 ......Page 177
Задача: выявление лучшего клиента ......Page 179
Подход 1 ......Page 180
Подход 2 ......Page 182
Большая рекурсивная идея ......Page 184
Задача: вычисление суммы элементов целочисленного массива ......Page 185
Распространенные ошибки ......Page 187
Слишком много параметров ......Page 188
Глобальные переменные ......Page 189
Применение рекурсии к динамическим структурам данных ......Page 190
Рекурсия и связные списки ......Page 191
Задача: подсчет отрицательных чисел в односвязном списке ......Page 192
Рекурсия и двоичные деревья ......Page 193
Задача: нахождение наибольшего значения в двоичном дереве ......Page 195
Задача: нахождение количества листьев в двоичном дереве ......Page 196
Аргументы против рекурсии ......Page 199
Задача: отображение элементов связного списка в прямом порядке ......Page 201
Задача: отображение элементов связного списка в обратном порядке ......Page 202
Упражнения ......Page 203
Глава 7. Решение задач с помощью повторного использования кода ......Page 205
Хорошее и плохое повторное сиспользование кода ......Page 206
Кодовый блок ......Page 207
Шаблоны ......Page 208
Абстрактные типы данных ......Page 209
Библиотеки ......Page 210
Исследовательское обучение ......Page 211
Задача: староста ......Page 212
Анализ решения задачи выбора старосты ......Page 215
Задача: эффективный обход ......Page 216
Когда следует искать компонент ......Page 217
Нахождение компонента ......Page 218
Применение компонента ......Page 219
Анализ эффективного решения задачи с обходом ......Page 223
Выбор типа компонента ......Page 224
Задача: выборочная сортировка ......Page 226
Сравнение результатов ......Page 230
Упражнения ......Page 231
Глава 8. Думайте как программист ......Page 233
Использование своих сильных и слабых сторон ......Page 234
Планирование с учетом недостатков кодирования ......Page 235
Планирование с учетом недостатков дизайна ......Page 237
Планирование с учетом ваших сильных сторон ......Page 239
Составление мастер-плана ......Page 241
Решение любой задачи ......Page 243
Задача: жульничество при игре в «Виселицу» ......Page 244
Нахождение возможности для жульничества ......Page 245
Необходимые операции для обмана в игре «Виселица» ......Page 247
Исходный дизайн ......Page 249
Первичное кодирование ......Page 250
Анализ первоначальных результатов ......Page 258
Искусство решения задач ......Page 259
Изучение новых навыков программирования ......Page 260
Выделите время на учебу ......Page 261
Изучите отличия ......Page 262
Изучайте хорошо написанный код ......Page 263
Новые библиотеки ......Page 264
Выберите курс ......Page 265
Заключение ......Page 266
Упражнения ......Page 267
Предметный указатель ......Page 269