Сдам Сам

ПОЛЕЗНОЕ


КАТЕГОРИИ







Правила обмена с дисковыми файлами





1) вводится файловая переменная, которая используется для операции обмена (f).

2) Устанавливается связь между файловой переменной и именем файла (FName).

Делается это с помощью стандартной процедуры assign(f, FName)

FName образуется по правилам DOS.

При необходимости может указываться имя диска и путь к файлу.

FName – константа или переменная

Далее прога имеет дело только с файловой переменной

3) Файл открывается для чтения( reset(f) ) или записи (rewrite(f) ).

4) Производится обмен данными с помощью подпрограмм

Отличие от стандартного их формата в том, что добавляется в скобки файловая переменная: read(f,x,y,…);

Если в подпрограммах ввода-вывода не указана файловая переменная, то имеет в виду либо input, либо output.

input – связан с клавой, output – c дисплеем.

5) После завершения работы с файлом, он должен быть закрыт с помощью close(f);

Если файл не закрыт, то при выходе из проги его закроет система. Однако если прога должна была добавить данные в файл, то они будут потеряны, т.к. прога работает не напрямую с фалами на диске, а работает только с его копией (буфером).

Команда close соответствует переброске данных из буфера на диск.

 

Понятие о статических и динамических структурах данных

Статические структуры – такие, которые имеют один и тот же размер и формат на протяжении выполнения блока, где они объявлены.

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

Динамические структуры – такие, которые можно создавать или уничтожать в процессе работы блока.

Цель динамического распределения памяти – экономия ресурсов. При этом распределение памяти можно менять в процессе работы блока



Достоинство – экономия памяти

Недостаток – более медленная работа проги, более сложное программирование.

 

 

Структура распределения памяти ЭВМ. Понятие “кучи”. Адрес в памяти.

 

I II III IV

 

I–системная область (ОС, система программирования, оболочка)

II – системная область (рекурсивный стек, стек ЦП)

III – область программы и статический данных; ограничена

IV – область динамического распределения данных heap (“куча”)

Распределение памяти осуществляется с помощью указателей.

Адрес памяти занимает 4 байта – 2 байта сегмент и 2 байта смещение

 

 

Указатели

Для уяснения понятия указателя необходимо рассмотреть структуру и использование оперативной памяти компьютера в операционной системе MS DOS (основные принципы распределения памяти справедливы и для Windows):

 

 


Области самых младших и самых старших адресов занимают системные ресурсы, обеспечивающие функционирование операционной системы.
Сразу за системной областью младших адресов располагается исполняемый код прикладной программы.
Сегмент данных содержит ячейки для хранения значений глобальных констант и переменных.
Стек представляет собой буфер для временного хранения промежуточных (локальных) переменных и констант.
Перечисленные фрагменты ОЗУ составляют так называемую статическую память, которая заполняется сразу при запуске программы и не освобождается до ее завершения.
Следующий участок ОЗУ (по ходу возрастания адресов) представляет собой динамическую память, или кучу. Ячейки кучи могут неоднократно выделяться и освобождаться по мере необходимости во время выполнения программы, т.е. динамически.
В Паскале все константы и переменные, объявленные в разделе const и var основной программы или модуля, располагаются в сегменте данных, т.е. статической памяти. Размер сегмента данных и стека составляет соответственно 64 К и 16 К, что сильно ограничивает разработку программ, оперирующих большими массивами переменных емкого типа. Кардинальным решением этой проблемы является использование указателей и соответствующих средств доступа к динамической памяти.
Указатель, или ссылка – это переменная, значением которой является физический адрес некоторой ячейки памяти (чаще всего динамической).
Адрес каждой ячейки памяти ПК занимает 4 байта, или два машинных слова. Первое слово задает смещение адреса относительно начала сегмента, а второе – абсолютный адрес сегмента. Сегмент – это участок памяти, имеющий длину 64К и начинающийся с физического адреса, кратного 16 (0, 16, 32, 48 и т.д.). Смещение показывает, сколько байтов от начала сегмента нужно пропустить, чтобы достичь нужного адреса. Обычно слова адреса записываются в шестнадцатиричной системе через двоеточие, например:
F3A1 : 128D
смещение сегмент

Фрагмент памяти в 16 байтов называется параграфом, поэтому сегмент адресует память с точностью до параграфа, а смещение – с точностью до байта. Поскольку большинство типов данных занимают несколько смежных байтов, то указатель содержит адрес первого байта ячейки памяти, при этом сам указатель занимает 4 байта (два слова).

Указатели в Паскале бывают двух типов:

- типизированный указатель (ссылка), который адресует ячейку для данных определенного типа;

- нетипизированный указатель (стандартный тип Pointer), который ссылается на начало области памяти для данных неопределенного, или произвольного типа. Другими словами, нетипизированный указатель содержит просто адрес некоторой ячейки памяти.

 

 









Не нашли то, что искали? Воспользуйтесь поиском гугл на сайте:


©2015- 2019 zdamsam.ru Размещенные материалы защищены законодательством РФ.