Оглавление....7
Список листингов ....12
Предисловие....17
От научного редактора русского издания....24
От издательства....25
Глава 1. Основы программирования....26
1.1. Ваша первая программа....26
Вопросы и ответы....33
Упражнение....35
1.2. Встроенные типы данных....36
Выводы....58
Вопросы и ответы (строки)....58
Вопросы и ответы (целые числа)....59
Вопросы и ответы (числа с плавающей точкой)....61
Вопросы и ответы (переменные и выражения)....62
Упражнения....64
1.3. Условные переходы и циклы....69
Выводы....96
Вопросы и ответы....97
Упражнения....100
1.4. Массивы....107
Выводы....132
Вопросы и ответы....133
Упражнения....134
Упражнения повышенной сложности....137
1.5. Ввод и вывод....141
Выводы....173
Вопросы и ответы....173
Упражнения....175
Упражнения повышенной сложности....179
1.6. Пример: случайный серфинг....181
Выводы....196
Упражнения....197
Упражнения повышенной сложности....199
Глава 2. Функции и модули....200
2.1. Определение функций....201
Вопросы и ответы....225
Упражнения....226
Упражнения повышенной сложности....229
2.2. Библиотеки и клиенты....232
Вопросы и ответы....261
Упражнения....261
Упражнения повышенной сложности....264
2.3. Рекурсия....266
Выводы....293
Вопросы и ответы....294
Упражнения....295
Упражнения повышенной сложности....297
2.4. Пример: задача о протекании....301
Выводы....319
Вопросы и ответы....322
Упражнения....323
Упражнения повышенной сложности....324
Глава 3. Объектно-ориентированное программирование....327
3.1. Использование типов данных....328
Вопросы и ответы....366
Упражнения....370
Упражнения повышенной сложности....373
3.2. Создание типов данных....376
Вопросы и ответы....410
Упражнения....412
Упражнения повышенной сложности....416
3.3. Проектирование типов данных....421
Вопросы и ответы....460
Упражнения....463
Упражнения по проектированию типов данных....464
Упражнения повышенной сложности....466
3.4. Пример: моделирование задачи п тел....468
Вопросы и ответы....478
Упражнения....478
Упражнения повышенной сложности....479
Глава 4. Алгоритмы и структуры данных....480
4.1. Быстродействие....481
Выводы....505
Вопросы и ответы....506
Упражнения....508
Упражнения повышенной сложности....513
4.2. Сортировка и поиск....516
Выводы....540
Вопросы и ответы....542
Упражнения....543
Упражнения повышенной сложности....545
4.3. Стеки и очереди....548
Вопросы и ответы....591
Упражнения....594
Упражнения для связных списков....597
Упражнения повышенной сложности....598
4.4. Таблицы символов....603
Вопросы и ответы....635
Упражнения....636
Упражнения для бинарных деревьев....640
Упражнения повышенной сложности....641
4.5. Пример: феномен «тесного мира»....647
Выводы....677
Вопросы и ответы....679
Упражнения....680
Упражнения повышенной сложности....684
Глава 5. Теория вычислений....688
5.1. Формальные языки....691
Выводы....730
Вопросы и ответы....731
Упражнения....732
Упражнения повышенной сложности....735
5.2. Машины Тьюринга....738
Вопросы и ответы....753
Упражнения....753
Упражнения повышенной сложности....756
5.3. Универсальность....756
Вопросы и ответы....768
Упражнения повышенной сложности....769
5.4. Вычислимость....775
Вопросы и ответы....788
Упражнения....789
Упражнения повышенной сложности....790
5.5. Вычислительная сложность....791
Главный вопрос....810
Вопросы и ответы....828
Упражнения....830
Упражнения повышенной сложности....836
Глава 6. Вычислительная машина....839
6.1. Представление информации....840
Выводы....867
Вопросы и ответы....868
Упражнения....871
Упражнения повышенной сложности....874
6.2. Машина TOY....875
Вопросы и ответы....897
Упражнения....898
6.3. Программирование на машинном языке....901
Вопросы и ответы....916
Упражнения....917
Упражнения повышенной сложности....922
6.4. Виртуальная машина TOY....924
Вопросы и ответы....944
Упражнения....945
Упражнения повышенной сложности....946
Глава 7. Построение вычислительного устройства....949
7.1. Булева логика....950
Упражнения....961
Упражнения повышенной сложности....962
7.2. Базовая модель электронной схемы....964
Вопросы и ответы....972
Упражнения....973
7.3. Комбинационные схемы....974
Вопросы и ответы....1005
Упражнения....1005
Упражнения повышенной сложности....1008
7.4. Последовательностные схемы....1011
Выводы....1026
Вопросы и ответы....1028
Упражнения....1029
Упражнения повышенной сложности....1031
7.5. Цифровые вычислительные устройства....1032
Вопросы и ответы....1053
Упражнения....1054
Упражнения повышенной сложности....1054
Заключение....1055
Глоссарий....1058
API....1067
Преподаватели Принстонского университета Роберт Седжвик и Кевин Уэйн создали универсальное введение в Computer Science на языке Java, которое идеально подходит как студентам, так и профессионалам. Вы начнете с основ, освоите современный курс объектно-ориентированного программирования, и перейдете к концепциям более высокого уровня: алгоритмам и структурам данных, теории вычислений и архитектуре компьютеров.
И главное — вся теория рассматривается на практических и ярких примерах: прикладная математика, физика и биология, числовые методы, визуализация данных, синтез звука, обработка графики, финансовое моделирование и многое другое.
«Наша главная цель — дать конкретные знания и навыки, необходимые для разработки эффективных решений любой задачи по программированию. »
Роберт Седжвик и Кевин Уэйн