240 likes | 381 Views
Файлове. 1. Същност. Наредена последователност от елементи, разположено върху външно запомнящо устройство (ВЗУ). 2. Видове в зависимост от елементите на файла. С пряк достъп (компонентите са с еднаква дължина); С последователен достъп (при различна дължина на компонентите).
E N D
1. Същност Наредена последователност от елементи, разположено върху външно запомнящо устройство (ВЗУ)
2. Видове в зависимост от елементите на файла • С пряк достъп (компонентите са с еднаква дължина); • С последователен достъп (при различна дължина на компонентите).
3. Дефиниране на тип файл • Type <име на файл>=FILE of <базов тип>; {базовият тип е произволен, с изключение на тип файл} • VAR <списък променливи>:<име на тип>; <списък променливи>: FILE of <базов тип>;
4. Примери • Type tel=RECORD kod:longint; telnumber:longint; END; Ftel= FILE OF tel; • VAR t1:Ftel;
5. Прилика и разлика с масива • Прилика- всеки елемент е индексиран с начална стойност 0; • Разликата е в наличието на файлов маркер (указател). В определен момент той съдържа номера на текущия елемент. Стойността на указателя може да се обработва със стандартни подпорограми.
6. Стандартни процедури • Процедура за назначаване: ASSIGN(FileVar,St); • Предназначение: свързва вътрешния с външния файл; • Действие: St е текстов израз даващ явното име на файла. Това име на файла се присвоява на променливите за файл FileVar и този файл се намира на диска под име St. Не се допуска използването на Assign върху вече отворен файл. • Пример: assign(t1,’tel.dat’);
Стандартни процедури • Процедура за създаване: REWRITE(FileVar); • Предназначение: създава нов файл и го отваря за запис, като файловия указател сочи към началния запис. Ако файлът вече съществува, то той се счита за празен и се изтрива досегашното у съдържание; • Пример: rewrite(t1);
Стандартни процедури • Процедура за отваряне: RESET(FileVar); • Предназначение: файлът върху диска под името присвоено на променливата FileVar се подготвя за обработка и указателя се поставя в началото на файла; • Пример: reset(t1);
Стандартни процедури • Процедура за четене: READ(FileVar,Var); • Предназначение: чете данни от файла, като Var означава една или повече компоненти от файла FileVar, отделени с запетая. Всяка компонента се чете от файла и след всеки оператор за четене указателят на файла се премества към следващия елемент; • Пример: read(t1,a1,a2);
Стандартни процедури • Процедура за запис: WRITE(FileVar,Var); • Предназначение: записва данни във файл, като Var означава една или повече компоненти от файла FileVar, отделени с запетая. Всяка компонента се записва във файла и указателят на файла се премества към следващия елемент; • Пример: write(t1,b1,b2,b3);
Стандартни процедури • Процедура за запълване или освобождаване на вътрешния буфер: FLUSH(FileVar); • Предназначение:при условие, че файлът е отворен с rewrite, то процедурата flushпредизвиква освобождаване на вършения буфер във външния файл. Flush осигурява възможността следващата след нея операция върху файла да извърши действително четене от файла върху диска. Ако файла е отворен с reset, то flush ще предизвика ново запълване на вътрешния буфер след процедурата за четене от файла. Flush не може да се прилага над затворен файл; • Пример: reset(t1); read(t1,a,b,c); flush(t1);
Стандартни процедури • Процедура за затваряне: CLOSE(FileVar); • Предназначение: затваря файла върху диска, свързан с FileVar и в директорията на диска, където файла е разположен, се отрязва новото му състояние; • Пример: close(t1);
Стандартни процедури • Процедура за изтриване: ERASE(FileVar); • Предназначение: изтрива файла върху диска, свързан с FileVar и в директорията на диска, където файла е разположен. Ако файлът е отворен, необходимо е да се изпълни командата close; • Пример: erase(t1);
Стандартни процедури • Процедура за преименуване: RENAME(FileVar,St); • Предназначение: преименува файла върху диска, свързан с FileVar като му дава ново име, взето от текстовата променлива St; • Пример: rename(t1,’tel.dta’);
7. Стандартни функции • Функция за позициониране: SEEK(FileVar,n); • Предназначение: премества файловия указател на n-тата му компонента. Позицията на първата компонента е 0. За да се разшири даден файл може да се избере стойност на номера на компонента извън границата на последната компонента; • Пример: seek(t1,0);
Стандартни функции • Функция за достигнат край на файла: EOF(FileVar); • Предназначение: дава стойност true, ако указателя на файла е достигнал последния му елемент иfalse в противен случай.
Стандартни функции • Функция за достигнат край наред във файла: EOLN(FileVar); • Предназначение: дава стойност true, ако указателя на файла е достигнал край на ред (или на файл) иfalse в противен случай.
Стандартни функции • Функция за текущата стойност на указателя на файла: EOLN(FileVar); • Предназначение: дава текущата стойност на файлoвия указател.
Стандартни функции • Функция за броя компоненти на файла: FILESIZE(FileVar); • Предназначение: дава като резултат броя компонентите на файла.
8. Текстови функции • Текстовия файл има за основни компоненти знакове, които са структурирани в дялове, всеки от които завършва с маркер за край на файл. • Текстовите файлове могат да бъдат обработени само последователно, т.е. те са от втория тип (с последователен достъп). • Декларират се като променливи от тип text. • Примери: Var tf:text;
9. Прилика с другия вид файлове • Процедурите за файлове важат и тук; • Новото е възможността за добавяне на записи след края на съществуващ файл. За тази цел се използва процедурата APPEND(например append(t1))
10. Въвеждане на информация • Оператори READили READLN; • Пример: Var tf:text; x1,x2,:integer; s:string; ………….. readln(tf,x1,x2,s);
11. Извеждане на информация • Оператори WRITEили WRITELN; • Пример: Var tf:text; x1,x2,:integer; s:string; ………….. writeln(tf,x1,x2,s);