24.03.2015 Views

Harold Abelson and Gerald Jay Sussman with ... - ftp.linux.kiev.ua.

Harold Abelson and Gerald Jay Sussman with ... - ftp.linux.kiev.ua.

Harold Abelson and Gerald Jay Sussman with ... - ftp.linux.kiev.ua.

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

Оглавление<br />

Предисловие . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5<br />

Предисловие ко второму изданию . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11<br />

Предисловие к первому изданию. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13<br />

Благодарности . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16<br />

1. Построение абстракций с помощью процедур . . . . . . . . . . . . . . . . . . . . . . . . . . 20<br />

1.1. Элементы программирования . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24<br />

1.1.1. Выражения . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25<br />

1.1.2. Имена и окружение . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27<br />

1.1.3. Вычисление комбинаций . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28<br />

1.1.4. Составные процедуры . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31<br />

1.1.5. Подстановочная модель применения процедуры . . . . . . . . . . . . . 33<br />

1.1.6. Условные выражения и предикаты . . . . . . . . . . . . . . . . . . . . . . . . . 36<br />

1.1.7. Пример: вычисление квадратного корня методом Ньютона . . . 41<br />

1.1.8. Процедуры как абстракции типа «черный ящик». . . . . . . . . . . . 45<br />

1.2. Процедуры и порождаемые ими процессы . . . . . . . . . . . . . . . . . . . . . . . . . 50<br />

1.2.1. Линейные рекурсия и итерация . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51<br />

1.2.2. Древовидная рекурсия . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57<br />

1.2.3. Порядки роста . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62<br />

1.2.4. Возведение в степень . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64<br />

1.2.5. Нахождение наибольшего общего делителя . . . . . . . . . . . . . . . . . 68<br />

1.2.6. Пример: проверка на простоту . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70<br />

1.3. Формулирование абстракций с помощью процедур высших порядков<br />

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76<br />

1.3.1. Процедуры в качестве аргументов . . . . . . . . . . . . . . . . . . . . . . . . . . 77<br />

1.3.2. Построение процедур с помощью lambda . . . . . . . . . . . . . . . . . . . . 82<br />

1.3.3. Процедуры как обобщенные методы . . . . . . . . . . . . . . . . . . . . . . . . 86<br />

1

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!