Menu Home

Бесплатная техническая библиотека для любителей и профессионалов Бесплатная техническая библиотека


Информатика и информационные технологии. Динамическая память (конспект лекций)

Конспекты лекций, шпаргалки

Справочник / Конспекты лекций, шпаргалки

Комментарии к статье Комментарии к статье

Оглавление (развернуть)

ЛЕКЦИЯ № 6. Файлы

1. Файлы. Операции с файлами

Введение файлового типа в язык Pascal вызвано необходимостью обеспечить возможность работы с периферийными (внешними) устройствами ЭВМ, предназначенными для ввода, вывода и хранения данных.

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

При работе с файлами выполняются операции ввода-вывода. Операция ввода означает перепись данных с внешнего устройства (из входного файла) в основную память ЭВМ, операция вывода - это пересылка данных из основной памяти на внешнее устройство (в выходной файл). Файлы на внешних устройствах часто называют физическими файлами. Их имена определяются операционной системой.

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

Файловые переменные, которые описаны в программе, называют логическими файлами. Все основные процедуры и функции, обеспечивающие ввод-вывод данных, работают только с логическими файлами. Физический файл должен быть связан с логическим до выполнения процедур открытия файлов.

Текстовые файлы

Особое место в языке Pascal занимают текстовые файлы, компоненты которых имеют символьный тип. Для описания текстовых файлов в языке определен стандартный тип Text:

var TF1, TF2: Text;

Текстовые файлы представляют собой последовательность строк, а строки - последовательность символов. Строки имеют переменную длину, каждая строка завершается признаком конца строки.

Компонентные файлы

Компонентный, или типизированный файл, - это файл с объявленным типом его компонент. Компонентные файлы состоят из машинных представлений значений переменных, они хранят данные в том же виде, что и память ЭВМ.

Описание величин файлового типа имеет вид:

type М = File Of Т;

где М - имя файлового типа;

Т - тип компоненты.

Компонентами файла могут быть все скалярные типы, а из структурированных - массивы, множества, записи. Практически во всех конкретных реализациях языка Pascal конструкция "файл файлов" недопустима.

Все операции над компонентными файлами производятся с помощью стандартных процедур.

Write(f,X1,X2,...XK)

Бестиповые файлы

Бестиповые файлы позволяют записывать на диск произвольные участки памяти ЭВМ и считывать их с диска в память. Описываются бестиповые файлы следующим образом:

var f: File;

Теперь перечислим процедуры и функции для работы с различными видами файлов.

1. Procedure Assign(var F; FileName: String);

Процедура AssignFile сопоставляет имя внешнего файла с файловой переменной.

F - файловая переменная любого файлового типа, FileName - выражение типа String или выражение типа PChar, если допускается расширенный синтаксис. Все дальнейшие операции с F производятся с внешним файлом.

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

2. Procedure Close(var F);

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

F - файловая переменная любого файлового типа, открытая процедурами Reset, Rewrite или Append. Внешний файл, связанный с F, полностью модифицируется и затем закрывается, освобождая дескриптор файла для повторного использования.

Директива {SI+} позволяет обрабатывать ошибки во время выполнения программы, используя обработку исключительных ситуаций. При выключенной директиве {$1-} необходимо использовать IOResult для проверки ошибок ввода-вывода.

3. Function Eof(var F): Boolean;

{Типизированные или нетипизированные файлы}

Function Eof[(var F: Text)]: Boolean;

{Текстовые файлы}

Проверяет, является или нет текущая позиция файла концом файла.

Eof(F) возвращает True, если текущая позиция файла находится за последним символом файла или если файл пуст; иначе Eof (F) возвращает False.

Директива {SI+} позволяет обрабатывать ошибки во время выполнения программы, используя обработку исключительных ситуаций. При выключенной директиве {SI-}, необходимо использовать IOResult для проверки ошибок ввода-вывода.

4. Procedure Erase(var F);

Удаляет внешний файл, связанный с F.

F - файловая переменная любого файлового типа.

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

Директива {SI+} позволяет обрабатывать ошибки во время выполнения программы, используя обработку исключительных ситуаций. При выключенной директиве {SI-}, необходимо использовать IOResult для проверки ошибок ввода-вывода.

5. Function FileSize(var F): Integer;

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

6. Function FilePos(var F): Longlnt;

Возвращает текущую позицию файла внутри файла.

Перед использованием функции FilePos, файл должен быть открыт. Функция FilePos не используется с текстовыми файлами. F - переменная любого файлового типа, кроме типа Text.

7. Procedure Reset(var F [: File; RecSize: Word]);

Открывает существующий файл.

F - переменная любого файлового типа, связанного с внешним файлом с помощью AssignFile. RecSize - необязательное выражение, которое используется, если F - нетипизированный файл. Если F - нетипизированный файл, RecSize определяет размер записи, который используется при передаче данных. Если RecSize опущен, заданный по умолчанию размер записи равен 128 байтов.

Процедура Reset открывает существующий внешний файл, ассоциированный с файловой переменной F. Если внешнего файла с таким именем нет, возникает ошибка времени выполнения. Если файл, связанный с F, уже открыт, он сначала закрывается и затем вновь открывается. Текущая позиция файла устанавливается к началу файла.

8. Procedure Rewrite(var F: File [; Recsize: Word]);

Создает и открывает новый файл.

F - переменная любого файлового типа, связанного с внешним файлом с использованием AssignFile. RecSize - необязательное выражение, которое используется, если F - нетипизированный файл. Если F - нетипизированный файл, RecSize определяет размер записи, который используется при передаче данных. Если RecSize опущен, заданный по умолчанию размер записи равен 128 байтов.

Процедура Rewrite создает новый внешний файл с именем, связанным с F Если внешний файл с тем же самым именем уже существует, он удаляется, и создается новый пустой файл.

9. Procedure Seek(var F; N: Longlnt);

Перемещает текущую позицию файла к определенному компоненту. Можно использовать процедуру только с открытыми типизированными или нетипизированными файлами.

Текущая позиция файла F перемещается к номеру N. Номер первого компонента файла - 0.

Инструкция Seek(F, FileSize(F)) перемещает текущую позицию файла в конец файла.

10. Procedure Append(var F: Text);

Открывает существующий текстовый файл для добавления информации в конец файла (дозапись).

Если внешнего файла с данным именем не существует, происходит ошибка времени выполнения. Если файл F уже открыт, он закрывается и вновь открывается. Текущая позиция файла устанавливается к концу файла.

11. Function Eoln[(var F: Text)]: Boolean;

Проверяет, является ли текущая позиция файла концом строки текстового файла.

Eoln(F) возвращает True, если текущая позиция файла - в конце строки или файла; иначе Eoln(F) возвращает False.

12. Procedure Read(F, V1 [, V2,..., Vn]);

{Типизированные и нетипизированные файлы}

Procedure Read([var F: Text;] V1 [, V2,..., Vn]);

{Текстовые файлы}

Для типизированных файлов процедура читает компонент файла в переменную. При каждом считывании текущая позиция в файле продвигается к следующему элементу.

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

С переменными типа String Read считывает все символы вплоть до следующей метки конца строки (но не включая ее) или до тех пор пока функция Eof(F) не примет значение True. Переменной присваивается получившаяся в результате символьная строка.

В случае переменной целого или вещественного типа процедура ожидает поступления последовательности символов, образующих число по правилам синтаксиса языка Pascal. Считывание прекращается при обнаружении первого пробела, символа табуляции или метки конца строки либо в том случае, если функция Eof(F) принимает значение True. Если числовая строка не соответствует ожидаемому формату, то происходит ошибка ввода-вывода.

13. Procedure Readln([var F: Text;] V1 [, V2..., Vn]);

Является расширением процедуры Read и определена для текстовых файлов. Считывает строку символов в файле, включая маркер конца строки, и переходит к началу следующей строки. Вызов функции Readln(F) без параметров приводит к перемещению текущей позиции файла на начало следующей строки, если она имеется, в противном случае происходит переход к концу файла.

14. Function SeekEof[(var F: Text)]: Boolean;

Возвращает признак конца файла и может использоваться только для открытых текстовых файлов. Обычно применяется для считывания числовых значений из текстовых файлов.

15. Function SeekEoln[(var F: Text)]: Boolean;

Возвращает признак конца строки в файле и может использоваться только для открытых текстовых файлов. Обычно применяется для считывания числовых значений из текстовых файлов.

16. Procedure Write([var F: Text;] P1 [, P2,..., Pn]);

{Текстовые файлы}

Записывает одну или более величин в текстовый файл.

Каждый параметр записи должен иметь тип Char, один из целочисленных типов (Byte, Shortlnt, Word, Longint, Cardinal), один из типов с плавающей запятой (Single, Real, Double, Extended, Currency), один из строковых типов (PChar, AisiString, ShortString), или один из логических типов (Boolean, Bool).

Procedure Write(F, V1,..., Vn);

{Типизированные файлы}

Записывает переменную в компонент файла. Переменные VI...., Vn должны быть того же типа, что и элементы файла. При каждой записи переменной текущая позиция в файле передвигается к следующему элементу.

17. Procedure Writeln([var F: Text;] [P1, P2,..., Pn]);

{Текстовые файлы}

Выполняет операцию Write, затем помещает метку конца строки в файл.

Вызов Writeln(F) без параметров записывает в файл маркер конца строки. Файл должен быть открыт для вывода.

2. Модули. Виды модулей

Модуль(1Ж1Т) в Pascal - это особым образом оформленная библиотека подпрограмм. Модуль, в отличие от программы, не может быть запущен на выполнение самостоятельно, он может только участвовать в построении программ и других модулей. Модули позволяют создавать личные библиотеки процедур и функций и строить программы практически любого размера.

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

Все программные элементы модуля можно разбить на две части:

1) программные элементы, предназначенные для использования другими программами или модулями, такие элементы называют видимыми вне модуля;

2) программные элементы, необходимые только для работы самого модуля, их называют невидимыми (или скрытыми).

В соответствии с этим модуль, кроме заголовка, содержит три основные части, называемыми интерфейсной, исполнимой и инициализируемой.

В общем случае модуль имеет следующую структуру:

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

interface

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

implementation

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

begin

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

end.

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

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

interface

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

implementation

end.

Использование в модулях процедур и функций имеет свои особенности. Заголовок подпрограммы содержит все сведения, необходимые для ее вызова: имя, перечень и тип параметров, тип результата для функций. Эта информация должна быть доступна для других программ и модулей. С другой стороны, текст подпрограммы, реализующий ее алгоритм, другими программами и модулями не может быть использован. Поэтому заголовки процедур и функций помещают в интерфейсную часть модуля, а текст - в часть реализации.

Интерфейсная часть модуля содержит только видимые (доступные для других программ и модулей) заголовки процедур и функций (без служебного слова forward). Полный текст процедуры или функции помещают в часть реализации, причем заголовок может не содержать списка формальных параметров.

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

Для подключения модуля к программе необходимо указать его имя в разделе описания модулей, например:

uses Crt, Graph;

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

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

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

Перечислим, какие бывают виды модулей.

1. Модуль SYSTEM.

Модуль SYSTEM реализует поддерживающие подпрограммы нижнего уровня для всех встроенных средств, таких как ввод-вывод, работа со строками, операции с плавающей точкой и динамическое распределение памяти.

Модуль SYSTEM содержит все стандартные и встроенные процедуры и функции Pascal. Любая подпрограмма Pascal, не являющаяся частью стандартного Pascal и не находящаяся ни в каком другом модуле, содержится в модуле System. Этот модуль автоматически используется во всех программах, и его не требуется указывать в операторе uses.

2. Модуль DOS.

Модуль Dos реализует многочисленные процедуры и функции Pascal, которые эквивалентны наиболее часто используемым вызовам DOS, как, например, GetTime, SetTime, DiskSize и так далее.

3. Модуль CRT.

Модуль CRT реализует ряд мощных программ, предоставляющих полную возможность управления средствами компьютера PC, такими, как управление режимом экрана, расширенные коды клавиатуры, цвета, окна и звуковые сигналы. Модуль CRT может использоваться только в программах, работающих на персональных компьютерах IBM PC, PC AT, PS/2 фирмы IBM и полностью совместимых с ними.

Одним из основных преимуществ использования модуля CRT является большая скорость и гибкость при выполнении операций работы с экраном. Программы, не работающие с модулем CRT, выводят на экран информацию с помощью средств операционной системы DOS, что связано с дополнительными непроизводительными затратами. При использовании модуля CRT выводимая информация посылается непосредственно в базовую систему ввода-вывода (BIOS) или для еще более быстрых операций непосредственно в видеопамять.

4. Модуль GRAPH.

С помощью процедур и функций, входящих в этот модуль, можно создавать различные графические изображения на экране.

5. Модуль OVERLAY.

Модуль OVERLAY позволяет уменьшить требования к памяти программы DOS реального режима. Фактически можно писать программы, превышающие общий объем доступной памяти, поскольку в каждый момент в памяти будет находиться только часть программы.

Автор: Цветкова А.В.

<< Назад: Файлы (Файлы. Операции с файлами. Модули. Виды модулей)

>> Вперед: Абстрактные структуры данных (Абстрактные структуры данных. Стеки. Очереди)

Рекомендуем интересные статьи раздела Конспекты лекций, шпаргалки:

Конституционное (государственное) право Российской Федерации. Шпаргалка

Стратегический менеджмент. Конспект лекций

Зарубежная литература XX века в кратком изложении. Часть 1. Шпаргалка

Смотрите другие статьи раздела Конспекты лекций, шпаргалки.

Читайте и пишите полезные комментарии к этой статье.

<< Назад

Последние новости науки и техники, новинки электроники:

Лабораторная модель прогнозирования землетрясений 30.11.2025

Предсказание землетрясений остается одной из самых сложных задач геофизики. Несмотря на развитие сейсмологии, ученые все еще не могут точно определить момент начала разрушительного движения разломов. Недавние эксперименты американских исследователей открывают новые горизонты: впервые удалось наблюдать микроскопические изменения в контактной зоне разломов, которые предшествуют землетрясению. Группа под руководством Сильвена Барбота обнаружила, что "реальная площадь контакта" - участки, где поверхности разлома действительно соприкасаются - изменяется за миллисекунды до высвобождения накопленной энергии. "Мы открыли окно в сердце механики землетрясений", - отмечает Барбот. Эти изменения позволяют фиксировать этапы зарождения сейсмического события еще до появления традиционных сейсмических волн. Для наблюдений ученые использовали прозрачные акриловые материалы, через которые можно было отслеживать световые изменения в зоне контакта. В ходе искусственного моделирования примерно 30% ко ...>>

Музыка как естественный анальгетик 30.11.2025

Ученые все активнее исследуют немедикаментозные способы облегчения боли. Одним из перспективных направлений становится использование музыки, которая способна воздействовать на эмоциональное состояние и когнитивное восприятие боли. Новое исследование международной группы специалистов демонстрирует, что даже кратковременное прослушивание любимых композиций может значительно снижать болевые ощущения у пациентов с острой болью в спине. В эксперименте участвовали пациенты, обратившиеся за помощью в отделение неотложной помощи с выраженной болью в спине. Им предлагалось на протяжении десяти минут слушать свои любимые музыкальные треки. Уже после этой короткой сессии врачи фиксировали заметное уменьшение интенсивности боли как в состоянии покоя, так и при движениях. Авторы исследования подчеркивают, что музыка не устраняет саму причину боли. Тем не менее, она воздействует на эмоциональный фон пациента, снижает уровень тревожности и отвлекает внимание, что в сумме приводит к субъективном ...>>

Алкоголь может привести к слобоумию 29.11.2025

Проблема влияния алкоголя на стареющий мозг давно вызывает интерес как у врачей, так и у исследователей когнитивного старения. В последние годы стало очевидно, что границы "безопасного" употребления спиртного размываются, и новое крупное исследование, проведенное международной группой ученых, вновь указывает на это. Работы Оксфордского университета, выполненные совместно с исследователями из Йельского и Кембриджского университетов, показывают: даже небольшие дозы алкоголя способны ускорять когнитивный спад. Команда проанализировала данные более чем 500 тысяч участников из британского биобанка и американской Программы миллионов ветеранов. Дополнительно был выполнен метаанализ сорока пяти исследований, в общей сложности включавших сведения о 2,4 миллиона человек. Такой масштаб позволил оценить не только прямую связь между употреблением спиртного и развитием деменции, но и влияние генетической предрасположенности. Один из наиболее тревожных результатов касается людей с повышенным ге ...>>

Случайная новость из Архива

Прозрачный чип памяти 12.04.2012

Ученые из американского Университета Райса создали гибкий прозрачный чип памяти. В качестве основы чипа используется распространенный оксид кремния, что позволит в будущем создавать недорогие гибкие прозрачные мобильные телефоны, "умную" бумагу и оригинальные накопители информации. В ходе презентации изобретения на 243-м национальном собрании Американского химического общества в Сан-Диего разработчики пояснили, что новый тип памяти может сочетаться с прозрачными электродами для гибких сенсорных экранов и прозрачными интегральными схемами и аккумуляторами, разработанными в последние годы в других лабораториях.

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

Электрический ток сначала лишает оксид кремния атомов кислорода, а затем повторно формирует электрические цепи и превращает кремний в энергонезависимую память. При этом слабый электрический ток не меняет структуру оксида кремния и позволяет многократно считывать информацию. Забавно, но поначалу ученые применяли сочетание графена и оксида кремния и полагали, что "чудесные" свойства новой памяти связаны именно с графеном. Однако впоследствии выяснилось, что свойства сохраняются и в отсутствии графеновой пленки.

Плюсом данной технологии является использование широко распространенного в электронной промышленности оксида кремния, который в настоящее время в основном применяется в качестве изолятора. Новые чипы памяти не только гибкие и прозрачные, также они довольно прочны. Например, их можно складывать, как лист бумаги, или нагревать до температуры более 500 градусов Цельсия. Более того, благодаря трехмерной архитектуре, новые чипы при тех же размерах и даже меньше, что и обычная флэш-память, имеют емкость на 1 гигабайт больше. Благодаря прозрачности нового типа памяти дизайнерам электронных устройств открываются огромные возможности. Так, из "умного" стекла, состоящего из прозрачной электроники, можно изготавливать планшетные компьютеры, "флэшки", мобильные телефоны, оконные стекла, очки, сложные оптические приборы, механических насекомых, лобовые стекла самолетов, возможно, иллюминаторы космических кораблей и множество другой электроники. Кроме того, если оснастить такие приборы солнечными панелями, они смогут заряжаться даже во время использования.

Новую прозрачную память планировалось испытать на борту Международной космической станции - для оценки работоспособности в условиях космического излучения. В прошлом году 44 чипа были погружены на российский грузовой корабль Прогресс, но в августе 2011 года он не смог взлететь и разбился. Ученые планируют отправить чипы на МКС в июле 2012 года.

Другие интересные новости:

▪ Новое изобретение снизит стоимость гибких гаджетов

▪ Карта расширения QM2-2P2G2T

▪ Ученые знают, как увеличить производительность компьютеров на 20%

▪ Происхождение золота

▪ Лишь пять генов определяют лицо человека

Лента новостей науки и техники, новинок электроники

 

Интересные материалы Бесплатной технической библиотеки:

▪ раздел сайта Личный транспорт: наземный, водный, воздушный. Подборка статей

▪ статья Зинин Николай. Биография ученого

▪ статья Может ли день быть длиннее года? Подробный ответ

▪ статья Пьяный узел. Советы туристу

▪ статья Основы электросварки. Энциклопедия радиоэлектроники и электротехники

▪ статья Вода-обманщица. Секрет фокуса

Оставьте свой комментарий к этой статье:

Имя:


E-mail (не обязательно):


Комментарий:





Главная страница | Библиотека | Статьи | Карта сайта | Отзывы о сайте

www.diagram.com.ua

www.diagram.com.ua
2000-2025