Скачать презентацию
Идет загрузка презентации. Пожалуйста, подождите
Презентация была опубликована 11 лет назад пользователемТарас Селиванцев
1 ПРОГРАММИРОВАНИЕ/ ЯЗЫКИ ПРОГРАММИРОВАНИЯ Лекция 3 Работа с файлами (весенний семестр 2012 г.) Доцент Кафедры вычислительных систем, к.т.н. Поляков Артем Юрьевич © Кафедра вычислительных систем ГОУ ВПО «СибГУТИ»
2 Кардинальные числа типов данных 2 © Кафедра вычислительных систем ГОУ ВПО «СибГУТИ» Общим свойством структур данных, изученных к настоящему моменту: 1) скалярных переменных; 2) массивов; 3) структур; является то, что их кардинальное число (количество элементов) конечно. Представление таких структур в памяти компьютера является достаточно простым. Большинство усложненных структур : 1) последовательности; 2) деревья; 3) графы; характеризуются тем, что их кардинальные числа бесконечны.
3 Последовательность 3 © Кафедра вычислительных систем ГОУ ВПО «СибГУТИ» Последовательность с базовым типом T 0 это либо пустая последовательность, либо конкатенация последовательности (с базовым типом T 0 ) и значения типа T 0. Например, пусть базовый тип – char (символ), тогда: 1) S 1 = - пустая последовательность 2) S 2 = a, b, c = a, b & c = ( a & b) & c = (( &a ) & b) & c, где "&" – операция конкатенации (сцепления, склеивания). Если x = x 1, x 2, …, x n - непустая последовательность, то first(x) = x 1 обозначает ее первый элемент. Если x = x 1, x 2, …, x n - непустая последовательность, то rest(x) = x 2, …, x n обозначает последовательность без ее первой компоненты. Справедливо: x first(x) & rest(x). Кардинальное число последовательности не ограничено.
4 Последовательный файл 4 © Кафедра вычислительных систем ГОУ ВПО «СибГУТИ» Последовательный файл или просто файл является примером последовательности, для доступа к элементам которой используется строго ограниченный набор операций. Обозначения, введенные на предыдущем слайде для последовательностей не предполагают их реализацию в явном виде на вычислительной машине. На практике при обработке последовательностей предполагается использование тщательно подобранных операций, обеспечивающих эффективность на выбранном запоминающем устройстве.
5 Элементарные операции 5 © Кафедра вычислительных систем ГОУ ВПО «СибГУТИ» НаименованиеОписание rewrite(x) построение пустой последовательности x = put(x, c) увеличение последовательности: x = x & c. reset(x) инициализация просмотра: x L =, x R = x get(x,c) переход к следующей компоненте: x L = x L & first(x R ), c = first(x R ), x R = rest(x R )
6 Средства низкоуровневого ввода-вывода языка СИ 6 © Кафедра вычислительных систем ГОУ ВПО «СибГУТИ» #include int open(const char *pathname, int flags); #include int close(int fd); ssize_t read(int fd, void *buf, size_t count); ssize_t write(int fd, const void *buf, size_t count); #include off_t lseek(int fd, off_t offset, int whence); O_RDONLY O_WRONLY O_RDWR
7 Пример использования низкоуровневого ввода-вывода 7 © Кафедра вычислительных систем ГОУ ВПО «СибГУТИ» Код программыПамять программы Память ОС fd1 fd2 file1 file2 ->file1->file2 buf Файловая система
8 Пример использования низкоуровневого ввода-вывода 8 © Кафедра вычислительных систем ГОУ ВПО «СибГУТИ» Код программы Память ОС ->file1 Файловая система
9 Соотношение элементарных операций и функций низкоуровневого ввода-вывода 9 © Кафедра вычислительных систем ГОУ ВПО «СибГУТИ» Элементарная операцияФункция rewrite(x)open(x, O_WRONLY) put(x, c)write(x,buf,1) reset(x) 1. Если файл не открыт open(x, O_RDONLY) 2. Если файл уже открыт lseek(x,0, SEEK_SET) get(x,c)read(x,buf,1);
10 Высокоуровневый интерфейс ввода-вывода языка СИ 10 © Кафедра вычислительных систем ГОУ ВПО «СибГУТИ» #include FILE *fopen(const char *path, const char *mode); int fclose(FILE *fp); int fscanf(FILE *stream, const char *format,...); int fprintf(FILE *stream, const char *format,...); char *fgets(char *s, int size, FILE *stream); size_t fread(void *ptr, size_t size, size_t nmemb, FILE *stream); size_t fwrite(const void *ptr, size_t size, size_t nmemb, FILE *stream); int fseek(FILE *stream, long offset, int whence); long ftell(FILE *stream); void rewind(FILE *stream); Управление связанными программными объектами Чтение/запись данных Позиционирование в потоке
11 Пример использования низкоуровневого ввода-вывода 11 © Кафедра вычислительных систем ГОУ ВПО «СибГУТИ» Код программы Станд. библиотека GLibC Ядро ОС FILE file1 file2 ->file2 Файловая система Программа s2s1 fd1 fd2 ->file1
12 Пример использования низкоуровневого ввода-вывода 12 © Кафедра вычислительных систем ГОУ ВПО «СибГУТИ» Код программы Файловая система file1
13 Литература 13 © Кафедра вычислительных систем ГОУ ВПО «СибГУТИ» 1.Подбельский В.В, Фомин С.С. Программирование на языке Си: Учеб. пособие. - 2-е доп. изд. - М.: Финансы и статистика, с. 2.Вирт Н. Алгоритмы и структуры данных: Пер. с англ. - М.: Мир, с., ил.
Еще похожие презентации в нашем архиве:
© 2024 MyShared Inc.
All rights reserved.