- •Указатели: Определение и использование (примеры)
- •Операции над указателями и адресами.
- •Методы доступа к элементам массивов.
- •Двойные указатели. Назначение и использование (примеры).
- •Типовая структура программы на языке Си.
- •Методы передачи параметров в функцию.
- •Рекурсивные функции. Пример использования.
- •Организация работы с файлами. Открытие, закрытие и режимы доступа.
- •Динамические массивы.
- •Динамические структуры.
- •Списки. Линейные и связанные списки.
- •Стеки и очереди. Организация хранения в стеке.
- •Линейная сортировка, метод пузырька.
- •Сортировка вставкой, посредством выбора.
- •Сортировка списков путем слияния.
- •Быстрая сортировка.
- •Алгоритмы поиска.
- •Классы памяти, время жизни объектов
- •Правила инициализации переменных с различным временем жизни.
- •Модели памяти компьютера при работе с программами.
- •Управление экраном и курсором в текстовом режиме,
- •Организация видеопамяти в текстовом режиме. Управление цветом.
- •Понятие Объектно-ориентированного программирования.
- •Методология объектно-ориентированного программирования.
- •37. Проектирование по. Стиль оформления программ.
- •Эффективность и технологичность программ
- •Программирование «с защитой от ошибок». Сквозной структурный контроль.
- •Виды контроля качества разрабатываемого по
- •Понятие структурного тестирования программ
- •Функциональное тестирование программ.
- •Отладка программного обеспечения, виды ошибок.
- •Методы отладки программного обеспечения.
- •45.Правила составления документации программного продукта
Динамические структуры.
Под динамическими структурами наш дорогой преподаватель понимает массив структуры,память под который выделана динамическии.Пример:
#define N=7
struct NOTE{
char name[10];
char surname[20];
char phone[10];
unsigned int dr[4];
}dbase[N]
Здесь dbase[N] динамическая стуктура. Дальше втирайте ему про динамическое распределение памяти.
з.ы. Динамическая память — оперативная память компьютера, предоставляемая программе (процедуре, подпрограмме) при её работе. Динамическое размещение данных означает распределение динамической памяти непосредственно при работе программы или процедуры (подпрограммы). В отличие от этого статическое размещение осуществляется в момент запуска программы или процедуры. На этапе компиляции не известны ни тип, ни количество динамически размещаемых данных.
с надеждой на понимание чеширский кот.
Динамические структуры данных
Можно выделить следующие основные классы динамических объектов:
· упорядоченные совокупности характеризуются тем, что для них значим физический порядок встраивания элементов. Пример - массивы;
· неупорядоченные совокупности или коллекции - физический порядок объектов в представлении данных незначим, встраивание объектов в коллекцию произвольно. Примеры - хэши, одно‑ и двусвязные списки, деревья;
· последовательности - физический порядок объектов в представлении данных незначим, но значим порядок вставки/удаления, которые выполняются только в определенных точках последовательности. Примеры - стеки, очереди.
Существуют 2 основных возможности для организации динамических структур:
· библиотеки функций classlib;
· организация динамических наборов структур, связанных указателями на структурные типы.
Реализация динамических структур через предопределенные классы требует подключения библиотеки TCLASSS.LIB (если выбрана модель Small, также есть TCLASSL.LIB для Large) из папкиBORLANDC\CLASSLIB\LIB к файлу проекта, а также включения в строку опций Include Directories маршрута \BORLANDC\CLASSLIB\INCLUDE. Если предположить, что среда установлена в папкуd:\BORLANDC, настройки путей могут иметь следующий вид:
Include Directories:
d:\BORLANDC\INCLUDE; d:\BORLANDC\CLASSLIB\INCLUDE; d:\BORLANDC\TVISION\DEMOS;.
Library directories:
d:\BORLANDC\LIB;d:\BORLANDC\TVISION\LIB;
d:\BORLANDC\CLASSLIB\LIB;.
Output Directory: .
Source Directories: d:\BORLANDC\BIN;.
Подробное рассмотрение иерархии классов библиотек classlib можно найти в специальной литературе, в данном пособии мы подробнее рассмотрим независимое программирование динамических списков структур.
В простейшем виде элемент списка представляет собой структурную переменную, содержащую один или несколько указателей на следующие или предшествующие элементы и любое число других полей, называемых информационными. Если список располагается в оперативной памяти, то информацией для поиска следующего элемента служит адрес (указатель) в памяти. Если список хранится в файле, информация о следующем элементе может включать смещение от начала файла, относительное положение указателя записи/считывания файла, ключ записи и любую другую информацию, позволяющую однозначно отыскать следующий элемент.
В простейшем случае односвязный (однонаправленный) список имеет одно информационное поле и один указатель на следующий элемент:
typedef struct list {
list * next;
int info;
};
Для работы с элементами такого списка достаточно определить статический указатель на начало списка
list * head;
и хотя бы один "буферный" элемент, который будет служить для ввода и временного хранения данных:
list work;
Как минимум, функции работы с элементами списка, принимающие в качестве параметра указатель на некоторый его элемент, должны реализовывать операции вывода по порядку всех или избранного элемента, добавление и удаление элементов с выделением и высвобождением памяти, возможно, также поиск элементов, определение того, содержится ли уже в списке нужный элемент и т.п.
Например, функция вывода всех элементов списка, использующая глобальный указатель root на его вершину, могла бы иметь следующий вид:
struct list *root;
//Указатель на вершину списка
void List (void) {
struct list *iter = root;
int i = 0;
while(iter != NULL) {
//Пока указатель не пуст
printf ("\n элемент %2d: (%d)",
i++,iter->info);
//Напечатать очередной элемент списка
iter = iter->next;
//и перейти к след. элементу
}
}