Главная страница
Навигация по странице:

  • 1. Понятие о текстовом файле

  • 2. Принцип работы с текстовыми файлами

  • Assign следующей структуры: Assign

  • Reset

  • Write и WriteLn . В них также требуется указать первым в списке вывода имя файловой переменной. Например: ... Writeln

  • Close

  • Задачи для самостоятельной работы

  • РАБОТА С ДАННЫМИ ИЗ ТЕКСТОВЫХ ФАЙЛОВ

  • Вопросы и задания для самоконтроля

  • datafile

  • ОСНОВЫ РАБОТЫ С ТИПИЗИРОВАННЫМИ ФАЙЛАМИ

  • Л. И. Долинер основы программирования в среде pascalabc. Net учебное пособие


    Скачать 1.88 Mb.
    НазваниеЛ. И. Долинер основы программирования в среде pascalabc. Net учебное пособие
    Дата26.08.2022
    Размер1.88 Mb.
    Формат файлаpdf
    Имя файла978-5-7996-1260-3_2014 (2).pdf
    ТипУчебное пособие
    #653536
    страница10 из 11
    1   2   3   4   5   6   7   8   9   10   11
    РАБОТА С ТЕКСТОВЫМИ ФАЙЛАМИ:
    ЧТЕНИЕ И ЗАПИСЬ
    До сих пор были рассмотрены способы работы с информацией, которая ли- бо была заложена в программу, либо вводилась с клавиатуры компьютера.
    В данной лабораторной работе предлагается познакомиться с обработкой ин- формации, размещенной в файлах на дисках.
    В языке Паскаль предусмотрена работа с тремя типами файлов:
    1) с текстовыми файлами;
    2) типизированными;
    3) нетипизированными.
    Рассмотрим работу с двумя первыми видами
    4
    1. Понятие о текстовом файле
    Паскаль позволяет работать с текстовыми файлами. Текстовые файлы со- держат текстовую информацию в виде отдельных порций, называемых строка-
    ми. Строки состоят из отдельных символов и могут иметь различную длину. Для отделения строк друг от друга используется специальный символ конец строки
    EOLN (End Of LiNe), который записывается в файл автоматически после нажа- тия клавиши
    Enter или при использовании команды
    WriteLn
    (при программном заполнении файла). В конце файла записывается символ конец файла
    (End Of File). Учитывая, что информация на диске располагается последова- тельно, байт за байтом, общую структуру текстовых файлов можно изобразить следующим образом:
    Строка1 [EOLN] Строка2 [EOLN] Строка3... [EOF
    ]
    4
    Освоив работу с текстовыми и типизированными файлами, вы без труда научитесь работать с нетипизированными файлами с помощью любого справочника.

    114
    Учитывая, что «строка» – понятие неоднозначное (в ней может быть как один символ, так и несколько тысяч), работа с текстовыми файлами осуществля- ется методом последовательного доступа: чтобы добраться до нужной порции информации (строки), необходимо прочитать все предыдущие строки от начала файла до нужного места.
    2. Принцип работы с текстовыми файлами
    При работе с текстовыми файлами необходимо выполнять следующую по- следовательность действий.
    1. В блоке описания переменных VAR с помощью ключевого слова
    text описывается специальная файловая переменная-указатель. Например:
    var OUTF : text;
    2. В программе файловая переменная связывается с конкретным файлом на диске
    5
    . Для этого используется специальная процедура
    Assign
    следующей структуры:
    Assign(<имя файловой переменной>, <имя файла>); или
    AssignFile(<имя файловой переменной>, <имя файла>);
    3. Для открытия файла используется одна из следующих стандартных процедур:
    Reset(<имя>) – открыть текстовый файл только для чтения;
    Rewrite(<имя>) – « «
    « только для записи;
    Append(<имя>) – « «
    « только для дописывания текста в конец файла.

    Полный перечень стандартных процедур и функций работы с файлом
    смотрите в Справке среды PascalABC.NET (Помощь

    Справочник
    5
    С точки зрения технологии файловая переменная – это некий буфер в оперативной памяти, в который считывается часть файла и с которым программа и работает. Запись также производится в буфер, и, когда буфер заполняется, его содержимое «сбрасывается» в файл на диске.

    115
    по языку

    Стандартные процедуры и функции

    Процедуры и
    функции для работы с файлами).
    4. В случае, если файл открыт для чтения, используются стандартные процедуры
    Read
    и
    Readln
    . Их использование отличается от традиционного тем, что первым элементом в списке ввода стоит имя файловой переменной.
    Например:
    ReadLn(OUTF,A,B,C);

    Процедура Read позволяет читать символы один за другим. Процедура
    ReadLn читает строку, а затем переводит курсор в начало следующей
    строки (даже если все не прочитано).
    5. В случае, если файл открыт для записи, используются стандартные процедуры
    Write
    и
    WriteLn
    . В них также требуется указать первым в списке вывода имя файловой переменной. Например:
    ...
    Writeln(OUTF,'А это будет записано в файл ...');
    ...

    Процедура Write обеспечивает запись данных в текущую сроку. Процедура
    WriteLn записывает строку и в конце ее ставит символ конца строки
    (EOLN). В этом случае следующие данные будут записываться в новой
    строке текстового файла.
    6. После завершения работы с файлом обязательно используйте процедуру
    Close(<имя файловой переменной>) или
    CloseFile(<имя файловой переменной>).
    Эта процедура называется закрытием файла.
    Задание 170
    Запустите среду PascalABC.NET. Загрузите текст программы
    file_t1.pas
    Разберитесь в том, как она работает. Модифицируйте эту программу так, чтобы она выводила на экран содержимое любого текстового файла. Для отладки можно использовать какой-либо файл из вашей папки (в том числе

    116 и с расширением PAS). Уберите цветовое оформление текста: пусть текст выводится черным цветом.
    Задание 171
    В файле
    numbers.txt
    хранятся числа, записанные в столбик. Составьте программу, которая позволит считать эту информацию и вычислить среднее арифметическое этих чисел. Числа могут быть любые: целые, вещественные, положительные, отрицательные. Количество чисел неизвестно!
    Подсказка
    Числа из текстового файла можно читать в переменные типа Real, Integer,
    Word и т. д.
    Задание 172
    Загрузите текст программы
    file_t2.pas
    . Используя эту программу, проверьте правильность работы программы, составленной в задании 166.
    Задание 173
    Считайте с диска файл
    file_t3.pas
    . Разберитесь в том, как работает программа: а) внимательно прочтите текст программы и комментарии; б) запустите программу на выполнение и введите не менее
    10 чисел; в) считайте с диска файл ex0.txt и проверьте, правильно ли записались числа; г) модифицируйте программу так, чтобы между соседними числами был, по крайней мере, один пробел.
    Задание 174
    Составьте программу – простейший текстовый редактор. Алгоритм работы достаточно прост: в диалоге вводится имя файла. Затем предлагается вводить текст. После набора строки и нажатия клавиши введенная строка записывается в файл. При введеннии специального

    117
    символа (это может быть «*» или что-нибудь другое) файл закрывается и работа программы завершается.
    Проверьте правильность работы вашей программы с помощью программы, разработанной при выполнении задания 166.
    Задачи для самостоятельной работы
    1. Создайте файл, содержащий массив целых чисел. Напишите программу, вы- числяющую наименьшее из этих чисел.
    2. Создайте файл, содержащий массив целых чисел. Напишите программу, ко- торая определяет количество элементов массива.
    3. Создайте файл, содержащий массив вещественных чисел. Напишите про- грамму, определяющую количество чисел, меньших среднего арифметиче- ского значения всех чисел массива.
    4. Дан текстовый файл. Подсчитайте количество символов в нем.
    5. Имеется текстовый файл. Удалите из него первую строку, в конце которой стоит вопросительный знак. Результат запишите в другой файл.
    6. Создайте файл, содержащий массив вещественных чисел. Напишите про- грамму, которая считывает числовые значения из файла, вычисляет значение полусуммы наибольшего и наименьшего элементов, а затем подсчитывает количество значений, не превышающих полусумму, и количество значений, больших, чем полусумма.
    7. Напишите программу, которая считывает текстовый файл, выравнивает его содержимое по правой границе и выводит результат в другой текстовый файл.
    8. Напишите программу, которая считывает текстовый файл, выравнивает его содержимое по центру и выводит результат в другой текстовый файл.
    9. Создайте файл, содержащий фамилии студентов и их возраст. Напишите про- грамму печати фамилий студентов, имеющих наименьший возраст.

    118 10. Текстовый файл содержит фамилии рабочих и их среднемесячный заработок.
    Напишите программу, выводящую фамилии рабочих, имеющих заработок, находящийся в указанных пользователем пределах.

    Пригласите преподавателя и продемонстрируйте ему сделанные вами про-
    граммы. Будьте готовы ответить на вопросы преподавателя.

    Если вы обучаетесь в условиях использования дистанционных образовательных
    технологий, вышлите все файлы с подготовленными вами программами препо-
    давателю.

    119
    Глава 25
    РАБОТА С ДАННЫМИ ИЗ ТЕКСТОВЫХ ФАЙЛОВ
    Задание 175
    Имеется текстовый файл Shop_1.txt, содержащий список товаров, их количество и стоимость единицы товара: холодильники название товара
    10 900 стоимость единицы товара стиральный порошок
    1000 5 микрокалькуляторы
    300 12,6 количество единиц товара.
    Составить программу, которая создаст новый файл, содержащий в одной строке информацию о данном виде товара (название, количество единиц товара и стоимость одной единицы) плюс общую стоимость товара, а в конце файла – итоговую стоимость товаров всего этого списка.
    Задание 176
    Модифицируйте программу, разработанную в предыдущем задании, так, чтобы она решала эту же задачу, но для файла немного другой структуры
    (можно воспользоваться файлом shop_2.txt
    ): холодильники
    * 10 900 стиральный порошок * 1000 5 микрокалькуляторы
    * 300 12,6
    Обратите внимание на то, что название товара кончается символом *, а затем уже идет количество и цена единицы товара.
    Задание 177
    Если у вас есть техническая возможность вывода данных на принтер, составьте универсальную программу вывода любого текстового файла на принтер.

    120
    Подсказка
    Для компьютера работа с принтером осуществляется так же, как и работа с текстовым файлом, имеющим стандартное имя PRN. Для вывода данных на принтер достаточно связать файловую переменную с этим именем:
    ...
    Assign
    (outf,'prn');
    ...
    (Надеюсь, вы догадались, что читать информацию из файла PRN не получится.)
    Задание 178*
    Имеется файл
    numbers.txt
    , содержащий последовательность вещественных чисел. Составить программу, которая перепишет все числа из этого файла в другой файл в порядке возрастания (убывания).
    Задание 179*
    Имеется два файла, содержащие списки фамилий сотрудников фондовой биржи. Фамилии в файлах расположены в алфавитном порядке. Составить программу, которая позволит на основе этих файлов создать третий, в который будут входить все фамилии, содержащиеся в первом и втором файлах. При этом фамилии должны быть также упорядочены по алфавиту.
    Примечание
    Для отладки программы составьте два таких файла прямо в редакторе среды
    PascalABC.NET. Проследите, чтобы в файлах было не менее пяти строк и информация была действительно упорядочена по алфавиту!
    Задание 180*
    Пусть есть текстовый файл, содержащий список (товаров, фамилий, марок автомобилей и т. д.). Составить программу, которая рассортирует этот список по алфавиту.
    Вопросы и задания для самоконтроля
    1. Что такое файл?
    2. Чем файл отличается от массива?

    121 3. Чем характеризуется файл?
    4. Как описать файловую переменную в программе на языке Паскаль?
    5. Какие операции можно выполнять с файлами?
    6. Какие внешние устройства могут быть использованы для хранения фай- лов?
    7. Какие устройства могут быть использованы только для записи файлов?
    8. Как связать файловую переменную, описанную в программе, с конкрет- ным именем файла на конкретном устройстве? Напишите, как будет вы- глядеть эта команда: а) если файл vera.dat на диске; б) файл raja.dat на принтере; в) файл iren.dat на экране терминала.
    9. Какая процедура используется для подготовки файла для чтения?
    10. Для чего используется процедура REWRITE?
    11. Как проверить, есть ли требуемый файл на диске?
    12. Какая информация может быть записана в текстовый файл?
    13. Как осуществляется запись информации в текстовый файл?
    14. Как в текстовый файл заносить символ «конец строки»?
    15. Каково назначение функции CLOSE?
    16. Как осуществляется алгоритм чтения информации из текстового файла?
    17. Как дописать информацию в конец существующего текстового файла?
    18. Предположим, что в файле TEMP.DAT записаны целые числа 4, 7, 2, 9, каждое из которых находится на отдельной строке. Покажите, что будет напечатано в результате выполнения показанного ниже фрагмента при следующих дополнительных условиях: а) строка, содержащая число 9, является последней строкой файла и не завершается кодом «перевод строки»;

    122 б) строка, содержащая число 9, является последней строкой файла и завершается кодом «перевод строки». var
    datafile : text;
    x : integer;
    . . .
    assign
    (datafile,'temp.dat');
    reset
    (datafile);
    while not eof(datafile) do begin readln
    (datafile,x);
    writeln
    (x);
    if eof
    (datafile) thenwriteln('Конец файла')
    end;
    . . .
    Как исправить эту программу, чтобы она работала для случаев (а) и (б) одновременно?
    Задачи для самостоятельной работы
    1. Создайте файл, содержащий фамилии студентов и их экзаменационные оцен- ки по 5 предметам. Напишите программу печати фамилий студентов, сдав- ших экзамены только на «5».
    2. Создайте файл, содержащий фамилии студентов. Напишите программу печа- ти списка студентов, имеющих самые длинные фамилии.
    3. Создайте файл, содержащий фамилии студентов и их экзаменационные оцен- ки по 3 предметам. Напишите программу печати фамилий тех студентов, ко- торые успешно сдали все экзамены.
    4. В текстовом файле хранятся сведения о номерах школ учащихся, участво- вавших в олимпиаде. В каждой строке сообщается количество учащихся N, каждая из N строк имеет формат:
    <Фамилия> <Инициалы> <номер школы> где <Фамилия> – строка, состоящая не более чем из 20 символов;
    <Инициалы>
    – строка, состоящая из 4 символов (буква, точка, буква, точка);

    123
    <номер школы> – не более чем трехзначный номер.
    <Фамилия> и <Инициалы>, а также <Инициалы> и <номер школы > разделены одним пробелом.
    а
    Пример входной строки:
    Иванов П.С. 57
    Требуется написать как можно более эффективную программу, которая будет выводить на экран информацию, из какой школы было меньше всего участников (таких школ может быть несколько). При этом необходимо вывести информацию только по школам, пославшим хотя бы одного ученика.
    5. Создайте файл, содержащий фамилии студентов и их экзаменационные оцен- ки по 3 предметам. Напишите программу печати фамилий студентов, имею- щих хотя бы одну задолженность, и количество несданных экзаменов.
    6. Напишите программу, которая считывает текстовый файл и определяет, со- держатся ли в нем символы латинского алфавита.
    7. Создайте файл, содержащий произвольные текстовые строки. Напишите про- грамму печати строк, имеющих наименьшую длину.
    8. Создайте файл, в котором содержатся семизначные номера телефонов и ин- формация о сумме задолженности абонента данного телефона. Записи об од- ном абоненте могут повторяться. Напишите программу печати суммарной за- долженности абонента по введенному номеру телефона.
    9. Напишите программу, которая считывает исходный текст программы на язы- ке Паскаль и подставляет номера строк (в виде комментариев) в начало каж- дой строки файла с исходным текстом.
    10. Напишите программу, которая считывает текстовый файл и сравнивает со- держащиеся в нем слова со словами, хранящимися в отдельном файле- словаре. В случае, когда слово не найдено, программа должна выдавать соот- ветствующее сообщение.

    124 11. Напишите программу, которая вводит с клавиатуры произвольный текст, затем записывает в первый файл закодированный текст, а во второй – дешиф- рованный, если известен алгоритм шифрования. Указание: код шифрования – это число, указывающее смещение букв в алфавите (например, код 3 означа- ет, что вместо буквы «а» в зашифрованном тексте указана буква «в»).
    12. Напишите программу, которая определяет количество предложений и слов в текстовом файле. Считайте, что предложением является любая последова- тельность символов, начинающаяся пробелом и заканчивающаяся точкой, восклицательным или вопросительным знаками.

    Пригласите преподавателя и продемонстрируйте ему сделанные вами
    программы. Будьте готовы ответить на его вопросы.

    Если вы обучаетесь в условиях использования дистанционных образователь-
    ных технологий, вышлите все файлы с подготовленными вами программами
    преподавателю.

    125
    Глава 26
    ОСНОВЫ РАБОТЫ С ТИПИЗИРОВАННЫМИ ФАЙЛАМИ
    Помимо текстовых файлов, в языке Паскаль используется другой вид фай- лов, который принято называть типизированным, или компонентным.

    Типизированный файл – это файл с заранее объявленным типом его компонент, т. е. файл с набором данных одной и той же структуры.
    Для работы с нетекстовым файлом необходимо:
    1) описать файловую переменную. Она описывается следующим образом:
    file of <тип> ; где <тип> – это тип компонент типизированного файла;
    2) с помощью процедуры
    Assign(<имя_переменной>,<имя_файла>) связать переменную с реальным файлом на диске;
    3) с помощью процедуры
    Reset(<файловая_переменная>) открыть существующий файл для чтения и для записи;
    4) с помощью процедуры
    Rewrite(<файловая_переменная>) создать файл на диске
    6
    . При этом файл считается пустым и информация может только записываться, причем с начала файла;
    5) чтение данных из файла осуществлять только с помощью процедуры
    Read, запись –
    Write.
    Задание 181
    Запустите среду PascalABC.NET. Считайте файл
    f_ntx2.pas. В файле хранится программа, записывающая в файл натуральные числа от 0 до 65 535. Выполните следующие действия: а) разберитесь внимательно в тексте программы. Запустите программу на выполнение. Проверьте правильность работы программы при любых
    6
    Если использовать Rewrite для существующего файла, его содержимое будет уничтожено и с ним можно будет работать точно так же, как с пустым.

    126 данных (числовых и нечисловых). При обнаружении ошибки исправьте ее; б) запустите программу на выполнение и введите 10 раз пару чисел: 11 и 13.
    Это понадобится для выполнения следующего задания.
    Задание 182
    Считайте файл
    1   2   3   4   5   6   7   8   9   10   11


    написать администратору сайта