Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Лекции 21-22: Основные задачи обработки файлов

1. Общая характеристика задач обработки файлов.

2. Создание файлов.

3. Анализ текстовых файлов.

4. Сортировка текстовых файлов.

5. Коррекция текстовых файлов.

6. Поиск и выборка данных из файлов.

7. Печать текстовых файлов.

 

1. Общая характеристика задач обработки файлов.

Файлы - одна из наиболее используемых структур данных в системах автоматизации управления (офисных системах), проектирования и моделирования. В этих системах файлы часто являются не только средством долговременного хранения данных, но и средством связи между различными процессами обработки данных (связь по данным). Файлы, объединенные по функциональному или иному принципу, составляют интегрированную базу данных, информация которой может быть доступна одной или нескольким системам обработки данных. Базы данных и связанные с ними проблемы обычно изучаются в отдельном курсе программистского цикла.

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

· создание файла, т.е. ввод данных в новый или в существующий файл;

· анализ файла, т.е. просмотр (чтение) всего содержимого файла и вычисление некоторых интегральных характеристик или показателей этого содержимого;

· сортировка файла, предполагающая упорядочение записей файла по заданному логическому критерию, зависящему от содержания записей;

· коррекция файла, т.е. изменение содержимого файла либо путем обновления записей, либо коррекции по некоторым глобальным критериям (например, удаление "лишних" записей);

· поиск и выборка данных по некоторым логическим критериям содержимого записей файла;

· печать файла, т.е. вывод файла на принтер или на экран в заданном формате размещения информации из записей файла;

 

2. Создание файла.

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

Следующий пример программы иллюстрирует простой алгоритм создания типизированного файла с некоторыми процедурами контроля. Он является модификацией рассмотренного ранее примера программы работы с массивом записей о группе студентов (см. Лекцию 16), в которой массив заменен файлом записей.

program create_file; {Создание файла данных о группе студентов}

uses CRT;

type stud = record num:byte;name: string [16];average:real end;

gr_st= file of stud;{типизированный файл записей}

var gr:gr_st{файл группы студентов}; st:stud{запись о студенте};

nm: string {имя исходного файла}; s:char{признак Y/N};

numb:integer{число записей в файле nm};

BEGIN clrscr; repeat write('Имя файла: ');readln(nm);

if nm='' then halt;assign(gr,nm);s:='Y';

{$I-}reset(gr);{$I+} if IOResult<>0 then

begin write('Открыть новый файл ', nm, '?(Y/N)');

readln(s); if upcase(s)='Y' then

begin {$I-}rewrite(gr);{$I+} if IOResult<>0 then

begin writeln('Диск недоступен!');nm:= '' end;

end else nm:='';

end until nm<>'';numb:=0; if upcase(s)='Y' then

begin seek(gr,filesize(gr));numb:=filesize(gr) end;

writeln('Всего записей в файле:',numb, '. Введите очередную запись:');

with st do repeat repeat writeln('Фамилия,инициалы ','Cредний балл');

readln(name,average); if (average<2) or (average>5) then

writeln('Ошибка! Повторите ввод последней записи');

until (average>=2) and (average<=5);inc(numb);num:=numb; write(gr,st);write('Ввод следующей записи?(y/n)');readln(s);

until upcase(s)<>'Y';close(gr); if numb=0 then erase(gr);

{Конец цикла записи}writeln('Всего записей в файле ',nm,' ',numb);

END {create_file}.

 

3. Анализ текстовых файлов.

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

program volume;

{ Расчет объема файла, где цепочки пробелов учитываются как один символ}

uses CRT, DOS;

const pg=#12;

var total:pathstr;str:dirstr;fn:namestr;fr:extstr;

ft:text;alfa,beta:Boolean;

j,page:byte;a,symb:longint;author:real;

procedure setdisc;

var c: string;

begin writeln(' Установите дискету с файлом ', fn,' и нажмите enter');

readln(c);{$I-}reset(ft);{$I+}

if IOResult<>0 then begin writeln(' Файл ',fn,' не найден!');readln;halt end;

end {setdisc};

procedure checknm;

var i:byte;digit: set of '0'..'9';

begin if str <>'' then

begin for i:=1 to length(str) do if not (str[i] <>' ') then

if (str[i]='-') and (str[i+1] in digit) then str:='';

alfa:=false;

end;

end {checknm};

BEGIN page:=1;symb:=0;a:=0;alfa:=false;beta:=false;

writeln(' Введите полное имя анализируемого файла:');

readln(total);assign(ft,total);fsplit(total,str,fn,fr);

{$I-}reset(ft);{$I+} if IOResult<>0 then

begin for j:=(length(total)-length(fn)-length(fr)) downto 1 do

<== предыдущая лекция | следующая лекция ==>
А в кольцевом пространстве | If beta and not (str[j] in [pg,' ']) then
Поделиться с друзьями:


Дата добавления: 2014-01-04; Просмотров: 298; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.165 сек.