Министерство образования и науки Российской
Федерации
Автономное образовательное учреждение
высшего профессионального образования
***
Кафедра информатики
и вычислительной математики
КУРСОВАЯ РАБОТА
по дисциплине «Программирование»
на тему:
Разработка альбома ключевых
задач по теме «Текстовые файлы» средствами
языка Pascal
Направление подготовки: 050100.62 — педагогическое
образование
Профиль подготовки: информатика
Выполнила: ***
Проверила: ***
Оглавление
Введение
В язык Паскаль выделяются данные
файлового типа, которые служат для работы
с информацией, расположенной на внешних
устройствах. Эта информация формируется
во внешней памяти компьютера, образуя
некоторую область, называемую файлом.
Файлы имеют имя и представляют собой
совокупность однотипных элементов. Обычно
они применяются, в случаях большого объема
данных, долгосрочного хранения, либо
необходимости предоставления доступа
нескольким приложениям к одной и той
же информации. Текстовые файлы предназначены
для хранения текстовой информации. Именно
в таких файлах хранятся, например, исходные
тексты программ [6, с. 319].
Стоит отметить, что решения
задач с текстовыми файлами вызывают немалые
затруднения среди школьников и студентов.
Будучи ученицей 11-го класса я сама лично
столкнулась с трудностями работы с текстовыми
файлами в Паскале. Также у меня возникали
проблемы со строками. Теперь, являясь
студенткой 2 курса и обучаясь по профилю
«Информатика», я всё же решила самостоятельно
изучить тему и попытаться разобраться,
решив 10 задач.
Вышесказанное подчёркивает
актуальность выбранной темы курсовой
работы.
Целью исследования является
разработка альбома ключевых задач по
теме «Текстовые файлы» средствами языка
Паскаль. Данная цель обусловила выбор
следующих частных задач:
- Изучить рекомендуемую литературу;
- Отобрать необходимый теоретический материал;
- Обобщить и систематизировать
отобранный материал;
- Создать альбом ключевых задач
(к каждой отдельной задаче написать программу,
разработать информационную и графическую
модели, включить систему тестов и дать
инструкцию по работе с программой).
Структура курсовой работы
следующая.
Работа состоит из двух частей:
теоретической, которая включает теорию
по теме курсовой работы (рассмотрены
понятие текстового файла, основные процедуры
и функции, необходимые для работы с текстовыми
файлами), и практической, которая содержит
решения задач.
Теоретическая часть
Файлы
Файловые типы данных введены
в язык Паскаль для работы с внешними устройствами
– файлами на диске, портами, принтерами
и т.д. Передача данных с внешнего устройства
в оперативную память называется чтением,
или, вводом, обратный процесс – записью,
или выводом.
Файл - это поименованная область памяти
на диске или другом внешнем запоминающем
устройстве. Паскаль поддерживает три
файловых типа:
- текстовые файлы (типа Text );
- типизированные файлы (типа File of...);
- бестиповые файлы (типа File ).
Чтобы не путать файлы в программе и файлы
на диске, переменные файлового типа называют
логическими файлами, а реальные устройства
и файлы на диске – физическими файлами.
Их имена задаются с помощью строк символов,
например:
‘primer.pas’ – имя файла в текущем каталоге;
‘d:\pascal\input.txt’ – полное имя файла;
‘CON’ ‘NUL’ ‘PRN’ – имена устройств.
Для организации ввода-вывода в программе
необходимо выполнить следующие действия.
- Объявить файловую переменную.
- Связать её с физическим файлом.
- Открыть файл для чтения и/или
записи.
- Выполнить операции ввода-вывода.
- Закрыть файл.
Все стандартные процедуры
и функции Паскаля, обеспечивающие ввод-вывод
данных работают только с логическими
файлами, то есть с файловыми переменными.
Перед выполнением операций файловая
переменная связывается с физическим
файлом, после чего он в тексте программы
не упоминается.
Ввод-вывод выполняется не непосредственно
между внешним устройством и переменными
программы, а через так называемый буфер
– специальную область оперативной памяти.
Буфер выделяется для каждого открытого
файла. При записи в файл вся информация
сначала направляется в буфер и там накапливается
до тех пор, пока весь буфер не заполнится.
Только после этого или после специальной
команды сброса происходит передача данных
на внешнее устройство. При чтении из файла
данные вначале считываются в буфер, причём
данных считывается не столько, сколько
запрашивается, а сколько поместиться
в буфер.
Механизм буферизации позволяет
более быстро и эффективно обмениваться
информацией с внешними устройствами
[5, с.78-80].
Текстовые файлы
Текстовый файл представляет
собой последовательность строк символов
переменной длины. Каждая строка заканчивается
символами перевода строки и возврата
каретки (их коды – 13 и 10). Эти символы вставляются
в физический файл при нажатии клавиши
Enter. При чтении файла эти символы не вводятся
в переменные в программе, а воспринимаются,
как разделитель.
Текстовый файл можно открыть
не только для чтения или записи, но и для
добавления информации в конец. Для этого
служит процедура append.
append(var f)
Для чтения из текстового файла
применяются процедуры:
read(f, список)
readln(f, [список]), которые отличаются от процедур
ввода с клавиатуры read( список) и readln([список]) только наличием первого параметра
– имени логического файла. Это неудивительно,
поскольку консольный ввод-вывод является
частным случаем обмена с текстовым файлом.
Для ввода с клавиатуры определено
стандартное имя файла input, а для вывода на экран – output. Эти файлы отличаются от обычных
тем, что их нельзя открывать и закрывать,
поскольку это делается автоматически
и их имена можно не указывать при обращении
к процедурам ввода и вывода.
Процедуры записи в текстовый
файл:
write(f, список)
writeln(f, [список])
При записи в текстовый файл
происходит преобразование из внутренней
формы представления выводимых величин
в символьные строки.
Чтение и запись выполняются
последовательно, то есть считать или
записать очередной символ можно только
после аналогичной операции с предыдущим
[5, с.81-82].
Подпрограммы для работы с текстовыми
файлами
Процедуры:
- assign(var f; filename: string)
Связывает логический файл
f с физическим файлом, имя которого задано
в строке filename. Если путь к файлу не задан,
предполагается, что он находится в текущем
каталоге.
Открывает логический файл
f для последующего чтения данных, то есть
открывает входной файл. После успешного
выполнения процедуры RESET файл готов к
чтению из него первого элемента.
Открывает логический файл
f для записи данных (открывает выходной
файл). После успешного выполнения этой
процедуры файл готов к записи в него первого
элемента. Если физический файл, с которым
связана переменная f, существовал ранее,
он очищается, то есть вся информация из
него теряется. Если файл не существовал,
он создаётся.
- rename(var f: newname : string)
Переименовывает физический
файл на диске, связанный с логическим
файлом f. Переименование возможно после
закрытия файла.
Закрывает открытый логический
файл. Вызов процедуры CLOSE необходим при
завершении работы с файлом, который был
открыт для записи, поскольку при её выполнении
происходит выгрузка содержимого буфера.
При отсутствии данной процедуры последнее
содержимое буфера вывода может быть утеряно.
Для входных файлов закрывать файл не
обязательно.
Уничтожает физический файл,
который был связан с файловой переменной
f. Файл к моменту вызова этой процедуры
должен быть закрыт [5, с.80-81].
Принудительно записывает данные
из буфера в файл независимо от степени
заполнения буфера. Применяется к выходным
файлам.
- settextbuf(var f: text; var buf; bufsize: word)
Процедура служит для увеличения
или уменьшения буфера ввода-вывода текстового
файла f. Размер буфера для текстовых файлов
по умолчанию равен 128 байт. Увеличение
буфера сокращает количество обращений
к диску. Рекомендуется изменять размер
буфера до открытия файла. Буфер файла
начнётся с первого байта переменной buf.
Размер буфера задаётся в необязательном
параметре bufsize. Если параметр отсутствует,
размер буфера определяется длиной переменной
buf.
Функции:
Возвращает значение true, если
при чтении достигнут конец файла. Это
означает, что прочитан последний элемент
в файле или что файл после открытия оказался
пуст.
Возвращает целое число, соответствующее
коду последней ошибки ввода-вывода. При
нормальном завершении операции функция
вернет значение 0. Значение функции I0result
необходимо присваивать какой-либо переменной,
так как при каждом вызове функция обновляет
своё значение. Данная функция работает
только при выключенном режиме проверки
ошибок ввода-вывода, то есть с ключом
компиляции {$I-}.
- seekEof(var f: text): Boolean
Возвращает значение true, если
до конца файла остались только строки,
заполненные пробелами.
- seekEoln(var f: text): Boolean
Возвращает значение true, если
до конца строки остались только пробелы.
[5, с.82]
Пример 1.
Получить текстовый файл test.dat
после ввода данных с клавиатуры.
Uses Crt;
Var f :text;
FileName :string[12];
z :string;
Done : boolean;
Buf :array[1..8] of char;
BEGIN
ClrScr;
Write(‘Введите произвольное
имя файла ’);
Readln(FileName);
Assign(f, ‘d:\’+FileName);
SetTextBuf(f,Buf); {задание буфера
ввода}
Rewrite(f);
Writeln(‘Завершение ввода в файл
– ввод многоточия …’);
Writeln(‘Вводите текст построчно
’+ '(Enter – завершение ввода строки)');
Repeat
Readln(z); {считывание строки
с клавиатуры}
Done:= z=’…’;
if Not Done then Writeln(f,z) {запись строки в
файл}
Until Done;
Close(f); {закрытие файла}
Rename(f, ‘d:\test.dat’) {переименование
файла}
END. [2, с.216, №156]
При вводе с клавиатуры клавиша
ввода должна нажиматься после ввода каждой
строки. Только после этого данные помещаются
в буфер, размер которого по умолчанию
равен 128 байт и обычно не изменяется. Увеличения
размера буфера ввода требуют программы,
интенсивно обращающиеся к файлам на диске.
Исполните программу в режиме отладки,
изменяя размер буфера ввода и наблюдая
за значениями переменных Buf, z и f. Обратите
внимание на то, что если строка z содержит
более 80 символов, то они записываются
в файл одной длинной строкой. Имя файла
при вводе может быть любым, но в конце
с помощью процедуры Rename файл переименовывается (одноимённого
файла на диске не должно быть) [2, с.216-217].
Практичекая часть
Разработка альбома
ключевых задач по теме «Текстовые файлы»
средствами языка Паскаль
- Дан текстовый файл f. Получить все его строки, содержащие более 60 символов.
Описание переменных
Имя
переменной |
Тип
переменной |
Назначение
в программе |
Множество
возможных значений |
s |
string |
Строки
файла f |
Array
[0..N] of char, где N – макс. количество символов
в строке |
f |
text |
Связь
с физическим файлом |
Последовательность
строк |
Описание встроенных
процедур и функций
Процедуры
Имя
процедуры |
Назначение |
Входные
параметры |
Выходные
параметры |
assign |
Связь логического файла f с физическим
C:\Users\User\Desktop\1.txt |
|
|
reset |
Открывает лог. файл для чтения |
|
|
readln |
Чтение данных из текстовогофайла |
|
|
writeln |
Запись в текстовый файл |
|
|
close |
Закрытие лог. файла |
|
|