Файл: 2. Лекции Паскаль (Часть 2).doc

Добавлен: 19.10.2018

Просмотров: 4354

Скачиваний: 8

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

СОДЕРЖАНИЕ

Оглавление

9. Файловые типы данных

9.1. Инициализация файла

9.2. Файлы и работа с ними

Лабораторная работа №11.

Работа с внешними файлами

Лабораторная работа №11, вариант № 5.

Работа с внешними файлами

Варианты заданий.

9.3. Сортировка файлов.

9.3.1. Слияние упорядоченных последовательностей.

9.3.2. Сортировка сбалансированным слиянием

9.3.3. Сортировка простым слиянием

9.3.4. Сортировка естественным слиянием.

9.3.5. Сортировка многофазным слиянием.

Лабораторная работа №12.

Сортировка файлов.

Лабораторная работа №12.

Сортировка файлов.

10. Динамическая память.

10.1. Указатели.

10.2. Списки.

Лабораторная работа № 13.

Исключение элементов списка.

Образец выполнения работы.

Лабораторная работа № 13.

Исключение элементов списка.

Варианты задания.

Лабораторная работа № 14.

Работа со списками.

Образец выполнения работы.

Лабораторная работа № 14.

Работа со списками.

Варианты задания.

Лабораторная работа № 15.

Выполнение операций над списковыми структурами.

Образец выполнения работы.

Лабораторная работа № 15.

Выполнение операций над списковыми структурами.

Варианты заданий.

10.3. Деревья.

10.4. Стеки, очереди.

Образец выполнения работы.

Лабораторная работа № 16.

Работа со стеками и очередями.

Лабораторная работа № 16.

Работа со стеками и очередями.

11. Организация меню с использованием средств среды Turbo Pascal

Лабораторная работа №17.

Составления меню.

Образец выполнения работы.

Лабораторная работа № 17.

Составления меню.

Министерство образования и науки Российской Федерации


Федеральное государственное бюджетное образовательное учреждение высшего образования

«Пермский национальный исследовательский политехнический университет»


Кафедра «Информационные технологии и автоматизированные системы»







Полякова О.А.



«Информатика 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 - имя стандартного типа текстовых файлов.

От способа объявления можно выделить три вида файлов:

  1. Типизированные файлы (задаются предложением FILE OF);

  2. Текстовые файлы (тип TEXT);

  3. Нетипизированные файлы (тип 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

…………