2. Текстові файли призначені дляТекстові файли призначені для
зберігання символівзберігання символів
Для опису текстової файловоїДля опису текстової файлової
змінної використовується типзмінної використовується тип TextText..
Наприклад,Наприклад, var fvar f :: TextText ;;
Для роботи з текстовими файлами
існують процедури і функції.
Розглянемо їх на прикладах.
3. Приклад 1Приклад 1
Створення текстового файлу і запис 10 чиселСтворення текстового файлу і запис 10 чисел
VarVar f : textf : text ; a, i : integer; a, i : integer ;;
beginbegin
Assign(f,Assign(f, ‘ab.pas’‘ab.pas’) ;) ; {-{-встановити зв’язок між
файловою змінною f і фізичним файлом ab.pas}
Rewrite (f)Rewrite (f) ;; {{ -відкрити файл для запису-відкрити файл для запису}}
Writeln( ‘Writeln( ‘введіть числавведіть числа’)’) ;;
ForFor i :=1 to 10 doi :=1 to 10 do
beginbegin
Readln (a); {Readln (a); { --введення числа з клавіатуривведення числа з клавіатури}}
write (f, awrite (f, a :: 2)2) ;; {{ -- запис числа у файлзапис числа у файл }}
End ;End ;
Close (f)Close (f) {{-- закрити файлзакрити файл}}
ЕЕnd.nd.
4. ЗауваженняЗауваження
Числа, які вводяться у файл , зручноЧисла, які вводяться у файл , зручно
утворювати за допомогою командиутворювати за допомогою команди
присвоювання, наприклад:присвоювання, наприклад:
For i:=1 to n do beginFor i:=1 to n do begin
a:=i+1a:=i+1; Write( f,; Write( f, a:2a:2) end;) end;
aaбо утворювати їх випадковим чином:бо утворювати їх випадковим чином:
For i:=1 to n do beginFor i:=1 to n do begin
a:=random(10)a:=random(10); Write( f,; Write( f, a:5a:5) end;) end;
5. Приклад 2Приклад 2
Прочитати два числа із текстового файлуПрочитати два числа із текстового файлу
Var f : text ; a, b : integer;Var f : text ; a, b : integer;
beginbegin
Assign(f, ‘ab.pas’) ;Assign(f, ‘ab.pas’) ;
Reset (f) ;Reset (f) ; {{ -- відкрити файл длявідкрити файл для
читаннячитання }}
Read (f, a);Read (f, a); {{ -- читання 1-го числачитання 1-го числа }}
Read (f, b);Read (f, b); {{ -- читаннячитання 22-го числа-го числа }}
Writeln( a:3, b:3)Writeln( a:3, b:3) {{ -виведення чисел на-виведення чисел на
екранекран}}
Close (f)Close (f)
end.end.
6. Увага!Увага!
Файл в програмі можна відкриватиФайл в програмі можна відкривати
процедуроюпроцедурою ResetReset абоабо AppendAppend
багато разів.багато разів.
ПроцедураПроцедура RewriteRewrite очиститьочистить
існуючий файл.існуючий файл.
В кінці програми обовВ кінці програми обов’’язковоязково
потрібно закрити файл процедуроюпотрібно закрити файл процедурою
Close(f)Close(f)..
7. Приклад 3Приклад 3
Прочитати шосте з початку файла число іПрочитати шосте з початку файла число і
записати його в кінець файлазаписати його в кінець файла
Var f : text ; a, i : integer;Var f : text ; a, i : integer;
beginbegin
Assign(f, ‘ab.pas’Assign(f, ‘ab.pas’ ) ;) ;
Reset (f) ;Reset (f) ; {{ -відкрити файл для читання-відкрити файл для читання}
For i :=1 toFor i :=1 to 66 dodo Readln (f, a)Readln (f, a) ;;
writeln ( a) ;writeln ( a) ;
Append (f) ;Append (f) ; {{ -встановити покажчик на-встановити покажчик на
кінецькінець файлафайла}}
Write (f, a) ;Write (f, a) ; {{ -- запис числа у файлзапис числа у файл }}
Close (f)Close (f)
end.end.
8. Увага!Увага!
Слід памСлід пам’’ятати:ятати:
- якщо пишемо дані в файл командою- якщо пишемо дані в файл командою
WritelnWriteln, то і читаємо дані із файла, то і читаємо дані із файла
командоюкомандою ReadlnReadln;;
- якщо пишемо дані командою- якщо пишемо дані командою WriteWrite,,
то і читаємо дані із файла командоюто і читаємо дані із файла командою
ReadRead..
9. Приклад 4Приклад 4
Знайти суму чисел у файлі, кількість елементів неЗнайти суму чисел у файлі, кількість елементів не
задана(задана( фрагментфрагмент програми).програми).
. . . . . . . . . . . . .. . . . . . . . . . . . .
S:=0;S:=0;
Reset (f) ;Reset (f) ; {{ -відкрити файл для читання-відкрити файл для читання }}
WhileWhile not eof (f)not eof (f) dodo {-{-поки не кінець файлапоки не кінець файла}}
beginbegin
read (read ( f, af, a ) ;) ; {{ -- читання числа із файлачитання числа із файла }}
Write (a : 2) ;Write (a : 2) ; {{ --виведення числа на екранвиведення числа на екран
}}
S:=s+a ;S:=s+a ;
End ;End ;
write (‘write (‘сума чисел=сума чисел=’’ ,, ss ) ;) ;
. . . . . . . . . . . . .. . . . . . . . . . . . .
10. Приклад 4Приклад 4
Знайти суму чисел у файлі, кількість елементів неЗнайти суму чисел у файлі, кількість елементів не
задана(задана( фрагментфрагмент програми).програми).
. . . . . . . . . . . . .. . . . . . . . . . . . .
S:=0;S:=0;
Reset (f) ;Reset (f) ; {{ -відкрити файл для читання-відкрити файл для читання }}
WhileWhile not eof (f)not eof (f) dodo {-{-поки не кінець файлапоки не кінець файла}}
beginbegin
read (read ( f, af, a ) ;) ; {{ -- читання числа із файлачитання числа із файла }}
Write (a : 2) ;Write (a : 2) ; {{ --виведення числа на екранвиведення числа на екран
}}
S:=s+a ;S:=s+a ;
End ;End ;
write (‘write (‘сума чисел=сума чисел=’’ ,, ss ) ;) ;
. . . . . . . . . . . . .. . . . . . . . . . . . .