Меню сайта
Наш опрос
Оцените мой сайт
Всего ответов: 5
Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0
Главная » 2014 » Июль » 22 » ДИНАМИЧЕСКИЕ ПЕРЕМЕННЫЕ
15:12
ДИНАМИЧЕСКИЕ ПЕРЕМЕННЫЕ
Статическойпеременной (постоянно размещенной в памяти) называется описанная явным образом в программе переменная, обращение к ней осуществляется по имени. Место в памяти для размещения статических переменных определяется при компиляции программы. Динамическиепеременные создаются и память для них выделяется во время выполнения программы. Размещаются динамические переменные в динамической области памяти (heap – области, или «куча»). Динамическая переменная не указывается явно в описаниях переменных и к ней нельзя обратиться по имени. Доступ к таким переменным осуществляется с помощью указателей и ссылок.Работа с динамической областью памяти реализуется с помощью следующих процедур и функций:New( var p: Pointer ) - процедура выделяет место в динамической области памяти для размещения динамической переменной p^ и ее адрес присваивает указателю p. Dispose( var p: Pointer ) - процедура освобождает участок памяти, выделенный для размещения динамической переменной процедурой New, и значение указателя p становится неопределенным. GetMem( var p: Pointer; size: Word ) – процедура выделяет участок памяти в heap - области, присваивает адрес его начала указателю p, размер участка в байтах задается параметром size. FreeMem( var p: Pointer; size: Word ) – процедура освобождает участок памяти, адрес начала которого определен указателем p, а размер - параметром size. Значение указателя p становится неопределенным. Mark( var p: Pointer ) – процедура записывает в указатель p адрес начала участка свободной динамической памяти на момент ее вызова. Release( var p: Pointer ) – процедура освобождает участок динамической памяти, начиная с адреса, записанного в указатель p процедурой Mark, то есть, очищает ту динамическую память, которая была занята после вызова процедуры Mark.MaxAvail- функция возвращает длину в байтах самого длинного свободного участка динамической памяти.MemAvail - функция полный объем свободной динамической памяти в байтах.SizeOf(X) функция возвращает объем в байтах, занимаемый X, причем X может быть либо именем переменной любого типа, либо именем типа.Динамические переменные можно организовывать в структуры:- стеки,- очереди,- деки,- списки,- двоичные деревья.Рассмотрим каждую структуру и приведем стандартные операции с ними: описание самой структуры, первоначальное создание, просмотр, удаление, добавление, вставка элементов.Стекомназывается динамическая структура данных, добавление компоненты в которую и исключение компоненты из которой производится из одного конца, называемого вершиной стека. Стек работает по принципу LIFO (Last-In, First-Out) - поступивший последним, обслуживается первым. Для формирования стека и работы с ним необходимо иметь две переменные типа указатель, первая из которых определяет вершину стека, а вторая - вспомогательная. Рис. 1. Организация стека.Описание стека можно осуществить с помощью типа запись, на который можно создать ссылку. В записи этот ссылочный тип используется для указания на следующую запись в ВВЕДИ ЦИФРЫ ЧИСЛА ДО ТОЧКИ: '); Read(C); ; Writeln('****** ВЫВОД РЕЗУЛЬТАТОВ ******'); Repeat DelComp(Top,i); Write(i); Until Top = NIL end. Очередьюназывается динамическая структура данных, добавление компоненты в которую производится в один конец, а выборка осуществляется с другого конца. Очередь работает по принципу: FIFO (First-In, First-Out) - поступивший первым, обслуживается первым. Для формирования очереди и работы с ней необходимо иметь три переменные типа указатель, первая из которых определяет начало очереди, вторая - конец очереди, третья – вспомогательная.Рис. 2. Организация очереди.Описание очереди дадим следующим образом: type ВВЕДИТЕСЛОВА:'); Readln(C); CreateQueue(pBegin,pEnd,C); Repeat Readln(C); AddQueue(pEnd,C) Until ; Writeln(' ***** ВЫВОД РЕЗУЛЬТАТОВ *****'); Repeat DelQueue(pBegin,C); Writeln(C); Until ;Рис. 4. Организация вставки в список.Для удаления компоненты с заданным ключом необходимо при поиске нужной компоненты помнить адрес предшествующей: EndElse beginNew(Temp); ВВЕДИСТРОКИДОEND : '); Readln(C); CreateLL(Top, pEnd, C); Repeat Readln(C); AddLL(pEnd,C) Until ; Writeln(' ***** ВЫВОД ИСХОДНОГО СПИСКА *****'); ВВЕДИ КЛЮЧ ДЛЯ ВСТАВКИ СТРОКИ'); Readln(Key); Writeln('ВВЕДИ ВСТАВЛЯЕМУЮ СТРОКУ'); Readln(C); InsComp(Key, C); Writeln; Writeln('ВВЕДИКЛЮЧУДАЛЯЕМОЙСТРОКИ'); Readln(Key); DelComp(Key, Top); Writeln; Writeln(' ***** ВЫВОД ИЗМЕНЕННОГО СПИСКА *****'); .' Then       Begin         New(p);
Подробные описания противопожарных дверей гост смотрела тут www.torea.ru.
Просмотров: 116 | Добавил: admin | Рейтинг: 0.0/0
Всего комментариев: 0
avatar
Форма входа
Календарь
«  Июль 2014  »
ПнВтСрЧтПтСбВс
 123456
78910111213
14151617181920
21222324252627
28293031
Архив записей