ВУЗ:
Составители:
Рубрика:
55
var
А, В, С: Array [1..2000] of Real;
то их элементы выстраиваются в одну сплошную цепочку. Иными словами,
адреса в памяти, которую занимают массивы В и С равны:
Addr (B) = Addr (A) +SizeOf (A),
Addr (C) = Addr (B) +SizeOf (B).
(Это верно не только для массивов, но и для любых статических структур,
кроме объектов: память в пределах блока описания переменных отводится
последовательно, но мере
их следования.)
Используя этот факт, можно записать или считать блоком сразу не-
сколько структур данных, приняв за начало блока первую из них:
Assign (f,
′ABC.DAT′);
Rewrite (f, SizeOf (A));
BlockWrite (f,A,3); {открыть f и записать в него три блока сразу}
Close (f);
или
Reset (f, SizeOf (A));
BlockRead (f. A, 3); {открыть f и считать из него три блока сразу}
Close (f);
Бестиповые файлы хороши для копирования, переноса на другой
диск. Их используют для доступа к любым дисковым файлам независимо от
их структуры. Если необходимо просто скопировать какой-либо файл без об-
работки записей, то лучше использовать бестиповые файлы.
Пример:
const bufsize=10000;
var f,g:file;
fname, gname:string[20];
buf:array[1..bufsize] of char;
fzahl, gzahl:word;
begin
writeln(‘ввод имени исходного файла’);
readln(fname);
assign(f,fname);
writeln(‘ввод имени скопированного файла’);
readln(gname);
assign(g,gname);
reset(f,1);
56
rewrite(g,1);
repeat
blockread (f, buf,sizeof(buf), fzahl); {функция sizeof(buf) выдает коли
чество байт buf }
blockread (g, buf,sizeof(buf), gzahl);
until (fzahl=0) or (fzahl<>gzahl);
close(f); close(g);
end.
МОДУЛИ UNIT
Модуль (UNIT) в Турбо Паскале – это специальным образом оформ-
ленная библиотека определений типов, констант, переменных, а также
процедур и функций. Модуль в отличие от программы не может быть запу-
щен на выполнение самостоятельно: он может только участвовать в
построении программы или другого модуля.
Так же как и подпрограммы, модули могут быть стандартными
и не-
стандартными, или пользовательскими, то есть такими, которые
разрабатываются программистами. Как стандартные, так и нестандартные
модули устроены совершенно одинаково, поскольку оформляются по еди-
ным правилам.
Все системные библиотеки Турбо Паскаля реализованы как модули, и
чтобы воспользоваться, например, библиотеками функций операционной
системы DOS и графики Graph, нужно только указать директиву
USES
DOS, Graph;
и дальше использовать любое содержание библиотек, как будто оно
предопределено в языке.
В Турбо Паскале возможность модульного построения чрезвычайно
полезна в двух случаях. Во-первых
, модули очень удобны для построения
собственных библиотек процедур и функций, которые впоследствии могут
подключаться к разным программам, не требуя при этом никаких переделок.
Во-вторых
, именно модульность позволяет создавать программы прак-
тически любого размера. Дело в том, что ни программа, ни модуль, не могут
произвести выполнимый код объёмом более 64 К, если они не используют
var rewrite(g,1);
А, В, С: Array [1..2000] of Real; repeat
то их элементы выстраиваются в одну сплошную цепочку. Иными словами, blockread (f, buf,sizeof(buf), fzahl); {функция sizeof(buf) выдает коли
адреса в памяти, которую занимают массивы В и С равны:
Addr (B) = Addr (A) +SizeOf (A), чество байт buf }
Addr (C) = Addr (B) +SizeOf (B). blockread (g, buf,sizeof(buf), gzahl);
until (fzahl=0) or (fzahl<>gzahl);
(Это верно не только для массивов, но и для любых статических структур,
close(f); close(g);
кроме объектов: память в пределах блока описания переменных отводится
end.
последовательно, но мере их следования.)
Используя этот факт, можно записать или считать блоком сразу не-
сколько структур данных, приняв за начало блока первую из них:
Assign (f, ′ABC.DAT′); МОДУЛИ UNIT
Rewrite (f, SizeOf (A));
BlockWrite (f,A,3); {открыть f и записать в него три блока сразу} Модуль (UNIT) в Турбо Паскале это специальным образом оформ-
Close (f);
ленная библиотека определений типов, констант, переменных, а также
или
Reset (f, SizeOf (A)); процедур и функций. Модуль в отличие от программы не может быть запу-
BlockRead (f. A, 3); {открыть f и считать из него три блока сразу} щен на выполнение самостоятельно: он может только участвовать в
Close (f); построении программы или другого модуля.
Так же как и подпрограммы, модули могут быть стандартными и не-
Бестиповые файлы хороши для копирования, переноса на другой
стандартными, или пользовательскими, то есть такими, которые
диск. Их используют для доступа к любым дисковым файлам независимо от
разрабатываются программистами. Как стандартные, так и нестандартные
их структуры. Если необходимо просто скопировать какой-либо файл без об-
модули устроены совершенно одинаково, поскольку оформляются по еди-
работки записей, то лучше использовать бестиповые файлы.
ным правилам.
Пример:
Все системные библиотеки Турбо Паскаля реализованы как модули, и
const bufsize=10000;
чтобы воспользоваться, например, библиотеками функций операционной
var f,g:file;
системы DOS и графики Graph, нужно только указать директиву
fname, gname:string[20];
USES
buf:array[1..bufsize] of char;
DOS, Graph;
fzahl, gzahl:word; и дальше использовать любое содержание библиотек, как будто оно
begin предопределено в языке.
writeln(ввод имени исходного файла); В Турбо Паскале возможность модульного построения чрезвычайно
readln(fname); полезна в двух случаях. Во-первых, модули очень удобны для построения
assign(f,fname); собственных библиотек процедур и функций, которые впоследствии могут
writeln(ввод имени скопированного файла); подключаться к разным программам, не требуя при этом никаких переделок.
readln(gname); Во-вторых, именно модульность позволяет создавать программы прак-
assign(g,gname); тически любого размера. Дело в том, что ни программа, ни модуль, не могут
reset(f,1); произвести выполнимый код объёмом более 64 К, если они не используют
55 56
Страницы
- « первая
- ‹ предыдущая
- …
- 26
- 27
- 28
- 29
- 30
- …
- следующая ›
- последняя »
