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

  • Задание для подготовки к работе

  • Краткие теоретические сведения

  • Например

  • Процедуры и функции для работы с файлами. Процедура

  • Процедуру нельзя применять к текстовым файлам. Функция

  • 1.Процедуры а) Readln(F, )

  • 2.Функции а) Еоln(F)

  • Практическая работа_ Реализация алгоритма линейной струкруры на. Практическая работа Реализация алгоритма линейной структуры


    Скачать 195.04 Kb.
    НазваниеПрактическая работа Реализация алгоритма линейной структуры
    Дата21.02.2023
    Размер195.04 Kb.
    Формат файлаdocx
    Имя файлаПрактическая работа_ Реализация алгоритма линейной струкруры на .docx
    ТипПрактическая работа
    #949517
    страница4 из 4
    1   2   3   4

    Тема: Обработка файлов



    Цель: получить навыки работы с текстовыми файлами, типизированными и файлами без типа.
    Задание для подготовки к работе

    1. Изучить способы работы с файлами, типы файлов, процедуры и функции работы с файловыми переменными.

    2. Разработать алгоритм для решения задач соответствующего варианта.

    3. Подобрать тестовые данные.


    Содержание отчета

    1. Описание используемых структур данных.

    2. Условие задачи.

    3. Описание алгоритма.

    4. Набор тестовых данных с обоснованием их выбора.

    5. Текст программы.

    6. Описание и анализ ошибок, выявленных при отладке программы.


    Краткие теоретические сведения

    В Турбо Паскале различают собственно файл (область памяти на внешнем носителе) и переменную файлового типа в некоторой Turbo Pascal-программе.

    Считается, что файловая переменная является представителем некоторого дискового файла в программе.

    Тип файловой переменной задается одним из трех способов:

    <имя типа> = FILE OF <тип компонент>;

    <имя типа> = TEXT;

    <имя типа> = FILE;

    Например: type Matr=file of array[1..12] of real;

    Matr - имя типа, который описывает файл, компонентами которого являются одномерные массивы.

    В зависимости от способа объявления можно выделить ТРИ ВИДА ФАЙЛОВ:

    • типизированные файлы (FILE OF)

    • текстовые файлы (TEXT)

    • нетипизированные файлы (FILE)

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

    Производят "связывание" процедурой ASSIGN.

    Например: Assign(F,'c:\books\book4\test3.pas');


    Инициировать файл означает указать для этого файла направление передачи данных. В Турбо Паскале можно открыть файл для чтения и для записи информации.

    Для чтения файл инициируется с помощью стандартной процедуры RESET:

    Reset(<ф.п.>);

    Здесь <ф.п.> - файловая переменная, связанная ранее процедурой ASSIGN с уже существующим файлом или логическим устройством. При выполнении этой процедуры дисковый файл подготавливается к чтению информации. В результате специальная переменная - указатель, связанная с этим фалом будет указывать на начало файла, т.е. на компонент с порядковым номером 0. Если делается попытка инициировать чтение из несуществующего файла, возникает ошибка периода исполнения.

    Для записи файл инициируется стандартной процедурой REWRITE:

    Rewrite(<ф.п.>);

    Процедура REWRITE подготавливает новый файл к записи информации, если же этой процедурой инициируется уже существующий файл, то все его содержимое стирается.

    Процедуры и функции для работы с файлами.

    Процедура CLOSE.

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

    Форма обращения:

    Close(<ф.п.>);

    Функции процедуры CLOSE выполняются автоматически по отношению ко всем открытым файлам при нормальном завершении программы.

    Функция EOF(<ф.п.>):Boolean

    Логическая функция тестирующая конец файла. Возвращает TRUE , если файловый указатель стоит в конце файла. При записи это означает, что очередной компонент файла будет добавлен в конец файла, при чтении - что файл исчерпан.

    Функция IORESULT: WORD.

    Возвращает условный признак последней операции ввода-вывода. Если операция завершилась успешно, функция возвращает 0. Функция становится доступной только при отключенном автоконтроле ошибок ввода-вывода. Директива компилятора {$I-} отключает , а директива {$I+} включает автоконтроль. Если автоконтроль отключен, а операция ввода-вывода привела к возникновению ошибки, устанавливается флаг ошибки и все последующие обращения к вводу-выводу блокируются, пока не будет вызвана функция IORESULT.

    Пример: использования функции IOResult.

    Var F: file of integer;

    Begin

    Assign( f,' myfile.dat');

    {текст программы}

    {SI-} {отключем контроль ошибок ввода-вывода}

    reset(f);
    {SI+} {включаем контроль ошибок ввода-вывода}
    if IOResult<>0 then

    written('файл не существует')

    else

    {текст программы}.....................................................{файл существует}

    end.

    Если не сделать отключение автоматического контроля ошибок ввода-вывода с помощью директивы компилятора {SI-}, то отсутствие файла приведет к аварийному завершению программы.
    Процедура READ.

    Обеспечивает чтение очередных компонентов типизированного файла, связанного с файловой переменной.

    Формат обращения:

    Read(<ф.п.>,<список ввода>);

    Здесь <список ввода> - содержит одну или более переменных того же (базового) типа, что и компоненты файла.

    Если файл исчерпан, обращение к Read вызовет ошибку ввода-вывода.

    Процедура WRITE.

    Используется для записи данных в типизированный файл.

    Формат обращения:

    Write(<ф.п.>,<список вывода>);

    Здесь <список вывода> содержит одно или несколько выражений того же типа, что и компоненты файла.

    Процедура SEEK.

    Смещает указатель файла к требуемому компоненту.

    Формат обращения:

    Seek(<ф.п.>,);

    Здесь - выражение типа LONGINT, указывающее номер компонента файла на который нужно сместить указатель.

    Процедуру нельзя применять к текстовым файлам.

    Функция FILESIZE.

    Возвращает значение типа LONGINT, которое содержит количество компонентов в файле.

    Формат обращения:

    FileSize(<ф.п.>);

    Функцию нельзя применять к текстовым файлам.

    Пример:

    Прочитаем файл целых числе и выведем их на экран

    Var f: file of integer;

    n:integer;

    Begin

    Assign(f,?a int.dat?); {связь с внешним файлом}

    Reset(f); {открытие на чтение}

    While Not eof(f) do {пока не конец файла}

    Begin

    Read(f,n); {считываем очередное число}

    Write(n,' ' );{выводим его на экран}

    End;

    Close(f); {закрываем файл}

    End.

    Пример: Создать файл вещественных чисел.
    Type Tem=file of real,

    Var. f:tem

    X:real

    Ch:char;

    Begin

    Assign(f,'a:\Danl1.Dat');

    Rewrite(f);

    Repeat

    Write('Введите число ');

    Readln(x);

    Write(f,x);

    Write(' Будете ли еще вводить число ( да / нет?');

    Readln(ch);

    Until upcase(ch)<>'Y';

    Close(f);

    End.
    Кроме всех процедур и функций для типизированных файлов для текстовых файлов при меняются еще следующие:

    1.Процедуры

    а) Readln(F,<список ввода>) - чтение из текущей строки файла и переход на следующую строку

    б) Writeln(F,<список вывода>)- запись информации в текущую строку файла и переход на новую строку

    в) Арреnd(F)- открытие файла для добавления информации в конец файла

    2.Функции

    а) Еоln(F)- возвращает true если указатель находится на символе конец строки файла и false в противном случае.
    Варианты заданий

    1/11/21/31. а) Заполнить файл последовательного доступа F целыми числами. Получить в файле G те компоненты файла F, которые являются четными.

    b) Дан файл, содержащий текст из строчных русских букв. Получить в другом файле тот же текст, записанный заглавными буквами.

    2/12/22/32. a) Записать в файл F последовательного доступа N действительных чисел. Вычислить произведение компонентов файла и вывести результат в файл G.

    b) Дан файл содержащий произвольный текст. Выяснить чего в нем больше: русских букв или цифр.

    3/13/23/33. a) Заполнить файл последовательного доступа F целыми числами. Получить в файле G все компоненты файла F, которые делятся на m и не делятся на n.

    b) Дан файл, содержащий текст на русском языке. Выяснить входит ли данное слово в указанный текст, и если да, то сколько раз?

    4/14/24/34. a) Записать в файл последовательного доступа N целых чисел. Посчитать количество пар противоположных чисел среди компонентов этого файла.

    b) Дан файл, содержащий текст на русском языке. В предложениях некоторые из слов записаны подряд несколько раз (предложение заканчивается точкой). Получить в новом файле отредактированный текст, в котором удалены повторные вхождения слов в предложении.

    5/15/35. a) Заполнить файл последовательного доступа F целыми числами. Из файла F получить файл G, исключив повторное вхождение чисел.

    b) Дан текст, содержащий текст, набранный заглавными русскими буквами. Указать в процентах, сколько раз встречается та или иная буква.

    6/16/36. a) Записать в файл последовательного доступа N произвольных натуральных чисел. Переписать в другой файл последовательного доступа те элементы, которые кратны K.

    b) Дан файл, содержащий текст на русском языке. Определить сколько раз встречается в нем заданное слово.

    7/17/37. a) Заполнить файл последовательного доступа N действительными числами. Найти сумму максимального и минимального элементов этого файла.

    b) Дан файл, содержащий текст на русском языке и некоторая буква. Посчитать сколько слов начинается на эту букву.

    8/18/38. a) Записать в файл последовательного доступа N произвольных натуральных чисел: a1, a2, … an. Сформировать новый файл последовательного доступа, элементами которого являются числа a1, a1*a2, a1*a2*a3, … , a1*a2*…*an.

      1. Дан файл, содержащий текст. Сколько цифр в тексте?

    9/19/39. a) Записать в файл F последовательного доступа N натуральных чисел. Получить в другом файле последовательного доступа все компоненты файла F, кроме тех, которые кратны K.

    b) Дан файл, содержащий текст. Посчитать сколько слов в этом тексте.

    10/20/40. a) Заполнить файл F натуральными числами. Из файла F получит файл G, исключив повторное вхождение чисел.

    b) Дан файл, содержащий текст, заключающий в себе русские и английские слова. Посчитать сколько русских и сколько латинских букв в тексте.
    Контрольные вопросы

    1. С какими типами файлов можно работать в Паскале?

    2. Расскажите все, что знаете о текстовых файлах, типизированных файлах, нетипизированных файлах.

    3. Объясните особенности применения каждого типа файлов.

    4. К файлам какого типа применяются процедуры ReadLn и WriteLn?

    5. Пусть FF – это внешний файл, состоящий из вещественных чисел. Напишите программу, которая считывает значения из файла и находит в FF четвертое по величине значение.


    Литература

    1. Turbo Pascal. Программирование на языке высокого уровня: Учебник для вузов. 2-е изд./ С.А. Немнюгин. – СПб.: Питер, 2003. – 544 с.

    2. Епанешников А.М., Епанешников В.А. Программироваие в среде Turbo Pascal 7.0 – 3-е изд., стер. – М.: «ДИАЛОГ-МИФИ», 2001. – 288 с.

    3. Семакин И.Г., Шестаков А.П. Основы программирования: Учебник. – М.: Мастерство, 2002. – 432.
    1   2   3   4


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