Поиск по сайту:



Проверить аттестат

Мы принимаем Яндекс.Деньги

Смотри также:

Расчет основных технико-экономических показателей работы малого предприятия - Курсовая работа.

Метод Нелдера-Мида - Курсовая работа.

Указатели на функции - Курсовая работа.

Развитие романтических традиций польской музыкальной культуры в творчестве Фридерика Шопена - Курсовая работа.

Все новинки...

Курсовая работа «Указатели на функции»

Когда сдавалась работа2008
Где сдавалась работаБФ НГТУ
Оценка3
Файл: 1.27 МБ
Поделиться:

СОДЕРЖАНИЕ

1. Содержание
2. Задача
3. Теоретический материал
4. Структурное описание разработки
5. Функциональное описание
6. Работа с контрольным примером, вывод
7. Приложение: исходный код программы
 
 

Задача

Для заданной в варианте структуры данных, каждый элемент которой содержит указатели на элементы произвольного типа void*, написать итератор. Проверить его работу на примере вызова итератора для структуры данных с соответствующими элементами и конкретной функцией. СД - дерево, каждая вершина которого содержит указатель на элемент данных void* и не более 4 указателей на поддеревья. Итератор поиска первого подходящего firstthat и функция включения в поддерево с минимальной длиной ветви. Проверить на примере элементов данных - строк и функции проверки на длину строки - не менее 10 символов.

Теоретический материал

Рекурсия

Рекурсивной называют функцию, которая прямо или косвенно вызывает сама себя. Именно возможность прямого или косвенного вызова позволяет различать прямую и косвенную рекурсию. При каждом вызове рекурсивной функции создаётся новый набор объектов автоматической памяти, локализованных в теле функции.

Деревья

По аналогии с рекурсивным вызовом функции существуют структуры данных, допускающие рекурсивное определение: элемент структуры данных содержит один или несколько указателей на элементы такого же типа. Формально это соответствует тому факту, что в определении структурированного типа содержится указатель на себя самого.
Определение дерева имеет исключительно рекурсивную природу. Элемент этой структуры данных называется вершиной. Дерево представляет собой либо отдельную вершину, либо вершину, имеющую ограниченное число указателей другие деревья (ветвей). Нижележащие деревья для текущей вершины называются поддеревьями, а их вершины -потомками. По отношению к потомкам текущая вершина называется предком.

Указатели на функции

В языке C сами функции не являются переменными, но имеется возможность определить указатель на функцию, который можно обрабатывать, передавать другим функциям, помещать в массивы и т.д.
Указатель на функцию -это производный тип данных, который стоит несколько обособлено от остальных. Указателем на функцию называется переменная, которая содержит адрес некоторой функции. Соответственно, косвенное обращение по этому указателю представляет собой вызов функции. "Оригинальность" такого типа данных как указателя заключается в том, что указуемым элементом является не переменная (компонента данных программы), а функция (компонента алгоритма). Но сущность указателя при этом не меняется: если обычный указатель позволяет параметризовать алгоритм обработки данных, то указатель на функцию позволяет параметризовать сам алгоритм. Так, программа, использующая указатель в качестве параметра, может быть выполнена с произвольным указуемым элементом данных. Аналогично, программа, использующая указатель на функцию в качестве одного из своих параметров, становится универсальной в том смысле, что часть ее алгоритма может быть произвольной и в каждом конкретном случае выражается функцией, передаваемой указателем.

Итераторы

Итератор - функция, которая обрабатывает структуру данных, содержащую переменные произвольного типа, но одинакового в одном экземпляре структуры данных. Действие, которое надлежит выполнить над этими переменными в рамках общего алгоритма, определяется отдельной функцией, передаваемой в итератор как формальный параметр-указатель.

Структурное описание разработки

Построение дерева

Программа запрашивает у пользователя данные, и, интерпретируя их как строки произвольной длины, заносит их в дерево. Вставка в дерево происходит в ближайший к корню свободный узел. Каждый узел имеет четырёх сыновей, если при вставке в текущий узел один из сыновей пуст, вставка произойдёт в него. Если нет - произойдёт рекурсивный спуск к сыновьям - вставка в поддерево с наименьшей высотой.