Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
лекциипоинфе / InformatikaProgram42012.pptx
Скачиваний:
12
Добавлен:
15.05.2015
Размер:
295.78 Кб
Скачать

Особенности обработки типизированных файлов

Файл с типом (типизированный файл) состоит из последовательности записей одинаковой длины и одинакового внутреннего формата. Записи следуют непрерывно друг за другом.

При последовательном доступе записи располагаются на внешнем носителе последовательно в порядке их поступления, т.е. чтение или запись I+1 компоненты возможно только после I –ой компоненты.

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

Общий вид описания типизированного файла:

TYPE < идентификатор типа >= FILE OF < тип компонент >;

TYPE T = FILE OF REAL; VAR

F: T;

VAR F: FILE OF REAL;

 

TYPE ST= RECORD

A: STRING[10];

B: INTEGER; C:

REAL; D: BYTE

END;

 

VAR DAN: FILE OF ST;

Особенности обработки текстовых файлов

Текстовые файлы состоят из символов. Каждый текстовый файл разделяется на строки неопределенной длины, которые заканчиваются символом конец строки. Весь файл заканчивается символом конец файла.

К текстовым файлам возможен только последовательный доступ. С текстовыми файлами работают различные редакторы текстов. Текстовые файлы имеют стандартный тип TEXT.

VAR < имя файла>: TEXT;

Посимвольные операции ввода-вывода выполняются для текстовых файлов процедурами READ и WRITE. Строки обрабатываются специальными процедурами для текстовых файлов READLN и WRITELN. Кроме того, для текстовых файлов применяются процедуры ASSIGN, RESET, REWRITE, CLOSE, EOF, EOLN.

Процедура APPEND открывает существующий текстовый файл для добавления записей. Для текстовых файлов нельзя использовать процедуры и функции SEEK, FILEPOS, FILESIZE, т.к. элементы имеют разную длину.

INPUT и OUTPUT стандартные текстовые файлы для ввода с клавиатуры и вывода на экран.

Рассмотрим программу, реализующую следующую задачу. Дан текстовый файл F1.Необходимо заменить во всех записях этого файла код группы ДС-101 на ДС-201. Скорректированные записи поместить в файл F2.

Здесь читаются последовательно строки из входного файла и в каждой строке в номере группы заменяется символ 1 на 2. Скорректированные строки выводятся в новый файл.

Особенности обработки текстовых файлов

VAR F1,F2: TEXT; POLE:STRING; NAME:STRING[12]; PZ: INTEGER;

BEGIN WRITE(‘ВВОД ИМЕНИ ВХОДНОГО ФАЙЛА:’); READLN(NAME);

ASSIGN(F1,NAME);

WRITE(‘ВВОД ИМЕНИ ВЫХОДНОГО ФАЙЛА:’); READLN(NAME);

ASSIGN(F2,NAME); RESET(F1); REWRITE(F2); WHILE NOT EOF(F1) DO

BEGIN READLN(F1,POLE);

WHILE POS(‘ДС-101’, POLE) <> 0 DO BEGIN

PZ:= POS(‘ДС-101’, POLE); DELETE(POLE,PZ+3,1); INSERT(‘2’,POLE,PZ+3);

END;

WRITELN(F2,POLE)

END;

CLOSE(F1);

CLOSE(F2);

END.

Модули

Процедуры и функции могут быть сгруппированы в отдельный модуль. Модуль (unit)- это программная единица, текст которой компилируется автономно (независимо от главной программы). Если модуль откомпилирован для реального режима, то результат имеет расширение TPU; модули, откомпилированные для защищенного режима, имеют расширение TPP.

Структура модуля отличается от структуры обычной программы на языке Паскаль. Модули имеют четыре основные части: заголовок, который следует за зарезервированным словом UNIT; описательную (интерфейсную) часть, которая начинается за зарезервированным словом INTERFACE (в ней помещаются объявления переменных, процедур, функций, констант и типов данных, которые должны быть доступны для других программных модулей, использующих данный модуль); исполнительную (внутреннюю) часть, которая начинается словом IMPLEMENTATION (в нее входит текст подпрограмм и локальные объекты, доступные только внутри данного модуля) и необязательную часть (секцию инициализации), расположенную после исполнительной части между словами BEGIN и END (при этом, если инициализация модуля не нужна, то в секции помещается лишь слово END).

Математические функции

Имя функции

Назначение функции

Tип результата

Abs(X)

Абсолютное значение (модуль) аргумента

Совпадает с типом Х

 

Abs(-3.5)=3.5

 

ArcTan(X)

Арктангенс аргумента в радианах

Real

 

ArcTan(1)=7.8539816340E-01

 

Cos(X)

Косинус аргумента в радианах

Real

 

Сos(PI/3)=5.0000000000E-01

 

Exp(X)

Экспонента аргумента (E в степени X)

Real

 

Exp(1)=2.7182818285E+00

 

Ln(X)

Натуральный логарифм

Real

 

Ln(10)=2.3025850930E+00

 

PI

Значение числа PI=3. 1515926536E+00

Real

 

( более точно 3.1415926535897932385 )

 

Random

Случайное число из диапазона от 0 до 1

Real

Random(X)

Случайное число из диапазона от 0 до Х

Word

Sin(X)

Синус аргумента в радианах

Real

 

Sin(PI/3)=8.6602540378E-01

 

Sqr(X)

Квадрат аргумента

Совпадает с типом Х

 

Sqr(-12)=144

 

Sqrt(X)

Квадратный корень аргумента

Real

 

Sqrt(841)=2.9000000000E+01

 

Функции округления и преобразования типов

Имя функции

 

Тип аргумента

Тип результата

Chr(X)

Целый Chr(66)=’B’

Chr(Ord(‘M’)=’M’

Char

Frac(X)

Real Frac(-12.34)=-.34

 

Real

Int(X)

Real Int(-12.34)=-12

 

Real

High(X)

Порядковый, массив, строка, открытый массив

Совпадает с аргументом

Low(X)

Порядковый, массив, строка, открытый массив

Совпадает с аргументом

Ord(X)

Порядковый Ord( ‘A’)=65 Ord(Chr(86))=86

LongInt

Round(X)

Real

 

 

LongInt

 

Round(-1.2)=-1 Round(-1.5)=-2

 

Trunc(X)

Real

 

 

LongInt

 

Trunc(1.2)=1

Trunc(1.5)=1

 

Процедуры порядкового типа

Имя процедуры

Назначение процедуры

Имя процедуры

Dec(X [,dx])

Уменьшает значение переменной Х на величину dx

Dec(X [,dx])

 

(если параметр dx не задан, то на –1)

 

 

k:=5; Dec(k)=4

 

 

Dec(k,2)=3

 

 

Dec(k,-2)=7

 

Inc(X [,dx])

Увеличивает значение переменной Х на величину dx

Inc(X [,dx])

 

(если параметр dx не задан, то на +1)

 

 

k:=5; Inc (k)=6

 

 

Inc (k,2)=7

 

 

Inc (k,-2)=3

 

Соседние файлы в папке лекциипоинфе