субота, 17 березня 2018 р.

Типізовані файли


Типізовані файли

Файл - це впорядкована сукупність однотипних елементів довільної кількості.

Кількість елементів масивів, множин, записів є визначеною при написанні програми, а кількість елементів файлу у тексті програми не визначається і може бути довільною. 

Опис файлів:
var f:file of <тип елементів файлу>
Наприклад,
var f: file of integer;   (всі елементи файлу – цілі числа)
var f: file of real;        (всі елементи файлу – дійсні числа)
або опишемо комбінований тип
type asd = record
                        a:integer;
                        b:string[27]
                 end;
var f:file of asd;          (всі елементи файлу – є записи)

Команди для роботи з файлами:
Assign(f,’ім’я файлу на диску’); - вказує адресу файлу на диску (наприклад, u:\text).
Rewrite(f); - створює файл і відкриває його для запису.
Write(f,a); - в поточну позицію файлу записує значення змінної а.
Reset(f); - відкриває файл для читання і запису.
Read(f,x); - читає з поточної позиції файлу значення і записує у змінну x.
Close(f); - закриває файл.
Eof(f); - перевірка на кінець файлу.
Seek(f,n); - переміщує вказівник поточної позиції на n+1-компоненту.
Seek(f,0); - переміщує вказівник поточної позиції на першу компоненту.
Seek(f,FileSize(f)); - перехід в кінець, тобто на перший порожній запис, де FileSize(f) – розмір файла в записах (тобто кількість елементів файлу).
FilePos(f); - повертає номер поточного запису.

Задача1. Ввести у файл 10 цілих чисел. Порахувати суму додатніх елементів файлу.
program R1;
var f:file of integer;
       c,s,i:integer;
begin
  assign(f,’U:\ hhh’);
  rewrite(f);
  for i:=1 to10 do
    begin
       read(c);
       write(f,c);
    end;
  close(f);
  reset(f) ; s:=0;
  while not eof(f) do
    begin
      read(f,c);
      if c>0 then s:=s+c
    end;
  close(f);
  writeln(‘s=’,s)
end.

Задача 2. Нехай файли g і h вже створені і містять дійсні елементи. Сформувати файл f  послідовно з елементів файлу g та елементів файлу h. Вивести елементи файлу f на екран.

program pr2;
var g,h,f:file of real;
       x:real;
begin
assign(g,'U:\g.dat');
reset(g);
assign(h,'U:\h.dat');
reset(h);
assign(f,'U:\f.dat');
rewrite(f);

while not eof(g) then
   begin
      read(g,x);
      write(f,x);
   end;
while not eof(h) then
   begin
       read(h,x);
      write(f,x);
   end;
close(h);close(g);close(f);

reset(f);
while not eof(f) then
    begin
        read(f,x);
        write(x);
    end;
close(f);

end.

Д/з №1
1. Ввести 15 цілих чисел, всі парні з них записати у файл f. Порахувати суму та кількість елементів файлу, що належать проміжку [a,b].
2. Файл f вже створений в попередній програмі. Сформувати  файл h з від'ємних елементів файлу f.

Д/з №2
1. Ввести 10 цілих чисел ( 5 додатніх і 5 від'ємних). Додатні записати у файл g, а від'ємні - у файл h. Сформувати файл f  з елементів файлу g та елементів файлу h таким чином:
Якщо сума відповідних елементів файлів g i h більша числа 5   , то у файл f записати цю суму , інакше записати 0.                
2. Файл f вже створений в попередній програмі. Порахувати кількість елементів файлу f, які  більші середнього арифметичного всіх елементів цього файлу.

1 коментар: