[ Миронченко ] Императивное и объектно-ориентированное програмирование на Turbo Pascal и Delphi
.pdfȺ. ɋ. Ɇɢɪɨɧɱɟɧɤɨ
ɂɦɩɟɪ ɬɢɜɧɨɟ ɢ ɨɛɴɟɤɬɧɨ-ɨɪɢɟɧɬɢɪɨɜ ɧɧɨɟ ɩɪɨɝɪ ɦɦɢɪɨɜ ɧɢɟ
ɧ Turbo Pascal ɢ Delphi
Ƚɥɭɛɨɤɨɟ ɩɨɝɪɭɠɟɧɢɟ
ȼɆȼ
Ɉɞɟɫɫ
2007
Ʉ 32.973.2-018
Ɇ642
ɍȾɄ 004.438
Ɋɟɰɟɧɡɟɧɬ
Ɇɡɭɪɨɤ ɂ.ȿ., ɤ ɧɞɢɞ ɬ ɬɟɯɧɢɱɟɫɤɢɯ ɧ ɭɤ, ɞɨɰɟɧɬ ɤ ɮɟɞɪɵ ɦ ɬɟɦ ɬɢɱɟɫɤɨɝɨ ɨɛɟɫɩɟɱɟɧɢɹ ɤɨɦɩɶɸɬɟɪɧɵɯ ɫɢɫɬɟɦ Ɉɞɟɫɫɤɨɝɨ ɧ ɰɢɨɧ ɥɶɧɨɝɨ ɭɧɢɜɟɪɫɢɬɟɬ ɢɦ. ɂ.ɂ. Ɇɟɱɧɢɤɨɜ
ɂɦɩ ɪ ɬɢɜɧɨ ɢ ɨɛɴ ɤɬɧɨ-ɨɪɢ ɧɬɢɪɨɜ ɧɧɨ ɩɪɨɝɪ ɦɦɢɪɨɜ ɧɢ ɧ Turbo Pascal ɢ Delphi /
Ⱥ.ɋ. Ɇɢɪɨɧɱɟɧɤɨ – Ɉɞɟɫɫ : ȼɆȼ, 2007. – 408 ɫ.: ɢɥ.
ISBN 978-966-413-039-1
ȼ ɤɧɢɝɟ ɩɨɫɥɟɞɨɜɚɬɟɥɶɧɨ ɢɡɥɚɝɚɸɬɫɹ ɤɨɧɰɟɩɰɢɢ ɢɦɩɟɪɚɬɢɜɧɨɝɨ ɢ ɨɛɴɟɤɬɧɨɨɪɢɟɧɬɢɪɨɜɚɧɧɨɝɨ ɩɪɨɝɪɚɦɦɢɪɨɜɚɧɢɹ ɢ ɪɟɚɥɢɡɚɰɢɹ ɷɬɢɯ ɩɪɢɧɰɢɩɨɜ ɜ ɹɡɵɤɚɯ Turbo Pascal ɢ Delphi. Ⱥɧɚɥɢɡɢɪɭɸɬɫɹ ɧɟɞɨɫɬɚɬɤɢ ɨɛɴɟɤɬɧɨ-ɨɪɢɟɧɬɢɪɨɜɚɧɧɨɝɨ ɩɪɨɝɪɚɦɦɢɪɨɜɚɧɢɹ ɢ ɩɪɟɞɥɚɝɚɟɬɫɹ ɦɟɬɨɞ ɞɥɹ ɢɯ ɭɫɬɪɚɧɟɧɢɹ.
ɍɱɟɛɧɢɤ ɩɨɞɯɨɞɢɬ ɤɚɤ ɞɥɹ ɡɚɧɹɬɢɣ ɜ ɭɱɟɛɧɵɯ ɡɚɜɟɞɟɧɢɹɯ, ɬɚɤ ɢ ɞɥɹ ɫɚɦɨɫɬɨɹɬɟɥɶɧɨɝɨ ɢɡɭɱɟɧɢɹ ɹɡɵɤɨɜ Turbo Pascal ɢ Delphi. ȼ ɭɱɟɛɧɢɤɟ ɛɨɥɟɟ 140 ɩɪɢɦɟɪɨɜ ɩɪɨɝɪɚɦɦ ɢ ɨɤɨɥɨ 210 ɡɚɞɚɱ ɩɨ ɩɪɨɝɪɚɦɦɢɪɨɜɚɧɢɸ ɢ ɦɚɬɟɦɚɬɢɤɟ ɞɥɹ ɫɚɦɨɫɬɨɹɬɟɥɶɧɨɝɨ ɪɟɲɟɧɢɹ.
Ⱦɥɹ ɫɬɭɞɟɧɬɨɜ ɜɭɡɨɜ, ɭɱɚɳɢɯɫɹ ɫɬɚɪɲɢɯ ɤɥɚɫɫɨɜ ɲɤɨɥ ɢ ɥɢɰɟɟɜ ɫ ɭɝɥɭɛɥɟɧɧɵɦ ɢɡɭɱɟɧɢɟɦ ɢɧɮɨɪɦɚɬɢɤɢ ɢ ɮɢɡɢɤɨ-ɦɚɬɟɦɚɬɢɱɟɫɤɢɯ ɞɢɫɰɢɩɥɢɧ, ɚ ɬɚɤɠɟ ɞɥɹ ɜɫɟɯ ɢɧɬɟɪɟɫɭɸɳɢɯɫɹ ɢɧɮɨɪɦɚɬɢɤɨɣ ɢ ɩɪɨɝɪɚɦɦɢɪɨɜɚɧɢɟɦ.
Ɇ 2404010000 2007
© Ɇɢɪɨɧɱɟɧɤɨ Ⱥ.ɋ., 2007
|
3 |
Краткое содержание |
|
Предисловие ...................................................................................................... |
10 |
Благодарности ...........................……................................................................. |
11 |
Список условных обозначений ........................................................................... |
12 |
Часть 1: Императивное программирование ........................................................ |
13 |
Глава 0. Программистское введение ........................................................ |
13 |
Глава 1. Математическое введение ......................................................... |
24 |
Глава 2. Первые шаги .............................................................................. |
41 |
Глава 3. Использование оператора if ........................................................ |
52 |
Глава 4. Операторы циклов ..................................................................... |
66 |
Глава 5. Несколько операторов на закуску .............................................. |
81 |
Глава 6. Массивы ..................................................................................... |
89 |
Глава 7. Подпрограммы ........................................................................... |
106 |
Проект 1. Длинная арифметика ................................................................ |
126 |
Глава 8. Рекурсия ..................................................................................... |
130 |
Глава 9. Модули и записи ........................................................................ |
154 |
Глава 10. Матрицы, множества и перечисления ...................................... |
165 |
Проект 2: Теория голосования ................................................................. |
184 |
Глава 11: Символы и строки ................................................................... |
189 |
Глава 12: Файлы ...................................................................................... |
196 |
Проект 3: Эволюционно стабильные стратегии ........................................ |
207 |
Глава 13. Динамическая память .............................................................. |
213 |
Проект 4. Поиск сходных слов ................................................................ |
244 |
Глава 14. Выведение ................................................................................ |
247 |
Часть 2: Объектно-ориентированное программирование ..................................... |
256 |
Предисловие ко 2-й части ................................................................................. |
256 |
Глава 15. Основы Delphi ......................................................................... |
257 |
Глава 16. Объектно-ориентированное программирование ........................ |
278 |
Проект 5: Криптография ......................................................................... |
320 |
Глава 17. Визуальное программирование ................................................ |
323 |
Глава 18. Графика ................................................................................... |
351 |
Проект 6: Беовульф и Нибелунги ............................................................ |
368 |
Глава 19. Проблемы ООП. Везенспрограммирование .............................. |
372 |
Напутствие .............................................................................................. |
387 |
Решения и ответы ................................................................................... |
388 |
Список литературы ................................................................................. |
403 |
4
Полное содержание
Предисловие |
..............................................................................……….. |
10 |
Благодарности |
…….........…........................…........................................ |
11 |
Список условных обозначений ................................................................ |
12 |
|
Часть 1: Императивное программирование ................................................... |
13 |
|
Глава 0. Программистское введение ........................................................ |
13 |
|
0.1. Какие бывают языки программирования ................................. |
13 |
|
0.2. Устройство ПК ..............................................................…….. |
18 |
|
0.3. Классификация языков программирования .............................. |
20 |
|
0.4. Как ПК понимает языки программирования ............................. |
22 |
|
Глава 1. Математическое введение ......................................................... |
24 |
|
1.1. Множества ..............................................................………….. |
24 |
|
1.2. Операции над множествами ..................................................... |
24 |
1.3.Числа .............................................................………………… 25
1.4.Системы счисления ..............................................................… 30
1.5. Арифметические действия в двоичной системе счисления …... |
31 |
||
1.6. Представление двоичных чисел в ПК |
………………………….. 32 |
||
1.7. Шестнадцатеричная система счисления |
………………………... 34 |
||
1.8. Более общая точка зрения на системы счисления |
……………... 34 |
||
1.9. Фибоначчиева система счисления |
……………………………… 35 |
||
1.10. Метод математической индукции |
…………………………….. 37 |
||
1.11. Логарифмы ………………….................................................. |
38 |
||
1.12. Последовательности и прогрессии |
…………………………….. 38 |
||
Задачи |
..............................................................…………………… |
39 |
|
Глава 2. Первые шаги ..............................................................………….. |
41 |
||
2.1. Базовые концепции процедурного программирования ..……… |
41 |
||
2.2. Что нам понадобится для работы |
|
43 |
|
2.3. Первые программы ..............................................................… |
43 |
||
2.4. Ввод значений с клавиатуры. Процедура Readln(x) |
…………... |
49 |
|
2.5. Несколько заключительных слов |
………………………………. 50 |
||
Задачи |
..............................................................…………………… |
50 |
|
Глава 3. Использование оператора if ........................................................ |
|
52 |
|
3.1. Немного справочной информации |
……………………………… 52 |
||
3.2. Структура программы в Turbo Pascal |
.…………………………. 53 |
3.3.Числовые типы данных …………………………………………. 54
3.4.Ограничены ли вычислительные возможности компьютера? ... 55
3.5. Условный оператор ................................................................. |
|
56 |
3.6. Условный оператор с ветвью else |
................................……….. |
59 |
3.7. Делимость чисел. Операции div, mod .................................….. |
59 |
|
3.8. Решение линейного уравнения |
.................................………… |
60 |
3.9.Тип Boolean .................................……………………………… 62
3.10.Логические операции .................................………………….. 62
Задачи ..................................................................………………… |
65 |
Глава 4. Операторы циклов .................................………………………… |
66 |
4.1.Цикл for …………………………………………………………… 66
4.2.Вычисление факториала .................................………………... 67
5
4.3. |
Циклы while и repeat .................................…………………….. |
69 |
4.4. |
Нахождение НОК и НОД 2-х чисел .................................……. |
70 |
4.5.Процедуры break и continue .................................…………….. 74
4.6.Проверка чисел на простоту .................................…………….. 75
4.7.Как компьютер может вычислить значение функции? ……….. 76
Задачи ..................................………………………………………... |
78 |
Глава 5. Несколько операторов на закуску ………................................... |
81 |
5.1.Оператор case .................................……………………………. 81
5.2.Символьный тип .................................………………………… 82
5.3. Работа с клавиатурой .................................…………………… |
83 |
5.4. Генератор псевдослучайных чисел .................................……. |
85 |
5.5. Директивы компилятора .................…...............……………… |
86 |
5.6. Что мы уже знаем о структурном программировании .............. |
87 |
Глава 6. Массивы .................................……………………………………. |
89 |
6.1.Что такое массив? .................................……………………….. 89
6.2.Примеры работы с массивами .................................………….. 90
6.3.Моделирование многочленов .................................………….. 92
6.4.Поиск в массиве .................................…………………………. 96
6.5.Сортировка массива .................................…………………….. 98
6.6. Сортировка методом пузырька (обмена) ..............................… 98
6.7.Сортировка выбором .................................…………………… 100
6.8.Сортировка вставками .................................………………….. 101
6.9. Сравнение простейших алгоритмов сортировки ...................... |
102 |
|||
Задачи |
.................................………………………………………… |
104 |
||
Глава 7. Подпрограммы .................................…………………………….. |
106 |
|||
7.1. Описание подпрограмм |
.................................…………………. |
106 |
||
7.2. Передача массивов в подпрограммы |
.................................…… |
109 |
||
7.3. Параметры подпрограмм |
.................................……………….. |
111 |
||
7.4. Локальные и глобальные переменные |
.................................….. |
115 |
||
7.5. Открытые параметры-массивы .................................………… |
115 |
|||
7.6. Совместимость и приведение типов |
.................................…… |
116 |
||
7.7. Бестиповые ссылки .................................……………………… |
118 |
|||
7.8. Процедурный и функциональный типы ................................... |
121 |
|||
Задачи |
.................................………………………………………… |
124 |
||
Проект 1. Длинная арифметика .................................…………………….. |
126 |
|||
Глава 8. Рекурсия .................................……………………………………. |
130 |
8.1.Рекурсия в биологии .................................…………………….. 130
8.2.Рекурсия в литературе .................................………………….. 130
8.3.Рекурсия в математике .................................………………….. 131
8.4.Зачем нужна рекурсия в программировании? ........................... 132
8.5.Алгоритм Евклида .................................……………………….. 134
8.6. Вычисление натуральной степени числа ..............................… |
135 |
8.7. Приближенное решение уравнения методом бинарного деления |
135 |
8.8.Рекурсия contra Итерация .................................………………. 138
8.9.Быстрая сортировка .................................……………………… 141
8.10.Генерирование перестановок .................................………….. 143
8.11.Переборные алгоритмы .................................……………….. 145
6
8.12. Косвенная рекурсия .................................…………………… |
147 |
8.13. В чем итерация выигрывает у рекурсии ................................. |
150 |
8.14. Рекурсия в LISP .................................………………………… |
150 |
8.15. Сопрограммы .................................…………………………... |
151 |
Задачи .................................………………………………………… |
152 |
Глава 9. Модули и записи .................................…………………………... |
154 |
9.1.Модули и их структура .................................…………………. 154
9.2.Взаимодействие модулей .................................………………. 158
9.3.Тип Запись .................................……………………………….. 159
9.4.Оператор with .................................……………………………. 162
9.5.Записи с вариантами .................................…………………….. 162
Задачи .................................………………………………………… |
163 |
Глава 10. Матрицы, множества и перечисления .................................….. |
165 |
10.1. Матрицы .................................………………………………… |
165 |
10.2. Обобщение процедур работы с матрицами ............................. |
167 |
10.3.Матрицы в математике ……………….................................... 170
10.4.Действия над матрицами .................................………………. 171
10.5.Множества ………………………………………………………. 173
10.6.Сортировка подсчетом .................................…………………. 174
10.7.Перечисляемый тип .................................…………………… 176
10.8.Магические квадраты .................................………………….. 178
Задачи .................................………………………………………… |
181 |
Проект 2: Теория голосования .................................…………………….. |
184 |
Глава 11: Символы и строки .................................……………………….. |
189 |
11.1.Массивы символов .................................…………………….. 189
11.2.Тип String .................................……………………………….. 189 Задачи .................................………………………………………… 195
Глава 12: Файлы .................................……………………………………... |
196 |
12.1. Логические и физические файлы .................................……... |
196 |
12.2.Открытие и закрытие файлов .................................………….. 196
12.3.Текстовые файлы .................................……………………….. 197
12.4.Типизированные файлы .................................………………. 198
12.5. Последовательный и прямой доступ к файлам ...................... |
199 |
12.6.Буфер ввода/вывода .................................…………………… 200
12.7.Бестиповые файлы .................................…………………….. 201
12.8. О количестве обращений к файлу |
.................................……. |
203 |
Задачи .................................………………………………………… |
206 |
|
Проект 3: Эволюционно стабильные стратегии |
.................................…… |
207 |
1. Постановка задачи ............................……………………………. |
207 |
|
2. Моделирование жизни популяции ..............................………….. |
208 |
|
Глава 13. Динамическая память .................................…………………… |
213 |
|
13.1. Структура памяти, доступной программе ............................. |
213 |
|
13.2. Использование бестиповых указателей ................................. |
216 |
|
13.3. Указатель Nil .................................……………………………. |
219 |
|
13.4. Обобщенная сортировка массива |
.................................……... |
220 |
13.5. Указатели и ссылки .................................…………………….. |
223 |
|
13.6. Динамические структуры данных |
.................................……. |
223 |
7
13.7.Стеки .................................……………………………………. 224
13.8.Однонаправленные списки .....................…..........…………… 227
13.9.Кольцевые списки .................................……………………… 230
13.10.Характеристика списков .................................……………… 233
13.11.Деревья .................................………………………………… 233
13.12.Разбор формулы .................................……………………….. 234
13.13.Сортировка с помощью дерева .................................………. 239
13.14.Характеристика деревьев .................................…………….. 242
Задачи .................................………………………………………… |
242 |
Проект 4. Поиск сходных слов .................................…………………….. |
244 |
Глава 14. Выведение .................................………………………………… |
247 |
14.1. Программа и модульное программирование ........................... |
247 |
14.2. Простейший язык программирования .................................… |
248 |
14.3. Все ли могут алгоритмы? .................................……………… |
250 |
14.4. Простейший модульный язык программирования ................. |
252 |
14.5.Взаимодействие с операционной системой …………………… 252
14.6.Загрузка ОС .................................…………………………….. 255
Часть 2: Объектно-ориентированное программирование ……………………. 256 |
|||
Предисловие ко 2-й части .................................…………………………... |
256 |
||
Глава 15. Основы Delphi |
.................................……………………………. |
257 |
|
15.1. Среда Delphi |
.................................……………………………. |
257 |
|
15.2. Консольное приложение в Delphi |
.................................……... |
258 |
|
15.3. Изменения в Delphi (по сравнению с ТР) ................................ |
259 |
||
15.4. Работа с динамической памятью |
.................................……... |
265 |
15.5.Использование диалогов .................................………………. 269
15.6.Работа с файлами .................................………………………. 270
15.7. |
Файлы, связанные с проектом .................................………… |
273 |
15.8. |
Динамически подключаемые библиотеки (DLL) ..................... |
274 |
15.9.Подключение библиотеки .................................……………… 275
15.10.Использование модулей в DLL .................................………. 277
15.11.Что нам дает DLL? .................................…………………… 277
Глава 16. Объектно-ориентированное программирование ……………….. 278
16.1.Модульный подход и ООП .................................…………….. 278
16.2.Как объединить данные с подпрограммами средствами процедурного программирования .................................…………… 278
16.3. Объявление класса. Способы доступа к элементам класса …. |
280 |
16.4. Конструкторы и деструкторы .................................………… |
281 |
16.5.Агрегация классов .................................……………………… 283
16.6.Наследование .................................…………………………... 287
16.7.Виртуальные функции, полиморфизм и динамическое
связывание .................................……………………………………. 292
16.8.Смешанные иерархии …………………………………………... 294
16.9.Иерархия классов Delphi .................................………………. 295
16.10.Абстрактные классы .................................………………….. 296
16.11.Методы класса .................................………………………… 298
16.12.Класс TObject .................................…………………………. 298
16.13. Приведение классов. Операторы is, as ................................. |
299 |
8
16.14. |
Метаклассы .................................……………………………. |
301 |
16.15. |
Методы метаклассов и метаобъектов ................................. |
304 |
16.16.Свойства .................................……………………………….. 305
16.17.Индексированные свойства .................................………….. 307
16.18.Взаимодействие классов .................................……………… 309
16.19.Интерфейсы .................................……………………………. 310
16.20.Новое в Delphi 2005 .................................………………….. 314
Задачи .................................………………………………………… |
319 |
||
Проект 5: Криптография .................................……………………………. |
320 |
||
Глава 17. Визуальное программирование |
.................................………… |
323 |
|
17.1. Оконные приложения в Windows |
.................................……... |
323 |
|
17.2. Создание оконных приложений в Delphi ................................ |
324 |
||
17.3. Первое оконное приложение |
.................................………….. |
324 |
|
17.4. Добавляем компоненты на форму |
.................................……. |
326 |
|
17.5. Убегающая кнопка. Обработчик события OnMouseMove …... |
328 |
||
17.6. Установка пароля на программу |
.................................………. |
332 |
|
17.7. Динамическое создание компонентов .................................… |
332 |
||
17.8. Общие свойства компонентов |
.................................………… |
333 |
|
17.9. Свойства элементов управления (TControl) ........................... |
334 |
17.10.События мыши и клавиатуры .................................……….. 334
17.11.TComboBox .................................……………………………. 335
17.12. Описание работы калькулятора .................................……... 335
17.13.Исключения .................................…………………………... 340
17.14.Класс TList .................................…………………………….. 344
17.15. Процессы и потоки .................................…………………… |
346 |
Задачи .................................………………………………………… |
350 |
Глава 18. Графика .................................…………………………………… |
351 |
18.1. Цвет кисти и пера .................................……………………… |
351 |
18.2.Рисование многоугольников .................................………….. 351
18.3.Рисование линий .................................……………………….. 352
18.4.Рисуем шашечную доску .................................………………. 354
18.5.Фракталы .................................……………………………….. 357
18.6. Построение самоподобных фракталов |
………………………... 361 |
|||||
18.7. Реализация черепашьей графики |
.............................………… |
362 |
||||
Задачи .................................………………………………………… |
366 |
|||||
Проект 6: Беовульф и Нибелунги .................................………………….. |
368 |
|||||
Глава 19. Проблемы ООП. Везенспрограммирование |
……………………. 372 |
|||||
19.1. История языков программирования |
………………………….. 372 |
|||||
19.2. Обзор некоторых объектно-ориентированных языков ……… 373 |
||||||
Simula |
.................................…………………………………… |
373 |
||||
Smalltalk .................................……………………………….. |
373 |
|||||
Delphi (Object Pascal) .................................…………………. 374 |
||||||
С++ |
.................................……………………………………... |
375 |
||||
Java |
.................................……………………………………... |
378 |
||||
19.3. Компиляция или интерпретация |
………………………………. 379 |
|||||
19.4. Недостатки объектно-ориентированных языков |
…………… 380 |
|||||
Описание самоорганизующихся систем |
……………………... 380 |
9
Объекты языкового уровня и объекты времени выполнения . 380
Взаимодействие программы с операционной системой ……. 381 |
|
19.5. Несколько терминов из биологии ……………………………. |
381 |
19.6. Везенспрограммирование (Wesensprogrammierung) …………. |
382 |
Основные понятия …………………………………………….. 382 Жизнь существа ……………………………………………….. 383
Убираем ненужные технические понятия …………………… |
384 |
Описание программ на разных языках ………………………. |
385 |
Общая картина .................................………………………… |
386 |
||
19.7. Что мы с вами еще не сделали …………………………………. 386 |
|||
Напутствие .................................…………………………………………… |
387 |
||
Решения и ответы |
.................................…………………………………… |
388 |
|
Глава 1 |
.................................………………………………………… |
388 |
|
Глава 2 |
.................................………………………………………… |
390 |
|
Глава 3 |
.................................………………………………………… |
391 |
|
Глава 4 |
.................................………………………………………… |
392 |
|
Глава 6 |
.................................………………………………………… |
396 |
|
Глава 7 |
.................................………………………………………… |
397 |
|
Глава 8 |
.................................………………………………………… |
399 |
|
Глава 10 |
.................................……………………………………….. |
400 |
|
Глава 11 |
.................................……………………………………….. |
400 |
|
Глава 18 |
.................................……………………………………….. |
401 |
|
Список литературы |
.................................…………………………………. |
403 |
10
Предисловие
Мне ненавистно все, что только поучает меня, не расширяя и непосредственно не оживляя моей деятельности.
Иоганн Вольфганг Гёте
Вкниге рассматриваются концепции императивного и объектноориентированного программирования и реализация этих принципов в языках Turbo Pascal и Delphi. Кроме того, в последней главе автор анализирует недостатки современных языков программирования и предлагает собственную концепцию везенспрограммирования, которая должна устранить многие из проблем.
Книга разделена на 2 части. В первой из них (главы 0-14) рассматриваются концепции императивного программирования.
Вглавах 0,1 вводятся основные понятия программирования и вкратце рассматриваются концепции языков программирования, существующие на сегодняшний день.
Вглавах 2-13 рассматривается язык Turbo Pascal, один из наиболее популярных языков программирования. По мере роста знаний читателя изученные понятия рассматриваются с более общих позиций, что позволяет глубже понять материал.
Глава 14 - заключительная в первой части учебника. В ней рассматривается ряд общих вопросов, связанных с процедурным программированием (написание обобщенных программ, структурированность языков) и с программированием вообще (понятие машин Тьюринга, ограниченность алгоритмических машин).
Вторая часть (главы 15-19) посвящена объектно-ориентированному программированию (ООП) и взаимодействию программ с операционной системой.
В19-й главе, после того, как вы уже основательно изучили императивные и объектно-ориентированные языки, автор анализирует достижения в области языков программирования и современное состояние языков. На мой взгляд, последние десятилетия не принесли для объектно-ориентированного программирования ничего существенного нового, а все изменения сводились к залатыванию дыр в существующих языках и обрастанию языков лишними понятиями. Поэтому автор предлагает свой выход из создавшегося положения – в переходе к везенспрограммированию.
Книга содержит более 140 примеров с исходным кодом (около 7500 строк кода),
вкоторых рассматриваются многие важные алгоритмы, часто встречающиеся на практике. В учебнике есть около 210 задач по программированию и математике, которые можно разделить на 3 уровня:
1. Задачи разной сложности, позволяющие лучше усвоить пройденный материал. 2. Задачи, расширяющие материал книги. Выполняя их, вы сможете не только потренироваться в решении интересных задач, но и глубже понять
рассмотренные в главах темы.
3. Проекты. В проектах вам предлагается тема для работы, а также несколько советов по ее выполнению. Работая над каким-то из проектов, вы можете посмотреть, на что вы способны.
Миронченко Андрей