Зовнішні файли. Мова Pascal.

Про матеріал

Матеріали "Зовнішні файли" корисно застосовувати при підготовці учнів для участі в олімпіаді з інформатики

Перегляд файлу

Зовнішні файли

Навчальна та виховна мета:

Ознайомитись з поняттям зовнішній файл, його характеристиками, навчитися застосовувати файлові змінні у паскаль-програмах. Вивчити структуру файлових процедур.

Навчальні питання

Вступ

 

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

 

2. Файлова змінна

 

3. Стандартні процедури обробки файлів.

4. Приклади операторів запису і зчитування даних.

 

Висновки.
1. У Паскалі файл у програмі представляється файлової змінної, ім'я якої будується зазвичайними правилами Паскаля.
2. Вхідний файл створюється будь-яким підходящим способом незалежно від програми й до її запуску. Вихідний файл формується програмою
3 У мові Паскаль існує три види файлів: текстові, типізовані, нетипізовані
Навчально-матеріальне забезпечення
Дисплейний клас. Програмне забезпечення
 



Вступ
У прикладних програмах, як правило, є велике число вхідних і вихідних даних, причому часто виникає необхідність передачі даних з однієї програми в іншу. Тому дані зберігаються у файлах і при необхідності прочитуються, а також записуються у файли операторами програми. Згадаємо, що файлом називається іменована область зовнішньої пам'яті ЕОМ, що містить різні дані. Доступ до даниху файлі може бути прямим або послідовним залежно від типа файлу.

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

Розглянемо роботу з даними текстових файлів.
Текстові файли представляють сукупність рядків змінної довжини з послідовним доступом до даних, тобто дані записуються на диск і прочитуються лише послідовно. Інформація в текстових файлах зберігається в символьному (текстовому) вигляді. При записі числових або логічних значень відбувається автоматичне перетворення даних в символьного типа, а при прочитуванні дані автоматично перетворяться в машинні коди. Рядки текстового файлу закінчуються символом #13 – Enter і #10 - повернення каретки. В кінці файлу встановлюється код #26. При запису у файл дані записуються підряд, а символи, що управляють, встановлюються автоматично оператором Writeln. Символи, що управляють, працюють при перегляді/редагуванні файлу на екрані або при друці, але при цьому, як правило, не показуються.

  1. Файлова змінна
    Файлова змінна " f " описується таким чином Var f: Text;
    У програмі файлова змінна " f " зв'язується з ім'ям файлу на диску, оператором:
    Assign(f, 'Name_f');
    де Name_f - ім'я файлу.
    Наприклад, змінна "f" зв'язується з файлом "file. dat" оператором Assign(f, 'file. dat'); якщо файл знаходиться в поточному каталозі, інакше до нього вказує адреса, наприклад: 'C:\Pascal\Work\file.dat'. Зв'язок файлової змінної "f" з ім'ям файлу на диску аналогічно привласненню "f" значення.
     
  2. Стандартні процедури обробки файлів.

 Для запису даних у файл його необхідно відкрити оператором:
ReWrite(f);
При цьому на диску створюється новий файл. Ім'я файлу вказане в операторі Assign(f,'Name_f'); Дані записуються у файл оператором
Write(f,<cписок>); або Writeln(f,<cписок>); Причому, оператор Writeln(f,<cписок>); встановлює в кінці даних управляючи символи,: #13, #10. Тут позначено <cписок> - список змінних. Повторне вживання оператора ReWrite(f) стирає вміст файлу і встановлює покажчик на початок файлу.
Для читання даних з файлу його необхідно відкрити оператором Reset(f);
При цьому покажчик встановлюється на початок файлу. Дані зчитуються з початку файлу оператором Read(f, <cписок>); або Readln(f, <cписок>). Оператор Readln(f, <cписок>) після читання даних для змінних, вказаних в <cписок> переводить покажчик за управляючи символи: #13, #10, ігноруючи ті дані, що можливо залишилися в рядку. Отже оператор Readln(f); пропускає всі дані записані до управляючих
символів #13, #10. Повторне використання оператора Reset(f); встановлює покажчик на початок файлу для читання даних, вміст файлу при цьому не міняється.
Після закінчення роботи з файлом його необхідно закрити процедурою
Close(f);
інакше файл закривається автоматично при закінченні роботи програми, але при цьому може статися втрата даних в кінці файлу.
Для запису даних в кінець закритого файлу застосовується процедура
Append(f); при цьому на диску повинен існувати файл з ім'ям, вказаним в операторі Assign(f,'Name_f').
Нагадаємо, що якщо змінна "f" в операторах ввода/вывода не вказується, то відбувається запис даних на екран і прочитування даних з клавіатури з відображенням на екрані. Дані, записані у файл в однієї програмі часто використовуються (прочитуються) в іншій програмі. При цьому дані, записані у файл операторами Write(f, <cписок>); і Writeln(f, <cписок>) необхідно прочитувати відповідно операторами Read(f, <cписок>); і Readln(f, <cписок>); Причому тип і довжина прочитуваних даних повинні відповідати записаним даним. Якщо записувати дані підряд (довжина запису обмежена довжиною сегменту, наприклад до 1024 символів), то при перегляді редактором тексту видаватиметься повідомлення про усікання даних по обмежувачу довжини рядка редактора. Рекомендується в текстових файлах обмежувати довжину рядка розмірами екрану для зручного перегляду даних. Запис даних у файл дозволяє уникнути використання масивів, що займають велику частину оперативної пам'яті. При цьому необхідно відразу після розрахунку записувати значення змінних у файл. При читанні даних з файлу можна використовувати масив або змінні того ж типу.
При роботі з числовими даними необхідно враховувати, що числа у файлі повинні відділятися один від одного хоч би одним пропуском. Отже при запису числових даних у файл необхідно використовувати
формат з достатньою кількістю позицій для виводу.


4. Приклади операторів запису і зчитування даних.


Assign(f1,'File1.dan'); {призначити змінній f1, ім'я файлу: File1.dan }
ReWrite(f1); {відкрити файл для запису в першій програмі }
Writeln(f1,'Значения "X","Y"' ); { почати запис }
For i:= 1 to N do
begin
X:= 0.5*i;
Y:= Ln(X); { приклад розрахунку значень змінних }
write(f1, X:6:2, Y:10:4);{записати дані у файл File1.dan }
If i mod 5 = 0 then writeln(f1) {записати символ #13 }
end;
Close(f1); { закрити файл в першій програмі }
Assign(f2,'File1.dan');
Reset(f2); { відкрити файл для читання в другій програмі }
Readln(f2); { пропустити перший рядок }
For i:= 1 to N do
begin
read(f2, а[i], b[i]);{рахувати дані в масиви A і B }
If i mod 5 = 0 then readln(f2) { рахувати символ #13 }
end;
Close(f2); { закрити файл в другій програмі }

     End.
При оновленні файлу з вихідними даними під час повторних запусків програми на екрані з'являється попередження (Warning) про перезапис нових даних з диска в оперативну пам'ять, тобто у вікно редактора: Reload from disk?, на що слід відповісти - Yes.
При роботі із рядковими даними необхідно вказувати довжину змінної типа String в операторі опису типів змінних, інакше оператором Read(f, S); у рядкову змінну "S" зчитується до 255 символів, а оператором Readln(f, S); зчитуються всі символи до #13, але не більше 255, причому пропуски в кінці
рядка ігноруються. Наведемо приклад програми для зчитування рядкових і числових даних з файлу і запису їх в інший файл.


var
з: char; j, i: word;
s: array[1..10] of string[12];
а: array[1..10, 1..6] of word;
f1, f2: text;
BEGIN
assign(f1, 'F1.txt'); reset(f1);
assign(f2, 'F2.txt'); rewrite(f2);
for i:= 1 to 10 do
begin
read(f1, s[i]); { зчитування рядка }
for j:= 1 to 6 do read(f1,а[i,j]); {зчитування шести чисел}
readln(f1) { зчитування символу кінця рядка }
end;
for c:= 'А' to 'Я' do { цикл по перебору символів }
for i:= 1 to 10 do
if s[i,1]= з then
begin
write(f2, s[i]); { запис рядків в алфавітному порядку перших символів }
for j:= 1 to 6 do write(f2, а[i,j]:2); { запис шести чисел }
writeln(F2)
end;
close(f1);
close(f2);
END.
Тут вважається що у файлі F1. txt записані дані, які в редакторі тексту мають вигляд:
Леонтович 5 4 4 5 4 3
Івлів 4 5 3 4 3 4
і т. п.


Після зчитування даних в програмі відбувається їх сортування перебором і запис у файл F2. txt в алфавітному порядку першої літери прізвища.
Примітка: Лінійний масив "S" рядкового типу можна представити як двовимірний масив "S" символьного типу. Тут перший індекс відповідає номеру елемента одновимірного масиву "S", а другий – номеру символу в елементі одновимірного масиву "S". При зчитуванні даних з файлу невизначеної довжини можна використовувати функцію EOF(f); що повертає ознаку кінця файлу, а саме: EOF(f) = True якщо покажчик міститься на ознаці кінця файлу (код #26), інакше EOF(f) =False. Наведемо приклад операторів для зчитування тексту з файлу FF1.t, кодування тексту і запису у файл FF2. t із збереженням коду #13.


assign(f1, 'FF1.t'); reset(f1);
assign(f2, 'FF2.t'); rewrite(f2);
while not EOF(f1) do begin read(f1,c); {прочитуємо змінну типа Char }
if с <> #13 then c:=pred(c); write(f2,c) {кодуємо і виводимо на екран }
end;

docx
Пов’язані теми
Інформатика, Інші матеріали
Додано
25 вересня 2019
Переглядів
1408
Оцінка розробки
Відгуки відсутні
Безкоштовний сертифікат
про публікацію авторської розробки
Щоб отримати, додайте розробку

Додати розробку