ПРОГРАММИРОВАНИЕ/ ЯЗЫКИ ПРОГРАММИРОВАНИЯ Лекция 3 Работа с файлами (весенний семестр 2012 г.) Доцент Кафедры вычислительных систем, к.т.н. Поляков Артем.

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



Advertisements
Похожие презентации
Файловый ввод-вывод Преподаватель: Доцент Кафедры ВС, к.т.н. Поляков Артем Юрьевич © Кафедра вычислительных систем ФГОБУ ВПО «СибГУТИ» ФГОБУ ВПО "СибГУТИ"
Advertisements

ПРОГРАММИРОВАНИЕ/ ЯЗЫКИ ПРОГРАММИРОВАНИЯ Лекция 4 Работа с бинарными файлами (весенний семестр 2012 г.) Доцент Кафедры вычислительных систем, к.т.н. Поляков.
ПРОГРАММИРОВАНИЕ/ ЯЗЫКИ ПРОГРАММИРОВАНИЯ Лекция 5 Структуры данных (весенний семестр 2012 г.) Доцент Кафедры вычислительных систем, к.т.н. Поляков Артем.
Работа с файлами FILE НГТУ ИРИТ кафедра ИСУ Ольга Пронина.
Потоки (файлы) Функции и типы для работы с потоками в стиле С описаны в модуле stdio.h. В отличие от Паскаля в С с потоком не связан тип данных. Поток.
ПРОГРАММИРОВАНИЕ/ ЯЗЫКИ ПРОГРАММИРОВАНИЯ Лекция 1 Процедурный подход к разработке программ (весенний семестр 2012 г.) Доцент Кафедры вычислительных систем,
ПРОГРАММИРОВАНИЕ/ ЯЗЫКИ ПРОГРАММИРОВАНИЯ Лекция 2 Время жизни и области видимости программных объектов (весенний семестр 2012 г.) Доцент Кафедры вычислительных.
Лабораторная работа 7. Работа с динамической памятью, строками и файлами.
Работа с файлами. Операции с файлами Для того чтобы можно было читать из файла или писать в файл, он должен быть предварительно открыт с помощью библиотечной.
ФГОБУ ВПО "СибГУТИ" Кафедра вычислительных систем Лабораторная работа 2 Преподаватель: Доцент Кафедры ВС, к.т.н. Поляков Артем Юрьевич © Кафедра вычислительных.
Лекция 11 Файлы. Точного определения файла не существует. Файлом может быть: Объект файловой системы (файлы, папки и т.д.) Устройство ввода/вывода (клавиатура,
Время жизни и области видимости программных объектов Преподаватель: Доцент Кафедры ВС, к.т.н. Поляков Артем Юрьевич © Кафедра вычислительных систем ФГОБУ.
Файловый тип данных Файл – это область памяти на внешнем носителе, в которой хранится некоторая информация. В языке Паскаль файл представляет собой последовательность.
СИСТЕМНЫЕ ВЫЗОВЫ ВВОДА И ВЫВОДА Системные вызовы и библиотеки Unix SVR4.
1 Программирование на языке Си++. 2 Модуль 4. ПЕРЕГРУЗКА ОПЕРАЦИЙ Методы преобразования. Классы потоков Си++ Операции замещения и вставки Ввод/вывод в.
Множества значений или переменных с одним общим именем называются структурированными типами. По способу организации и типу компонентов выделяют: 1. Массивы.
Инструкции C++ Условная инструкция Формат: if (условие) оператор; else оператор; Пример: if (i!=0) { if (j) j++; if(k) k++; else if(p) k--; } else i--;
ФГОБУ ВПО "СибГУТИ" Кафедра вычислительных систем Асимптотический анализ Преподаватель: Доцент Кафедры ВС, к.т.н. Поляков Артем Юрьевич © Кафедра вычислительных.
Файловый тип данных Turbo Pascal Операции для работы с файлами 11 класс.
ФГОБУ ВПО "СибГУТИ" Кафедра вычислительных систем Алгоритмы поиска Преподаватель: Доцент Кафедры ВС, к.т.н. Поляков Артем Юрьевич © Кафедра вычислительных.
Транксрипт:

ПРОГРАММИРОВАНИЕ/ ЯЗЫКИ ПРОГРАММИРОВАНИЯ Лекция 3 Работа с файлами (весенний семестр 2012 г.) Доцент Кафедры вычислительных систем, к.т.н. Поляков Артем Юрьевич © Кафедра вычислительных систем ГОУ ВПО «СибГУТИ»

Кардинальные числа типов данных 2 © Кафедра вычислительных систем ГОУ ВПО «СибГУТИ» Общим свойством структур данных, изученных к настоящему моменту: 1) скалярных переменных; 2) массивов; 3) структур; является то, что их кардинальное число (количество элементов) конечно. Представление таких структур в памяти компьютера является достаточно простым. Большинство усложненных структур : 1) последовательности; 2) деревья; 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 © Кафедра вычислительных систем ГОУ ВПО «СибГУТИ» Последовательный файл или просто файл является примером последовательности, для доступа к элементам которой используется строго ограниченный набор операций. Обозначения, введенные на предыдущем слайде для последовательностей не предполагают их реализацию в явном виде на вычислительной машине. На практике при обработке последовательностей предполагается использование тщательно подобранных операций, обеспечивающих эффективность на выбранном запоминающем устройстве.

Элементарные операции 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 © Кафедра вычислительных систем ГОУ ВПО «СибГУТИ» #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 © Кафедра вычислительных систем ГОУ ВПО «СибГУТИ» Код программыПамять программы Память ОС fd1 fd2 file1 file2 ->file1->file2 buf Файловая система

Пример использования низкоуровневого ввода-вывода 8 © Кафедра вычислительных систем ГОУ ВПО «СибГУТИ» Код программы Память ОС ->file1 Файловая система

Соотношение элементарных операций и функций низкоуровневого ввода-вывода 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 © Кафедра вычислительных систем ГОУ ВПО «СибГУТИ» #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 © Кафедра вычислительных систем ГОУ ВПО «СибГУТИ» Код программы Станд. библиотека GLibC Ядро ОС FILE file1 file2 ->file2 Файловая система Программа s2s1 fd1 fd2 ->file1

Пример использования низкоуровневого ввода-вывода 12 © Кафедра вычислительных систем ГОУ ВПО «СибГУТИ» Код программы Файловая система file1

Литература 13 © Кафедра вычислительных систем ГОУ ВПО «СибГУТИ» 1.Подбельский В.В, Фомин С.С. Программирование на языке Си: Учеб. пособие. - 2-е доп. изд. - М.: Финансы и статистика, с. 2.Вирт Н. Алгоритмы и структуры данных: Пер. с англ. - М.: Мир, с., ил.