'

Программирование на языке Паскаль

Понравилась презентация – покажи это...





Слайд 0

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


Слайд 1

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


Слайд 2

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 переходом на нов.строку }


Слайд 3

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


Слайд 4

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


Слайд 5

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


Слайд 6

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


Слайд 7

8 Программа 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; f: text; eof(f) логическая функция, возвращает True, если достигнут конец файла assign(f, 'output.txt'); rewrite(f); writeln(f, 'Сумма чисел ', s); close(f); запись результата в файл output.txt


Слайд 8

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


Слайд 9

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


Слайд 10

11 Чтение данных в массив 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; Глобальные переменные: Функция: ввод массива, возвращает число элементов while (not eof(f)) and (i < 100) do begin i := i + 1; readln(f, A[i]); end; ReadArray := i; цикл заканчивается, если достигнут конец файла или прочитали 100 чисел


Слайд 11

12 Программа 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); вывод отсортированного массива в файл


Слайд 12

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


Слайд 13

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


Слайд 14

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


Слайд 15

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; файловые переменные открыть файл для чтения открыть файл для записи


Слайд 16

17 Полный цикл обработки файла 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; пока не достигнут конец файла обработка строки запись «очищенной» строки


Слайд 17

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


Слайд 18

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


×

HTML:





Ссылка: