Як працювати з файлами (бейсик)

Як працювати з файлами (Бейсік)

До сих пір ми вводили дані з клавіатури, а результати виводили на дисплей. Якщо ви працюєте з великими масивами вихідних даних, вводити їх з клавіатури вкрай незручно: немає можливості заздалегідь підготувати і перевірити інформацію, та й набирати її за запитами програми вельми втомлює. Дисплей в свою чергу не дозволяє зберегти отримані дані на машинному носії і використовувати їх в подальшій роботі.

Засоби обробки файлів, наявні в мові BASIC, різко розширюють ваші можливості.

Щоб почати роботу з файлом, перш за все треба його відкрити - оператором OPEN. Після цього ви можете видавати або команди читання чергової порції байтів з файлу-оператора INPUT, або команди записи в файл чергової порції байтів - оператором PRINT.

Працюючи з файлами в середовищі QBASIC (як і в будь-який інший середовищі), необхідно пам'ятати, що програма розрізняє файли за двома ознаками: за типом і за способом доступу до байтів, записаних у файлі.

1. Файли можна розділити по типу на текстові і нетекстові (виконавчі). Там же підкреслена умовність цього поділу: будь-який текстовий файл програміст може вважати і двійковим (але не навпаки).

Порція байтів, яку Новомосковскет програма при виконанні однієї команди INPUT (або яку записує програма командою PRINT), називається записом файлу.

У текстовому файлі записом вважається знайома вам рядок файлу, т. Е. Послідовність байтів до роздільників - символів Повернення каретки (код 13) і "Новий рядок" (код 10). Ці символи в запис не включаються.

За замовчуванням QBASIC вважає файли текстовими, т. З. Новомосковскет порцію байтів до символів 13 і 10, а при записі чергової порції байтів автоматично додає в її кінець символи 13 і 10.

Якщо ви явно оголосили файл двійковим (BINARY), програма перестає відрізняти звичайні символи від роздільників. Ви повинні явно вказувати довжину запису в байтах (наприклад, 14, 68, 160), і комп'ютер механічно пересилає зазначену вами бітову конфігурацію в програму (при читанні) або на диск (при записі), не цікавлячись їх змістом.

2. Програма розрізняє файли послідовного доступу (INPUT, OUTPUT, APPEND) і файли довільного доступу (RANDOM)

Якщо вказано довільний доступ, в будь-який момент можна звернутися до будь-якої порції даних в межах існуючого файлу - для читання або оновлення.

Ми будемо розглядати тільки текстові файли послідовного доступу, що відкриваються як вхідні (для читання -INPUT) або як вихідні (для запису - OUTPUT). На рис. 3.30 показані стандартні схеми обробки файлу послідовного доступу.

3.21.2. Техніка роботи з файлом

Для відкриття файлу використовується оператор OPEN:

OPEN ім'я файлу FOR режим AS #N

Файл - звичайна рядок символів, режим - ключове слово INPUT (вхідний) або OUTPUT (вихідний), N - порядковий номер файлу, що відкривається (N == 1,2.). Всі оператори роботи з файлом, описані нижче, працюють тільки з відкритим файлом і звертаються до нього не по імені, а просто за номером. Тому не можна одночасно відкрити два файли з одним і тим же номером. Закривши файл, ви можете використовувати його номер для відкриття іншого файлу.

Для освоєння роботи з вхідним і вхідним файлом вирішимо наступну задачу:

а) набрати в текстовому файлі кілька чисел;

б) ввести їх засобами BASIC, підсумувати і знайти середнє;

в) вивести в файл TESTO.TXT кількість чисел, суму м середнє.

  • Складіть програму на мові BASIC.
  • 'Блок 1. Читання вхідного файлу.

    10 OPEN "TESTI.TXT" FOR INPUT AS # 1

    20 sum = 0. k = 0 'сума і кількість

    30 WHILE NOT EOF (1)

    50 sum = sum + a. k = k + 1

    'Блок 2. Запис вихідного файлу.

    100 OPEN "TESTO.TXT" FOR OUTPUT AS # 1

    110 PRINT # 1, k; sum; sred

    130 PRINT k; sum; sred

    Читання вхідного файлу організовано циклом WHILE. WEND.

    Оператор CLOSE #N закриває файл із зазначеним номером.

    Командами 100-120 ми відкриваємо вихідний файл TESTO.TXT, виводимо в нього значення k, sum і sred і закриваємо його.

    Відкрийте отриманий текстовий файл (команда [File-Open]) і переконайтеся, що в єдиному рядку файлу дійсно записані кількість чисел, сума і середнє.

    Рекомендуємо вам застосовувати для читання файлу не оператор INPUT ( "Введення"), а оператор LINE INPUT ( "Введення рядка"). Принципова різниця між цими операторами полягає в наступному. INPUT, Новомосковський запис (рядок файлу), як би імітує введення даних з дисплея: відкидає початкові і хвостові прогалини в рядку, а кому інтерпретує як роздільник даних. LINE INPUT Новомосковскет рядок цілком, до роздільників 13 і 10.

    Приклад. Познайомившись зі способами обробки текстових файлів, ви без зусиль зможете написати коротку "концертну" програму, яка буде виконувати будь-яку мелодію, записану в текстовому файлі. Наприклад, наберіть текст мелодії "Елізе" в текстовому файлі ELIZA.TXT (опустіть PLAY і лапки):

    L8 Оз е. Напишіть програму:

    INPUT "Введіть ім'я файлу-мелодії", fl $

    OPEN fl $ FOR INPUT AS # 1

    LINE INPUT # 1. ml $

    Доступ до файлів. (Бейсік)

    # 9; Щоб почати роботу з файлом його необхідно відкрити командою OPEN. Після цього можна проводітm команду читання оператором INPUT або команду записи в файл оператором PRINT. Працюючи з файлами необхідно пам'ятати, що програма розрізняє файли за двома ознаками: за типом і за способом доступу.

    Якщо вказано довільний доступ, то в будь-який момент часу можна звернутися до будь-якого фрагменту файлу і прочитати його або зробити запис.

    Надалі ми будемо розглядати тільки текстові файли послідовного доступу, що відкриваються як вхідні, (для читання -INPUT) або як вихідні (для запису - OUTPUT)

    Текстовий файл трактується як сукупність рядків змінної довжини. Доступ до кожної можливий лише послідовно, починаючи з першої. При створенні текстового файлу в кінці кожного рядка ставиться спеціальний ознака EOLN, а в кінці всього файлу EOF.

    Техніка роботи з файлом.

    Для відкриття файлу використовується оператор OPEN:

    OPEN ім'я файлу FOR режим AS # N

    Файл звичайна рядок символів, режим - команда INPUT або OUTPUT N - порядковий номер файлу, що відкривається. Всі оператори розглядаються нижче працюють тільки з відкритим файлом і звертаються до нього не по імені а по номеру.

    Завдання набрати в текстовому файлі test.txt кілька чисел

    Ввести їх через БЕЙСІК, підсумувати і знайти середнє,

    Ввести в файл ASD.txt кількість чисел, суму і середнє.

    REM читання вхідного файлу.

    OPEN "test.txt" FOR INPUT AS # 1

    sum = sum + a: k = k + 1