Потоки (файлы)
Функции и типы для работы с потоками в стиле С описаны в модуле stdio.h. В отличие от Паскаля в С с потоком не связан тип данных. Поток – это произвольная последовательность байтов. Поток может быть физически связан с файлом или устройством (клавиатурой, монитором, принтером).
Стандартные потоки:
stdin – стандартный поток ввода ;
stdout – стандартный поток вывода ;
stderr – стандартный поток для сообщений об ошибках (всегда монитор).
Объявление файла
Работа с файлом начинается с описания указателя на поток. Формат такого объявления
FILE * имя ;
Структура FILE описана в заголовочном файле stdio.h. В структуре хранятся указатель на буфер, указатель текущей позиции в потоке и т.д.
Открытие и закрытие файла
Открытие файла производится с помощью функции fopen :
FILE* fopen ( const char *name , const char *mode);
Имя файла и режим открытия – строки символов.
Режимы открытия :
r – открыть для чтения;
w – создать для записи;
а – открыть для добавления;
r+ - открыть для чтения и записи;
w+ - создать для чтения и записи;
a+ - открыть для чтения и добавления.
t – текстовый режим (преобразуется конец строки) – по умолчанию.
b – двоичный режим
Пример: FILE * f = fopen (“input.txt”, “rb”);
Если файл не открывается, значение указателя будет нулевым.
Закрытие файла : int fclose(FILE *f);
Возвращает ноль, если операция закрытия была успешной.
Ввод и вывод символов
Запись символов:
int putc ( int c, FILE *f);
Если операция прошла успешно, то возвращается записанный символ, иначе – константа EOF.
Чтение символов:
int getc ( FILE *f);
Если операция прошла успешно, то возвращается символ, иначе – константа EOF.
Ввод и вывод чисел (в двоичном формате)
Запись чисел:
int putw ( int c, FILE *f);
Если операция прошла успешно, то возвращается записанное число, иначе – константа EOF.
Чтение чисел:
int getw ( FILE *f);
Если операция прошла успешно, то возвращается число, иначе – константа EOF.
Ввод и вывод строк
Запись строки:
int fputs ( const char * s, FILE *f);
Символ конца строки не записывается. Если операция прошла успешно, то возвращается неотрицательное число, иначе – константа EOF.
Чтение строки ( не более n символов):
char * fgets (char *s, int n, FILE *f);
Если операция прошла успешно, то возвращается указатель на строку, иначе – константа EOF .
Форматный ввод и вывод
Вывод:
int fprintf(FILE *f, const char * format, …)
Возвращает число записанных символов.
Ввод:
int fscanf(FILE *f, const char * format, …)
Возвращает число введенных переменных.
Блоковый ввод и вывод
Запись блока:
int fwrite (void * buf, int bytes, int n, FILE *f);
Записывает n блоков длины bytes из буфера * buf в файл f . Возвращает число записанных блоков.
Чтение блока:
int fread (void * buf, int bytes, int n, FILE *f);
Читает n блоков длины bytes в буфер * buf из файла f . Возвращает число считанных блоков.
Работа с указателем потока
Получение позиции указателя:
long int ftell(FILE *f);
Установка указателя
int fseek(FILE *f, long offset, int org);
offset- смещение
org – начало отсчета
SEEK_CUR – текущая позиция
SEEK_END – конец файла
SEEK_SET– начало файла
Обработка ошибок
Проверка на конец файла
int feof(FILE* f) – истина, если конец файла
Проверка на ошибки ввода-вывода
int ferror(FILE* f) – истина,
если обнаружена ошибка
Объектно-ориентированное программирование
Объектно-ориентированное программирование (ООП) - основная методология программирования.
Она является продуктом 30 летней практики и включает ряд языков: Simula 67, Smalltalk, Eiffel, Objective C, C++, Object Pascal, Java, C# .
Это стиль программирования, который фиксирует поведение реального мира таким способом, при котором детали его реализации скрыты.
ООП – решение кризиса
ООП является лишь последним звеном в длиной цепи решений, которые были предложены для разрешения "кризиса программного обеспечения".
Кризис программного обеспечения означает, что те задачи, которые мы хотим решить, опережают наши возможности.
Сложные системы реального мира
- Персональный компьютер
- Дерево
- Человек
- Предприятие
- Государство
Признаки сложных систем
- Являются иерархическими и состоят из взаимозависимых подсистем, которые в свою очередь также могут быть разделены на подсистемы и т.д. – до самого низкого уровня.
- Выбор элементарных компонентов произволен и зависит от исследователя.
- Каждая часть системы имеет свою функцию и может рассматриваться независимо от других.
- Системы состоят из немногих типов подсистем, по-разному скомбинированных и организованных.
- Система сложнее, чем совокупность ее частей.
Объекты
В предметной области выделяются объекты – некоторые целостные сущности, обладающие определенным поведением.
Объект
Состояние (атрибуты)
Поведение (методы)
Классы
Классы – множества однотипных объектов с одинаковым поведением и набором атрибутов.
Инкапсуляция
Действие в ООП инициируется посредством передачи сообщений объекту, ответственному за действия. Сообщение содержит запрос на осуществление действия и сопровождается дополнительной информацией (аргументами), необходимой для его выполнения. Если объект принимает сообщение, то на него автоматически возлагается ответственность за выполнение указанного действия. В качестве реакции на сообщение получатель запустит некоторый метод (алгоритм), чтобы удовлетворить принятый запрос.


Потоки (файлы) в С++ (170 KB)

