Всё сдал! - помощь студентам онлайн Всё сдал! - помощь студентам онлайн

Реальная база готовых
студенческих работ

Узнайте стоимость индивидуальной работы!

Вы нашли то, что искали?

Вы нашли то, что искали?

Да, спасибо!

0%

Нет, пока не нашел

0%

Узнайте стоимость индивидуальной работы

это быстро и бесплатно

Получите скидку

Оформите заказ сейчас и получите скидку 100 руб.!


Файлы в языке Turbo Pascal

Тип Реферат
Предмет Информатика и программирование
Просмотров
421
Размер файла
26 б
Поделиться

Ознакомительный фрагмент работы:

Файлы в языке Turbo Pascal

Министерство образования и науки Украины

ГФУИПА

Кафедра ИТ

РЕФЕРАТ

На тему: “Файлы в языке Turbo Pascal”

Выполнил: ст. гр.

Проверил:

г. Стаханов, 2008


СОДЕРЖАНИЕ

Что такое файл в языке Turbo Pascal?....................................................... 3

Программирование доступа к файлу в языке Turbo Pascal.................... 3

Вывод.......................................................................................................... 15

СПИСОК ИСПОЛЬЗОВАННОЙ ЛИТЕРАТУРЫ...................................... 16

Что такое файл в языке TurboPascal?

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

Программирование доступа к файлу в языке Turbo Pascal

Программирование доступа к файлу в языке Turbo Pascal начинается с описания файловой переменной (переменной файлового типа). Это описание строится с помощью служебного слова file, после которого (после служебного слова of) может быть указан тип отдельных элементов файла, например:

var

F: file of integer;

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

type

RecordFile = file of record

А, В: real;

end;

var

Fl, F2: RecordFile;

В зависимости от способа описания можно выделить текстовые (text) файлы, двоичные или типизированные (file of) и нетипизированные (file). Вид файла определяет способ хранения информации в файле.

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

Очень важно различать собственно файл (область памяти на магнитном носителе с некоторой информацией) и переменную файлового типа в некоторой Turbo Pascal-программе. Считается, что файловая переменная является представителем некоторого дискового файла в программе. Для того чтобы реализовать доступ к файлу на магнитном диске, программа должна связать его с файловой переменной. Для этого необходимо сопоставить переменную с именем файла. Это имя представляется в виде строки, содержащей полное имя файла и, быть может, цепочку объемлющих каталогов и обозначение дисковода. Такая строка носит название маршрута (или пути) к файлу и формируется по общим правилам MS-DOS.

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

Assign (F, 'с: booksbook4test3. раз ');

Помимо маршрута, во втором параметре может быть указано условное (символическое) обозначение некоторого “псевдофайла” MS-DOS, то есть файла, связанного с конкретным физическим устройством. Допускаются имена, в основном совпадающие с принятыми в MS-DOS обозначениями (‘con’ – консоль, то есть экран дисплея и/или клавиатура, ‘lpti’ или ‘prn’ – печатающее устройство и т.д.).

До тех пор, пока файловая переменная не связана с каким-либо дисковым файлом, никакие операции с ней в программе невозможны.

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

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

Rename (var f; nevname: string);

Erase (var f);

Основным параметром этих процедур является файловая переменная (она может идентифицировать файл любого типа, и к ней должна была быть ранее применена процедура Assign), а процедуре Rename дополнительно передается новое имя файла. Действие указанных процедур основывается на соответствующих DOS-функциях и функционально эквивалентно командам ren и del командного процессора.

Каждой программе доступны два стандартных файла input (клавиатура) и output (экран). Это - текстовые файлы. Любые другие файлы становятся доступными после выполнения специальных процедур. Рассмотрим основные процедуры для работы с текстовыми файлами.

Связывание файловой переменной с именем файла осуществляется с помощью встроенной процедуры assign:

assign(<ф. п. >,<имя файла или лог. уст-во>)

где <ф. п. > – правильный идентификатор, объявленный в программе как переменная файлового типа;

<имя файла или лог. уст-ва> – текстовое выражение, содержащее имя файла или логического устройства. Если имя файла задается в виде пустой строки, например assign(f,''), то файловая переменная связывается со стандартным файлом input или output.

Процедура открытия файла по чтению:

reset (<ф. п. >);

reset – ключевое слово (пер. с англ.: устанавливать);

<ф. п. > – файловая переменная.

При выполнении этой процедуры файл подготавливается к чтению: внутренняя переменная, её называют указатель файла, устанавливается на начало файла, т.е. на его первую компоненту.

Процедура открытия файла по записи:

rewrite(<ф. п. >);

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

Для чтения и записи информации из файла или в файл используются известные процедуры: read, readln и write, writeln в которых в качестве первого параметра выступает файловая переменная. Например:

write(f,x1,x2,x3) – процедура записи в файл f компонентов x1,x2,x3. Процедура записывает выражения х1, х2, х3 по одному в файл f, начиная с того места, куда был установлен указатель файла в момент обращения к процедуре write. Аналогично работают остальные процедуры ввода и вывода.

При заполнении файла после последней записи автоматически помещается специальный невидимый признак "конец файла" (end of file). Существует функция eof(f), тестирующая конец файла, связанного с файловой переменной f. Функция eof(f) возвращает значение true, если действительно встретился признак конец файла; пока это не произойдет значение eof(f) будет false.

Функция eoln(f) тестирует, встретился ли конец строки (end of line) в файле, связанном с файловой переменной f. При заполнении строки после последней записи автоматически помещается специальный признак конец строки. Функция eoln(f) возвращает значение true, если действительно встретился признак " конец строки". Этот признак формируется при нажатии клавиши "ввод".

close(f) – процедура закрытия файла, связанного с файловой переменной f. Функции процедуры close выполняются автоматически по отношению ко всем открытым файлам при нормальном завершении программы.

Процедура append(f) инициирует запись в ранее существовавший текстовый файл, связанный с файловой переменной f, для добавления новых строк в конец файла.

Рассмотрим пример. В произвольной непустой последовательности чисел, хранящейся в текстовом файле f, подсчитать количество положительных компонент.

{В текстовом файле хранятся вещественные числа, разделенные пробелами. }

program pr30;

var f: text; {Файловая пеpеменная}

a: real; {Буфеpная пеpеменная}

k: integer; {Количество положительных компонент}

begin

assign(f,'f. dat');

reset(f); {Откpыть файл по чтению}

while not eof(f) do {Пока не конец файла}

begin

read(f,a); {Читаем число из файла}

if a>0 then k: =k+1; {Вычисляем количество

положительных компонент}

if eoln(f) then readln(f); {Если конец стpоки,

то пеpеводим указатель файла на следующую стpоку }

end;

writeln('k=',k);

end.

Следующая программа работает с двумя текстовыми файлами: один из них открывается по чтению, а другой - по записи. Строки первого файла кодируются путем замены кода символа следующим кодом из таблицы ASCII и записываются во второй файл [5].

program pr31;

var oldf,newf: text; {Файловые пеpеменные для

стаpого и нового файлов}

oldn,newn: string; {Стpоковые пеpеменные, для хранения

имен нового и стаpого файлов}

line: string; {Буфеpная пеpеменная для

хpанения кодиpуемой стpоки}

c: integer; {Пеpеменная цикла}

begin

writeln('Введите имя кодиpуемого файла');

readln(oldn);

writeln('Введите новое имя');

readln(newn);

assign(oldf,oldn);

assign(newf,newn);

reset(oldf); {Откpыть стаpый файл по чтению}

rewrite(newf); {Откpыть новый файл по записи}

while not eof(oldf) do

begin

readln(oldf,line); {Читаем стpоку из стаpого файла}

for c: =1 to length(line) do {Кодиpуем стpоку}

if ord(line [c]) =255 then line [c] : =chr(0)

else

line [c] : =succ(line [c]);

writeln(newf,line); {Закодиpованную стpоку пишем в файл}

end;

close(newf)

end.

Следующий пример демонстрирует работу с текстовыми файлами, содержащими данные типа record.

В непустом текстовом файле хранятся данные о группе студентов: фамилии, оценки по физике, математике, программированию. Подсчитать средний балл группы и определить фамилию cтудента с максимальным средним баллом. Когда в файле хранятся данные типа record, следует оговорить его структуру. В приведенном ниже примере в каждой строке хранится фамилия одного студента и три его оценки; при этом под фамилию отводится не более 10 позиций (если фамилия короче, то дополняется пробелами), а оценки отделяются друг от друга пробелами.

Текст программы предлагается в примере pr32.

program pr32;

type student = record

fam: string [10];

fiz,mat,prog: byte;

end;

var ved: student; {Буфеpная пеpеменная для

хpанения данных о студенте}

k: integer; {Количество студентов в гpуппе}

ss,{Сpедний балл каждого студента}

sg,{Сpедний балл гpуппы судентов}

max: real; {Максимальный сpедний балл студента}

f4: text; {Файловая пеpеменная}

maxfam: string [10]; {Фамилия студента

с максимальным сpедним баллом}

begin

assign (f4,'f4. dat');

reset (f4); {Откpыть файл по чтению}

sg: =0; k: =0; max: =0;

while not eof (f4) do {Пока не конец файла}

with ved do

begin

read (f4,fam); {Чтение файла}

readln (f4,fiz,mat,prog);

ss: =(fiz+mat+prog) /3; {Вычисляем сpедний балл

каждого студента}

if ss>max then {Опpеделяем фамилию студента}

begin { с максимальным сpедним баллом}

max: =ss;

maxfam: =fam;

end;

sg: =sg+ss;

k: =k+1

end;

sg: =sg/k;

writeln('Сpедний балл в гpуппе=',sg);

writeln('Максимальный сpедний балл у студента', maxfam)

end.

Как уже отмечалось текстовые файлы являются файлами последовательного доступа: к каждой строке возможен лишь последовательный доступ, начиная с первой. Типизированные же файлы содержат компоненты строго постоянной длины, что дает возможность организовать прямой доступ к каждому компоненту. Для этой цели служит встроенная процедура seek:

seek(<ф. п. >,<n компонента>)

Здесь <n компонента> – выражение типа longint, указывающее номер компонента.

Файловая переменная должна быть объявлена предложением file of и связана с именем файла процедурой assing. Файл необходимо открыть процедурой rewrite или reset. Для чтения и записи в типизированный файл используются известные процедуры read и write.

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

Функция filesize возвращает значение типа longint, содержащее количество компонентов файла:

filesize(<ф. п. >)

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

filepos(<ф. п. >)

В двух последних функциях файловая переменная должна быть объявлена как file of... и связана с именем файла процедурой assing; файл необходимо открыть процедурой rewrite или reset. Первый компонент типизированного файла имеет порядковый номер 0. Кроме того, следует отметить, что типизированные файлы создать с помощью текстовых редакторов нельзя. Типизированные файлы создаются только в процессе работы программы. Турбо-Паскаль допускает обращаться к типизированным файлам, открытым процедурой reset для чтения информации, с помощью процедуры write (т.е. для записи информации), а к типизированным файлам, открытым по чтению процедурой rewrite, – с помощью процедуры read (т.е. для чтения информации).

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

program pr33;

type student=record{Тип компонентов, хpанящихся

в двоичном файле}

fam: string [10];

fiz,mat,pr: byte;

sr: real;

end;

var f: file of student; {Файловая пеpеменная двоичного файла}

f0: text; {Файловая пеpеменная текстового файла}

ved,ved1,min: student; {Буфеpные пеpеменные}

n, {Количество компонент двоичного файла}

minn: longint; {Hомеp компонента с минимальным

сpедним баллом}

i, j: integer;

begin

assign(f,'f. dat');

assign(f0,'f0. dat');

reset(f0); {Откpытие текстового файла по чтению}

rewrite (f); {Откpытие двоичного файла по записи}

while not eof (f0) do {Цикл, оpганизован для }

begin

with ved do

begin

read (f0,fam); {чтения из текстового файла,}

readln(f0,fiz,mat,pr);

sr: =(fiz+mat+pr) /3; {вычисления сpеднего балла и }

end;

write (f,ved) {записи в двоичный файл

по одной компонете}

end;

{___Соpтиpовка____}

n: =filesize (f); {Количество компонент двоичного файла}

for i: =0 to n-2 do

begin

seek (f, i);

read (f,ved);

min: =ved; {Пpедполагаем, что i-я компонента файла }

minn: =i; { имеет минимальный сpедний балл, сpеди компонент, следующих за i-1}

for j: =i+1 to n-1 do{Цикл, позволяющий опpеделить, есть}

begin { ли далее в файле компоненты с меньшим}

read (f,ved1); { сpедним баллом}

if min. sr>ved1. sr then

begin

min: =ved1;

minn: =j;

end;

end;

seek (f,minn); { Меняем местами}

write (f,ved); {в двоичном файле}

seek (f, i); {i-ю компоненту}

write (f,min); {и минимальную компоненту}

end;

seek (f,0);

for i: =0 to n-1 do{Вывод двоичного файла на экpан}

begin

read (f,ved);

writeln(ved. fam,ved. mat,ved. fiz,ved. pr,ved. sr);

end;

end.

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

Вывод

Файл – это именованная область памяти на магнитном носителе, используемая для долговременного хранения некоторой логически связанной информации. В зависимости от способа описания можно выделить текстовые (text) файлы, двоичные или типизированные (file of) и нетипизированные (file). Вид файла определяет способ хранения информации в файле. Текстовый файл является файлом последовательного доступа, и его можно представить как набор строк произвольной длины. Последовательный файл отличается от файлов с другой организацией тем, что чтение (или запись) из файла (в файл) ведутся байт за байтом от начала к концу. Для того чтобы реализовать доступ к файлу на магнитном диске, программа должна связать его с файловой переменной. Для этого необходимо сопоставить переменную с именем файла. Это имя представляется в виде строки, содержащей полное имя файла и, быть может, цепочку объемлющих каталогов и обозначение дисковода. Такая строка носит название маршрута (или пути) к файлу и формируется по общим правилам MS-DOS.

СПИСОК ИСПОЛЬЗОВАННОЙ ЛИТЕРАТУРЫ

1. Учебное пособие по Turbo Pascal 7.0;

2. Владимир Попов. Паскаль и Дельфи. Самоучитель. – Питер, 2003 г., 544 с.;

3. Потопахин В.В. Turbo Pascal: решение сложных задач. – Издательство "БХВ-Петербург", 2006,208 с.;

4. Шпак Ю.А. Turbo Pascal 7.0 на примерах. – Издательство "Юниор", 2003,498 с.;

5. Фаронов В.В. Turbo Pascal Наиболее полное руководство в подлиннике. – Издательство "ОМД Групп" 2003,1054 с.


Нет нужной работы в каталоге?

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

Цены ниже, чем в агентствах и у конкурентов

Вы работаете с экспертами напрямую. Поэтому стоимость работ приятно вас удивит

Бесплатные доработки и консультации

Исполнитель внесет нужные правки в работу по вашему требованию без доплат. Корректировки в максимально короткие сроки

Гарантируем возврат

Если работа вас не устроит – мы вернем 100% суммы заказа

Техподдержка 7 дней в неделю

Наши менеджеры всегда на связи и оперативно решат любую проблему

Строгий отбор экспертов

К работе допускаются только проверенные специалисты с высшим образованием. Проверяем диплом на оценки «хорошо» и «отлично»

1 000 +
Новых работ ежедневно
computer

Требуются доработки?
Они включены в стоимость работы

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

avatar
Математика
История
Экономика
icon
159599
рейтинг
icon
3275
работ сдано
icon
1404
отзывов
avatar
Математика
Физика
История
icon
156450
рейтинг
icon
6068
работ сдано
icon
2737
отзывов
avatar
Химия
Экономика
Биология
icon
105734
рейтинг
icon
2110
работ сдано
icon
1318
отзывов
avatar
Высшая математика
Информатика
Геодезия
icon
62710
рейтинг
icon
1046
работ сдано
icon
598
отзывов
Отзывы студентов о нашей работе
63 457 оценок star star star star star
среднее 4.9 из 5
Филиал государственного бюджетного образовательного учреждения высшего образования Московской област
Спасибо Елизавете за оперативность. Так как это было важно для нас! Замечаний особых не бы...
star star star star star
РУТ
Огромное спасибо за уважительное отношение к заказчикам, быстроту и качество работы
star star star star star
ТГПУ
спасибо за помощь, работа сделана в срок и без замечаний, в полном объеме!
star star star star star

Последние размещённые задания

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

решить 6 практических

Решение задач, Спортивные сооружения

Срок сдачи к 17 дек.

только что

Задание в microsoft project

Лабораторная, Программирование

Срок сдачи к 14 дек.

только что

Решить две задачи №13 и №23

Решение задач, Теоретические основы электротехники

Срок сдачи к 15 дек.

только что

Решить 4задачи

Решение задач, Прикладная механика

Срок сдачи к 31 дек.

только что

Выполнить 2 задачи

Контрольная, Конституционное право

Срок сдачи к 12 дек.

2 минуты назад

6 заданий

Контрольная, Ветеринарная вирусология и иммунология

Срок сдачи к 6 дек.

4 минуты назад

Требуется разобрать ст. 135 Налогового кодекса по составу напогового...

Решение задач, Налоговое право

Срок сдачи к 5 дек.

4 минуты назад

ТЭД, теории кислот и оснований

Решение задач, Химия

Срок сдачи к 5 дек.

5 минут назад

Решить задание в эксель

Решение задач, Эконометрика

Срок сдачи к 6 дек.

5 минут назад

Нужно проходить тесты на сайте

Тест дистанционно, Детская психология

Срок сдачи к 31 янв.

6 минут назад

Решить 7 лабораторных

Решение задач, визуализация данных в экономике

Срок сдачи к 6 дек.

7 минут назад

Вариационные ряды

Другое, Статистика

Срок сдачи к 9 дек.

8 минут назад

Школьный кабинет химии и его роль в химико-образовательном процессе

Курсовая, Методика преподавания химии

Срок сдачи к 26 дек.

8 минут назад

Вариант 9

Решение задач, Теоретическая механика

Срок сдачи к 7 дек.

8 минут назад

9 задач по тех меху ,к 16:20

Решение задач, Техническая механика

Срок сдачи к 5 дек.

9 минут назад
9 минут назад
10 минут назад
planes planes
Закажи индивидуальную работу за 1 минуту!

Размещенные на сайт контрольные, курсовые и иные категории работ (далее — Работы) и их содержимое предназначены исключительно для ознакомления, без целей коммерческого использования. Все права в отношении Работ и их содержимого принадлежат их законным правообладателям. Любое их использование возможно лишь с согласия законных правообладателей. Администрация сайта не несет ответственности за возможный вред и/или убытки, возникшие в связи с использованием Работ и их содержимого.

«Всё сдал!» — безопасный онлайн-сервис с проверенными экспертами

Используя «Свежую базу РГСР», вы принимаете пользовательское соглашение
и политику обработки персональных данных
Сайт работает по московскому времени:

Вход
Регистрация или
Не нашли, что искали?

Заполните форму и узнайте цену на индивидуальную работу!

Файлы (при наличии)

    это быстро и бесплатно