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

Текстові файли

Текстові файли

Текстові файли складаються з рядків, довжини яких можуть бути різними.

Опис текстових файлів:
Var f:text;         
Команди:
Assign(f,’ім’я файлу на диску’); - вказує адресу файлу на диску (файл з розширенням txt).
Rewrite(f); - створює файл і відкриває його для запису.
Append(f); - відкриває файл для дописування в нього даних.
Write(f,a); - в поточну позицію файлу записує значення змінної а.
Writeln(f,a); - в поточну позицію файлу записує значення змінної а і вказівник поточної позиції переміщується на наступний рядок.
Writeln(f); - у режимі введення даних вказівник поточної позиції переміщується на наступний рядок.
Reset(f); - відкриває файл лише для читання.
Read(f,x); - читає з поточної позиції файлу значення і записує в змінну x.
Readln(f,x); - читає з поточної позиції файлу значення і записує в змінну x, при цьому вказівник поточної позиції переміщується на наступний рядок.
Readln(f); - у режимі зчитування даних вказівник поточної позиції переміщується на наступний рядок.
Close(f); - закриття файлу.
Eof(f); - перевірка на кінець файлу.
Eoln(f); - перевірка на кінець рядка.
Немає команди Seek(f,n).

Задача 1.  Ввести 16 цілих чисел у файл, причому записати в кожен рядок по 4 числа. Надрукувати на екрані пострічково вміст текстового файла f.
Program g1;
Var f:text; i,a:integer;
Begin assign(f,’u:\fff.txt’);
           rewrite(f);
          for i:=1 to 16 do
           begin
               read(a);
               write(f,a)
               if i mod 4=0 then writeln(f)
           end;
           close(f);
           reset(f);         
           while not eof(f) do
              begin
                 while not eoln(f) do
                        begin
                             read(f,a);
                             write(a)
                          end;                
                  readln(f);
                  writeln     
               end;
            close(f)
end.

Задача 2. Сформувати текстовий файл з 5 стрічок таким чином:
a)      1 1 1 1 1 1 1 1 1 1                         
                       2 2 2 2 2 2 2 2 2 2                                          
                       3 3 3 3 3 3 3 3 3 3                             
                       4 4 4 4 4 4 4 4 4 4                             
                       5 5 5 5 5 5 5 5 5 5                             
program program_a;
var f:text; i,j:integer;
begin assign(f,’u:\ggg.txt’);
          rewrite(f);
          for i:=1 to 5 do
           begin
             for j:=1 to 10 do
                 write(f,i)
             writeln(f)
           end;
          close(f)
end.

Д/З №1
  1. Ввести 15 цілих чисел у файл, причому записати в кожен рядок по 5 чисел. Сформувати файл h, у який  записати  пострічково вміст текстового файла f.
  2. Нехай задано текстовий файл f (файл створений в іншій програмі або в блокноті). Знайти суму додатніх елементів у цьому текстовому файлі.

Д/З №2
  1. Знайти суму та кількість додатніх елементів в кожному рядку текстового файла. Вивести у вигляді: номер рядка – сума елементів, кількість елементів.
  2. Заданий текстовий файл. Підрахувати кількість стрічок та вивести стрічки, які
 починаються і закінчуються однаковою літерою;


субота, 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, які  більші середнього арифметичного всіх елементів цього файлу.