Поможем написать учебную работу
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.
Структурный тип файл. Виды файлов.
Файл - аналог давно существующего в библиотечном деле понятия картотеки (английское слово file и означает картотеку). Файл - последовательность некоторых записей (компонент), размещаемых на внешнем носителе. Файл представляет самостоятельный объект с точки зрения доступа к нему. Введение понятия файл совершенно необходимо для планирования размещения информации во внешней памяти компьютера (дисках, лентах), а также на экране дисплея, листах на принтере и других внешних устройствах. Различают два вида файлов: последовательные файлы и файлы с прямым доступом.
Для последовательных файлов (типа картотеки) невозможен непосредственный доступ к любой записи: доступ осуществляется только через предыдущие записи. Некоторые типы внешних устройств (клавиатура, листы принтера) допускают только последовательный доступ к записям информации.
Файлы с прямым доступом позволяют получить непосредственный (прямой) доступ к любой записи. Примерами файлов с прямым доступом являются дисковые файлы (файлы на винчестере, на 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 - файл вывода на экран дисплея.
Если к-й столбец прямоугольной матрицы имеет минимальную сумму элементов, определить сумму элементов столбцов до к-ого, иначе - сумму элементов столбцов после к-ого.
Unit Z433_7;
interface
Const n = 3, m = 4;
Type matr = array[1..n,1..m] of real;
mas = array[1..m] of real;
procedure p1(A:matr; Var S:mas); {записывает в массив S суммы элементов столбцов}
procedure p2(S:mas; Var nom:integer); {l - минимальный элемент массива S}
procedure p3(A:matr; l1,l2:integer; Var sum:real);
implementation
procedure p1;
Var i,j:integer;
Begin for j := 1 to m do
Begin S[j] := 0;
for i := 1 to n do
S[j] := S[j] + A[i,j];
end;
end; {p1}
procedure p2;
Var j:integer;
Smin:real;
Begin Smin := S[1];
nom := 1;
for j := 1 to m do
if S[j] < Smin then
Begin Smin := S[j];
nom := j;
end;
end; {p2}
procedure p3;
Var i,j:integer;
Begin sum := 0;
for i := 1 to n do
for j := l[1] to 1[2] do
sum := sum + A[i,j];
end; {p3}
end.
program z433_7;
uses 433_7;
const n = 3, m = 4;
Type matr = array[1..n,1..m] of real;
mas = array[1..m] of real;
Var A:matr; S:mas; i,j,k,nom:integer; sum1,sum2:real;
Begin for i := 1 to n do
for j := 1 to m do readln(A[i,j]);
readln(k);
p1(A,S); p2(S,nom);
if (nom = k) then
Begin p3(A,1,k,sum1);
Writeln (sum1)
end else
Begin p3(A,k+1,m,sum2);
writeln(sum2);
end;
end.