
- •Лабораторна робота №1
- •Порядок виконання роботи
- •Завдання 1
- •Завдання 2
- •Завдання 3
- •Теоретичні відомості Масиви динамічної пам'яті
- •Приклад виконання завдання 1
- •Лістинг програми
- •Приклад виконання завдання 2
- •Лістинг програми
- •Приклад виконання завдання 3
- •Лістинг програми
- •Контрольні запитання
- •Лабораторна робота №2
- •Порядок виконання роботи
- •Завдання 1
- •Завдання 2
- •Теоретичні відомості Читання і запис текстових файлів
- •Читання і запис бінарних файлів
- •Відкриття бінарних файлів
- •Файли з послідовним доступом
- •Запис даних у файл з послідовним доступом
- •Файли з довільним доступом
- •Приклад виконання завдання 1
- •Приклад виконання завдання 2
- •Контрольні запитання
- •Лабораторна робота №3
- •Порядок виконання роботи
- •Завдання 1
- •Завдання 2
- •Завдання 3
- •Теоретичні відомості
- •Обмеження доступу до членів класу
- •Специфікатори доступу
- •Вбудовані функції-члени
- •Приклад виконання завдання 1.
- •Приклад виконання завдання 2.
- •Приклад виконання завдання 3.
- •Контрольні запитання
- •Лабораторна робота №4
- •Порядок виконання роботи
- •Завдання 2
- •Теоретичні відомості Конструктори і деструктори
- •Правила роботи з конструкторами і деструкторами
- •Варіант 10. Розробити описовий алгоритм, схему алгоритму і написати метод для підрахування кількості слів в текстовому файлі.
- •Приклад виконання завдання 2
- •Контрольні запитання
- •Лабораторна робота №5
- •Порядок виконання роботи
- •Завдання 1
- •Завдання 2
- •Теоретичні відомості Принципи спадкування в ооп
- •Оголошення похідних класів
- •Конструктори похідного класу
- •Функції члени похідного класу
- •Заборонені члени класу (Protected)
- •Приклад виконання Завдання 1
- •Контрольні запитання
- •Лабораторна робота №6
- •Порядок виконання роботи
- •Завдання 1
- •Теоретичні відомості Перевантаження операторів
- •Приклад виконання завдання 1
- •Приклад виконання завдання 2
- •Приклад виконання завдання 3
- •Приклад виконання завдання 4
- •Контрольні запитання
- •Лабораторна робота №7
- •Порядок виконання роботи
- •Завдання 1.
- •Завдання 2.
- •Теоретичні відомості
- •Структура наслідування класів
- •Постановка задачі
- •Розробити клас трикутника, чотирикутника, кола, точки
- •Контрольні запитання
- •Лабораторна робота №8
- •Порядок виконання роботи
- •Завдання 1
- •Контрольні запитання
- •Лабораторна робота №9
- •Порядок виконання роботи
- •Завдання 1
- •Теоретичні відомості Множинне спадкування
- •Контрольні запитання
- •Лабораторна робота №10
- •Порядок виконання роботи
- •Завдання 1
- •Теоретичні відомості Шаблони
- •Параметризовані класи
- •Визначені об’єкти-потоки
- •Операції поміщення та вилучення
- •Приклад виконання Завдання з варіанту 2
- •Контрольні запитання.
- •Лабораторна робота №11
- •Порядок виконання
- •Завдання 1
- •Завдання 2
- •Завдання 3 Варіант 1. Задача “Банківське переведення” (дата, час, № рахунку, розмір рахунку).
- •Ітератори
- •Для роботи з вектором необхідно:
- •Приклад роботи з вектором
- •Алгоритми
- •Застосування алгоритмів до вектора
- •Приклад 1 виконання Завдання 1
- •Приклад 2 виконання Завдання 2
- •Приклад 3 виконання завдання №3
- •Контрольні запитання
- •Завдання 1
- •Теоретичні відомості Приклад розробки програми
- •Контрольні запитання
- •Лабораторна робота №13
- •Порядок виконання
- •Завдання 2.
- •Теоретичні відомості
- •Стандартні потоки для базових класів
- •Форматування даних при обмінах з потоками
- •Маніпулятори
- •Приклад розробки програми
- •Контрольні запитання
- •Лабораторна робота №14
- •Порядок виконання
- •Завдання
- •Теоретичні відомості
- •Контрольні запитання
Теоретичні відомості
Зазвичай, під файлом розуміємо іменовану інформацію на зовнішньому носії, наприклад, на жорсткому чи гнучкому магнітному диску. Логічно файл можна представити як кінцеву кількість послідовних байтів, тому такі пристрої, як дисплей, клавіатуру і принтер також можна розглядати як окремі випадки файлів.
За способом доступу файли можна розділити на послідовні - читання і запис у яких виробляються з початку байт за байтом, і файли з довільним доступом, що допускають читання і запис у вказану позицію.
Стандартна бібліотека містить три класи для роботи з файлами:
ifstream - клас вхідних файлових потоків;
ofstream - клас вихідних файлових потоків;
fstream - клас двонаправлених файлових потоків.
Ці класи є похідними від класів istream, ostream і iostream відповідно, тому вони успадковують перевантажені операції «і», прапори форматування, маніпулятори, методи, стан потоків і т. д.
Використання файлів в програмі передбачає наступні операції:
- створення потоку;
- відкриття потоку і зв'язування його з файлом;
- обмін (вводу/виводу);
- знищення потоку;
- закриття файлу.
Кожен клас файлових потоків містить конструктори, за допомогою яких можна створювати об'єкти цих класів різними способами:
- Конструктори без параметрів створюють об'єкт відповідного класу, не пов'язуючи його з файлом:
ifstream();
ofstream();
fstream();
- Конструктори з параметрами створюють об'єкт відповідного класу, відкривають файл з вказаним ім'ям і пов'язують файл з об'єктом:
ifstream (const char * name, int mode = ios:: in);
ofstream (const char * name, int mode = ios:: out | ios:: trunc);
fstream (const char * name, int mode = ios:: in | ios:: out);
Другим параметром конструктора є режим відкриття файлу. Якщо встановлене за замовчуванням значення не влаштовує програміста, можна вказати інше, склавши його з бітових масок, визначених у класі ios:
enum open_mode {
in |
= 0x01 |
/ / Відкрити для читання | |
out |
= 0x02 |
/ / Відкрити для запису | |
ate |
= 0x04 |
/ / Встановити покажчик на кінець файлу | |
арр |
= 0x08 |
/ / Відкрити, щоб додати в кінець | |
trunc |
= 0x10 |
/ / Якщо файл існує, видалити | |
nocreate |
= 0x20 |
/ / Якщо файл не існує, видати помилку | |
noreplace |
= 0x40 |
/ / Якщо файл існує, видати помилку | |
binary |
= 0x80 |
/ / Відкрити у двійковому режимі |
};
У таблиці 10.6 наведено відповідність між бітовими масками класу ios і режимами відкриття файлу, описаними в <stdio.h>.
Відкрити файл у програмі можна з використанням або конструкторів, або методу open, що має такі ж параметри, як і у відповідному конструкторі, наприклад:
ifstream inpf ("input.txt"., ios:: in | ios: mocreate); / / Використання конструктора
if (! inpf) {
cout «" Неможливо відкрити файл для читання ";
return 1;}
ofstream f;
f.open ("output.txt"); // Використання методу open
if (! f) {
cout «" Неможливо відкрити файл для запису ";
return 1;
}
Читання і запис виконуються або за допомогою операцій читання та витягування, аналогічних потоковим класів, або за допомогою методів класів.
Приклад використання методів (програма виводить на екран вміст файлу):
# Include <fstream.h>
int main (){
char text [81]. buf [81];
cout «" Введіть ім'я файлу: ";
cin »text;
ifstream f (text. ios:: in | ios:: nocreate);
if (! f) {
cout «" Помилка відкриття файлу ";
return 1;
}
while (! f.eof ()) {
f.getline (buf. 81);
cout «buf« endl;
{
return 0;
}
Для закриття потоку визначено метод close(),оскільки він неявно виконується деструкторів, явний виклик необхідний тільки тоді, коли потрібно закрити потік раніше кінця його області видимості.