250 likes | 406 Vues
Обработване и съхраняване на файлове. Изготвил: Т. Маргаритова. 1. Файлове . Същност. В ЕП има специален тип данни, който се нарича файл и се използва за обработка на данни, разположени във външна памет.
E N D
Обработване и съхраняване на файлове Изготвил: Т. Маргаритова
1. Файлове. Същност. В ЕП има специален тип данни, който се нарича файл и се използва за обработка на данни, разположени във външна памет. Определение: Наредена последователност от елементи, разположени върху външно запомнящо устройство.
2. Видове файлове. В зависимост от елементите на файла те биват: • С пряк достъп – компонентите са с еднаква дължина. • С последователен достъп – с различна дължина на елементите.
3. Правила за обработка на файлове. • 3.1. Файлова променлива и физически файл. Обработката на файл в програмите се описва с помощта на променлива от тип файл, която се нарича файлова променлива. Файловата променлива се свързва с конкретен физически файл, намиращ се на диск, дискета или др. Една файлова променлива може да обработва различни физически файлове.
3.2. Четене и запис. С данни, съхранени във файлове, може да се извършват две входно-изходни операции. • Въвеждане /четене/ на техните стойности. • Извеждане /запис/ на елементи – използва се за промяна на стойности на вече съществуващи елементи или за добавяне на нови такива.
3.3. Брой елементи. Броят елементите на файловете не е предварително зададен /определен/ и може да се изменя. Новите елементи, като правило, могат да се добавят само в края на масива.
3.4. Файлов указател. За да имаме възможността да избираме отделен елемент, да му даваме стойности или пък да използваме неговите стойности, всеки файл се свързва с така нареченият файлов указател. Той сочи във всеки момент текущия, достъпния файлов елемент, който може да се обработва.
3.5. Обработка на файлове. Необходимо е да се спазва следната последователност от действия: • Файловата променлива да се свърже с физически файл, който ще се обработва; • Да се “отвори“ файла – действие, чрез което конкретния физически файл се подготвя за обработка. • Да се обработят елементите на файла, т.е. чрез четене или запис на елементите; • “затваряне“ на файла след обработка. Ако тази операция не се извърши има опасност да се изгубят част от данните. • След като файлът е затворен, файловата променлива има възможност да се свърже с друг физически файл.
ВАЖНО! • В езика Паскал се използва главно така нареченият типизиран файл, в който всички елементи са от един и същи тип /най-често запис/. • Елементите на даден типизиран файл заемат еднакво място в паметта.
4. Дефиниране на тип файл. • Пример 1: type Biblioteka= file of reals;/файл с елементи/ Kniga=record; Ime, Avtor: String{30}; Cena: real; End; Kartoteka: file of Kniga; /файл с елементи от тип запис/ Var ABiblioteka: Biblioteka; F: Kartoteka; /файлови променливи/
4. Дефиниране на тип файл. • Пример 2: type Tel=record; Kod: longineger; Telnumber: longinteger; End; Ftel=file of tel; Var T1:Ftel; /файлова променлива/
5. Множество от стойности. • Стойностите от тип файл са физически файлове във външната памет. В тях се съхраняват данни от типа, определен за елементите на съответния тип файл.
6. Стандартни процедури и функции. • Проверка за край на файла: EOF(FileVar) Дава стойност TRUE ако файловият указател е достигнал последния му елемент и FALSE в противен случай. Полученият резултат е от тип Boolean.
6. Стандартни процедури и функции. • Определяне размера на файла: FILESIZE(FileVar); Определя броя на елементите във файла, т.е. n+1, където n е номер на последния файлов елемент. Полученият резултат е от тип целочислен.
6. Стандартни процедури и функции. • Определяне текущата позиция във файла: FILEPOS(FileVar); Определя поредния номер на елемента, към който сочи файловият указател. Полученият резултат е от тип целочислен.
6. Стандартни процедури и функции. • Процедура за свързване - Assign(FileVar, St); Свързва вътрешния с външния файл. Stе текстов израз, даващ явното име на файла. Свързва файловата променлива FileVarс физическият файл с име St.
6. Стандартни процедури и функции. • Процедура за отваряне – Reset(FileVar); Файлът върху диска под името, присвоено на променливата FileVarсе подготвя за обработка и файловият указател се поставя в началото на файла. Файловият указател се насочва към елемент с номер 0. Ако файлът не съществува, спира изпълнението на програмата и извежда съобщение за грешка.
6. Стандартни процедури и функции. • Процедура за създаване /отваряне/ - Rewrite(FileVar); Създава /отваря/ нов файл и насочва файловият указател в началото му. Ако такъв файл съществува, той се изтрива и се създава отново.
6. Стандартни процедури и функции. • Процедура за запис – Write(FileVar, Var1,Var2,…,VarN); Във файла последователно се записват стойностите Var1,Var2,…,VarN, започвайки от текущият елемент на файла. След всеки запис файловият указател се премества с един елемент към края.
6. Стандартни процедури и функции. • Процедура за четене – Read(FileVar, Var1,Var2,…,VarN); Чете данни от файла, започвайки от текущия елемент, прочита последователно N елемента. След всяко четене файловият указател се премества към края на файла. При опит да се чете след края на а файла, се получава съобщение за грешка.
6. Стандартни процедури и функции. • Процедура за позициониране – Seek(FileVar, Pos); Posе целочислен израз; Насочва файловият указател към елементите с пореден номер Pos. • Пример: Seek(F,1) – насочва към втория елемент. ! Номерацията почва от нула.
6. Стандартни процедури и функции. • Процедура за затваряне – Close(FileVar); Затваря файла върху диска, свързан с FileVarи в директорията на диска, където файла е разположен, се отразява новото му състояние.
6. Стандартни процедури и функции. • Процедура за изтриване – Erase(FileVar); Изтрива физическия файл върху диска, свързан с FileVar/файловата променлива/.
6. Стандартни процедури и функции. • Процедура за преименуване – Rename(FileVar, St); Преименува файла върху диска, свързан с FileVar, като му дава ново име, взето от текстовата променлива St.
ЗАДАЧА:Да се запишат във файл квадратите на първите 100 естествени числа. • Примерна програма, която може да реши тази задача: Program KVADRAT; Var F:file of integer; I:integer; Begin Assign(F,’F1’);/свързва вътрешния файл с външния с име F1/ Rewrite(F); /създава файла F/ For i:=1 to 100 do Write(F,sqr(i));/във файла последователно се записват стойностите на квадратите на i-тия елемент/ Close(F);/затваря файла върху диска, свързан с F/ End.