RSS    

   Реферат: Модули, записи и файлы

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

Rename ( var f; nevname : string );

Erase ( var f );

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

7.2. Структура файлов

7.2.1Открытие и закрытие файлов

В этом и следующем разделах рассматриваются файлы традиционной для языка Pascal структуры, которые описываются в программе в терми­нах составляющих компонент. Кроме таких файловых переменных (они также называются "типизированными" файлами), в языке Turbo Pascal имеются также файлы специального типа - текстовые файлы, которые введены для поддержки одного практически важного частного случая файловых структур, и нетипизированные файлы, которые используются для более эффективной организации обменов на низком уровне.

Важнейшим моментом при использовании переменных файловых ти­пов является интерпретация файла как потенциально бесконечного спи­ска значений одного и того же (базового) типа. Например, описание пе­ременной F вида

var

F : file of integer;

понимается как определение в программе под именем F списка неопреде­ленного количества целых чисел, расположенного на некотором внешнем запоминающем устройстве (например, на магнитном диске).

С каждой переменной файлового типа также связано понятие теку­щего указателя файла. Текущий указатель можно понимать как скрытую переменную (то есть переменную, неявно описанную вместе с файловой

переменной), которая обозначает ("указывает" на) некоторый конкретный элемент файла. Таким образом, можно графически так представить ин­терпретацию файла, связанного с переменной F:             0     1     2           N

Целое Целое Целое . . . . . Целое . . .

  Текущий указатель —————

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

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

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

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

Обычные типизированные файлы открываются с помощью одной из двух системных процедур - Reset или Rewrite, единственным параметром

которых в данном случае является файловая переменная. Обе эти проце­дуры открывают файл для обмена. Разница между ними заключается в начальных действиях с файлом.

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

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

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

Помимо закрывающей процедуры close, в системе Turbo Pascal также имеется дополнительная процедура Flush (ее параметр - файловая пере­менная). Flush используется для завершения обменов с файлом без его закрытия. Обмены с файлами всегда реализуются через некоторый буфер в оперативной памяти, поэтому в процессе записи на файл последние записываемые элементы могут еще находиться ("застрять") в буфере. Процедура Flush вызывает принудительный сброс этих элементов в файл. Эта процедура имеет смысл в том случае, если с файлом проводились операции записи, и используется редко, так как процедура close произ­водит такие же действия.


Глава 8.  Задание по второй части курсовой работы

В файле содержаться справочные сведенья о предприятиях-задолжниках по уплате налогов

ИНН

Наименование предприятия

Средство на начало года

Начислено налогов в отчет. период

Уплачено налогов в отч. Период

……...

…………..

………………

…………….

………………

…………..

……...

…………..

………………

…………….

………………

…………..

Сведенья на конец отчетного периода

…………………..

……………….

……………

………………

………….

…………………..

……………….

…………….

……………..

………….

         

Тип полей:

№ - тип INTEGER[3]

ИНН – тип STRING[12]

Наименование

Предприятия – тип STRING[20]

Остальные поля – INTEGER

Разработать алгоритм и программу для обработки файла согласно варианту задания

 Вариант №26

Выдать информацию о предприятиях, которые не начисляют налоги в отчетном периоде.

Сведенья выдать в виде таблицы с соответствующим заголовком.

НАПРИМЕР :

 

СВЕДЕНЬЯ О ЗАДОЛЖНИКАХ   >   20 тыс.

Глава 9. Алгоритм второй части курсовой работы


   i:= 0

   max:=0

 
                      

 


 

Глава 10. Основная программа

program part2;

uses crt;

type table = record

n : integer ;

inn : string[12];

Name : string[20];

Sng : integer;

Nop : integer;

Uop : integer;

Skop : integer;

End;

Var

f : file of table;

x : table;

begin

clrscr;

window(45,2,75,7);

textcolor (5) ;

writeln (‘Курсовая работа по информатике ’) ;

writeln (‘Факультет АЭС   группа А-92 ’) ;

writeln (‘студента:    Грязина Д.’) ;

window (1, 1, 80, 25) ;

gotoxy (30, 5) ;

writeln (‘Часть 2’) ;

window(10, 8, 80, 20) ;

writeln (‘В файле table.txt содержатся справочные сведения’) ;

writeln (‘о предприятиях-задолжниках по уплате налогов ’) ;

writeln ;

writeln (‘Задание’) ;

writeln (‘Выдавать полные сведения о предприятиях, которые не  ’) ;

writeln (‘начисляли налоги в отчетный период.’) ;

window(1, 1, 80, 25);

gotoxy(10, 24);

textcolor (4 + blink);

writeln (‘Для продолжения нажмите Enter ’) ;

readln ;

textcolor (10) ;

clrscr ;

assign (f, table.txt) ;

reset (f) ;

writeln (‘Cведения о предприятиях, которые не начисляли ’) ;

writeln (‘налоги в отчетный период ’) ;

writeln (‘+----------------------------------+’) ;

writeln (‘| № | ИНН | Наименование | 1 | 2 | 3 | 4 |’) ;

writeln (‘ | ---+----------+----------------+----+----+----+-----| ’) ;

while not Eof(f) do

begin

read (f, x) ;

with x do

if Nop = 0 then

begin

writeln (‘| ‘№ : 3’ | ‘,Inn : 12,’ | ’,Name : 20,’ | ’ ,Sng :4,’ | ’,Nop : 4,’ | ’,Uop : 4,’|’ ) ;

writeln (Skop : 4, ‘ | ’) ;

end;

end;

writeln (‘+-----------------------------------------------------------------------+’) ;

writeln ;

writeln (‘1- Сведения на начало года ’) ;

writeln (‘2 – Начислено налогов в отчетный период ’) ;

writeln (‘3 – Уплачено налогов в отчетный прериод ’) ;

writeln (‘4 – Сведения на конец отчетного преиода ’) ;

writeln ;

readln ;

end.
Глава 11. Результаты второй части курсовой работы

Сведения о предприятиях которые не начисляли

налоги в отчетный период.

+-----------------------------------------------------------------------+

¦  № ¦    ИНН            ¦ Наименование       ¦ 1   ¦ 2    ¦ 3    ¦ 4     ¦

¦-----+-----------------+------------------------+----+----+----+-----¦

¦  3   ¦ 54090903618  ¦ Детский сад №275¦  -8 ¦   0  ¦   8  ¦   0   ¦

¦ 10  ¦ 54091032618  ¦           Школа №25 ¦  -7 ¦   0  ¦   7  ¦   0   ¦

+------------------------------------------------------------------------+

1 - Сведения на начало года

2 - Начислено налогов в отчетный период

3 - Уплачено налогов в отчетный период

4 - Сведения на конец отчетного периода

Заключение

Полученный мною практический опыт применительно к программированию на ПАСКАЛЕ позволяет использовать эффективное модульное программирование. Кроме того, изучив представленный в курсовом проектировании материал, я приобрел практические навыки использования процедур, функций. Наряду с этим я научился правильно использовать файловые функции операционной системы MS-DOS, что является одним из основных вопросов программирования.

Список использованных источников:

Фаронов В. В., Турбо Паскаль 7.0., Учебное пособие. – М.: «Нолидж», 1999.

Бляшкин И. И. Буров А. А. Новые возможности Турбо Паскаля 6.0. – СПб.: Издательство «Макет»,1992.

Фаронов Н.Н. Програмирование на персональных ЭВМ в среде Турбопаскаль. – М.: Издательство МГТУ, 1990.


Страницы: 1, 2, 3, 4


Новости


Быстрый поиск

Группа вКонтакте: новости

Пока нет

Новости в Twitter и Facebook

                   

Новости

Обратная связь

Поиск
Обратная связь
Реклама и размещение статей на сайте
© 2010.