Главная » Все файлы » Просмотр файлов из архивов » Документы » Организация данных в ЭВМ и основы программирования

Организация данных в ЭВМ и основы программирования, страница 14

2017-07-08СтудИзба

Описание файла

Документ из архива "Организация данных в ЭВМ и основы программирования", который расположен в категории "". Всё это находится в предмете "информатика" из 1 семестр, которые можно найти в файловом архиве РТУ МИРЭА. Не смотря на прямую связь этого архива с РТУ МИРЭА, его также можно найти и в других разделах. Архив можно найти в разделе "лекции и семинары", в предмете "информатика" в общих файлах.

Онлайн просмотр документа "Организация данных в ЭВМ и основы программирования"

Текст 14 страницы из документа "Организация данных в ЭВМ и основы программирования"

Обращение к функции Read (F,X1,…,XN) эквивалентно конструкции

begin

Read (F,X1);

Read (F,X2);

…………….

Read (F,XN)

end;

к функции Write (F,Y1,Y2,…,YN) - эквивалентно конструкции

begin

Write (F,Y1);

Write (F,Y2);

…………….

Write (F,YN)

end;

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

While Not EOLN (имя) Do,

а для перехода на новую строку файла – оператор Readln (имя).

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

Для чтения файла необходимо выполнить следующие действия:

открыть файл для чтения ( процедура Reset );

ввести данные файла в программу ( процедура Read );

закрыть файл для чтения ( процедура Close )

Общая форма чтения файла:

Reset ( файловая переменная, [имя файла] );

……………..

Read ( файловая переменная, параметры );

……………..

Close ( файловая переменная );

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

Порядок выполнения операций чтения.

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

Пример. При открытии файла с именем С для чтения соответствующая буферная переменная принимает значение первой записи файла С. Если файл пуст, то EOF (C) = True, а значение буферной переменной не определено. Для чтения очередной записи из файла С необходимо выполнить процедуру Read (C). При этом считанная запись станет доступной через буферную переменную. При окончании записи элементов в файл С его необходимо закрыть при помощи процедуры Close (C). При этом файл С сохраняется на внешнем носителе, если при его открытии на запись было указано внешнее имя.

Файловая переменная логически связана с внешним устройством. Если внешнее имя файла опущено при открытии файла для чтения, то файловая переменная трактуется как временный файл, созданный ранее в этой же программе.

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

Порядок выполнения операции записи.

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

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

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

Встроенная процедура rewrite инициирует запись информации в файл.

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

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

Если же соответствующие файлы на внешнем носителе не обнаружены, то процедуры Append и ReWrite открывают новый файл с указанным именем, соответствующим заданной файловой переменной.

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

Close (файловая переменная).

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

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

Процедура Close – закрывает файл, однако связь файловой переменной с именем файла, установленная ранее процедурой Assign, сохраняется. При создании нового или расширении старого файла процедура обеспечивает сохранение в файле всех новых записей и регистрацию файла в каталоге. Функции процедуры Close выполняются автоматически по отношению ко всем открытым файлам при нормальном завершении программы. Поскольку связь файла с файловой переменной сохраняется, файл можно повторно открыть без дополнительного использования процедуры Assign.

Процедура Rename (файловая переменная, новое имя). Переименовывает файл. Перед выполнением процедуры Rename необходимо закрыть файл, если он ранее был открыт процедурами Reset, ReWrite, Append. Внешний файл, с которым связана файловая переменная, получает новое имя, заданное параметром «новое имя». Этот параметр по своим характеристикам аналогичен параметру «имя файла» в процедуре Assign.

Процедура Erase (файловая переменная) уничтожает файл.

Erase (файловая переменная).

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

Процедура Flush (файловая переменная). Поскольку обмены с файлами реализуются через некоторый внутренний буфер в оперативной памяти, то в процессе обработки информации могут возникать ситуации задержки данных, то есть «застревание» информации в буфере. Если же в процессе обработки информации не требуется пополнять буфер, то есть считывать следующий элемент, либо разбивать находящиеся в буфере данные на порядки, то с помощью процедуры Flash (файловая переменная) выполняется принудительный сброс информации при записи и очистка буфера. Процедура Flush игнорируется, если файл был инициирован для чтения процедурой Reset. Ценность этой процедуры сомнительна, так как все её функции реализуются процедурой Close, при выполнении которой закрытие файла автоматически сопровождается ликвидацией соответствующего буфера.

При завершении программы автоматически выполняется закрытие всех открытых в программе файлов.

Процедура ChDir (путь) – излагает текущий каталог (директорию). Здесь «путь» – строковое выражение, содержащее путь к установленному по умолчанию каталогу. Параметр. «путь» может быть только типа String. Таким образом, ChDir устанавливает новый текущий каталог, путь к которому находится в процедуре «путь».

Процедура GetDir (устройство, каталог) позволяет определить имя текущего каталога (каталога по умолчанию). Здесь «устройство» - выражение типа Word, содержащее номер устройства:

0 – устройство по умолчанию,

1 – диск А,

2 – диск В и т. д.

Здесь «каталог» - переменная типа String, которая определяет путь к текущему каталогу на указанном диске.

Процедура MkDir (каталог) создаёт новый каталог на указанном диске. Здесь «каталог» - выражение типа String, задающее путь к каталогу. Последним именем в пути, то есть именем вновь создаваемого каталога, не может быть имя уже существующего каталога.

Процедура RmDir (каталог) удаляет каталог. Удалённый каталог должен быть пустым, то есть не содержать файлов или имён каталогов нижнего уровня.

Функция IOResult : Word возвращает признак последней операции ввод – вывод. Если операция завершилась успешно, функция возвращает ноль. Эта функция становится доступной только при отключённом автоконтроле ошибок ввода – вывода. Директива компилятора { $1-} отключает, а { $1+} включает автоконтроль. Если автоконтроль отключён и операция ввода – вывода привела к возникновению ошибки, устанавливается флаг ошибки и все последующие обращения к вводу – выводу блокируются, пока не будет вызвана функция IOResult.

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

Функция DiskFree (диск) : Longint. Возвращает объём в байтах свободного пространства на указанном диске. В этой функции «диск» - номер диска:

0 – устройство по умолчанию,

1 – диск А,

2 – диск В и т. д.

Функция возвращает значение -1, если указан номер несущего диска.

Функция DiskSize (диск): Longint. Возвращает полный объём диска в байтах ( -1, если указан номер несуществующего диска).

Операции по непосредственному обмену данными между программой, интерфейс которой представляется файловой переменной и внешними данными (или внешними устройствами), представляющими собой физические средства регистрации файлов, реализуются процедурами:

Read Write

Readln Writeln

BlockRead BlockWrite

Пример. Работа с файлом FIZAP.

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

Внешнее имя РР71.dat

Program PP71;

Type ZAP = Record

FIO : Array [1…10] of Char;

GOD: integer

end; {of record}

F = File;

Var FIZAP: F;

A, B : ZAP;

J, I : integer;

begin Assign (FIZAP, `C: \ Program \ t – pas \ pp71.dat);

ReWrite (FIZAP, 12);

For Y : = 1 to 3 do

Begin Write (`=>`);

For I = 1 to 10 do

read (B. FIO [I]);

Readln (B. God);

BlockWrite (FIZAP, B, 1)

end;

close (FIZAP);

Reset (FIZAP, 12);

For J: = 1 to 3 do

begin BlockReadln (FIZAP, A, 1);

Writeln (J : 2, `-ая запись `, A. FIO, A. GOD: 5);

end

end.

Протокол работы программы:

Иванов 1967

Петров 1970

Сидоров 1968

1 – ая запись Иванов 1967

2 – ая запись Петров 1970

3 – ая запись Сидоров 1968

Пример. Программа формирует файл и сохраняет его на внешнем носителе, что обеспечивается заданием внешнего имени PP74.dat при открытии файла на запись. Ввод исходной информации во внешний файл в программе осуществляется до тех пор, пока не будет введена фамилия, состоящая из десяти звёздочек (признак конца ввода). Это сделано для того, чтобы пользователю не надо было предварительно подсчитывать количество вводимых записей.

Program PP74;

Type ZAP = Record

FIO : Array [1…10] of Char;

GOD: integer

end; {of record}

F = File;

Var FIZAP: F;

A : ZAP;

I : integer;

begin Assign (FIZAP, `C: \ t – pas \ pp74.dat);

ReWrite (FIZAP, 12);

Repeat

Write (`=>`);

For I = 1 to 10 do

read (A. FIO [I]);

Readln (A. God);

BlockWrite (FIZAP, A, 1)

Until A . FIO = `**********`;

close (FIZAP);

Reset (FIZAP, 12);

I: = 1;

Repeat BlockRead (FIZAP, A, 1);

Writeln (I : 2, `-ая запись `, A. FIO, A. GOD: 5);

I : = I+1

Until A . FIO = `**** `;

Свежие статьи
Популярно сейчас
А знаете ли Вы, что из года в год задания практически не меняются? Математика, преподаваемая в учебных заведениях, никак не менялась минимум 30 лет. Найдите нужный учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
5224
Авторов
на СтудИзбе
426
Средний доход
с одного платного файла
Обучение Подробнее