- •Указания по выполнения практических и лабораторных работ
- •Языки программирования
- •Трансляторы
- •Язык программирования Паскаль
- •Использование среды программирования турбо паскаль
- •Типы вычислительных процессов
- •Блок-схемы алгоритмов
- •Примеры составления блок-схемы алгоритма
- •Основные файлы пакета Турбо Паскаль
- •Запуск интегрированной среды программирования Турбо Паскаль
- •Работа с меню ис
- •Меню File
- •Меню Run
- •Меню Compile
- •Меню Debug
- •Меню Tools
- •Меню Options
- •Меню Window
- •Меню Help
- •Процедуры ввода-вывода
- •Оператор записи WriteLn аналогичен процедуре Write, но после вывода последнего в списке значения для текущей процедуры WriteLn происходит перевод курсора к началу следующей строки.
- •Пример программы с использованием процедур ввода-вывода данных с различными форматами выводимых данных
- •Операторы языка Паскаль
- •Оператор присваивания
- •Оператор безусловного перехода (go to)
- •Оператор выбора case
- •Оператор повтора for
- •Примеры программ с использованием оператора for
- •Оператор повтора Repeat
- •Пример программы с использованием оператора repeat
- •Пример программы с использованием операторов присваивания, повтора и выбора
- •Пример программы с использованием оператора повтора while
- •Примеры описания одномерных и двумерных массивов
- •Действия над массивами
- •Действия над элементами массива
- •Ввод-вывод элементов массива
- •Пример программы ввода-вывода одномерного массива
- •Пример программы ввода-вывода двумерного массива
- •Пример программы нахождения в одномерном массиве максимального элемента
- •Порядок выполнения работы
- •Порядок выполнения работы
- •Основные логические структуры:
- •Встроенные функции и процедуры
- •Арифметические процедуры и функции
- •Скалярные процедуры и функции
- •Функции преобразования типов
- •Процедуры управления программой
- •Специальные процедуры и функции
- •Вызов стандартной процедуры или функции
- •Пример программы с использованием функции, определенной пользователем
- •Пример программы с использованием процедуры, определенной пользователем
- •Механизм передачи параметров
- •Нетрадиционное использование подпрограмм. Косвенная рекурсия
- •Линейный поиск
- •Линейный поиск в упорядоченном массиве данных
- •Бинарный (двоичный) поиск
- •Пример программы с использованием алгоритма бинарного поиска
- •Методы внутренней сортировки
- •Сортировки включением
- •Сортировка выбором
- •Реализация алгоритмов обменных сортировок при написании программы на Паскале
- •Шейкерная сортировка
- •Пирамидальная сортировка
- •Обменная сортировка разделением
- •Естественное слияние
- •Многопутевое слияние
- •Пример разработки собственного модуля
- •Скалярные процедуры и функции
- •Процедуры управления программой
- •Специальные процедуры и функции
- •Вызов стандартной процедуры или функции
- •Формат описания строкового типа
- •Фрагмент описания строковых данных
- •Стандартные строковые процедуры и функции
- •Пример программы работы со стандартными строковыми процедурами и функциями Порядок выполнения работы
- •Примеры программ работы со строковыми переменными
- •Пример программы работы с записями
- •Пример программы работы с записями
- •Операции над множествами
- •Объединение Пересечение Разность
- •Формат описания файлового типа
- •Средства обработки файлов
- •Текстовые файлы
- •Пример программы работы с текстовым файлом
- •Средства работы с типизированными файлами
- •Пример программы работы с типизированным файлом
- •Средства работы с нетипизированными файлами
- •Пример программы для работы с типизированными файлами
- •Распределение памяти при выполнении программы
- •Пример программы распределения памяти и получения доступа к полям psp.
- •Статические и динамические переменные
- •Указатели
- •Типизированные указатели
- •Нетипизированный указатель (pointer)
- •Доступ к переменной по указателю
- •Управление динамической памятью
- •Процедуры динамического распределения
- •Пример программы с использованием динамической памяти
- •Пример программы создания и использования связанного списка
- •Параметр процедурного типа
Текстовые файлы
Текстовые файлы представляют собой совокупность символов, разделенных на строки, причем в конце каждой строки стоит признак конца строки. Особенностью работы с текстовыми файлами является то, что параметры, значения которых вводятся и выводятся с помощью процедур READ или WRITE, могут быть не только типа String или Char, но и других типов (целых, вещественных - при вводе, целых, вещественных, логических - при выводе).
При работе с текстовыми файлами необходимо, прежде всего, объявить соответствующую файловую переменную:
Var
F:text;
Начало работы с текстовым файлом - стандартное: файловой переменной ставится в соответствие имя файла (процедура Assign), а затем открывается новый текстовый файл (процедура Rewrite) или открывается существующий текстовый файл (процедура Reset).
Далее в таблице представлены процедуры и функции для работы с текстовыми файлами.
Процедуры и функции для работы с текстовыми файлами |
Описание |
APPEND(F)
|
Открытие существующего файла. Открывается существующий файл, с которым связана файловая переменная F и указатель текущего компонента файла перемещается на конец файла. F- переменная любого файлового типа. После открытия текстовый файл можно дополнять информацией, начиная с конца строки. |
READ(F,<список>) |
Чтение из файла. |
READLN(F,<список>) |
Чтение строки из файла. |
SETTEXTBUF(F,BUF[,SIZE]) |
Назначение буфера ввода- вывода. Для файла, с которым связана файловая переменная F, назначается буфер ввода- вывода в виде переменной BUF любого типа. |
WRITE(F,<список>) |
Запись в файл. |
WRITELN(F,<список>) |
Запись строки в файл. |
EOLN(F) |
Коней строки файла. |
EOF(F) |
Конец файла. |
Пример программы работы с текстовым файлом
Program Txt_file; {Пример обработки текстового файла}
Type
fil = text;
Var
Fl, Fl_New : fil;
Name, New_Name : string[12] ;
Txt : string;
Ch : char;
procedure Read_Text; {Считывание текста из файла}
begin
{$I-} {Директива компилятору на отключение стандартной проверки операций ввода-вывода}
Repeat
Write('Введите имя файла для считывания текста: ');
Readln(Name); Writeln;
Assign(Fl,Name) ;
Reset (Fl);
if IOresult<>0 then
begin
Writeln('Файл не найден...');
Close(Fl);
end ;Writeln;
Until IOresult=0 ;
{$I+} {Директива компилятору на включение стандартной проверки операций ввода-вывода}
Writeln('Файл ' ,Name, ' : ') ;Writeln;
while not Eof(Fl) do
begin
Readln(Fl, Txt) ;
Writeln(Txt) ;
end;
Close(Fl);Writeln;
Write('Файл считан, нажмите Enter...');Readln;
end ; {конец процедуры Read_Text }
procedure App_Text; {Добавление текста в файл}
begin
Append(Fl); {Открыть файл для присоединения нового текста}
Writeln('Файл ',Name,' открыт для присоединения нового текста ') ;
Writeln('Вводите текст для записи(для окончания нажмите Enter) :');
Writeln;
Repeat
Write (' :>') ;
Readln(txt);
Writeln(fl,txt);
Until txt=' ';
Close(Fl);Writeln;
Writeln('Присоединение нового текста окончено, нажмите Enter...');
Readln;
end ; {конец процедуры App_Text}
procedure Erase_File; {Удаление файла}
begin
Erase(Fl); {Удаление файла}
Writeln('Файл ',Name,' удален с диска, нажмите Enter...');
Readln;
end; {конец процедуры Erase_File}
procedure Rename_File; {Переименование файла}
begin
Write('Введите новое имя файла: ');
Readln (New_Name) ;
Rename(Fl,New_Name); {Переименование файла}
Writeln('Файл',Name,'переименован в ',New_Name,',нажмите Enter...');
Readln;
end ; {конец процедуры Rename_File}
procedure Copy_File; {Копирование текстового файла}
begin
Write('Введите имя файла, в который копируется файл ', Name);
Readln(New_Name);
Reset(Fl) ;
Assign (Fl_New,New_Name) ;
Rewrite(Fl_New);
while not Eof(Fl) do
begin
Readln(Fl,Txt);
Writeln (Fl_New, Txt) ;
end ;
Close (Fl);
Close (Fl_New);Writeln;
Write('Файл ',Name,' скопирован в ',New_Name,', нажмите Enter...');
Readln ;
end ; {конец процедуры Copy_File}
Begin {Начало основной программы}
Inp_Text;
App_Text;
Write('Удалить файл (D),переименовать(R),скопировать(С),Выход(Е) ');
Readln(Ch) ;
case Ch of
'D','d' : Erase_File;
'R','r' : Rename_File;
'С','с' : Copy_File ;
'E', 'e' : Halt(1);
end;
end.
Порядок выполнения работы
Изучить теоретические сведения по теме “Написание программы на языке Паскаль с использованием файловых переменных. Разработка программы для работы с текстовым файлом”.
Получить у преподавателя индивидуальное задание и разработать программу для работы с текстовым файлом согласно заданному варианту.
Показать работающую программу преподавателю.
Ответить на контрольные вопросы.
Контрольные вопросы
Понятие файла. Описание файлового типа данных.
Файлы последовательного и прямого доступа. Средства обработки файлов.
Текстовые файлы. Процедуры и функции работы с текстовыми файлами.
Лабораторная работа № 29
Разработка программы для работы с типизированным файлом
Цель работы: формирование знаний и умений по работе с типизированными файлами.
Краткие теоретические сведения
Типизированные файлы
К типизированным файлам относятся файлы строго определенного типа. Чаще всего это файлы, состоящие из записей. Они применяются для создания различных баз данных. Стандартное задание в программе такой файловой переменной осуществляется следующим образом:
Type
FileRec = record
…
end;
Var
F : file of FileRec;
Если в текстовых файлах содержимое рассматривается как наборы символов, подготовленные специальным образом с учетом общепринятых соглашений о представлении текстовой информации, то в типизированных файлах их содержимое рассматривается как последовательность записей определенной структуры. Единицей измерения такого набора данных является сама запись. Длина записи определяется как SizeOf(FileRec). Так как длина любого компонента типизированного файла строго постоянна, это дает возможность организовать прямой доступ к любому компоненту по его порядковому номеру, поэтому типизированные файлы часто называют файлами прямого доступа.
Seek(var F; NumRec: Longint)
Процедура устанавливает текущую файловую переменную F на запись с номером NumRec; F - файловая переменная для типизированных и нетипизированных наборов данных. При открытии типизированного файла текущая позиция для работы с ним установлена на начало первой записи, которая по принятым соглашениям имеет номер 0, т. е. номер физической записи на единицу меньше номера логической записи.