Скачать презентацию Программирование на языке Паскаль Часть II ОПРЕДЕЛЕНИЕ Скачать презентацию Программирование на языке Паскаль Часть II ОПРЕДЕЛЕНИЕ

файлы-1 часть.ppt

  • Количество слайдов: 19

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

ОПРЕДЕЛЕНИЕ ПОНЯТИЙ • Физический Файл – это поименованная область на диске, содержащая какую-либо информацию. ОПРЕДЕЛЕНИЕ ПОНЯТИЙ • Физический Файл – это поименованная область на диске, содержащая какую-либо информацию. • Логический файл – это одна из структур данных, используемых в программировании.

СТРУКТУРА ЛОГИЧЕСКОГО ФАЙЛА Это способ восприятия файла в программе, т. е. «шаблон» , через СТРУКТУРА ЛОГИЧЕСКОГО ФАЙЛА Это способ восприятия файла в программе, т. е. «шаблон» , через который мы смотрим на физическую структуру файла на диске. В ЯП таким шаблонам соответствуют типы данных, допустимые в качестве компонент файлов. File of byte: байт . . . байт код символа . . . целое со знаком Eof File of char: код символа Eof File of integer: целое со знаком И другие целое со знаком Eof

Логическая структура файла в принципе очень похожа на структуру массива. Различия: • У массива Логическая структура файла в принципе очень похожа на структуру массива. Различия: • У массива количество элементов фиксировано, а у файлов количество элементов может изменяться в процессе работы. (Количество в каждый момент времени неизвестно, но в конце файла стоит символ Eof) • Массив целиком располагается в ОП, а файл находится на диске. • Нумерация элементов массива выполняется соответственно значений нижней и верхней границ, указанных при его объявлении. Нумерация элементов файла выполняется слева направо, начиная с нуля

Классификация Файлов в ПАСКАЛЕ ФАЙЛЫ ПО ТИПУ ПО МЕТОДУ ДОСТУПА Типизированные Последовательного доступа Текстовые Классификация Файлов в ПАСКАЛЕ ФАЙЛЫ ПО ТИПУ ПО МЕТОДУ ДОСТУПА Типизированные Последовательного доступа Текстовые Прямого доступа Нетипизированные

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

ИСПОЛЬЗОВАНИЕ Файлы используются для хранения данных. Из них можно считывать начальные данные, записывать результаты, ИСПОЛЬЗОВАНИЕ Файлы используются для хранения данных. Из них можно считывать начальные данные, записывать результаты, изменять информацию в файле. РАБОТА С ТЕКСТОВЫМИ ФАЙЛАМИ var список имен файлов : text; Текстовый файл может состоять из любых символов (в том числе и цифр) Для работы с каким-либо физическим файлом (тем, который существует на диске) его необходимо связать с файловой переменной Assign (имя файла, ‘путь к файлу’);

НАПРИМЕР: На диске есть файл: D: My. File. dat . . . Var f НАПРИМЕР: На диске есть файл: D: My. File. dat . . . Var f : text; . . . Begin. . . Assign (f; ‘D: My. File. dat’ ); Или: Var f : text; Name: string; . . . Begin. . . Name : = ‘D: My. File. dat ‘ ; Assign ( f, name);

ПРИНЦИПЫ РАБОТЫ С ФАЙЛАМИ 1. Открытие 2. Чтение из файла или запись в файл ПРИНЦИПЫ РАБОТЫ С ФАЙЛАМИ 1. Открытие 2. Чтение из файла или запись в файл 3. Закрытие RESET (название файла) – открытие файла для чтения из него информации в ОП REWRITE (название файла) – открытие файла для записи данных в файл APPEND (название файла) – открытие с целью дополнения данных CLOSE (название файла) – закрытие файла

ИСПОЛЬЗОВАНИЕ ДАННЫХ ИЗ ФАЙЛА • Для считывания данных из файла в ОП используют read ИСПОЛЬЗОВАНИЕ ДАННЫХ ИЗ ФАЙЛА • Для считывания данных из файла в ОП используют read и readln. Read ( название файла, список переменных ) Readln ( название файла, список переменных ) Если в списке переменных есть переменная типа char или string [10], то из строки в файле считывается 1 или 10 символов ( вместе с пробелами ) и присваиваются этой переменной. • Запись в файл осуществляется процедурами writeln Write ( имя файла, список выражений ); Writeln ( имя файла, список выражений ).

 • Если в списке переменных есть числовая переменная (integer или real), то считываются • Если в списке переменных есть числовая переменная (integer или real), то считываются символы, которые трактуются как цифры до ближайшего пробела. • Т. О. особенностью текстового файла является то, что происходит автоматическое преобразование числовых данных в цепочку символов при записи в файл и обратное преобразование символов в цифры при чтении из файла.

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

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

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

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

Ввести программу и проанализировать, что делает каждая строка program file 1; uses crt; var Ввести программу и проанализировать, что делает каждая строка program file 1; uses crt; var f: file of integer; a, i: integer; begin assign (f, 'F. txt'); rewrite (f); writeln('введите 10 целых чисел'); for i: =1 to 10 do begin readln (a); write (f, a); end; close(f); reset (f); while not eof (f) do begin read(f, a); write (a); end; close (f);

Пример Задача: в файле input. txt записаны числа (в столбик), сколько их – неизвестно. Пример Задача: в файле 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. 17

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

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