Рефераты. Модули, записи и файлы p> 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. Алгоритм второй части курсовой работы

Глава 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.


----------------------- начало

i:= 0 max:=0


Вывод упорядоченных сведений

Данные о студенте и о программе

конец

f,’table.txt’

Открыть f

Заголовок

not eof(f)

f,x

Not Eof(f)

Max:=sng

N1:=i

Read(f,x)

WITH x1[i]

Sng>0

I:=i+1

B[i]:=x

Sng>max

Вход

randomize

I= 1,n

J =1,n

a[i,j]:=random*2-1;

Конец

Вход

a[i,j]:6:2

Вход

I= 1,n

J =1,n

Конец

C[i] = 1

I =1,n

J = 1,n

C[i] = a[i,j]*c[i]

Конец

Вход

M = -2

I = 1,n

C[i] > m

M =C[1]

MAX =M

Конец

Начало

Данные о студенте и о программе

FORM (A)

VIVOD (A)

PR (A)

MAX (C)

Вывод сформи рованой матрицы и результатов

Конец


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



2012 © Все права защищены
При использовании материалов активная ссылка на источник обязательна.