Скачать 248.35 Kb.
|
Введение Основным носителем информации является файл. Файлы организованы в системе не хаотическим образом, а виде определенной структуры, получившей название файловой системы. Файл – обладает признаками:
В зависимости от файловой системы, файл может обладать различным набором свойств:
Например: атрибут READ ONLY говорит о том, что файл предназначен только для чтения, записывать в файл запрещено, Атрибут ^ , что значит, системный, критический для работы операционной системы файл, атрибут HIDDEN скрытый файл скрывается от показа, пока явно не сказано обратное, ARCHIVE - архивный (требующий архивации) файл изменён после резервного копирования или не был скопирован программами резервного копирования.
- Время создания - Время модификации - Время последнего доступа
Лабораторная работа №1. Работа с файлами в Delphi. Цель работы Изучение способов обмена информацией, поиск данных в файлах, стандартных процедур и функций, предназначенных для работы с файловой системой. ^
Содержание отчета Отчет по лабораторной работе должен содержать номер, название, цель лабораторной работы, задание на лабораторную работу, текст программы на языке Delphi, распечатки формы в активном состоянии с результатами выполнения лабораторной работы. ^ Для упрощения и прозрачности доступа к файлам в файловой системе выделяются такие логические понятия, как каталог (папка, ^ , директория) и диск. Для работы с файлами, каталогами и дисками необходимо наличие в разделе uses модулей System и SysUtils . Большинство функций, описанных в модулях System и SysUtils, являются логическими. По значению, которое они возвращают, определяется успешность выполнения операции. Если значение равно true, то считается, что операция прошла успешно. Для обращения к дисковым накопителям используются буквы латинского алфавита (A..Z). Логический диск представляет собой именованную область дискового пространства, которая обладает следующими параметрами:
Для доступа к текстовым файлам используется переменная типа TextFile. Чтобы ассоциировать файл на диске с переменной надо проделать следующие операции: 1) Определить файловую переменную: var f:TextFile; 2) Ассоциировать ее: ^ 3) Теперь надо этот файл открыть, есть 3 варианта: - файла нет или он должен быть перезаписан, открытие для записи: Rewrite(f) - файл есть и его надо открыть для чтения (с первой строки) Reset(f) - файл есть и его надо открыть для дописывания строк в конец Append(f). (Процедура Append предназначена для открытия текстового файла и добавления записей в файл (запись добавляется в конец файла)) Возможно следующие действия с файлом: - Перезаписать весь файл - Читать с первой строки - Дописать что-то в конец - Читать и писать файл целиком. Рассмотрим пример: пусть у нас есть строковая переменная s для чтения строки из файла. Чтение предварительно открытого файла: ReadLn(f, s) - будет прочитана текущая строка, и позиция чтения переведена на следующую позицию. Для того, что бы прочитать весь файл необходимо считывать построчно все содержимое файла до тех пор, пора он не закончиться: While not eof(f) do begin ReadLn(f, s); {здесь делаем что-то с прочитанной строкой} end; Для записи целой строки существует функция: Writeln(f,s); Запись части строки (те следующая операция записи будет произведена в ту же строку) производиться с помощью функции: Write(f,s); Если переменная s содержит больше 255 символов (т.е. является длинной строкой), то в файл вместо строки попадут 4 байта указателя на нее. Поэтому необходимо использовать тип pointer, который определяет общее использование указателя на любые данные, основанные на памяти. Таким образом, функция записи для длинной строки выглядит следующим образом: Writeln(f,pointer(s)^). Различают типизированные и нетипизированные файлы. Типизированный файл - это файл, в котором записаны идентичные структуры. Например, любой файл можно считать файлом байтов, т.е. можно его читать байт за байтом, можно перейти сразу к любому байту по его номеру, можно сразу узнать, сколько байт в файле, можно заменить любой байт на другой, не перезаписывая файл. Объявляем файл байтов: var f:file of byte; b:Byte; //Ассоциируем файловую переменную с физическим файлом: AssignFile(f,'c:\myfile.bin'); //Теперь мы можем либо перезаписать/создать файл: Rewrite(f); //Либо открыть существующий для чтения и записи: Reset(f); //Обратите внимание, что функция Reset хотя и имеет такой же формат, как и для текстовых файлов, но открытый ей файл можно и читать и писать, в отличие от текстовых. Теперь рассмотрим функции работы с файлом: read(f,b); - прочитать 1 байт write(f,b); - записать 1 байт seek(f,100); - поставить текущее положение считывания/записи на сотый байт Size(f); - прочитать количество байт в файле. Eof(f); - узнать не являетсмя ли байт последним Все эти функции не работают с файлами большими 2 ^ . После работы файл надо закрыть: CloseFile(f); Приведенные выше механизмы будут работать с любым файлом, так как любой файл можно считать файлом байтов. Нетипизированный файл - это такой файл, который содержит разнородные элементы. Например, файл .EXE - вначале он имеет заголовок, затем двоичный код, в конце какие-то ресурсы. Все части файла имеют разную длину и разную структуру. Работа с такими файлами достаточно сложна и требует вручную разработки алгоритмов его чтения, но в связи гибкостью структуры и компактностью такие файлы составляют большинство. Для работы с нетипизированными файлами используют процедуры BlockRead и BlockWrite. Процедура BlockWrite используется для записи RecordCount записей данных из Buffer в нетипизированный двоичный файл. Процедура BlockRead используется для чтения RecordCount записей данных в ^ из нетипизированного двоичного файла, данного FileHandle. Пример: провести чтение данных от двоичного файла по одному байту за один раз. var myFile : File; byteArray : array[1..8] of byte; oneByte : byte; i, count : Integer; begin // Попытка открыть файл Test.byt для записи AssignFile(myFile, 'Test.byt'); ReWrite(myFile, 4); // Определение отдельной 'записи' как 4 байта // Заполнение массив данными for i := 1 to 8 do byteArray[i] := i; // Запись данных массива в файл ^ // Запись 2 'записи' из 4 байт //Закрытие файла CloseFile(myFile); // Повторное открытие файла для чтения FileMode := fmOpenRead; Reset(myFile, 1); // Теперь мы определяем одну запись как 1 байт // Показ содержимого файла // Чтение первых 6 байт. 'count' установлен в // текущий считанный номер ShowMessage('Чтение первого набора байтов :'); ^ // Показ считанных значений байта for i := 1 to count do ShowMessage(IntToStr(byteArray[i])); // Теперь читаем один байт за один раз и так до конца файла ShowMessage('Чтение остающихся байтов :'); while not Eof(myFile) do begin BlockRead(myFile, oneByte, 1); // Чтение одного байта за один раз ShowMessage(IntToStr(oneByte)); end; // Закрытие файла в последний раз CloseFile(myFile); end; Так же для работы с нетипизированными файлами используются следующие функции: Erase(f) - удаляет файл FilePos(f) - возвращает текущую позицию чтения/записи в файл Flush(f) - сбрасывает кэшированные файловые операции на диск ^ - переименование файлов Truncate(f) - файл обрезается до текущей позиции чтения/записи. Delphi предоставляет довольно широкие возможности по файловым операциям без использования механизмов открытия/закрытия файлов. Наиболее употребимые функции, большинство из которых в качестве параметров нуждаются только в имени файла: ^ - изменяет текущий каталог; прочитать же текущий каталог можно функцией GetCurrentDir, а текущий каталог для определенного драйва - GetDir. CreateDir(const Dir: string): Boolean; - создает каталог, при этом предыдущий уровень должен присутствовать. Если вы хотите сразу создать всю вложенность каталогов, используйте функцию ^ ; Обе функции возвращают True, если каталог создан. DiskFree(Drive: Byte): Int64; - дает свободное место на диске. Параметр - номер диска 0 = текущий, 1 = A, 2 = B, и так далее ^ ; - размер жесткого диска. Обратите внимание на то, что для результата этой и предыдущей функций абсолютно необходимо использовать переменную типа ^ , иначе максимум того, что вы сможете прочитать правильно, будет ограничен 2Gb. FileExists(const FileName: string) - применяется для проверки наличия файла FileGetAttr(const FileName: string): Integer; ^ Integer; - функции для работы с атрибутами файлов, где FileName – имя файла, Attr- атрибуты. Список возможных атрибутов: faReadOnly $00000001 Read-only files faHidden $00000002 Hidden files faSysFile $00000004 System files faVolumeID $00000008 Volume ID files faDirectory $00000010 Directory files faArchive $00000020 Archive files faAnyFile $0000003F Any file (Естественно не все атрибуты применимы во всех случаях) ^ ; - удаляет папку(пустую) DeleteFile(const FileName: string): Boolean; - удаляет файл RenameFile(const OldName, NewName: string) - переименовывает файл. Функция IOResult возвращает результат последней операции ввода/вывода. Если операция завершилась нормально, то это число 0, положительное число - если операция потерпела неудачу. Функция IOResult используется после отключения функции проверки ошибок:{$IOChecks off}. Когда $IOChecks включено, Delphi выдает исключения для ошибок. Когда выключено, Delphi не выдает исключения, требуя, чтобы код сам следил за результатом ввода/вывода IOResult. Рассмотрим пример: создать каталог дважды с перехватом кода ошибки. var error : Integer; begin // Попытка создать новый подкаталог в текущей директории // Выключение проверки ошибок I/O {$IOChecks off} MkDir('TempDirectory'); // Каталог создался успешно? error := IOResult; if error = 0 then ShowMessage('Каталог создался успешно') else ShowMessageFmt('Создание каталога провалилось с ошибкой %d',[error]); // Попытка снова создать каталог - она провалится! MkDir('TempDirectory'); error := IOResult; // Сохраняем возвращаемый код if error = 0 then ShowMessage('Каталог снова создался успешно') else ShowMessageFmt('Повторное создание каталога провалилось с ошибкой %d',[error]); // Удаление каталога для очистки RmDir('TempDirectory'); // Включение проверки ошибок I/O {$IOChecks on} end; Лабораторная работа №2. Импортирование текстовых файлов в Excel. Цель работы Научиться импортировать текстовые файлы в среду Excel для последующей обработки данных. ^ Импортировать с диска в Excel текстовый файл, созданный в Лабораторной работе 1. Результаты представить: 1) в виде таблицы, 2) в виде графика. ^ Отчет по лабораторной работе должен содержать номер, название, цель лабораторной работы, задание на лабораторную работу, распечатки результатов выполнения лабораторной работы. ^ В Excel можно импортировать данные, полученные либо в результате эксперимента, либо при расчётах на языках программирования. Содержание файла должно представлять собой столбцы чисел, разделённые между собой либо пробелами, либо запятыми, либо символами табуляции. Для внедрения тестового файла в Excel нужно выполнить следующие действия: ^ Из меню Данные выберите Внешние данные и затем Импорт текстового файла, укажите желаемый файл. В появившемся диалоговом окне (Рис. 1) укажите формат данных С разделителями и нажмите Далее. Шаг 2. Выберите из предлагаемых символов-разделителей (Рис.2) Пробел и нажмите Далее. Шаг 3. В каждом столбце (Рис.3) установите Формат данных столбца – Текстовый и нажмите Готово. Шаг 4. Выберите, куда нужно поместить данные – На имеющийся лист с указанием адреса левой верхней ячейки, либо На новый лист. (Рис. 4) Шаг 5. Выделите появившиеся столбцы чисел и замените десятичную точку на запятую (Рис. 5). Теперь можно приступать к действиям с полученными данными стандартными средствами Excel ![]() Рис.1 ![]() Рис. 2 ![]() Рис.3 ![]() Рис.4 ![]() Рис. 5 Лабораторная работа №3. Работа с текстовыми (ASCII) файлами в пакете MATHCAD Цель работы
Постановка задачи
Содержание отчета Отчет по выполненной лабораторной работе или практическому занятию должен содержать: 1. Фамилию и инициалы студента. 2. Номер учебной группы. 3. Дату выполнения работы. 4. Название работы и формулировку задания.. 5. Распечатку созданного документа. Отчет о выполненной работе должен быть представлен индивидуально каждым студентом перед выполнением следующей лабораторной работы или практического занятия. ^ MathCad можно использовать для обработки данных, сохранённых в виде файла. Это могут быть текстовые файлы, файлы изображений и звуковые файлы. Список основных функций для работы с файлами приведен в Приложении2. У всех перечисленных функций в качестве аргумента служит полное имя файла (с указанием диска и пути), заключенное в двойные кавычки. Если диск и путь не указаны, то работа с файлом производится из текущей директории. Замечание. Ни в имени файла, ни в названиях промежуточных директорий не должно содержаться русских букв. В MathCad можно импортировать данные, полученные либо в результате эксперимента, либо при расчётах на языках программирования. Содержание файла должно представлять собой столбцы чисел, разделённые между собой либо пробелами, либо запятыми, либо символами табуляции. В качестве десятичного разделителя обязательно должна использоваться точка. Числа со степенью должны быть записаны в инженерном формате (например, 1.657Е-02). Для считывания данных из текстового файла используется функция READPRN(“filename”), значение которой надо присвоить матрице. При помощи этой функции можно импортировать данные не только из файлов с расширением prn, но и из файлов любых других форматов, использующих кодировку ASCII: dat, txt и др. Файл может даже вообще не иметь расширения. Замечание. Если считываемый файл имеет расширение, то его указывать обязательно. Пример: Импортирование текстового файла res5.dat с диска: ![]() Рис. 6 ![]() Для записи данных в текстовый файл используется функция WRITEPRN(“filename”), которой надо присвоить значение матрицы. При помощи этой функции можно записывать данные не только в файлы с расширением prn, но и в файлы любых других форматов, использующих кодировку ASCII: dat, txt и др. Файл может даже вообще не иметь расширения. Замечание. Если при записи не указать расширение, то на диске будет создан файл с расширением prn. По умолчанию в экспортированных данных будет 4 десятичных знака, а ширина столбцов будет равна 8 символам. Для увеличения точности надо изменить системную переменную PRNPRECISION либо в диалоговом окне Math – Options – Built-in Variables (см. Рис. 7), либо непосредственно в документе MathCad. Наибольшее значение величины PRNPRECISION равно 16. ![]() Рис. 7 За ширину столбцов отвечает системная переменная PRNCOLWIDTH. Величина ширины столбца в MathCad не лимитируется. Пример: Запись данных в текстовый файл при стандартных настройках: ![]() В результате на диске ^ : появится файл sin.txt (см. Рис. 8) ![]() Рис. 8 Пример: Запись данных в текстовый файл с максимальной точностью: ![]() ![]() Рис. 9 Лабораторная работа №4. Работа с BMP файлами в оттенках серого в пакетЕ MATHCAD Цель работы
Постановка задачи
Содержание отчета Отчет по выполненной лабораторной работе или практическому занятию должен содержать: 1. Фамилию и инициалы студента. 2. Номер учебной группы. 3. Дату выполнения работы. 4. Название работы и формулировку задания.. 5. Распечатку созданного документа. Отчет о выполненной работе должен быть представлен индивидуально каждым студентом перед выполнением следующей лабораторной работы или практического занятия. ^ Монохромные (в оттенках серого) изображения в MathCad представляют собой матрицу целых чисел от 0 до 255, каждый элемент которой описывает яркость соответствующего пикселя изображения. 0 соответствует минимальной яркости, т.е. черному цвету, 255 – максимальной, т.е. белому цвету, а все промежуточные значения отвечают за градации серого. Считать изображение в матрицу можно при помощи функции READBMP(“filename”). Для восстановления изображения по матрице в документе MathCad надо нажать Insert – Picture или комбинацию клавиш Ctrl T и в появившийся местозаполнитель ввести имя матрицы. Пример. ![]() Рис. 10 На Рис. 10 представлена лишь небольшая часть матрицы и восстановленное изображение. Всего в изображении содержится rows(A) cols(A) = 22401 пикселей. С помощью матричной арифметики можно производить обработку изображения – вырезать фрагменты (submatrix), поворачивать на 90, увеличивать или уменьшать яркость, изменять размеры картинки и др. Пример. Повернуть изображение на 90 влево. ![]() Рис. 11 Обработанное изображение можно сохранить на диск с помощью функции WRITEBMP(“filename”). Лабораторная работа №5. Работа с цветными изображениями в пакете MATHCAD Цель работы
Постановка задачи
Результат преобразования визуализировать в документе MathCad и сохранить на диск в виде bmp файла. Результат просмотреть графическим редактором. Содержание отчета Отчет по выполненной лабораторной работе или практическому занятию должен содержать: 1. Фамилию и инициалы студента. 2. Номер учебной группы. 3. Дату выполнения работы. 4. Название работы и формулировку задания. 5. Распечатку созданного документа. Отчет о выполненной работе должен быть представлен индивидуально каждым студентом перед выполнением следующей лабораторной работы или практического занятия. ^ Цветные изображения (в модели RGB) размером mn представляют собой матрицу целых чисел от 0 до 255 размерности m3n. Первые n столбцов описывают интенсивность красной компоненты изображения, а вторая и третья последовательности отвечают за интенсивность зелёной и синей компонент. Для визуализации цветного изображения необходимо выделить каждый цветовой канал в отдельную матрицу и затем в местозаполнителе шаблона вставки рисунка через запятую перечислить их имена. Считать изображение в матрицу можно при помощи функции READRGB(“filename”). Пример. Считывание и визуализация цветного изображения. Создать подматрицы цветовых составляющих изображения можно и по отдельности при помощи следующих функций: READ_RED(“filename”) – извлечение красного канала цветного изображения, READ_GREEN(“filename”) – извлечение зелёного канала цветного изображения, READ_BLUE(“filename”) – извлечение синего канала цветного изображения. Обработку можно производить как над отдельными подматрицами каналов, так и над матрицей всего цветного изображения. После объединения подматриц каналов в один массив обработанное изображение можно сохранить на диск с помощью функции WRITERGB(“filename”) ![]() Рис.12 Приложение 1 ^ 1. Варианты заданий для работы с текстовыми файлами. 1. ![]() ![]() ![]() ![]() 2. ![]() ![]() ![]() 3. ![]() ![]() ![]() ![]() 4. ![]() ![]() ![]() 5. ![]() ![]() ![]() 6. ![]() ![]() ![]() 7. ![]() ![]() ![]() 8. ![]() ![]() ![]() 9. ![]() ![]() ![]() 10. ![]() ![]() ![]() 11. ![]() ![]() ![]() 12. ![]() ![]() ![]() 13. ![]() ![]() ![]() 14. ![]() ![]() ![]() 15. ![]() ![]() ![]() 16. ![]() ![]() ![]() 17. ![]() ![]() ![]() 18. ![]() ![]() ![]() 19. ![]() ![]() ![]() 20. ![]() ![]() ![]() 21. ![]() ![]() ![]() 22. ![]() ![]() ![]() 22. ![]() ![]() ![]() 23. ![]() ![]() ![]() 24. ![]() ![]() ![]() 25. ![]() ![]() ![]() ^ 1. 2. 3. 4. ![]() ![]() ![]() ![]() 5. 6. 7. 8. ![]() ![]() ![]() ![]() 9. 10. 11. 12. ![]() ![]() ![]() ![]() 13. 14 15. 16. ![]() ![]() ![]() ![]() 17. 18. 19. 20. ![]() ![]() ![]() ![]() 21. 22 23. 24. ![]() ![]() ![]() ![]() Приложение 2 |
![]() | Отчет по лабораторной работе 6 Контрольные вопросы 6 Целью лабораторной работы является ознакомление с методами работы с динамическими элементами с использованием структур | ![]() | Отчет по лабораторной работе №2 «Исследование диодных схем» по дисциплине «Электроника» Подготовиться к лабораторной работе, т е знать и понимать процессы, происходящие в исследуемых схемах |
![]() | Отчет по лабораторной работе №15 по дисциплине "Программирование... Отчет по лабораторной работе №15 по дисциплине "Программирование на языке высокого уровня" | ![]() | Дополнительное задание Отчет по лабораторной работе №16 по дисциплине... Написать и протестировать функцию compress(), которая «сжимает» строку, удаляя из нее все пробелы |
![]() | Отчёт По лабораторной работе м-04 «Изучение законов равноускоренного движения» Цель работы: Изучение динамики поступательного движения связанной системы тел с учётом силы трения: оценка силы трения как источника... | ![]() | Отчет по лабораторной работе №4 по дисциплине «Экономические аспекты проектной деятельности» Цель работы: познакомиться с методами расчета срока окупаемости программного средства и таких показателей как доходность и рентабельность... |
![]() | Отчет по лабораторной работе №1 по дисциплине «Экономические аспекты проектной деятельности» Цель работы: научится рассчитывать затраты на проектирование программного продукта | ![]() | Отчет по лабораторной работе №1 по дисциплине «Экономические аспекты проектной деятельности» Цель работы: познакомиться с методикой расчета затрат на проектирование программного продукта |
![]() | Отчет по лабораторной работе №1 по дисциплине «Экономические аспекты проектной деятельности» Цель работы: познакомиться с методикой расчета затрат на проектирование программного продукта | ![]() | Отчет по лабораторной работе №1 По дисциплине «Название дисциплины» |