Урок №7
Разработка урока на тему «Файлы данных».
Тема урока: Файлы данных.
Цель урока: Сформировать у учащихся понятие о файле данных. Процедуры работы с файлами.
Задачи урока:
Оборудование урока: компьютер, проектор.
План урока
1. Организационный момент (приветствие).
- Здравствуйте, садитесь. Кто сегодня отсутствует?
2. Изучение нового материала .
Файлы данных.
Файл данных - это пространство на магнитном носителе, зарезервированное для хранения информации и имеющее определенное имя. Файл - это также последовательность чисел (кодов), некоторые из которых понимаются как управляющие коды (например, существует код признака конца файла, для текстовых файлов существует признак конца строки). Что представляет из себя эта последовательность чисел можно решить только в программе. В самом файле нет никаких признаков, позволяющих определить характер информации.
Работать с файлом на физическом уровне крайне сложно. Поэтому для файла, как и для обычной переменной, Паскаль определяет тип. Например, можно записать:
a: file of integer; (Файл целых чисел.)
f: file of string; (Файл строк.)
Алгоритм работы с файлом:
Задача 1 . Напишем программу, в которой будут выполняться следующие действия:
Program example;
I,u: integer;
{ Определяется переменная, которую затем можно привязать к файлу,
F: file of integer;
begin
{ Файловая переменная привязывается к файлу,
Имя которого указано в апострофах }
Assign(f,’file’);
{ Так как такой файл еще не существует, то он создается и открывается}
Rewrite(f);
{ Числа записываются в файл }
For i:=1 to 100 do write(f,i);
{ Файл закрывается}
Close(f);
{ Так как файл уже существует, то он просто открывается }
Reset(f);
{ Числа читаются из файла и выводятся на экран дисплея}
For i:=1 to 100 do
Begin
Read(f,u);
Write(‘ ‘,u);
End;
end.
Файловая переменная не может быть совершенно обычной переменной. Поэтому для файловых переменных предусмотрены специальные процедуры и функции. Краткий список процедур и функций, работающих с файлами в Borland Pascal, приведен далее.
Примечание
Для файла существует такое понятие как указатель на текущую позицию. Это величина целого типа (для Borland Pascal - это величина типа longint ), в которой хранится номер текущей позиции файла. При каждой операции чтения/записи указатель смещается на следующую запись. Под записью понимается длина типа, указанного в объявлении файла. Нумерация записей в файле начинается с нуля.
Структуры данных в приведенном примере определены вполне корректно, но в операторе write(f,a); компилятор выдаст сообщение об ошибке. А именно: компилятор сообщит, что имеет место несоответствие типов. Кажется, что типы переменных a и f одинаковы. Однако это не так с точки зрения компилятора. Мы описали две разные структуры, и компилятор справедливо полагает, что они могут быть различны и не берет на себя заботу по проверке их одинаковости.
Указанная проблема решается следующим образом:
Program example;
Uses crt;
Type
R=record
S:string;
I:integer;
End;
A:r;
F: file of r;
begin
A.s:="fsfsfsf";
A.i:=8;
Write(f,a);
end.
Эта программа реализует ту же задачу, что и предыдущая, однако здесь для компилятора не возникает никаких проблем.
Файл может быть компонентом сложной структуры. Например, вполне допустим массив файлов:
f:array file of integer;
Файл вполне может оказаться компонентом записи:
Program example;
A:record
S:string;
F: file of integer;
End;
begin
Assign(a.f,"file.dat");rewrite(a.f);
end.
В этом примере открывается файл массивов. То есть каждая запись файла - это массив длиной в 10 целых чисел. Причем мы можем не определять значения всех десяти элементов, в файле все равно будет записано их десять, как дано в определении массива.
Один и тот же физический файл можно открыть как файл одного типа, а затем его же как файл другого типа:
Program example; Uses crt;
S:string;
I:integer;
F:file of string;
D:file of integer;
begin
Clrscr;
Assign(f,"file.dat");rewrite(f);
S:="gdgdgjagdjasg";
For i:=1 to 10 do write(f,s);
Close(f);
Assign(d,"file.dat");reset(d);
While not eof(d) do
Begin
Read(d,i);write(i," ");
End;
end.
В этом примере файл с именем file.dat открывается как строковый и заполняется некоторым содержимым, затем закрывается и опять открывается, но уже как файл чисел. Такие операции для языка Паскаль вполне законны, это следствие того, что на физическом уровне тип файла никак не фиксируется.
Заключение: Файл - это структура позволяющая хранить большие наборы информации. То, что файловые типы представляют собой обычные языковые типы данных, добавляет им удобства в обработке. Единственный недостаток хранения данных в файлах - это относительно низкая скорость доступа.
3.Домашнее задание.
Повторить изученный материал. Выучить основные понятия: файл данных; файл; алгоритм работы с файлами; процедуры и функции, работающие с файлами; запись.
4. Подведение итогов
Выставление оценок ученикам, которые хорошо работали на уроке.
(data file) Файл (file), находящийся в компьютерной системе, который содержит данные (data), в отличие от файлов, содержащих программу. См.: компьютерное программирование (computer programming). Файл данных обычно подразделяется на записи (records) и поля (fields).
Энциклопедия мифологии
Энциклопедия техники
Большой энциклопедический политехнический словарь
Словарь бизнес терминов
Большой бухгалтерский словарь
Естествознание. Энциклопедический словарь
Словарь бизнес терминов
Финансовый словарь
Финансовый словарь
Финансовый словарь
Финансовый словарь
Финансовый словарь
Большой экономический словарь
Официальная терминология
Современная энциклопедия
Орфографический словарь русского языка
Проект «Хранилище данных» и проект «Технология выявления скрытых взаимосвязей внутри больших баз данных» Оба этих проекта были интегрированы в 1999 г. Благодаря им начались разработка и проведение кампаний по продаже банковских продуктов. Эти проекты создали большие
Экспорт данных из базы данных Access 2007 в список SharePoint Access 2007 позволяет экспортировать таблицу или другой объект базы данных в различных форматах, таких как внешний файл, база данных dBase или Paradox, файл Lotus 1–2–3, рабочая книга Excel 2007, файл Word 2007 RTF, текстовый файл, документ XML
Перемещение данных из базы данных Access 2007 на узел SharePoint Потребности многих приложений Access 2007 превышают простую потребность в управлении и сборе данных. Часто такие приложения используются многими пользователями организации, а значит, имеют повышенные потребности в
Спасение данных из поврежденной базы данных Возможно, что все вышеприведенные действия не приведут к восстановлению базы данных. Это означает, что база серьезно повреждена и либо совсем не подлежит восстановлению как единое целое, либо для ее восстановления понадобится
Проверка введенных данных на уровне процессора баз данных Помимо проверки данных во время ввода информации, следует знать о том, что можно также выполнять проверку и на уровне процессора баз данных. Такая проверка обычно более надежна, поскольку применяется независимо
Из книги Обработка баз данных на Visual Basic®.NET автора Мак-Манус Джеффри ПОбновление базы данных с помощью объекта адаптера данных Адаптеры данных могут не только заполнять для вас таблицы объекта DataSet. Они могут также поддерживать набор объектов основных SQL-команд, используя их для возвращения модифицированных данных обратно в хранилище
Глава 2 Ввод данных. Типы, или форматы, данных Работа с документами Excel сопряжена с вводом и обработкой различных данных, то есть ин формации, которая может быть текстовой, числовой, финансовой, статистической и т. д. МУЛЬТИМЕДИЙНЫЙ КУРС Методы ввода и обработки данных
Базы данных клиент-сервер в сравнении с файл-серверами Системы совместного доступа к файлам являются другим примером систем клиент- сервер. Файловые серверы и серверы файловых систем обслуживают запросы клиентов к файлам и файловым системам иногда весьма запутанными
Модель данных <> база данных Тот "мир", который был получен в процессе описания и анализа, является черновиком для структур ваших данных. Считается, что логическая модель должна описывать отношения и наборы. Обычная ошибка (и западня, присущая всем инструментам CASE) слепо
Базы данных (классы для работы с базами данных) В MFC включены несколько классов, обеспечивающую поддержку приложений, работающих с базами данных. В первую очередь это классы ориентированные на работу с ODBC драйверами – CDatabase и CRecordSet. Поддерживаются также новые средства для
Из книги Комментарий к Федеральному закону от 27 июля 2006г. N 152-ФЗ "О персональных данных" автора Петров Михаил ИгоревичСтатья 16. Права субъектов персональных данных при принятии решений на основании исключительно автоматизированной обработки их персональных данных Комментарий к статье 161. Комментируемая статья определяет права субъектов персональных данных по отношению к принятию
2. Определение типа сравнения данных (от идеи к сравнению данных) Данный шаг – это связующее звено между идеей и готовой диаграммой.Очень важно уяснить, что любая идея – любой аспект данных, на который вы хотите обратить внимание, – может быть выражена посредством
Вся информация, содержащаяся в переменных и массивах, исчезает по окончании работы программы. Если она может понадобиться в дальнейшем, то эту информацию сохраняют на жёстком диске, дискете или другом носителе, а при следующем запуске программы обратно загружают с внешнего носителя в массивы или переменные. Такая запись на диске или другом носителе называется файлом данных . Кроме файлов данных существуют также исполняемые файлы (программы в машинных кодах с расширением.exe или.com). Некоторые языки и системы программирования (в том числе из диалектов Паскаля – Borland Pascal и Delphi) позволяют из собственной программы запустить такой файл. Pascal ABC такой возможностью не располагает.
Файлы объединены в группы (каталоги или папки). Чтобы определить, с каким файлом предстоит работать, указывают его полное имя . Оно состоит из нескольких частей, например:
Тот каталог, в котором находится наша программа, является рабочим (текущим) каталогом. Это обозначает, что при обращении к файлу данных, находящемуся в таком каталоге, указывать путь не обязательно.
Для использования файла данных в программе нужно в разделе VAR описать файловую переменную (ф/п), в которой будет храниться информация об этом файле (полное имя, длина, дата и время создания и т.д.). Это описание различно для разных типов файлов. Например:
В файлах, описанных как типовые, все данные имеют один и тот же тип (указанный при описании), так же как и в массивах. Поэтому в таких файлах обычно сохраняют содержимое массивов. Хранить в типовом файле текст неудобно, так как все строки должны быть одинаковой длины. Для хранения текста со строками различной длины используется текстовый файл. Для отделения одной строки от другой, в таком файле каждая строка заканчивается символом, соответствующим клавише ENTER. Кроме строк в текстовом файле можно хранить и числа (но это менее экономно, чем в типовом файле, где они хранятся в двоичном коде, а не посимвольно).
Чтобы занести в файловую переменную имя файла , используется команда
assign(ф/п, ’полное имя файла’);
В этой команде можно не указывать путь для файла, находящегося в рабочем каталоге (там же, где и сама программа).
Чтобы в файловую переменную попала вся остальная информация о файле, его нужно открыть с помощью одной из следующих команд:
reset(ф/п); - открывает уже существующий файл и устанавливает указатель на его начало (обычно так открывают файл для чтения, но в типовый файл можно и записывать. Запись происходит вместо имеющихся в файле данных).
append(ф/п); - открывает уже существующий файл и устанавливает указатель на его конец (для добавления информации после конца файла).
rewrite(ф/п); - создаёт новый файл (если файл уже существует, он очищается).
Указатель файла хранит место в файле, откуда мы можем прочесть (или куда записать) информацию. Каждая операция чтения или записи перемещает указатель к следующей записи.
Чтобы прочесть информацию из файла , поместив её в переменную, используются команды:
read(ф/п, список переменных); - читает из типового и текстового файла.
readln(ф/п, список переменных); - читает из текстового файла.
Если из текстового файла читаются не отдельные слова или числа, а вся строка, то используется только одна строковая переменная.
write(ф/п, список переменных); - записывает в типовый и текстовый файл.
writeln(ф/п, список переменных); - записывает в текстовый файл с переводом строки.
Для перемещения по файлу (только типовому!) используется команда seek(ф/п, номер записи); . Нумерация записей в файле ведётся с нуля. Чтобы попасть в конец файла для добавления новой записи, в качестве номера в этой команде используется функция filesize(ф/п), определяющая размер файла (не в байтах, а в записях данного типа).
При чтении из файла неизвестной длины, можно перед чтением проверять, не кончился ли ещё файл, с помощью функции eof(ф/п), которая даёт true, если указатель находится после последней записи. Например:
По окончании работы с файлом его нужно закрыть командой close(ф/п); . Если не сделать этого, Pascal не сохранит изменения файла на диске. Но и если не было изменений, закрыть файл рекомендуется. После этого файловая переменная и файловые буферы (область памяти, которую Pascal использует при работе с памятью) освобождаются.
Команда rename(ф/п,’новое_имя’)переименовывает файл, связанный с файловой переменной. Файл должен быть закрыт.
Команда erase(ф/п)удаляет файл, связанный с файловой переменной. Файл должен быть закрыт.
Не всегда файловые операции проходят успешно. Например, при попытке прочесть с дискеты, которую забыли вставить в дисковод, появляется сообщение об ошибке, и происходит аварийное завершение программы. Подобные ошибки лучше предупредить. Функция FileExists(’имя’) возвращает True, если на диске имеется файл с данным именем (и путём), в противном случае возвращает False. Её нужно использовать перед попыткой обращения к уже существующему файлу. Если нужно создать новый файл, перед этим используется функция CanCreateFile(’имя’). Если имя файла или путь указаны неправильно, или на диске нет места, или по другим причинам невозможно создать файл с таким именем, она возвращает False.
Вторым файлом, необходимым для работы See5, является файл данных. Он имеет расширение *.data. В нашем случае это файл USR . data .
Каждому объекту в файле данных соответствует собственная строка. Если значение целевой переменной находится вверху файла имен переменных, строка начинается со значения этой целевой переменной. Затем через запятую следуют значения всех остальных признаков. Неизвестные значения переменных кодируются вопросительным знаком «?», после вертикальной черты «|» можно писать невоспринимаемые системой комментарии.
Ниже приводится полностью весь файл данных USR . data , который мы будем использовать для демонстрации возможностей See5.
Для проверки качества построенного дерева решений и соответствующего множества логических правил в системе See5 предусмотрена возможность работы со специальными файлами, в которых содержатся дополнительные тестовые данные.
Третий вид файла, используемый системой See5, содержит новые тестовые объекты. Это то, что еще принято называть контрольной выборкой. Данный файл USR . test является необязательным и, если используется, имеет формат уже описанного файла USR . data .
Следующий вспомогательный файл USR . cases также является необязательным. Он содержит объекты с неизвестной классификацией.
Последний вид файла, обозначаемый USR . costs , содержит информацию о стоимости различных ошибок классификации. Заполнение этого файла является необязательным. Вместе с тем, назначение штрафов за ошибки может оказаться весьма полезным при разработке некоторых приложений.
В главном окне See5 располагается пять кнопок (рис. 1). Перечислим их слева направо.
С помощью кнопки Locate Da ta (местонахождение данных) вызывается окно для просмотра доступных файлов данных и их загрузки в систему.
Нажатием кнопки Construct Classifier (построение классификатора) производится обращение к окну диалога для выбора типа классификатора и установки его параметров. Кнопка Stop предназначена для останова процесса построения дерева решений.
Кнопка Use Classifier (использование классификатора) запускает процесс интерактивной классификации одного или более объектов. С помощью кнопки Cross-Reference (перекрестная ссылка) вызывается окно, в котором наглядно раскрываются связи между объектами обучающей выборки и виденными правилами их классификации.
Все перечисленные функции доступны также из меню File. В свою очередь, в меню Edit предоставляется возможность редактирования файла имен данных и файла стоимости ошибок классификации.
Рис. 1. Главное окно системы See 5
На первом этапе обработки данных обычно используются параметры системы, установленные по умолчанию. Нажимаем кнопку Construct Classifier и затем в появившемся окне диалога (рис. 29) сразу нажимаем 0К (предполагается, что файл данных USR . dat a уже загружен). Система выдает окно результатов, которые выглядят следующим образом (рис. 3). В первой строке отчета о результатах дается информация об используемой версии системы See5 и текущее время. Затем в следующих двух строках говорится о том, что классифицирующей переменной служит diagnosis и прочтенный файл данных USR . data содержит 74 объекта, каждый из которых описан одиннадцатью признаками.
Рис2. Окно диалога для задания параметров алгоритма конструирования классификатора
В следующих строках отчета отображено построенное дерево решений. Его можно проинтерпретировать следующим образом:
ЕСЛИ Index больше 0,69 и Speed больше 18, ТО класс № 3, иначе
ЕСЛИ Index больше 0,69 и Speed не больше 18 и Thickness не больше 46, ТО класс № 1
и т. д.
Каждая ветка дерева заканчивается указанием номера класса, к которому она приводит. Сразу за номером следует запись вида (я) или (п/т). Например, самая первая ветка заканчивается записью (12,0). Это означает, что данной ветке соответствует 12 объектов из определенного (третьего) класса. Последняя ветка заканчивается записью 1 (6,0/1,0), из чего следует, что эта ветка описывает класс № 1 и сюда попадают 6 объектов, из которых 1 попадает ошибочно. Величины п или т могут оказаться дробными в случае, когда на какую-либо ветку придется некоторое число объектов с неизвестными значениями признаков.
В следующем разделе отчета приводятся характеристики сконструированного классификатора, оцениваемые на обучающей выборке. Здесь мы видим, что построенное дерево решений имеет 9 веток (size = 9), а ошибка классификации наблюдается на 5 объектах, что составляет 6,8 %.
Взавершающей части отчета дается таблица с детальным разбором результатов классификации. Исходя из данных этой таблицы, можно сказать, что из 1-го класса (здоровые почки) правильно классифицируются 20 объектов, а 2 объекта ошибочно относятся к классу 2; среди объектов 2-го класса (множественные кисты) 35 диагностируются правильно и 2 ошибочно признаются здоровыми; все объекты 3-го класса (гидронефроз) классифицируются правильно за исключением одного объекта, попадающего в класс № 2.
В заключение система See5 выдает сообщение о затраченном на решение времени. с нашем случае оно составило 0,5 с. Здесь надо отметить вообще очень высокую скорость работы алгоритма See5, позволяющую оперативно обрабатывать высокоразмерные массивы информации, содержащие тысячи и десятки тысяч записей.
Можно еще более подробно разобрать результаты нашей классификации. Для этого нажмем в главном окне See5 кнопку Cross-Reference (перекрестная ссылка). Система выдаст окно, в левой половине которого нарисовано построенное дерево решений, а в правой половине перечисляются объекты, попавшие на ту или иную ветвь дерева. Чтобы выделить интересующую ветвь, нужно щелкнуть по ней левой кнопкой мыши (справа от ветви появится темный круг - на рис. 4 на него указывает стрелка). Кроме того, если щелкнуть мышью по номеру какого-либо объекта из правого поля, то система выдаст еще одно окно с именем Case, в котором приводятся значения признаков и выделенного объекта. В случае, показанном на рисунке, нас заинтересовала ветвь (Index <=0.69 и Age.<"43), на которой находятся 10 объектов из 1-го класса и 1 объект из 2-го класса.
Рис.
4. Отображение результатов классификации
в окне перекрестных ссылок