Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
BOOK_С_INTUIT.docx
Скачиваний:
31
Добавлен:
11.02.2015
Размер:
6.34 Mб
Скачать

Контрольные вопросы

  1. Когда следует применять рекурсивные алгоритмы?

  2. Какие методы и приемы устранения «хвостовой» рекурсии Вам известны?

  3. Какие проблемы могут возникать при реализации рекурсивных алгоритмов на электронных вычислительных машинах?

  4. В чем отличие глубины рекурсии от рекурсивного вызова?

  5. В каких задачах в программировании применение рекурсии оправдано?

Библиографический список

  1. Картавов СА. Математические термины : справ.-библиогр. слов. / С. А. Картавов. – Киев : Выща шк., 1988. – 295 с.

  2. Сэджвик Р. Фундаментальные алгоритмы на С++. Анализ / Структуры данных / Сортировка / Поиск : пер. с англ. / Роберт Сэджвик. – Киев : ДиаСофт, 2001. – 688 с.

  3. Новицкая Ю. В. Основы логического и функционального программирования : учеб. пособие / Ю. В. Новицкая. – Новосибирск : Изд-во НГТУ, 2006. – 60 с.

  4. Дейтел ХМ. Как программировать на С : пер. с англ. / Х. М. Дейтел, П. Дж. Дейтел. – 4-е изд. – М. : Бином-Пресс, 2006. – 912 с.

  5. Хэзфилд Р. Искусство программирования на С. Фундаментальные алгоритмы, структуры данных и примеры приложений. Энциклопедия программиста : пер. с англ. / Ричард Хэзвилд, Лоуренс Кирби. – Киев : ДиаСофт, 2001. – 736 с.

  6. Подбельский ВВ. Программирование на языке Си : учеб. пособие / В. В. Подбельский, С. С. Фомин. – 2-е изд., доп. – М. : Финансы и статистика, 2007. – 600 с.

  7. Прата С. Язык программирования С. Лекции и упражнения : пер. с англ. / С. Прата. – 5-е изд. – М. : Вильямс, 2006. – 960 с.

  8. Шилдт Г. Полный справочник по С : пер. с англ. / Г. Шилдт. – 4-е изд. – М. : Вильямс, 2007. – 704 с.

  9. Порублев ИН. Алгоритмы и программы. Решение олимпиадных задач / И. Н. Порублев, А. Б. Ставровский. – М. : Вильямс, 2007. – 480 с.

  10. Мейер Б. Методы программирования : в 2-х т. : пер. с франц. / Б. Мейер, К. Бодуэн. – М. : Мир, 1982. – Т. 2. – 368 с.

  11. Вирт Н. Алгоритмы и структуры данных : пер. с англ. / Н. Вирт. – М. : Мир, 1989. – 360 с.

  12. Хусаинов Б. С. Структуры и алгоритмы данных. Примеры на языке Си : Учеб. Пособие / Б. С. Хусаинов. – М. : Финансы и статистика, 2004. – 464 с.

  13. С/С++. Архив программ /А. Фридман, Л. Кландер, М. Михаэлис, Х. Шильдт. – М. : БИНОМ, 2001. – 640 с.

  14. Ахо А. В. Структуры данных и алгоритмы : учеб. пособие : пер. с англ. / А. В. Ахо, Д. Хопкрофт, Д. Д. Ульман. – М. : Вильямс, 2000. – 384 с.

Тема 19 Препроцессор языка с

Рассматриваются практически важные свойства препроцессора языка Си примеры типовых препроцессорных директив и конструкций.

ТЕОРЕТИЧЕСКАЯ ЧАСТЬ

Препроцессор (англ.preprocessor) – программа, выполняющая предварительную обработку входных данных для другой программы [1]. Препроцессор языка программированияСпросматривает программу до компилятора и заменяет в ней определенные сочетания символов (символические аббревиатуры) на соответствующие директивы. Он отыскивает и подключает к программе необходимые файлы и может изменить условия компиляции [1]. Препроцессор имеет тот же смысл, что и буферный процессор.

Препроцессор языка Свыполняет макроподстановку, условную компиляцию и включение именованных файлов. Строки, начинающиеся со знака# (перед которыми разрешены символы пустого пространства), задают препроцессору инструкции-директивы. Их синтаксис не зависит от остальной части языка, они могут фигурировать где угодно и оказывать влияние (независимо от области действия) вплоть до конца единицы трансляции. Границы строк принимаются во внимание: каждая строка анализируется отдельно (но есть возможность и сцеплять их). Лексемами для препроцессора являются все лексемы языка и последовательность символов, задающие имена файлов. Кроме того, любой символ, не определенный каким-либо другим способом, также воспринимается как лексема [2]. Влияние символов пустого пространства, отличающихся от пробелов и горизонтальных табуляций, внутри строк препроцессора не определено.

В предыдущих темах уже встречались строки с начальным символом #:#includeи#define. Первая директива (инструкция) использовалась для подключения заголовочных файлов, главным образом из библиотеки языкаС, а вторая – для подстановки символов или чисел в определенные места программного кода.

Имеются следующие директивы препроцессора:

#define

#endif

#ifdef

#line

#elif

#error

#ifndef

#pragma

#else

#if

#include

#undef

Каждая директива препроцессора должна занимать отдельную строку. Например, строка

#include <stdio.h> #include <stdlib.h>

рассматривается как недопустимая [3].

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]