1 Программирование на языке Паскаль Файлы с последовательным доступом. Кулебякин В.В.

Презентация:



Advertisements
Похожие презентации
1 Программирование на языке Паскаль Тема: Файлы. Integer, Real, Boolean, Character, String, Text.
Advertisements

Программирование на языке Паскаль Типизированные файлы.
К. Поляков, Программирование на алгоритмическом языке. Часть II Тема 6. Файлы.
Программирование на языке Паскаль Текстовые файлы.
Работа с файлами.. Процедура Assign(var f; name : String); Связывает внешний файл с именем name и переменную файлового типа f. Все дальнейшие операции.
Множества значений или переменных с одним общим именем называются структурированными типами. По способу организации и типу компонентов выделяют: 1. Массивы.
Пусть нам необходимо сформировать текстовый файл с помощью Паскаля, а затем переписать из данного файла во второй только те строки, которые начинаются.
Файловый тип данных Turbo Pascal Операции для работы с файлами 11 класс.
Файловый тип данных Файл – это область памяти на внешнем носителе, в которой хранится некоторая информация. В языке Паскаль файл представляет собой последовательность.
Файловый ввод- вывод данных в Pascalе Средства обработки файлов 11 класс Дугина Ирина Радиковна, учитель информатики и ИКТ, МБОУ СОШ с.Камышки Александрово-Гайского.
Программирование на языке Паскаль Часть II Тема 1. Массивы.
ТЕКСТОВЫЕ ФАЙЛЫ Turbo Pascal 7.0. Операции с текстовыми файлами Выделение буфера обмена Установка связи Открытие файла Чтение из файла Запись в файл Закрытие.
Файловая переменная. Файл – совокупность данных, записанная во внешней памяти под определенным именем. Любой файл имеет три характерные особенности: уникальное.
Program wr_text; var f: text; st: integer; i:integer; begin assign(f,'l1.TXT'); rewrite(f); write('вводите поочередно числа, после ввода очередного числа.
1 Записи 2 Запись – это тип данных, который может включать в себя несколько полей – элементов разных типов (в том числе и другие структуры). Свойства:
Программирование на языке Паскаль Файлы комбинированного типа (записей)
1 Файловый тип данных Файл – это область памяти на внешнем носителе, в которой хранится некоторая информация. Файл – это набор данных, хранящихся во внешней.
Программирование - это вторая грамотность. представляет собой последовательность элементов одного типа. Длина файла не задается, место элемента не определяется.
© М.Е.Макарова. ОПРЕДЕЛЕНИЕ ПОНЯТИЙ Физический Файл – это поименованная область на диске, содержащая какую-либо информацию. Логический файл – это одна.
Программирование типовых алгоритмов вычислений Информатика.
Транксрипт:

1 Программирование на языке Паскаль Файлы с последовательным доступом. Кулебякин В.В.

2 Файлы Файл – это область на диске, имеющая имя. Файлы только текст без оформления, не содержат управляющих символов (с кодами < 32) ACSII (1 байт на символ) UNICODE (2 байта на символ) *.txt, *.log, *.htm, *.html могут содержать любые символы кодовой таблицы *.doc, *.exe, *.bmp, *.jpg, *.wav, *.mp3, *.avi, *.mpg ТекстовыеДвоичные Папки (каталоги)

3 Принцип сэндвича I этап. открыть файл : связать переменную f с файлом открыть файл (сделать его активным, приготовить к работе) assign(f, 'qq.txt'); reset(f); {для чтения} rewrite(f); {для записи} II этап: работа с файлом Переменная типа «текстовый файл»: var f: text; III этап: закрыть файл close(f); read ( f, n ); { ввести значение n } write ( f, n ); { записать значение n } writeln ( f, n );{c переходом на нов.строку } write ( f, n ); { записать значение n } writeln ( f, n );{c переходом на нов.строку }

4 Работа с файлами Особенности: имя файла упоминается только в команде assign, обращение к файлу идет через файловую переменную файл, который открывается на чтение, должен существовать если файл, который открывается на запись, существует, старое содержимое уничтожается данные записываются в файл в текстовом виде при завершении программы все файлы закрываются автоматически после закрытия файла переменную f можно использовать еще раз для работы с другим файлом

5 Последовательный доступ при открытии файла курсор устанавливается в начало чтение выполняется с той позиции, где стоит курсор после чтения курсор сдвигается на первый непрочитанный символ конец файла (end of file, EOF) конец файла (end of file, EOF) assign ( f, 'qq.txt' ); reset ( f ); assign ( f, 'qq.txt' ); reset ( f ); read ( f, x );

6 чтение до конца строки как вернуться назад? Последовательный доступ close ( f ); reset ( f ); { начать с начала } close ( f ); reset ( f ); { начать с начала } readln ( f, x ); ¤ 36 67¤ 56 конец строки (end of line, EOL) конец строки (end of line, EOL)

7 Пример Задача: в файле input.txt записаны числа (в столбик), сколько их – неизвестно. Записать в файл output.txt их сумму. Алгоритм: 1.Открыть файл input.txt для чтения. 2.S := 0; 3.Если чисел не осталось, перейти к шагу 7. 4.Прочитать очередное число в переменную x. 5.S := S + x; 6.Перейти к шагу 3. 7.Закрыть файл input.txt. 8.Открыть файл output.txt для записи. 9.Записать в файл значение S. 10.Закрыть файл output.txt. Можно ли обойтись без массива? ? цикл с условием «пока есть данные»

8 Программа program qq; var s, x: integer; f: text; begin assign(f, 'input.txt'); reset(f); s := 0; close(f); end. program qq; var s, x: integer; f: text; begin assign(f, 'input.txt'); reset(f); s := 0; close(f); end. while not eof(f) do begin readln(f, x); s := s + x; end; while not eof(f) do begin readln(f, x); s := s + x; end; f: text; eof(f) логическая функция, возвращает True, если достигнут конец файла assign(f, 'output.txt'); rewrite(f); writeln(f, 'Сумма чисел ', s); close(f); assign(f, 'output.txt'); rewrite(f); writeln(f, 'Сумма чисел ', s); close(f); запись результата в файл output.txt

9 Задания В файле input.txt записаны числа, сколько их – неизвестно. «8»: Найти среднее арифметическое всех чисел и записать его в файл output.txt. «10»: Найти минимальное и максимальное числа и записать их в файл output.txt.

10 Обработка массивов Задача: в файле input.txt записаны числа (в столбик), сколько их – неизвестно, но не более 100. Переставить их в порядке возрастания и записать в файл output.txt. Проблемы: 1.для сортировки надо удерживать в памяти все числа сразу (массив); 2.сколько чисел – неизвестно. Решение: 1.выделяем в памяти массив из 100 элементов; 2.записываем прочитанные числа в массив и считаем их в переменной N ; 3.сортируем первые N элементов массива; 4.записываем их в файл. Можно ли обойтись без массива? ?

11 Чтение данных в массив var A: array[1..100] of integer; f: text; var A: array[1..100] of integer; f: text; function ReadArray: integer; var i: integer; begin assign(f, 'input.txt'); reset(f); i := 0; close(f); ReadArray := i; end; function ReadArray: integer; var i: integer; begin assign(f, 'input.txt'); reset(f); i := 0; close(f); ReadArray := i; end; Глобальные переменные: Функция: ввод массива, возвращает число элементов while (not eof(f)) and (i < 100) do begin i := i + 1; readln(f, A[i]); end; while (not eof(f)) and (i < 100) do begin i := i + 1; readln(f, A[i]); end; ReadArray := i; цикл заканчивается, если достигнут конец файла или прочитали 100 чисел

12 Программа program qq; var A: array[1..100] of integer; f: text; N, i: integer; Begin N := ReadArray; { сортировка первых N элементов } end. program qq; var A: array[1..100] of integer; f: text; N, i: integer; Begin N := ReadArray; { сортировка первых N элементов } end. function ReadArray: integer;... end; assign(f, 'output.txt'); rewrite(f); for i:=1 to N do writeln(f, A[i]); close(f); assign(f, 'output.txt'); rewrite(f); for i:=1 to N do writeln(f, A[i]); close(f); вывод отсортированного массива в файл

13 Задания В файле input.txt записаны числа (в столбик), известно, что их не более 100. «8»: Отсортировать массив по убыванию последней цифры и записать его в файл output.txt. «10»: Отсортировать массив по возрастанию суммы цифр и записать его в файл output.txt.

14 Обработка текстовых данных Задача: в файле input.txt записаны строки, в которых есть слово-паразит «короче». Очистить текст от мусора и записать в файл output.txt. Файл input.txt : Мама, короче, мыла, короче, раму. Декан, короче, пропил, короче, бутан. А роза, короче, упала на лапу, короче, Азора. Каждый, короче, охотник желает, короче, знать, где... Результат - файл output.txt : Мама мыла раму. Декан пропил бутан. А роза упала на лапу Азора. Каждый охотник желает знать, где сидит фазан.

15 Обработка текстовых данных Алгоритм: 1. Прочитать строку из файла ( readln ). 2. Удалить все сочетания ", короче," ( Pos, Delete ). 3. Записать строку в другой файл. 4. Перейти к шагу 1. Обработка строки s : Особенность: надо одновременно держать открытыми два файла (один в режиме чтения, второй – в режиме записи). пока не кончились данные repeat i := Pos(', короче,', s); if i 0 then Delete(s, i, 9); until i = 0; repeat i := Pos(', короче,', s); if i 0 then Delete(s, i, 9); until i = 0; искать «, короче,» удалить 9 символов

16 Работа с двумя файлами одновременно program qq; var s: string; i: integer; fIn, fOut: text; begin assign(fIn, 'input.txt'); reset(fIn); assign(fOut, 'output.txt'); rewrite(fOut); { обработать файл } close(fIn); close(fOut); end. fIn, fOut: text; файловые переменные открыть файл для чтения открыть файл для записи

17 Полный цикл обработки файла while not eof(fIn) do begin readln(fIn, s); writeln(fOut, s); end; while not eof(fIn) do begin readln(fIn, s); writeln(fOut, s); end; repeat i := Pos(', короче,', s); if i 0 then Delete(s, i, 9); until i = 0; пока не достигнут конец файла обработка строки запись «очищенной» строки

18 Задания В файле input.txt записаны строки, сколько их – неизвестно. «4»: Заменить все слова «короче» на «в общем» и записать результат в файл output.txt. «5»: Вывести в файл output.txt только те строки, в которых больше 5 слов (слова могут быть разделены несколькими пробелами).

19 Конец фильма