ВУЗ: Пермский национальный исследовательский политехнический университет
Категория: Лекция
Дисциплина: Программирование
Добавлен: 19.10.2018
Просмотров: 5214
Скачиваний: 10
СОДЕРЖАНИЕ
Лабораторная работа №11, вариант № 5.
9.3.1. Слияние упорядоченных последовательностей.
9.3.2. Сортировка сбалансированным слиянием
9.3.3. Сортировка простым слиянием
9.3.4. Сортировка естественным слиянием.
9.3.5. Сортировка многофазным слиянием.
Выполнение операций над списковыми структурами.
Выполнение операций над списковыми структурами.
Работа со стеками и очередями.
Работа со стеками и очередями.
11. Организация меню с использованием средств среды Turbo Pascal
Министерство образования и науки Российской Федерации
Федеральное государственное бюджетное образовательное учреждение высшего образования
«Пермский национальный исследовательский политехнический университет»
Кафедра «Информационные технологии и автоматизированные системы»
Полякова О.А.
«Информатика 1».
«Информатика 2».
Теоретические материалы и методические указания для выполнения лабораторных работ
4-5 ЗЕ
7 ЗЕ
Часть 2
Пермь 2017
Оглавление
Оглавление 3
9. Файловые типы данных 4
9.1. Инициализация файла 4
9.2. Файлы и работа с ними 6
Лабораторная работа №11. 9
Работа с внешними файлами 9
Лабораторная работа №11, вариант № 5. 9
Работа с внешними файлами 9
9.3. Сортировка файлов. 15
9.3.1. Слияние упорядоченных последовательностей. 15
9.3.2. Сортировка сбалансированным слиянием 18
9.3.3. Сортировка простым слиянием 22
9.3.4. Сортировка естественным слиянием. 29
9.3.5. Сортировка многофазным слиянием. 40
Лабораторная работа №12. 46
Сортировка файлов. 46
Лабораторная работа №12. 47
Сортировка файлов. 47
10. Динамическая память. 51
10.1. Указатели. 51
10.2. Списки. 53
Лабораторная работа № 13. 55
Исключение элементов списка. 55
Образец выполнения работы. 55
Лабораторная работа № 13. 55
Исключение элементов списка. 55
Варианты задания. 61
Лабораторная работа № 14. 62
Работа со списками. 62
Образец выполнения работы. 62
Лабораторная работа № 14. 62
Работа со списками. 62
Варианты задания. 78
Лабораторная работа № 15. 79
Выполнение операций над списковыми структурами. 79
Образец выполнения работы. 80
Лабораторная работа № 15. 80
Выполнение операций над списковыми структурами. 80
Варианты заданий. 83
10.3. Деревья. 83
10.4. Стеки, очереди. 90
Образец выполнения работы. 94
Лабораторная работа № 16. 94
Работа со стеками и очередями. 94
Лабораторная работа № 16. 100
Работа со стеками и очередями. 100
11. Организация меню с использованием средств среды Turbo Pascal 106
Лабораторная работа №17. 107
Составления меню. 107
Образец выполнения работы. 108
Лабораторная работа № 17. 108
Составления меню. 108
9. Файловые типы данных
Файл представляет собой произвольные последовательности элементов одного и того же типа, причём длина этих последовательностей заранее не определена, а конкретизируется в процессе выполнения программы. Этот тип значения получил в Паскале название файлового. Условно файл можно изобразить как некоторую ленту, у которой есть начало, а конец не фиксируется. Элементы файла записываются на эту ленту последовательно, друг за другом:
F
F1 F2 F3
где F- имя файла, а F1, F2, F3- его элементы.
В программировании существует несколько разновидностей файлов, отличающихся методом доступа к его компонентам. Мы рассмотрим простейший метод доступа, состоящий в том, что по файлу можно двигаться только последовательно, начиная с первого его элемента, и, кроме этого, всегда существует возможность начать просмотр файла с его начала. Таким образом, чтобы добраться до пятого элемента файла, необходимо, начав с первого элемента, пройти через предыдущие четыре элемента. Такие файлы называются файлами последовательного доступа, или последовательными файлами. Так что, например, невозможно прочитать 100-й элемент последовательного файла, не прочитав предыдущие 99.
9.1. Инициализация файла
Имя файла дает возможность программе работать одновременно с несколькими файлами, длина файла ограничивается только емкостью устройств внешней памяти.
Файловый тип или переменную файлового типа можно задать одним из трех способов:
<имя>=FILE OF <тип>;
<имя>=TEXT;
<имя>=FILE,
где <имя> - имя файлового типа,
FILE,OF - зарезервированные слова (файл, из);
TEXT - имя стандартного типа текстовых файлов.
От способа объявления можно выделить три вида файлов:
-
Типизированные файлы (задаются предложением FILE OF);
-
Текстовые файлы (тип TEXT);
-
Нетипизированные файлы (тип FILE).
Файлы, а также логические устройства, становятся доступны программе только после выполнения особой процедуры открытия файла(логического устройства). Эта процедура заключается в связывании ранее объявленной файловой переменной с именем существующего или вновь создаваемого файла, а также в указании направления обмена информацией: чтение из файла или запись в него.
Файловая переменная связывается с именем файла в результате обращения к стандартной процедуре ASSIGN:
ASSIGN(<ф.п.>,<имя файла или л.у.>);
здесь <ф.п.> - файловая переменная ( правильный идентификатор, объявленный в программе как переменная файлового типа);
<имя файла или л.у.> - текстовое выражение, содержащее имя файла или л.у.
Например:
Var: data:file of integer ; {задаём файловую переменную data содержащую целые числа типа integer}
begin
assign(data, ’ c:\tp\user.me ’); {связываем файловую переменную с существующим файлом или с файлом который будет создан}
end.
Инициировать файл означает указать для этого файла направление передачи данных. В TP можно открыть файл для чтения, для записи информации, и для чтения и записи одновременно.
Для чтения файл инициируется с помощью стандартной процедуры RESET:
RESET(<ф.п.>);
где <ф.п.> - файловая переменная, связанная ранее процедурой ASSIGN с уже существующим файлом.
Также можно обращаться к типизированным файлам, открытым процедурой RESET, с помощью процедуры REWRITE (для текстовых - нельзя).
Стандартная процедура:
REWRITE(<ф.п.>)
инициирует запись информации в файл, связанный ранее с файловой переменной. При выполнении этой процедуры старый файл уничтожается если таков был и создаётся новый файл.
Стандартная процедура:
APPEND(<ф.п.>)
инициирует запись в ранее существовавший текстовый файл для его расширения - эту процедуру можно использовать только для текстовых файлов.
CLOSE(<ф.п.>)
закрывает файл, но связь с <ф.п.> с именем файла сохраняется, при выходе из программы все файловые переменные задействованы процедурами RESET(<ф.п.>), REWRITE(<ф.п.>), APPEND(<ф.п.>), должны бать закрыты процедурой CLOSE(<ф.п.>).
ERASE(<ф.п.>)
уничтожение файла. Перед выполнением процедуры необходимо закрыть файл.
Например:
Var: data:file of integer ; {задаём файловую переменную data содержащую целые числа типа integer}
begin
assign(data, ’ c:\tp\user.me ’); {связываем файловую переменную с существующим файлом или с файлом который будет создан}
reset(data);
………….. {тело программы которая в своей работе }
………….. {использует данные записанные ранее в файл user.me }
…………..
…………..
close(data);
end.
9.2. Файлы и работа с ними
Для удобства описания действий над файлами введём понятие «окно файла» или просто «окно». Окно представляет позицию доступа, т.е. ту позицию файла, которая доступна для чтения в режиме чтения, либо для записи в режиме записи. Позиция файла, следующая за последней компонентой файла (или первая позиция пустого файла), помечается специальным маркером. Благодаря этому маркеру определяется конец файла.
Оператор RESET(F) или REWRITE(F) устанавливает файл с именем F в начальное состояние режима записи или чтения, в результате чего окно устанавливается на первую позицию файла.
После выполнения процедуры REWRITE(F) файл с именем F переходит в режим записи. Результат выполнения выглядит следующим образом:
F
окно
Оператор WRITE(F, X) записывает в файл (в ту позицию, на которую указывает окно) очередную компоненту, содержащуюся в переменной X, после чего окно сдвигается на следующую позицию. Естественно тип переменной X должен совпадать с типом компонента файла F. Результат выполнения выглядит следующим образом:
X:=f1;
F
f1
окно
X:=f2;
F
f1 f2
окно
и так далее.
Запись в файл с помощью процедуры WRITE(F, X) можно производить только после выполнения процедуры REWRITE(F).
После выполнения процедуры RESET(F) файл с именем F переходит в режим чтения. Результат выполнения выглядит следующим образом:
F
f1 f2 f3