 
        
        - •6.050103 «Програмна інженерія»
- •Одновимірні масиви
- •Теоретичні відомостi
- •Поняття масиву
- •Оголошення масиву
- •Доступ до елементів масиву
- •Обробка масивів
- •Приклад програми
- •Варіанти завдань
- •Контрольні питання
- •Багатовимірні масиви
- •Теоретичні відомостi
- •Обробка матриць
- •Масиви-параметри
- •Приклад програми
- •Варіанти завдань
- •Контрольні питання
- •Теоретичні відомості
- •Поняття рядка
- •Операції з рядками
- •Приклад програми
- •Варіанти завдань
- •Контрольні питання
- •Теоретичні відомості
- •Поняття структури
- •Оголошення структури
- •Доступ до полів структур
- •Обробка структур
- •Приклад програми
- •Варіанти завдань
- •Теоретичні відомостi
- •Приклад програми
- •Варіанти завдань
- •Бінарні файли
- •Теоретичні відомостi
- •Потоки і файли
- •Приклади програм
- •Варіанти завдань
- •Текстові файли
- •Теоретичні відомостi
- •Приклади програми
- •Варіанти завдань
- •Теоретичні відомостi
- •Приклади програм
- •Варіанти завдань
- •8.1 Теоретичні відомостi
- •8.2 Приклади програм
- •8.3. Варіанти завдань
- •Порядок виконання роботи та зміст звіту
- •Список рекомендованої літератури
- •1.1. Одновимірні масиви ............................................................................... 3
- Текстові файли
Мета роботи - вивчити особливості створення і обробки текстових файлів даних.
- Теоретичні відомостi
Текстові файли - це файли, що складаються із компонентів–рядків змінної довжини (від 0 до 255 символів). Кінець кожного рядка позначається спеціальною ознакою кінця рядка Eoln, що представляє собою пару керуючих символів: "переведення каретки" (#13) і "переведення рядка" (#10).
- Приклади програми
Приклад. Створити текстовий файл. Впорядкувати слова в кожному його рядку за алфавітом, переписавши їх в новий текстовий файл. Дописати в кінець нового файлу повідомлення про загальну кількість оброблених слів.
Алгоритм
- Початок. 
- Ввести текстовий файл. - Відкрити файл для запису. 
- Повторювати дії, поки не натиснута клавіша 'n': - Ввести рядок. 
- Записати його у файл. 
- Запит на введення наступного рядка. 
 
- Закрити файл. 
 
- Вивести введений файл для перегляду. - Відкрити файл для читання. 
- Повторювати дії, поки не досягнутий кінець файла: - Зчитати поточний рядок. 
- Вивести його на друк. 
 
- Закрити файл. 
 
- Створити новий текстовий файл, який містить впорядковані рядки першого. - Відкрити перший файл для читання. 
- Відкрити другий файл для запису. 
- Повторювати дії, поки не буде досягнутий кінець першого файла: - Зчитати поточний рядок файла. 
- Вилучити його початкові пробіли. - Повторювати дії, поки перший елемент рядка – пробіл: 
- Видалити перший елемент рядка. 
 
- Вилучити з рядка проміжкові пробіли-дублікати. - Повторювати дії, поки в рядку є підрядок, що містить два пробіли підряд: - Видалити в знайденому підрядку перший із пробілів. 
 
 
- Якщо останній елемент рядка не пробіл, то приєднати пробіл в кінець рядка. 
- Сформувати масив слів, що містяться у поточному рядку. - Повторювати дії, поки в рядку є пробіли: - Слово до першого знайденого пробілу записати як черговий елемент масиву слів 
- Видалити збережене у масиві слово і відповідний пробіл із рядка 
 
 
- Відсортувати слова, збережені у масиві. - Послідовно порівнювати пари слів і якщо їх послідовність не відповідає шуканій, переставити слова місцями. 
 
- Записати масив відсортованих слів у компоненту другого файлу. 
- Записати у кінець файлу повідомлення про кількість слів. 
 
- Закрити перший файл. 
- Закрити другий файл. 
 
- Кінець. 
Текст програми
program Lab_9_2;
uses Сrt;
var f1, f2: text; { заданий фaйл }
st, prom : string; { тимчасовий рядок }
n : byte; { кількість слів у рядку }
kol : word; { кількість слів у файлі }
word : array [1..20] of string; { масив слів}
i, j, k : integer; { робочі змінні }
s : char; { змінна для закінчення введення }
{--------- створення файла даних ---------------}
procedure Сreate_f1;
begin
Assign (f1, 'lab9_2.dat'); {відповідність файлової змінної файлу на диску}
Rewrite (f1); { відкриття файлу для запису }
repeat
Write ('input string of words: '); ReadLn (st); { введення рядка }
Write (f1, st); { запис рядка у файл }
WriteLn ('continue? [y/n]'); ReadLn (s);
until s = 'n'; { повторювати введення, поки не натиснута клавіша 'n' }
Close (f1); { закриття файлу }
end;
{------ виведення файлу на екран ------}
procedure Output_file (f : text);
begin
Reset (f); { відкриття файлу для читання }
while not Eof (f) do { перегляд усіх записів }
begin
ReadLn (f, st); { читання рядка }
WriteLn (st); { виведення рядка }
end;
Close (f);
end;
{--------- підготовка рядка до аналізу ---------------}
procedure Blank;
begin
while (s[1] = ' ') do
Delete (s, 1, 1); { вилучення початкових пробілів }
while Pos (' ', s) <> 0 do
Delete (s, Pos (' ', s), 1); { вилучення пробілів, що повторюються }
if s[Length (s)] <> ' ' then s := s + ' '; { додавання пробілу в кінець рядка }
end;
{--------- формування масиву слів ---------------}
procedure Forming_Words;
begin
n := 0;
while Pos (' ', st) <> 0 do
begin
n := n + 1;
word [n] := Copy (st, 1, Pos (' ', st) - 1); { формування масива слів }
Delete (st, 1, Pos (' ', st)); { вилучення слова з рядка }
end;
end;
{----- впорядкування масиву слів за алфавітом -----}
procedure Sort;
begin
for i:=1 to n-1 do
for j:=i+1 to n do
if word [i] > word [j] then
begin
prom := word [j];
word [j] := word [i];
word [i] := prom;
end;
end;
{----- створення нового файлу, що відповідає заданій умові -----}
procedure Create_f2;
begin
Assign (f2, 'new9_2.txt');
Rewrite (f2);
Reset (fl);
kol := 0;
while not Eof (f1) do
begin
ReadLn (f1, st); { зчитування рядка з першого файла }
Blank; { вилучення пробілів }
Forming_Words; { формування масиву слів }
Sort; { впорядкування масиву слів за алфавітом }
for i:=1 to n do
Write (f2, word [i], ' '); { запис слів у компоненту нового файлу }
WriteLn (f2);
kol := kol + n; { підрахунок загальної кількості слів }
end;
WriteLn (f2, 'number of words is ', kol); { запис повідомлення у файл }
Close (f1);
Close (f2);
end;
{------ основна програма -----------------}
begin
ClrScr;
WriteLn ('Result of laboratory work 9_2');
WriteLn ('variant 31');
WriteLn ('Еxecuted student of group ІС-хх Petrov');
Create_f1; { створення файлу даних }
WriteLn ('initial file:');
Output_file (f1); { виведення вихідного файлу даних }
ReadLn;
Create_f2; { створення нового файлу даних }
WriteLn('new file of text after sorting:');
Output_file (f2); { виведення нового файлу даних }
ReadLn;
end.
Відеокопія результату
 
