Деректердің файлдық 
типтері. Файлдармен жұмыс істеу
 
Файлдық тип, сыртқы тасымалдаушыда 
орналасқан бір типтегі компоненттер 
тізбегінен тұратын Паскаль тіліндегі 
мәліметтер болып табылады. Ондағы компоненттердің 
типі файлдық типтен басқа кез-келген 
бола алады. Паскальда файлдық типтегі 
айнымалылар ақпаратты енгізу-шығару 
үшін қолданылады. Ақпаратты енгізу-шығару 
алдында файлдық айнымалы  assign процедурасының 
көмегімен сыртқы файлмен байланысқан 
болуы файлды оқу немесе оған жазу үшін 
ол ашық болуы керек. Сонан соң енгізу-шығаруды 
орындауға болады.
Файлдардың 3 тобы анықталған: текстік (тип text),  
типтік (file of <тип>),  типтік емес (file). 
Олармен жұмыс істеу бір-бірінен ерекшеленеді.
Әдетте барлық файлдарды тізбектей,  
ретпен ену мүмкіндігіне ие файлдар дейді. 
Көңіл аударыңыз: seek процедурасының көмегімен 
типтік және типтік емес файлдар үшін 
ретсіз ену режимін орнатуға болады. Бұл 
кезде файл компоненттерін нөмірлеу нөлден 
басталады. Жұмыс аяқталған соң файл close 
процедурасымен жабылуы тиіс.
Барлық файлдар үшін қолданылатын 
стандартты процедуралар мен функциялар:
assign (f,  name) - Файлдық айнымалы 
f–ті сыртқы name файлымен байланыстыру.
chdir (path) - Ағымдағы директорияны 
өзгерту.
close (f) - Ашылған файлды жабу.
erase (f) - Сыртқы файлды жою.
mkdir (path) - Каталог құру.
rename (f,  new) - Сыртқы файлдың атын 
өзгерту.
reset (f[, size]) - Алдын-ала бар файлды 
ашу.
rewrite (f[, size]) - Бос,  жаңа файл ашу. 
Оған процедурасында көрсетілген атау 
беріледі. Егер ондай файл бар болса,  
онда ол файл өшіріледі.
rmdir (path) - Бос каталогты жою.
eof (f) - Файл соңы.
Текстік файлдар жолдарға бөлінген 
символдар жиынтығынан тұрады. Әрбір жолдың 
соңында жол соңын білдіретін белгі болады. 
Текстік файлдармен жұмыс істеу ерекшелігі 
мынада: мәндері read немесе write процедуралары 
арқылы енгізілетін және шығарылатын 
файлдар char немесе string типтерімен қатар 
жай типтердің бірінде: бүтін,  нақты,  
логикалық (тек жауапқа шығаруда) бола 
алады.
Бұл процедуралар ASCII –жолдармен де жұмыс 
істей алады.
Текстік файлдар үшін,  программаны 
іске қосқанда автоматты түрде ашылатын 
және жұмыс соңында автоматты түрде жабылатын 
екі стандартты файлдық айнымалы бар. 
Олар: INPUT -клавиатурамен байланыс; OUTPUT 
-дисплей экранымен байланыс.
Егер text типіндегі 
файлдармен жұмыс барысында файлдық айнымалы 
көрсетілмесе, онда файлдық айнымалы INPUT 
немесе OUTPUT қолданылуда деп есептейді. 
Текстік файлды оқу үшін reset процедурасымен,  
не оған жазу үшін rewrite немесе append процедураларының 
бірімен ашу керек.
 
1. Мәтіндік файлдар
Текстік файлдармен жұмыс істейтін 
процедуралар мен функциялардың сипаттамалары:
append (f) - Файлды ашу және соңына 
жаңа ақпараттар енгізу.
read (f, <тізім>)- Файлдан оқу.
readln (f, <тізім>) – Файлдан жолдарды 
оқу.
write (f, <тізім>) – Файлға жазу.
writeln (f, <тізім>) – Файлға жолдарды 
жазу.
eoln (f)- Файл жолының соңы.
seekeof (f)- Файл соңы.
seekeoln (f) - Файл жолының соңы.
 
2. Типтік файлдар
Типтік файлдармен жұмыс істегенде 
мынадай қосымша процедуралар мен функциялар 
қолданылады:
read (f, <тізім>) – Файлдан типтері 
көрсетілген компоненттерді оқу.
seek (f, num) - Файлдың нөмірі көрсетілген 
компонентіне орналастыру.
truncate (f) - Ағымдағы компоненттен 
бастап файлдың бөлігін жою.
write (f, <тізім>) - Типтері көрсетілген 
компоненттерді файлға жазу.
filepos (f) - Файлдың ағымдағы компонентінің 
номері.
filesize (f) - Файлдың ағымдағы компонентінің 
өлшемі.
 
 
3.Типтік емес 
файлдар
Типтік емес файлдармен жұмыс 
істегенде мынадай қосымша процедуралар 
мен функциялар қолданылады:
blockread (f,  buf,  n [,result])- Файлдан 
компоненттерді оқу.
seek (f, num) - Файлдың номері көрсетілген 
қажетті компонентіне орнату.
truncate (f) - Ағымдағы компоненттен 
бастап файлдың бөлігін жою?
blockwrite (f, buf, n[, result]) - Типтері көрсетілген 
компоненттерді файлға жазу.
filepos (f) - Файлдың ағымдағы компонентінің 
номері.
filesize (f) - Файлдың ағымдағы компонентінің 
өлшемі.
Бірнеше мысалдар қарастырайық. 
Мазмұны мына суретте көрсетілгендей 
екі файл берілсін.
 
 Файл аты:   Asan  | 
  Файл  аты:   Murat  | 
1 3 5 6 7 8 
  2 4 4 4 
  3 2 6 2 2 
  4 3 3 3 3 3 3 
  5 7 7 7 7 7 7 
  6 9 9 5 9 9 9 
  7 
  3 
  1  | 
  
     
  Ata Ana Ara Sana 
  Almaty 
  A s t a n a 
  Kazahstan   | 
 
 
 
 
1-есеп. Әрбір элементін 
еселеу арқылы Asan файлын оқу.
Бұл есепті шешу үшін енгізу және шығару 
файлдарын текстік файл ретінде сипаттаймыз. 
Asan файлы алдын-ала құрылып,  мәліметтермен 
толтырылған. Оны файлдық айнымалы   
f1-мен байланыстырамыз да,  оқу үшін 
ашамыз.
Assign(f1, ‘Asan’);
Reset (f1);
F2 айнымалысын бос жолдың 
көмегімен стандартты шығару 
құрылғысымен (дисплей экранына) байланыстырамыз 
және оны жауапқа шығарамыз.
assign (f2, ‘’);
rewrite (f2);
Дисплей орнына dos форматындағы 
кез-келген файлдың атын көрсетуге болады. 
Сонан соң  f1 файлының элементтерін 
оқитын және оларды бос орын арқылы   
f2 файлына жазатын цикл ұйымдастырамыз. 
Ол цикл  eof(f1) функциясының көмегімен  
f1 файлының соңы табылғанша орындалады. 
Жұмыс соңында екі файлды да жабамыз.
program   prog_1;
var  f1,  f2 : text;  x : char;
begin
assign (f1,  ‘c:\ e\one’); {Файл 
орналасқан орынды көрсету}
reset(f1);
assign(f2,‘’);
rewrite(f2);
while not eof(f1) do
   begin
read(f1, x);
write(f2,  x+ ‘’+x)
       end;
     writeln;
     close(f1); close(f2)
end.
Айнымалылар: f1,  f2 – текстік файлдар; x 
– файл элементі.
Өңделген Asan файлы мына түрде 
жауапқа шығарылады. Әрбір символ бос 
орын арқылы еселенеді.
 
1 1  3 3   3 3   5 5   
  6 6   7 7   8 8 
  2 2  4 4   4 4   4 4 
  3 3   2 2   6 6   2 
  2   2 2 
  4 4   3 3   3 3   3 
  3   3 3   3 3   3 3 
  5 5   7 7   7 7   7 
  7   7 7   7 7   7 7 
  6 6   9 9   9 9   5 
  5   9 9   9 9   9 9 
  7 7 
  3 3 
  1 1  | 
 
2-есеп. «а» әрпін еселеу 
арқылы Murat файлын оқыңдар.
program  prog_2;
var   f1,  f2 : text; x : char;
begin
assign(f1, ‘Murat’);
reset(f1);
assign(f2, ‘ ‘);
rewrite(f2);
while not eof(f1) do
   begin
read(f1,  x);
    if (x = ‘a’) or (x = ‘a’) then 
write(f2,  x+x)
    else write(f2, x)
   end;
   writeln;
   close(f1);
   close(f2)
end.
Есепті шешу алгоритмі:
1. Бағдарлама денесін айнымалыларды 
сипаттаудан бастаймыз.
2. Murat  файлын f1 файлдық 
айнымалымен байланыстырамыз және 
оны оқу үшін ашамыз.
3. f2 айнымалысын стандартты 
шығару құрылғысымен байланыстырамыз 
да оны жауапқа шығару үшін 
ашамыз.
4. f1 файлының элементтерін 
оқитын және оларды f2 файлына 
жазатын цикл ұйымдастырамыз. Ол 
цикл eof(f1) функциясының көмегімен f1 
файлының соңы табылғанша орындалады.
5. Егер «А» немесе «а» әрпі 
кездессе ол жазу кезінде еселенеді.
6. Екі файлды да жабамыз.
Айнымалылар:
F1, f2 -текстік файлдар;
х – файл элементі.
Өңделген файлы мына түрде жауапқа 
шығарылады. Әрбір «а» немесе  «А» әрпі 
екі рет жазылады.
 
AAtaa AAnaa AAraa Saanaa 
  AAlmaaty 
  AA s t aa n aa 
  Kaazaahstaan 
   | 
 
 
3-есеп. Файлын оқыңдар және 
«а» әрпін санаңдар.
program   prog_3;
var   f1 : text;
x : char;
k : integer;
begin
k = 0;
assing(f1,  'Murat');
reset(f1);
while not eof(f1) do
   begin
   read(f1, x);
   if (x='a') or (x='a') then k :=k+1;
end;
   writeln('a  әрпінің саны:=', 
k);
   close(f1);
end.
Есепті шешу алгоритмі:
1. Бағдарлама денесін айнымалыларды 
сипаттаудан бастаймыз.
2. Murat файлын f1 файлдық айнымалымен 
байланыстырамыз және оны оқу 
үшін ашамыз.
3. f1 файлының элементтерін 
оқитын және «а» әрпін санайтын 
цикл ұйымдастырамыз. Ол цикл, eof(f1)  
функциясының көмегімен f1 файлының 
соңы табылғанша орындалады.
4. Нәтижені жауапқа шығарамыз.
5. Файлды жабамыз.
Айнымалылар:
f1, f2 - текстік файлдар;
х – файл элементі;
к – әріптің санын анықтау.
Жұмыс нәтижесі:
А әрпінің саны:=16.
 
4-есеп. Asan файлын оқыңдар және 
онда кездесетін цифрлардың қосындысын 
табыңдар.
Бұл есептегі текстік файлдың элементтерінің 
сандық мәнін анықтау үшін символдардың 
реттелген типке жатаныдығын пайдалануға 
болады. Цифрлардың ascii коды бірінен соң 
бірі орналасқан. Сондықтан кез-келген 
цифрдың мәнін былай анықтауға болады:
K := ord(x)-ord(‘0’);
program  prog_4;
var   f1 : text; x : char;
k,  sum : integer;
begin
    sum :=0;
    assign(f1,  ‘Asan’); reset(f1);
   while not eof(f1) do
   begin
read(f1, x);
if (x> = ‘0’) and (x<=‘9’) then
 begin
    k := ord(x)-ord(‘0’);
    sum := sum+k
 end;
     end;
writeln(‘sum = :’, sum);
close(f1);
end.
 
Есепті шешу алгоритмі:
1. Бағдарлама денесін айнымалыларды 
сипаттаудан бастаймыз.
2. Asan файлын f1 файлдық айнымалымен 
байланыстырамыз және оны оқу үшін ашамыз.
3. f1 файлының элементтерін оқитын 
және цифрлардың қосындысын анықтайтын 
цикл ұйымдастырамыз. Ол цикл, eof(f1) функциясының 
көмегімен f1 файлының соңы табылғанша 
орындалады.
4. Нәтижені жауапқа шығарамыз.
5. Файлды жабамыз.
Айнымалылар:
f1,  f2 -текстік файлдар; х –файл 
элементі;
k – көмекші айнымалы; sum – цифрлар 
қосындысы.
Жұмыс нәтижесі:
sum:=195
 
5-есеп. Murat файлының элементтерін 
өзіне-өзін екі рет жазыңдар.
Бұл жағдайда файлды екі рнет ашпау үшін,  
қажетті элементке орналастыру seek(f1, 0) 
процедурасын пайдаланамыз,  яғни оның 
көмегімен f1 файлдың басына ораламыз. 
Бұл процедурамен жұмыс істеу үшін  
f1 файлдың типін,  мысалы символдар 
файлы ретінде көрсету керек.
program   prog_5;
var   f1 : file of char; f2 : text;
x : char; i : integer;
begin
assign(f1,  'Murat')
reset(f1);
assign(f2, ' ');
rewrite(f2);
for i := 1 to 2 do begin
while not eof(f1) do
begin
    read(f1, x);
    write(f2, x);
end;
     writeln;
     seek(f1, 0) end;
writeln;
close(f1);
close(f2)
end.
Есепті шешу алгоритмі:
1. Бағдарлама денесін айнымалыларды 
сипаттаудан бастаймыз.
2. Murat файлын  f1 файлдық айнымалымен 
байланыстырамыз және оны оқу үшін ашамыз.
3. f2 айнымалысын стандартты 
шығару құрылғысымен байланыстырамыз 
да оны жауапқа шығару үшін ашамыз.
4. f1 файлының элементтерін оқу 
және оларды  f2 файлына жазу үшін екі 
рет көру мүмкіндігін ұйымдастырамыз.
5. Екі файлды да жабамыз.
Айнымалылар:
f1 –символдар файлы; f2- текстік 
файл ;
x –файл элементі; k – көмекші 
айнымалы.
 
Ata Ana Ara Sana Almaty A s t a n a Kasahstan 
  Ata Ana Ara Sana Almaty A s t a n a Kasahstan  | 
 
 
6-есеп. Murat файлын оқыңдар 
және соңынан басына қарай жауапқа шығарыңдар.
Файлды көру үшін, тек типтік 
файлдарға қолданылатын файлдың ұзындығын 
анықтайтын filesize(f1) функциясын пайдаланамыз. 
Бұл кезде файлдың ұзындығы файл соңындағы 
символмен анықталады. Бұл символды назардан 
тыс қалдыру керек.
program prog_6;
var     f1 : file of char;
f2 : text;
x : char;
t, i : integer;
begin
assign(f1,  'Murat');
reset(f1);
assign(f2, ' ');
rewrite(f2);
t :=filesize(f1);
for і:=t-1 downto 0 do
begin
    seek(f1, i);
    read(f1, x); write(f2, x)
end;
writeln; close(f1); close(f2)
end.
Есепті шешу алгоритмі:
1. Бағдарлама денесін айнымалыларды 
сипаттаудан бастаймыз.
2. Murat файлын  f1 файлдық   айнымалымен 
байланыстырамыз да оны оқу үшін ашамыз.
3. f2 айнымалысын стандартты 
шығару құрылғысымен байланыстырамыз 
да оны жауапқа шығару үшін ашамыз.
4. f1 файлының элементтерін соңынан 
кері оқуды және оларды  f2 файлына жазуды 
ұйымдастырамыз.
5. Екі файлды да жабамыз.
Айнымалылар:
f1- символдар файлы; f2- текстік 
файл;
x – файл элементі; t – 
файл ұзындығы; i – цикл параметрі.
 
natshazaK a n a t s A ytamlA anaS arA anA atA  | 
 
 
7-есеп. Murat файлын өзіне-өзін 
соңынан басына қарай жазылған түрде тізбектей 
жазуды құрыңдар.
program  prog_7;
var     f1 : file of char;
f2 : text; x : char;
t, i : integer;
begin
     assing(f1,  'Murat');
     reset(f1);
     assing(f2, ' ');
     rewrite(f2);
     t:=filesize(f1);
     while not eof(f1) do
begin
   read(f1, x); write(f2, x)
end;
writeln;
for i := t - 1 downto 0 do
     begin
seek(f1, i); read(f1, x);
write(f2,  x)
    end;
writeln; 
close(f1); 
close(f2)
end.
Есепті шешу алгоритмі:
1. Бағдарлама денесін айнымалыларды 
сипаттаудан бастаймыз.
2. Murat  файлын f1файлдық айнымалымен 
байланыстырамыз және оны оқу үшін ашамыз.
3. f2 айнымалысын стандартты 
шығару құрылғысымен байланыстырамыз 
да оны жауапқа шығару үшін ашамыз.
4. f1  файлының элементтерін 
оқу үшін екі рет тізбектей көруді (бірінші 
көру-басынан соңына дейін,  ал екіншісі 
соңынан басына дейін) және оларды f2 файлына 
жазуды ұйымдастырамыз.
5. Екі файлды да жазамыз.
Айнымалылар:
f1- символдар файлы; 
f2 – текстік файл; 
x – файл элементі;
t – файл ұзындығы; 
i – цикл параметрі.
Жұмыс нәтижесі:
 
Ata Ana Ara Sana Almaty A s t a n a Kazahstan 
  NatshazaK a n a t s A ytamlA anaS arA anA atA  | 
 
 
8-есеп. Murat файлында бірінші 
нүктеден кейінгі сөздерді жойыңдар.
Бұл бағдарламада көрсетілген 
позициядан бастап файлдың бір бөлігін 
жою үшін truncate(f1) функциясын пайдаланамыз.
program   prog_8;
var  f1 : file of char; f2 : text;
    x : char; k : integer;
begin
    assing(f1,  'Murat'); reset(f1);
    assing(f2,  ' '); rewrite(f2);
    k :=-1;
    while  not  eof(f1) 
do
begin
   k := k+1;
   read(f1, x);
   if x<>'.' then write(f2, x);
else begin
seek{f1,  k+1);
write(f2, x);
truncate(f1)
                            
end;
end;
writeln; 
close(f1); 
close(f2)