Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Динамическая память

Лекция №9 Динамические структуры данных.

СТАНДАРТНЫЕ ПРОЦЕДУРЫ И ФУНКЦИИ ДЛЯ РАБОТЫ С ФАЙЛАМИ

 

Работа с файлами производится посредством следующих стандартных процедур:

Assign(var F: file; name: string); - связывает имя файловой переменной F в программе с именем внешнего файла на диске name. Здесь name - выражение строкового типа вида

'диск:\имя_каталога\имя_подкоталога\...\имя_файла'

 

Если в параметре name имена диска и подкаталога не указаны, то выбирается текущий диск и текущий каталог. Если вместо name указать '' (без пробела), то файл F оказывается связанным со стандартным файлом ввода Input или со стандартным файлом вывода Output (в зависимости от того, как он будет открыт - для чтения или для записи). После выполнения процедуры Assign все действия над переменной F будут эквивалентны действиям над файлом, определяемым спецификацией name. Процедуру Assign необходимо использовать до начала работы с файлом (до его открытия процедурой reset или rewrite);

Reset(var F: file); - открывает файл F для чтения. При этом указатель файла устанавливается на первый элемент файла и Eof(F) = False.

Если файл пустой, то Eof(F) = True;

Rewrite(var F: file); - открывает новый файл F для записи. При этом уничтожается вся информация в F и Eof(F) = True;

Read(var F: file; var x1, x2,..., xn); - считывает в переменную x1 один элемент файла F (или несколько элементов в переменные x1, x2,..., xn), начиная чтение с элемента, на который указывает текущий указатель. Если F опущено, то подразумевается стандартный файл Input. Read выполним только в случае, если Eof(F) = false;

Write(var F: file; var x1, x2,..., xn); -записывает одно (x1) или более (x1, x2,..., xn) значений переменных в файл F, начиная с той позиции, на которую установлен указатель. Если F опущено, то подразумевается стандартный файл Output. Write выполним только в случае, если Eof(F) = True;

Close(var F: file) - закрывает файл F;

Seek(var F: file; n: longint); - позволяет осуществить прямой доступ к элементам файла F. Здесь n - целая положительная константа, соответствующая порядковому номеру элемента в файле. Процедура Seek не выполняет операцию чтения или записи элемента файла. Она лишь перемещает указатель файла к элементу с номером n. При этом первый элемент файла имеет номер n = 0, второй - n = 1 и т.д.;

Стандартные функции FilePos(var F: file): longint и FileSize(var F: file): longint позволяют определить соответственно текущее положение указателя (номер элемента) и размер (число элементов) файла F.

 


 

 

Все переменные, объявленные в программе, размещаются в одной непрерывной области оперативной памяти, которая называется сегментом данных. Длина сегмента данных определяется архитектурой микропроцессоров 80x86 и составляет 65536 байт, что может вызвать известные затруднения при обработке больших массивов данных. С другой стороны, объем памяти ПК (обычно не менее 640 Кбайт) достаточен для успешного решения задач с большой размерностью данных. Выходом из положения может служить использование так называемой динамической памяти.

Динамическая память - это оперативная память ПК, предоставляемая программе при ее работе, за вычетом сегмента данных (64 Кбайт), стека (обычно 16 Кбайт) и собственно тела программы. Размер динамической памяти можно варьировать в широких пределах (см. прил.1). По умолчанию этот размер определяется всей доступней памятью ПК и, как правило, составляет не менее 200...300 Кбайт.

Динамическая память - это фактически единственная возможность обработки массивов данных большой размерности. Многие практические задачи трудно или невозможно решить без использования динамической памяти. Такая необходимость возникает, например, при разработке систем автоматизированного проектирования (САПР): размерность математических моделей, используемых в САПР, может значительно отличаться в разных проектах; статическое (т.е. на этапе разработки САПР) распределение памяти в этом случае, как правило, невозможно. Наконец, динамическая память широко используется для временного запоминания данных при работе с графическими и звуковыми средствами ПК.

Динамическое размещение данных означает использование динамической памяти непосредственно при работе программы. В отличие от этого статическое размещение осуществляется компилятором Турбо Паскаля в процессе компиляции программы. При динамическом размещении заранее не известны ни тип, ни количество размещаемых данных, к ним нельзя обращаться по именам, как к статическим переменным.

 

<== предыдущая лекция | следующая лекция ==>
Инициация файла | Объявление указателей
Поделиться с друзьями:


Дата добавления: 2014-01-04; Просмотров: 457; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




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