68983

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

Лекция

Информатика, кибернетика и программирование

В кінці кожного рядка є символ кінець рядка внутрішнє відображення якого залежить від реалізації. Звичайно кінець рядка це комбінація коду переведення каретки символ 13 за яким може бути код переведення рядка символ 10. Для програмування переважно немає потреби знати коди символів...

Украинкский

2014-09-28

36.5 KB

1 чел.

Лекція № 12

Тема: Текстові файли

План заняття

  1.  Текстові файли.
  2.  Стандартні файли Input і Output

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

У мові Паскаль окремо виділяють текстові файли, яким відповідає стандартне ім'я text. Наприклад:

type T=text; Тип text є стандартним і тому в програмі не описаний.

Текстовий файл — це послідовність літер, однак він не еквівалентний типу

type T=file of char;

У текстовому файлі послідовність літер розділена на рядки. В кінці кожного рядка є символ "кінець рядка", внутрішнє відображення якого залежить від реалізації. Звичайно, "кінець рядка" - це комбінація коду "переведення каретки" (символ #13), за яким може бути код «переведення рядка» (символ #10). Символ # використовують для позначення символів, які не мають графічного відображення. Наприклад, #10 - це символ з кодом 10. Для програмування переважно немає потреби знати коди символів "кінець рядка" і "кінець файлу" (#26). З символом "кінець рядка" пов'язана логічна функція Eoln. Функція Eoln(t) набуває значення true, якщо вікно вказує на кінець рядка, і false - у протилежному випадку.

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

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

Додатково для текстових файлів визначені такі процедури.

Append - відкриває файл для записування в його кінець (дописування). Звертання:

Арреnd(<ім'я_файлової_змінної>).

Процедура не очищає файл, а тільки розміщує вікно файлу в його кінець. Її зручно використовувати для додавання нових рядків у кінець вже створеного текстового файлу.

SetTextBuf- визначає буфер для обміну з текстовим файлом. її застосовують для прискорення обміну з файлом. Під час відкривання файлу з файловою змінною пов'язується системний буфер розміром 128 байтів, через який і відбувається обмін. Цей буфер виділяється автоматично і доступ до нього неможливий. Процедура SetTextBuf дає змогу сформувати його не в системній області, а в самій програмі й у разі потреби задати його ємність. Звертання таке:

SetTextBuf(var F: text; var Buf; Size: word).

Тут F - файлова змінна, файл не повинен бути відкритий; Buf-змінна для розміщення буфера (нетипований параметр); Size -ємність буфера, байт. Цей параметр не обов'язковий. Якщо його нема, то за замовчуванням ємність становить 128 байтів.

Для читання і записування використовують процедури Read, Readln і Write, Writeln. Оскільки текстовий файл містить символьну інформацію, то під час записування даних іншого типу чи читання змінних іншого типу ці дані й змінні іншого типу автоматично будуть перетворені в символьні і навпаки.

З метою перевірки кінця файлу застосовують функцію Eof, як і для нетекстових файлів.

До текстових файлів не використовують процедуру Seek, оскільки довжина рядків не визначена, зате користуються функціями SeekEoLn і SeekEoF.

SeekEoLn - пошук кінця поточного рядка. Пропускає всі символи-розділювачі (прогалини і табуляції) в рядку і розміщує вікно у кінці рядка, якщо його знайдено, і вертає true. Якщо ж кінця рядка не знайдено, то вікно буде на першому значущому символі і вертає false.

SeekEoF - пошук кінця файлу. Пропускає всі символи-розділювачі, в тому числі символи "кінець рядка", і розміщує вікно файлу на кінці файлу, якщо його знайдено, повертаючи в програму true. Якщо ж кінець файлу не відшукано, то вікно розміститься на першому значущому символі і вертає у програму false.

Стандартні файли input і output

Стандартні файли input та output є текстовими. У програмі їх не описують. З ними не можна використовувати процедури reset та rewrite. Уважають, що ці файли описані й на початку програми ці процедури виконані. Операційна система пов'язує файл input з пристроєм уведення (у режимі діалогу це клавіатура), а файл output - з пристроєм виведення (у режимі діалогу це екран дисплея).

У процесі читання з файлу input і записування у файл output імена цих файлів можна пропускати. Наприклад, еквівалентні такі записи:

read(x) і read(input,x);       

write(x) і write(output,x).

Те ж саме стосується і функцій Eoln і Eof:

Eoln і Eoln(input);               

 Eof і Eof(output).

Для текстових файлів визначена стандартна функція page, яка виконує перехід на наступну сторінку під час виведення інформації на пристрій виведення.

Далі розглянемо використання стандартного текстового файлу output для виведення даних за допомогою стандартної процедури

write(x1,x2.....хn),

яка еквівалентна

write(x1), write(x2),..., write(xn).

Послідовності символів, що виводяться у файл output, будуть розділені на рядки по 80 символів у випадку виведення на екран дисплея.

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


 

А также другие работы, которые могут Вас заинтересовать

36708. ИЗУЧЕНИЕ АТОМНЫХ СПЕКТРОВ С ПОМОЩЬЮ ПРИЗМЕННОГО СПЕКТРОГРАФА 173 KB
  Однако и в этом случае волновая модель не смогла объяснить распределение энергии в спектрах излучения нагретых твёрдых тел. Соответственно в экспериментальной спектроскопии применяется градуировка приборов в длинах волн при исследовании спектрального состава излучаемой энергии. в них наблюдается большое число тесно расположенных спектральных линий так называемый многолинейчатый или полосатый спектр. При этом линейчатые спектры атомов представляют собой совокупность спектральных линий не разбросанных в беспорядке по длинам волн а...
36709. Приборы измерения давления. Стрелочный деформационный манометр 181.44 KB
  Стрелочный деформационный манометр Задание Изучить прибор для измерения давления стрелочный деформационный манометр; определить относительную погрешность измерения при различных уровнях давления. Пояснение к работе Давление отсчитываемое от нулевого давления называется абсолютным давлением pабс. Давление превышающее атмосферное и отсчитываемое от атмосферного давления называется избыточным давлением pизб.
36710. Исследование и расчет режимов распределительной сети 6 - 10 кВ 92.5 KB
  Воспроизведите модель распределительной сети на расчетном столе переменного тока. Определите параметры установившихся режимов распределительной сети для следующих схем: полной; разомкнутой вблизи точки естественного потокораздела; послеаварийной рассмотрите наиболее тяжелый случай. В каждом режиме измерьте: напряжения в центрах питания и в узлах нагрузки; токи в линиях; активные и реактивные мощности в начале и конце каждого участка сети; выполните анализ полученных установившихся режимов.
36711. Кластерный анализ. Агломеративные методы 22.56 KB
  Решение поставленной задачи: 1Центрируем и нормируем: 2Рассчитаем матрицу расстояний: 1 2 3 4 5 6 Далее поскольку матрицы будут симметричными будут записаны полученные данные только над главной диагональю 3По методу дальнего соседа: Объединим 1 и 2 с расстоянием 0.84 1 3 4 5 6 Объединим 1 и 3 с...
36712. Имитационное моделирование случайных событий. Компьютерное моделирование 214.5 KB
  Оценить надежность системы в соответствии с вариантом состоящей из трех узлов и устройств B C D E F. Рассчитать аналитически вероятность безотказной работы всей системы. Построить имитационную модель системы. Оценить вероятность безотказной работы системы с помощью имитационной модели.
36713. СОЗДАНИЕ БАЗЫ ДАННЫХ «СТАВРОПОЛЬСКИЙ КРАЙ» И ОСНОВЫ РАБОТЫ В НЕЙ 223 KB
  Задание № 2 Сформируйте структуру таблицы АДМИНИСТРАТИВНЫЕ РАЙОНЫ для хранения в ней справочных сведений о районах Ставропольского края. Структура таблицы АДМИНИСТРАТИВНЫЕ РАЙОНЫ Признак ключа Имя поля Тип поля Размер поля Ключ Код района Текстовое 3 Название района Текстовое 20 Плотность населения Числовое С плавающей точкой Число населенных пунктов Числовое Длинное целое Площадь территории Числовое Длинное целое Численность населения Числовое С плавающей точкой Технология работы В окне базы данных перейдите к объектам ТАБЛИЦЫ. Таблица...
36714. Исследование схем усилителей в программной среде PSpice 190 KB
  Усилитель собран на биполярном транзисторе, который нагружен на двухконтурный полосовой LC-фильтр. Этот фильтр настроен на частоту 36 МГц и имеет характеристическое сопротивление 100 Ом. Фильтр состоит из двух параллельных контуров
36715. Имитационное моделирование случайных событий 117.5 KB
  В каждой задаче в соответствии с вариантом построить имитационную компьютерную модель имитирующую предлагаемое событие или события. С помощью имитационной модели оценить вероятность данного события событий и рассчитать необходимое количество экспериментов. Рассчитать аналитически вероятность предлагаемого события событий и сравнить с расчетами полученными методами имитационного моделирования. Постройте модель имитации данного события.
36716. РАЗРАБОТКА СХЕМЫ И СОЗДАНИЕ СТРУКТУРЫ РЕЛЯЦИОННОЙ БАЗЫ ДАННЫХ 193.5 KB
  Задание № 3 Использую возможности фильтрации данных постройте следующие фильтры для выборки данных в соответствии с приведенными критериями. С помощью Расширенного фильтра из таблицы Административные районы выбрать те районы в которых численность населения превышает 50 тыс. Удалить фильтр. В меню Записи выберите команду Фильтр Расширенный фильтр.