Writeln('Числа в порядку неубування: V ', S1, S2, S3)
End.
Робота з файлами
Тип-файл є послідовністю компонент одного типу, розташованих на зовнішньому пристрої (наприклад, на диску). Елементи можуть бути будь-якого типу, за винятком самого типу-файлу. Число елементів у файлі при описі не оголошується. Робота з фізичними файлами відбувається через так звані файлові змінні.
Для завдання типу-файлу слід використовувати зарезервовані слова File і Of, після чого вказати тип компонент файлу.
Приклад:Type
N = File Of Integer; {Тип-файл цілих чисел}C = File Of Char; {Тип-файл символів}
Є заздалегідь визначений в Паскале тип файлу з ім'ям Text. Файли цього типу називають текстовими.
Ввівши файловий тип, можна визначити і змінні файлового типу :Var
F1: N;F2: C;F3: Text;
Тип-файл можна описати і безпосередньо при введенні файлових змінних :VarZ : File Of Word;
Файлові змінні мають специфічне застосування. Над ними не можна виконувати ніяких операцій (привласнювати значення, порівнювати і так далі). Їх можна використовувати лише для виконання операцій з файлами (читання, запис і так далі).
Елементи файлу вважаються розташованими послідовно, тобто так само, як елементи лінійного масиву. Відмінність же полягає в тому, що, по-перше, розміри файлу можуть мінятися, по-друге, спосіб звернення до елементів зовсім інший: неможливо звернутися до довільного елементу файлу; елементи його є видимими тільки підряд від початку до кінця, при цьому в кожен момент часу доступний тільки один елемент. Можна уявити собі, що для кожного файлу існує покажчик, що показує в даний момент на певний компонент файлу. Після проведення операції читання або запису покажчик автоматично пересувається на наступний компонент.
Перед тим, як здійснювати уведення-виведення, файлова змінна має бути пов'язана з конкретним зовнішнім файлом за допомогою процедури Assign.
Ім'я файлу задається або строковою константою, або через змінну типу Sting. Ім'я файлу повинне відповідати правилам працюючої в даний момент операційної системи. Якщо рядок імені порожній, то зв'язок файлової змінної здійснюється із стандартним пристроєм введення-виводу (як правило - з консоллю).
Після цього файл має бути відкритий однією з процедур :
Reset(<Ім'я файлової змінної>);
Відкривається існуючий файл для читання, покажчик поточної компоненти файлу налаштовується на початок файлу. Якщо фізичного файлу, що відповідає файловій змінній не існує, то виникає ситуація помилки введення-виводу.
Rewrite(<Ім'я файлової змінної>);Відкривається новий порожній файл для запису, йому привласнюється ім'я, задане процедурою Assign. Якщо файл з таким ім'ям вже існує, то він знищується.
Після роботи з файлом він, як правило, має бути закритий процедурою Close.Close(<Ім'я файлової змінної>);
Ця вимога обов'язково повинна дотримуватися для файлу, в який робився запис.
Тепер розглянемо безпосередню організацію читання і запису.
Для введення інформації з файлу, відкритого для читання, використовується вже знайомий вам оператор Read. Правда, в його форматі і використанні ви помітите деякі зміни:Read(<Ім'я файлової змінної>, <Список введення>);Відбувається прочитування даних з файлу в змінні, імена яких вказані в списку введення. Змінні мають бути того ж типу, що і компоненти файлу.
Виведення інформації робить, як можна здогадатися оператор Write(<Ім'я файлової змінної>, <Список виводу>);
Дані із списку виводу заносяться у файл, відкритий для запису.Для текстових файлів використовуються також оператори Readln і Writeln з відповідними доповненнями, що відносяться до файлового введення-виводу. Цікаво, що виведення даних на монітор і введення з клавіатури в мові Паскаль теж є діями з файлами. Вони навіть мають свої зумовлені файлові змінні текстового типу : Output і Input відповідно. Змінна Output завжди відкрита для запису, Input - для читання. Якщо не вказувати файлові змінні в операторах введення-виводу (прийдемо до формату, розглянутого в темі "Оператори введення-виводу"), то у разі запису за умовчанням вибирається файл Output, у разі читання - Input.Як ви знаєте, будь-який файл кінцевий і продовжувати читання з нього інформації можна лише до певної межі. Як цю межу встановити? Перевірити, чи закінчений файл, можна викликом стандартної логічної функції Eof(<Ім'я файлової змінної>)Вона виробляє значення True, якщо файл закінчений, і False - інакше.
Вирішимо наступне завдання: "Написати програму, яка вводить з клавіатури список прізвищ учнів, а потім роздруковує його, окрім тих учнів, у яких прізвище починається з букви 'Ш'".
Оскільки заздалегідь кількість даних не відома, то для їх зберігання використовуємо файл. Тип елементів - строковий.