ПАСКАЛЬ: РОБОТ А З ФАЙЛАМИ
1. Фізичні файли та файлові змінні
Оксфордський тлумачний словник англійської мови подає слово "файл " так:
- це будь-який із різноманітних типів висувних шухляд, полиць, коробок тощо, як правило, з металевим стержнем для тримання паперів разом і в порядку так, щоб їх легко було відшукати;
- це ряд людей або речей, розташованих одне за одним.
Автори операційної системи MS DOS називають файлом іменовану область на зовнішньому носії інформації , наприклад, на дискеті. Ця область містить якусь інформацію, наприклад, програму чи вхідні дані до неї. Але як обробку цієї області задавати в Паскаль-програмі? На це питання ми спробуємо відповісти. Принаймні частково й на прикладі системи Турбо Паскаль.
Система програмування Турбо Паскаль, як і інші, має в своєму складі цілий набір засобів роботи з файлами – систему введення-виведення . Мова Паскаль не має операторів, якими описується обробка файлів. Уся обробка задається за допомогою підпрограм і змінних, зібраних у кілька бібліотек , або модулів . Наприклад, нам уже відомі такі процедури, як readln і writeln.
Почнемо уточнювати поняття файла. Як область на зовнішньому носії інформації, кожний конкретний, фізичний файл є послідовністю байтів . Але одну й ту саму послідовність байтів можна розглядати та обробляти і як послідовність байтів, і як послідовність значень якогось типу, і як послідовність символів, розбиту на рядки (інша справа, що за значення чи рядки ми при цьому одержимо).
У Паскаль-програмі файл позначається ім’ ям файлової змінної , тобто вона служить представником файла у програмі. Тип у її означенні задає спосіб, у який розглядається та обробляється файл. Далі будемо називати області на зовнішніх носіях фізичними файлами , а під словом "файл" розуміти саме файлові змінні. У мові Турбо Паскаль є три основні різновиди файлових змінних: типізовані файли, тексти та нетипізовані файли. Оглянемо їх.
Типізований файл розглядається як послідовність змінних деякого типу, заданого в означенні файлової змінної. Її тип задається виразом вигляду
file of тип .
Наприклад,
var Fi, Fo : file of word;
FF : file of real;
або
type Student = record
Name : String;
Number : Integer;
end;
StGroup = array [1..25] of Student;
var Fi, Fo : file of StGroup;
Отже, значеннями елементів типізованого файла є значення відповідного типу, наприклад, word, real чи StGroup.
Текст у загальному розумінні – це послідовність символів, розбита на рядки. Рядок у загальному розумінні – це послідовність символів із явно позначеним кінцем. У мові Турбо Паскаль для файлів-текстів означено спеціальний тип із ім’ ям TEXT . Наприклад, можна означити
var Fi, Fo : text;
Підкреслимо, що хоча елементами тексту є символи, цей тип відрізняється від типу file of char . У текстах є спеціальні символи, якими задаються кінці рядків і навіть кінець тексту. Їх обробка відрізняється від обробки решти символів і задається спеціальними підпрограмами, незастосовними до файлів типу file of char, наприклад, readln і writeln.
Безтипові файли розглядаються як послідовності байтів і означаються за допомогою службового слова file . Наприклад,
var Fi, Fo : file.
Для них означено свої підпрограми читання й запису файлів.
Підкреслимо, що наведені три види файлів відрізняються не стільки можливим змістом їх змінних, скільки наборами підпрограм введення-виведення, застосовних до них .
Практично всі підпрограми першим параметром мають ім’ я файлової змінної. Далі ім’ я f буде позначати, як правило, саме файлову змінну. Хоча ніхто не заважає давати файловим змінним зовсім інші імена, наприклад, filevariable чи inpfil тощо.
Робота з файловою змінною починається зі зв’язування її імені з конкретним фізичним файлом . Для цього ідентифікатор файлової змінної та ім’я фізичного файла в операційній системі, або зовнішнє ім’я , задаються у виклику процедури ASSIGN , наприклад,
assign ( f, 'myfile.dat' ).
Другий аргумент, зовнішнє ім’я, задається виразом типу string(рядок). Наприклад, якщо рядки s1 і s2 мають значення 'c:mydirbook' та 'txt', то
assign(f, s1 + '.' + s2);
задає зв’язування з файлом c:mydirbook.txt.
Файлові змінні з іменами INPUT і OUTPUT зв’ язуються неявно, тобто без указання в програмі, зі стандартними файлами введення й виведення – клавіатурою та екраном комп’ ютера. Їх ще називають стандартними пристроями введення-виведення . Означати явно імена input і output та зв’ язувати їх із іншими фізичними файлами не заборонено, але ми цього не рекомендуємо. Вони також можуть не вказуватися у викликах інших підпрограм обробки файлів. У розділі 2 ми вже розглядали найпростіші дії з клавіатурою та екраном.
Приклад . Нехай виконується програма з такими означеннями та операторам
Наверняка у вас есть товары или услуги, продажа которых приносит вам максимальную прибыль. Для быстрого старта в сети вам необходимо создание посадочной страницы (одностраничного сайта), на которой будет размещена информация о маржинальных товарах/услугах интернет магазина. За 8 лет опыта разработки конверсионных страниц мы выработали оптимальную структуру, которая позволит привлекать через landing page больше продаж. На такую структуру «одевается» ваш контент — фирменный стиль, тексты, фотографии, уникальные торговые предложения, после чего страница выходит в свет. Разработка лендинга и запуск в сети — до 7 рабочих дней. Стоит отметить, что в разработку самой посадочной страницы входит и написание копирайтером продающих текстов для вашего бизнеса, чтобы каждый посетитель страницы захотел совершить покупку именно у вас. Результат: качественно разработаная продающая посадочная страница, которая готова приносить вам новых клиентов.