русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Фрагментация динамической памяти. Освобождение динамической памяти.


Дата добавления: 2015-07-23; просмотров: 894; Нарушение авторских прав


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


12-Однонаправленный список:

Unit Spisok;

Interface

Type BT = LongInt;

U = ^Zveno;

Zveno=Record Inf:BT;Next:U End;

Procedure_V_Nachalo(Var First : U; X : BT);

Procedure_Iz_Nachala(Var First:U;Var X:BT);

Procedure V_Spisok(Pred : U; X : BT);

Procedure Iz_Spiska(Pred : U; Var X : BT);

Procedure Ochistka(Var First: U);

Function Pust(First : U) : Boolean;

Procedure Print(First : U);

procedure zapol(var First:U);

Implementation

Procedure V_Nachalo;

Var Vsp : U;

Begin New(Vsp);

Vsp^.Inf := X;

Vsp^.Next := First;

First := Vsp; End;

Procedure Iz_Nachala;

Var Vsp : U;

Begin Vsp := First;

First := First^.Next;

X := Vsp^.Inf;

Dispose(Vsp); End;

Procedure V_Spisok;

Var Vsp : U;

Begin New(Vsp);

Vsp^.Inf := X;

Vsp^.Next := Pred^.Next;

Pred^.Next := Vsp; End;

Procedure Iz_Spiska;

Var Vsp : U;

Begin Vsp := Pred^.Next;

Pred^.Next := Pred^.Next^.Next;

X := Vsp^.Inf;

Dispose(Vsp); End;

Procedure Ochistka;

Var Vsp : BT;

Begin While Not Pust(First) Do Iz_Nachala(First, Vsp) End;

Function Pust;

Begin Pust := First = Nil End;

Procedure Print;

Var Vsp : U;

Begin Vsp := First;

While Vsp <> Nil Do

Begin

Write(Vsp^.inf: 6);

Vsp := Vsp^.Next;

End; WriteLn End;

procedure zapol;

var v:U;i,n:integer;a:Bt;

begin

write('vvedite kol-vo el-ov v spiske:');



readln(n);

a:=-10+random(21);

V_Nachalo(First,a);

v:=First;

for i:=2 to n do

begin a:=-10+random(21);

V_Spisok(v,a);

v:=v^.next; end;end;

Begin

End.

14-Кольцевой список:

Unit Spis;

Interface

type BT=longint;

U=^zveno;

zveno=record

inf:BT;

P,N:U;

end;

procedure V_Nachalo(var first:U;x:BT);

procedure V_Spisok(pred:U;x:BT);

procedure Print(first:U);

function vvod:U;

Implementation

procedure V_Nachalo;

var vsp:U;

begin

new(vsp);

vsp^.inf:=x;

vsp^.P:=first^.P;

vsp^.N:=first;

first^.P^.N:=vsp;

first^.P:=vsp;

first:=vsp;

end;

function vvod;

var v,S:U;x:BT;k,i:integer;

begin

write('vvedite kol-vo elem-ov');

readln(k);

x:=-100+random(201);

new(s);

s^.inf:=x;

s^.P:=s;

s^.N:=s;

v:=S;

for i:=2 to k do

begin

x:=-100+random(201);

V_Spisok(v,x);

v:=v^.N;

end;

vvod:=S;

end;

procedure V_Spisok;

var vsp:U;

begin

new(vsp);

vsp^.inf:=x;

vsp^.P:=pred;

pred^.N^.P:=vsp;

vsp^.N:=pred^.N;

pred^.N:=vsp;

end;

procedure Print;

var vsp:U;i:boolean;

begin

i:=true;

vsp:=first;

while (vsp<>first)or(i) do

begin

i:=false;

write(vsp^.inf:5);

vsp:=vsp^.N;

end;

writeln;

end;

Begin

end.

 

19-Модуль. Общая структура модуля. Компиляция и подключение модуля:

Модуль (UNIT) в TURBO PASCAL - это особым образом оформленная библиотека подпрограмм. Модуль в отличие от программы не может быть запущен на выполнение самостоятельно, он может только участвовать в построении программ и других модулей. Модули позволяют создавать личные библиотеки процедур и функций и строить программы практически любого размера. Модуль в TURBO PASCAL представляет собой отдельно хранимую и независимо компилируемую программную единицу. В общем случае модуль - это совокупность программных ресурсов, предназначенных для использования другими программами. Под программными ресурсами понимаются любые элементы языка TURBO PASCAL: константы, типы, переменные, подпрограммы. Модуль сам по себе не является выполняемой программой, его элементы используются другими программными единицами. Все программные элементы модуля можно разбить на две части: - программные элементы, предназначенные для использования другими программами или модулями, такие элементы называют видимыми вне модуля; - программные элементы, необходимые только для работы самого модуля, их называют невидимыми или скрытыми. В соответствии с этим модуль, кроме заголовка, содержит две основные части, называемые интерфейсом и реализацией. В общем случае модуль имеет следующую структуру:

unit <имя модуля>; {заголовок модуля}

interface

{описание видимых программных элементов модуля}

{описание скрытых программных элементов модуля}

begin

{операторы инициализации элементов модуля}

end.

В частном случае модуль может не содержать части реализации и части инициализации, тогда структура модуля будет такой:

unit <имя модуля>; {заголовок модуля}

interface

{описание видимых программных элементов модуля}

implementation

end.

Использование в модулях процедур и функций имеет свои особенности. Заголовок подпрограммы содержит все сведения, необходимые для ее вызова: имя, перечень и тип параметров, тип результата для функций, эта информация должна быть доступна для других программ и модулей. С другой стороны, текст подпрограммы, реализующий ее алгоритм, другими программами и модулями не может быть использован. Поэтому заголовок процедур и функций помещают в интерфейсную часть модуля, а текст - в часть реализации. Интерфейсная часть модуля содержит только видимые (доступные для других программ и модулей) заголовки процедур и функций (без служебного слова forward). Полный текст процедуры или функции помещают в часть реализации, причем заголовок может не содержать список формальных параметров. Исходный текст модуля должен быть откомпилирован с помощью директивы Make подменю Compile и записан на диск. Результатом компиляции модуля является файл с расширением .TPU (Turbo Pascal Unit). Основное имя модуля берется из заголовка модуля. Для подключения модуля к программе необходимо указать его имя в разделе описания модулей, например:

uses CRT,Graph;

В том случае, если имена переменных в интерфейсной части модуля и в программе, использующей этот модуль, совпадают, обращение будет происходить к переменной, описанной в программе. Для обращения к переменной, описанной в модуле, необходимо применить составное имя, состоящее из имени модуля и имени переменной, разделенных точкой. Например, пусть имеется модуль, в котором описана переменная К:

unit M;

interface

var K: Integer;

implementation

.................

end.

Пусть программа, использующая этот модуль, также содержит переменную К:

Program P;

uses M;

var K: Char;

begin

.............

end.

Для того, чтобы в программе P иметь доступ к переменной K из модуля M, необходимо задать составное имя M.K. Использование составных имен применяется не только к именам переменных, а ко всем именам, описанным в интерфейсной части модуля. Рекурсивное использование модулей запрещено. Если в модуле имеется раздел инициализации, то операторы из этого раздела будут выполнены перед началом выполнения программы, в которой используется этот модуль.




<== предыдущая лекция | следующая лекция ==>
Карта памяти. Динамическое распределение памяти. Создание и уничтожение динамических переменных. | Круговые диаграммы


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 1.804 сек.