Файловые типы Файл - это последовательность из произвольного числа элементов одного и того же типа. Тип этих элементов называется базовым типом файла.

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



Advertisements
Похожие презентации
Множества значений или переменных с одним общим именем называются структурированными типами. По способу организации и типу компонентов выделяют: 1. Массивы.
Advertisements

Файловый тип данных Turbo Pascal Операции для работы с файлами 11 класс.
Работа с файлами.. Процедура Assign(var f; name : String); Связывает внешний файл с именем name и переменную файлового типа f. Все дальнейшие операции.
Файловый тип данных Файл – это область памяти на внешнем носителе, в которой хранится некоторая информация. В языке Паскаль файл представляет собой последовательность.
Пусть нам необходимо сформировать текстовый файл с помощью Паскаля, а затем переписать из данного файла во второй только те строки, которые начинаются.
Файловый ввод- вывод данных в Pascalе Средства обработки файлов 11 класс Дугина Ирина Радиковна, учитель информатики и ИКТ, МБОУ СОШ с.Камышки Александрово-Гайского.
Программирование типовых алгоритмов вычислений Информатика.
Файловая переменная. Файл – совокупность данных, записанная во внешней памяти под определенным именем. Любой файл имеет три характерные особенности: уникальное.
1 Файловый тип данных Файл – это область памяти на внешнем носителе, в которой хранится некоторая информация. Файл – это набор данных, хранящихся во внешней.
1 Программирование на языке Паскаль Файлы с последовательным доступом. Кулебякин В.В.
1 Программирование на языке Паскаль Тема: Файлы. Integer, Real, Boolean, Character, String, Text.
Регулярные типы ::= Описание регулярных типов type M = array [ТИ] of ТЭ; Здесь: array (массив) и of (из) - служебные слова Паскаля; ТИ – тип индексов;
Каждый комбинированный тип - это множество записей одной и той же структуры, т.е. имеющих одно и то же число полей, названия и типы которых одинаковы.
Текстовые файлы. Определение. Файлы символьных данных называются текстовыми файлами (можно также сказать что это «файлы байтов»). Структура текстового.
ОБЩИЕ СВЕДЕНИЯ О ЯЗЫКЕ ПРОГРАММИРОВАНИЯ ПАСКАЛЬ НАЧАЛА ПРОГРАММИРОВАНИЯ.
Множественный тип данных Множество в языке Паскаль – это ограниченный набор различных элементов одного (базового) типа, которые рассматриваются как единое.
ТЕКСТОВЫЕ ФАЙЛЫ Turbo Pascal 7.0. Операции с текстовыми файлами Выделение буфера обмена Установка связи Открытие файла Чтение из файла Запись в файл Закрытие.
Что такое структурный подход в программировании? Как он реализуется в ЯП Паскаль? Что такое процедура? Кто дает название процедуре? Где записывается процедура?
Тема урока Переменная. Тип данных. Ввод и вывод данных.
Множества. Множество- ограниченный, неупорядоченный набор различных элементов одного типа. Примеры множеств: Множество арабских цифр. Множество знаков.
Транксрипт:

Файловые типы Файл - это последовательность из произвольного числа элементов одного и того же типа. Тип этих элементов называется базовым типом файла. f a b c d - файл - маркер f c - буфер type = ; где ::= file of Здесь file (файл) и of – служебные слова, а «тип» - это базовый тип файла, т.е. тип его элементов. Базовый тип может быть любым бес файловым типом. Тип является бес файловым, если в состав его объектов не входят файлы, т.е. к бес файловым не относятся файловые типы, а также массивы и записи, содержащие файлы.

Файлы – это единственный тип данных Паскаля, которые нельзя присваивать. 1) Проверка на конец файла (end of file). eof(f) - эта логическая функция принимает значение true, если маркер файла в данный момент указывает на конец файла f, т.е. на позицию вслед за последним элементом файла, и принимает значение false, если маркер указывает на какой-то элемент файла. Условно это легко изобразить так: f a b cf a b c eof(f)=true eof(f)=false

2) Считывание из файла Предположим, что переменная f уже имеет значение, т.е. в файле f уже есть какие-то элементы, и мы хотим организовать считывание из этого файла. Тогда прежде всего надо установить маркер файла на его начало, для чего используется процедура reset(f) Она устанавливает маркер файла f на его первый элемент, после чего копию этого элемента заносит в буферную переменную f: f a b c==> reset(f) ==>f a b c f f ca get(f) Эта процедура передвигает маркер на следующий элемент, после чего заносит копию этого элемента в буфер f: f a b c==> get(f) ==>f a b c f a f b

Пример. Пусть var G:file of real; S:real; и надо найти S - сумму элементов файла G. S:=0; reset(G); {установка на начало G, 1-е число в G } while not eof(G) do {пока G не пуст, выполнять} begin S:=S+G ; {добавить в S очередное число} get(G) {перейти к следующему элементу файла} end read(f,x) где х - переменная базового типа файла f. Действия этой процедуры в точности эквивалентны x:=f ; get(f) S:=0; reset(G); while not eof(G) do begin read(G,x); S:=S+x end;

3) Запись в файл Сразу отметим, что записывать в файл можно только от его начала, но не от середины. Поэтому прежде чем начать запись в файл, надо "перемотать" его на начало, для чего используется процедура: rewrite(f) Она уничтожает все элементы файла f (если такие были), т.е. делает файл пустым, а затем устанавливает маркер файла на первую (ставшую пустой) позицию файла f. В этот момент eof(f)=true, а значение f не определено: f a b c d==> rewrite(f) ==>f f c f значение не определено eof(f)=true Запись в файл осуществляется процедурой: put(f) которая добавляет в конец файла новый элемент, значение которого берется из буферной переменной f. После этого маркер сдвигается на позицию вслед за только что записанным элементом, а буферная переменная f очищается, т.е. ее значение считается неопределенным: f a b ==> put(f) ==>f a b c f c f eof(f)=true eof(f)=true

Пример. var T1: file of char; Записать в Т1 все латинские буквы, вставляя после каждой из них пробел. Решение запишется следующим образом: rewrite(T1); {установка на начало Т1 + очистка} for c:='a' to 'z' do begin T1 :=c; put(T1); {запись в Т1 очередной буквы} T1 :='_'; put(T1); {запись пробела} end; write(f,x) где х - выражение базового типа файла f. Эта процедура полностью эквивалентна паре операторов f:=x; put(f) Пример. В Паскале не допускается присваивание файлов. Но иногда все же нужно переписать информацию из одного файла в другой (скажем, из f в g). Эту перепись надо реализовывать самому. Опишем эту перепись в виде следующей процедуры: type Ф = file of T; {где Т - любой тип} procedure перепись(var f,g: Ф); var x: T; begin reset(f); rewrite(g); while not eof(f) do begin read(f,x); write(g,x) end end;

Текстовые файлы (тексты) 1)Стандартный тип text. Стандартные файлы input и output var t, книга: text; 2) Деление на строки t a b c # d # e f #... 1-я 2-я 3-я - строки eoln(t) t a b c # d #... t b eoln(t)=false t _ eoln(t)=true

Пример. Определить количество строк в тексте t: Представим решение задачи в виде описания функции function nm_line (var t: text): integer; var k : integer; begin k:=0; reset(t); while not eof(t) do begin if eoln(t) then k:=k+1; get(t) end; nm_line:= k end; readln(t) Эта процедура пропускает все очередные символы текста t вплоть до ближайшего «конца строки» и устанавливает маркер файла на символ, следующий за этим «концом строки»: t a b c # d #...==> readln(t) ==>t a b c # d #... t b t d Более точно, readln(t) - это сокращение для: while not eoln(t) do get(t); get(t)

writeln(t) Это стандартная процедура записывает в конец текстового файла символ «конец строки»: t a b c d ==> writeln(t) ==>t a b c d # Расширение возможности чтения-записи а) Процедура read Пусть t - текстовый файл, а х i - переменные типа char, integer или real. Тогда: read(x 1,x 2,...,x n ) read(input,x 1,x 2,...,x n ) т.е. при чтении из файла input, то имя input можно опускать, чем мы уже давно пользуемся. read(t,x 1,...,x n ) read(t,x 1 );...; read(t,x n ) б) Процедура readln readln(x 1,x 2,...,x n ) readln(input,x 1,x 2,...,x n ) readln(t,x 1,x 2,...,x n ) read(t,x 1,x 2,...,x n ); readln(t) в) Функции eof и eoln eof eof(input) eoln eoln(input) г) Процедура write write(p 1,p 2,...,p n ) write(output,p 1,p 2,...,p n ) Таким образом, при записи в выходной файл имя output можно опускать. write(t,p 1,p 2,...,p n ) write(t,p 1 );...; write(t,p n ) Здесь параметр p i - параметр вывода: е, е:m, e:m:n

д) Процедура writeln writeln(p 1,p 2,...,p n ) writeln(output,p 1,p 2,...,p n ) writeln(t,p 1,p 2,...,p n ) write(t,p 1,p 2...,p n ); writeln(t) Внутренние и внешние файлы диск АБИТ СТУД программа дисплей рис. а F F ВП ОП рис. б

Пример. Пусть во внешнем файле с именем АБИТ записана информация обо всех абитуриентах, сдававших приемные экзамены, и пусть стал известным проходной бал. Требуется из всех абитуриентов отобрать тех, сумма баллов у которых не меньше проходного балла, и записать сведения о них в другой внешний файл с именем СТУД. Кроме того, надо вывести на экран дисплея количество таких абитуриентов. program зачисление(input,output,АБИТ,СТУД); type строка = array[1..15] of char; анкета = record ФИО: record фам, имя, что : строка end; оцен: array[1..4] of 2..5; {другая информация: пол, возр и т.д.} end; var АБИТ,СТУД: file of анкета; ПБ: ; {проходной балл} Б,N,i: integer; semafor: boolean;

begin writeln('Сообщите_проходной_балл:'); read(ПБ); reset(АБИТ); rewrite(СТУД); N:=0; {число зачисленных студентов} repeat Б:=0; semafor:=true; for i:=1 to 4 do if АБИТ.оцен[i]>2 then Б:=Б+АБИТ.оцен[i] else semafor:=false; if semafor and (Б>ПБ) then begin N:=N+1; write(СТУД,АБИТ ) end; get(АБИТ); until eof(АБИТ); writeln('Зачислено ',N,' человек') end.