Поможем написать учебную работу
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.
. Файл - аналог давно существующего в библиотечном деле понятия картотеки (английское слово file и означает картотеку). Как и для картотеки, файл - последовательность некоторых записей (компонент), размещаемых на внешнем носителе. Файл представляет самостоятельный объект с точки зрения доступа к нему. Введение понятия файл совершенно необходимо для планирования размещения информации во внешней памяти компьютера (дисках, лентах), а также на экране дисплея, листах на принтере и других внешних устройствах.
Различают два вида файлов: последовательные файлы и файлы с прямым доступом.
Для последовательных файлов (типа картотеки) невозможен непосредственный доступ к любой записи: доступ осуществляется только через предыдущие записи. Например, чтобы прочитать 15-ю запись, необходимо прочесть 1,2, ...14-ю запись, даже если они ненужны. Некоторые типы внешних устройств (такие как клавиатура, листы принтера) допускают только последовательный доступ к записям информации.
Файлы с прямым доступом позволяют получить непосредственный (прямой) доступ к любой записи. Примерами файлов с прямым доступом являются дисковые файлы (файлы на винчестере, на CD). Дисковые файлы, разумеется, могут быть организованы и как последовательные файлы.
В языке Паскаль файл - структурный тип, представляющий последовательность компонентов-записей любого типа Паскаля (кроме типа файл) и размещаемых на внешнем носителе. Размещение на внешнем носителе гарантирует сохранение файла неизменным, после завершения программы. Файл - единственная структура данных Паскаля, которая сохраняет свою информацию после завершения программы. Файл может размещаться на любом внешнем устройстве компьютера и представляет для программиста логическую структуру, инвариантную к конкретному физическому носителю. Кроме того, файл - типичная динамическая структура, т.к. размер файла может неограничено изменяться в процессе выполнения программы обработки файла (если используются процедуры записи информации в файл).
Виды файлов и описание файлов в Паскале.
В зависимости от типа записи файлы классифицируют на три вида: 1)Типизированные файлы: все записи файла имеют один и тот же тип. 2)Текстовые файлы: все записи файла имеют тип string. 3)Нетипизированные файлы: тип записи файла никак не фиксирован.
Описание файла зависит от его вида:
Текстовый файл - стандартный тип файла со стандартным именем text.
Типизированный файл описывается в форме:
type <имя типа> = file of <тип записи>;
Нетипизированный файл описывается в форме:
type <имя типа> = file ;
Как и в случае любых других типов данных, после объявления типа Файл для возможности его использования в программе необходимо объявить переменные этого типа (файловые переменные).
Например: type reestr = file of form;
form= record name:string[20]; regN:integer;date:string[16] end;
var: R1:reestr; T:text;
Здесь: reestr - типизированный файл записей типа form; R1 - файловая переменная типа reestr; Т - файловая переменная типа text (текстовый файл).
Любой программе доступны также две стандартные файловые переменные: input - файл чтения с клавиатуры, output - файл вывода на экран дисплея.
9. Переставить в каждом столбце прямоугольной матрицы
все отрицательные элементы в конце столбца. Распечатать
часть полученной матрицы, состоящую из n первых строк,
не имеющих отрицательных элементов.
program z433_9;
uses Z433_9;
Var A:matr;
i,j,l:integer;
BEGIN
for i := 1 to n do
for j := 1 to m do
readln(A[i,j]);
Transpos(A,l);
if l > 0 then PrintL(A,L)
else writeln('Ненулевых строк нет.');
END.
Unit Z433_9;
interface
Const n = 3;
m = 4;
Type matr = array[1..n,1..m] of real;
procedure Transpos(Var A:matr; Var l:integer);
{Переставляет в каждом столбце матрицы A все отрицательные элементы в конец столбца, l - число строк с ненулевыми элементами}
procedure PrintL(A:matr; l:integer);
{печатает l первых строк матрицы A}
implementation
procedure Transpos(Var A:matr; Var l:integer);
Var i,j,k:integer;
r:real;
Begin
l := 0;
for j := 1 to m do
Begin
k := 0;
for i := 1 to n do
Begin
while A[n-k,j] < 0 do k := k + 1;
if (A[i,j] < 0) and (i <= (n - k)) then
Begin
r := A[i,j];
A[i,j] := A[n-k,j];
A[n-k,j] := r;
k := k + 1;
end;
end;
if k > l then l := k;
end;
l := n - l;
end; {Transpos}
procedure PrintL(A:matr; l:integer);
Var i,j:integer;
Begin
for i := 1 to l do
Begin
for j := 1 to m do
write(A[i,j]:5:3,' ');
writeln;
end;
end; {PrintL}
END.