![]() Главная страница Случайная страница КАТЕГОРИИ: АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника |
Тема 14
«Файлы. Типы файлов. Методы работы с файлами» Цель: Познакомиться с организацией файлов. Вопросы к допуску и защите: 1. Что такое файл? Для каких целей используются файлы? 2. Какими причинами диктуется целесообразность применения файлов? 3. Каким образом в Паскале объявляютсяфайлы? 4. Назовите общие и отличительные особенности текстовых, типизированных и нетипизированных фыайлов. 5. Зачем используется специальная файловая переменная? Как устонавливается соответствие файловой переменной файлу во внешней памяти? 6. Что общего у процедуры Reset и Rewrite и чем они отличаются? 7. Зачем применяется процедура Close? 8. Какие процедур ы применяются для переименования и удаления файлов? Каковы особенности их использования? 9. В чем заключается специфика текстовых файлов? Назначение процедуры Append. 10. Чем отличаются процедуры Read и Write от Readln и Writeln. 11. Назначение функций Eoln, Eof, Seek.
Примеры решения задач Задача 1. Поставим задачей, записать в один файл произвольный массив чисел, затем прочесть их из файла, отсортировать по не убыванию методом пузырьковой сортировки и записать отсортированный массив в новый файл. Решение Способ Program Problem1; { Обработка массивов с помощью файлов } uses WinCrt; { пузырьковая сортировка } const name = 'd: \Bp\prakt\p23\array1.dat'; name1 = 'd: \Bp\Prakt\p23\array1.int'; n = 100; type v = file of integer; t = array [1..n] of integer; var f, f1: v; a: t; i: integer; {----------------------------------------------------------------------------------------} { Открытие файла f, соответствующего на диске файлу arra1.dat и процедура заполнения его массивом произвольных целых чисел } Procedure create(n: integer; var a: t; var f: v); var i: integer; begin assign(f, name); { доступ к файлу f } {$i-} rewrite(f); { открытие его для записи } {$i+} if ioresult < > 0 then writeln('Такой файл не существует'); randomize; for i: = 1 to n do begin a[i]: = random(201) - 100; write(f, a[i]) {запись элементов массива в файл f} end; close(f); {закрытие файла f} end; {---------------------------------------------------------------------------------------} {Процедура, читающая элементы из файла f, сортирующая элементы методом " пузыря" и записывающая отсортированный массив в новый файл array1.int} Procedure bubble(n: integer; var f1: v); var i, j, p: integer; begin assign(f, name); {доступ к файлу f} assign(f1, name1); {доступ к файлу f1} create(n, a, f); {$i-} reset(f); {открытие файла f для чтения} {$i+} if ioresult < > 0 then writeln('Такой файл не существует'); rewrite(f1); {открытие файла f1 для записи} {$i+} if ioresult < > 0 then writeln('Такой файл не существует'); for i: = 1 to n do read(f, a[i]); {чтение из файла f} for i: = 2 to n do for j: = n downto i do if a[j] < a[j - 1] then begin p: = a[j]; a[j]: = a[j - 1]; a[j - 1]: = p end; for i: = 1 to n do write(f1, a[i]); {запись отсортированного массива в файл f1 } close(f); close(f1) {з закрытие файла f, закрытие файла f1 } end; {----------------------------------------------------------------------------------------} {Основная программа, вызывающая отсортированные элементы из файла f1 и выводящая их на экран} begin assign(f1, name1); { доступ к файлу f1 } bubble(n, f1); { вызов процедуры сортировки } {$i-} reset(f1); { Открытие файла f1 для чтения } {$i+} if ioresult < > 0 then writeln('Такой файл не существует'); writeln('Отсортированный по не убыванию массив'); for i: = 1 to n do begin read(f1, a[i]); { Чтение элементов массива из файла f1 } write(a[i], ' ') { Вывод их на экран } end; writeln; close(f1) {Закрытие файла f1} end. Способ Program Problem1a; { Обработка массивов с помощью файлов } uses WinCrt; { пузырьковая сортировка } const name = 'd: \Bp\prakt\p23\array1.dat'; name1 = 'd: \Bp\Prakt\p23\array1.int'; n = 100; type v = file of integer; t = array [1..n] of integer; var f, f1: v; a: t; i: integer; {---------------------------------------------------------------------------------------} {Процедура, читающая элементы из файла f, сортирующая элементы методом " пузыря" и записывающая отсортированный массив в новый файл array1.int} Procedure bubble(n: integer; var f1: v); var i, j, p: integer; begin assign(f, name); {доступ к файлу f} assign(f1, name1); {доступ к файлу f1} create(n, a, f); {$i-} reset(f); {открытие файла f для чтения} {$i+} if ioresult < > 0 then writeln('Такой файл не существует'); rewrite(f1); {открытие файла f1 для записи} {$i+} if ioresult < > 0 then writeln('Такой файл не существует'); for i: = 1 to n do read(f, a[i]); {чтение из файла f} for i: = 2 to n do for j: = n downto i do if a[j] < a[j - 1] then begin p: = a[j]; a[j]: = a[j - 1]; a[j - 1]: = p end; for i: = 1 to n do write(f1, a[i]); {запись отсортированного массива в файл f1 } close(f); close(f1) { закрытие файла f, закрытие файла f1 } end; {----------------------------------------------------------------------------------------} {Основная программа, вызывающая отсортированные элементы begin assign(f1, name1); { доступ к файлу f1 } bubble(n, f1); { вызов процедуры сортировки } {$i-} reset(f1); { Открытие файла f1 для чтения } {$i+} if ioresult < > 0 then writeln('Такой файл не существует'); writeln('Отсортированный по не убыванию массив'); for i: = 1 to n do begin read(f1, a[i]); { Чтение элементов массива из файла f1 } write(a[i], ' ') { Вывод их на экран } end; writeln; close(f1) {Закрытие файла f1} end.
|