
- •Лабораторна робота №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
- •Порядок виконання
- •Завдання
- •Теоретичні відомості
- •Контрольні запитання
Читання і запис бінарних файлів
Текстові файли, незважаючи на своє широке поширення, є тільки одним з видів файлів, які можна зберігати на диску. Бінарні файли знайшли більш широке застосування в професійних програмах, тому що :
одна з переваг збереження даних у бінарних форматах – швидкість (тобто немає необхідності перетворювати дані при передачі з диска в пам'ять і навпаки);
інша перевага – пам'ять. Так, наприклад, змінна типу double займає 4 байти, а в текстовій формі набагато більше. Звичайно бінарні файли за розміром менші текстових і в більшості випадків програми обробляють їх швидше, ніж текстові.
Мова С дозволяє досить легко працювати з двійковими файлами. Методи обробки майже такі ж, як і для текстових файлів, і вони працюють як у DOS, так і в Windows, при цьому програми виконують читання і запис наборів байтів.
Відкриття бінарних файлів
Для відкриття двікових файлів необхідно:
визначити файлову змінну File *fp;
безпосереднє відкриття виконується функцією fopen() по всіх режимах якої додається буква b ”rb”, “wb”, “ab”, “r+b”, “w+b”, “a+b”.
Наприклад, оператор fp=fopen(“test.txt”,”r+b”); - відкриває файл для читання і запису в двійковому режимі. При відкритті можливі помилки (тобто програмні переривання), які можна передбачити за допомогою фрагмента програми: File*out;
out=fopen (filename, “wb”);
if(!out)
{
puts(“Саn't create file”);
exit(1);
}
Існує два способи читання і запису бінарних файлів:
послідовний;
прямий (довільний);
Файли з послідовним доступом
Послідовна обробка корисна для швидкого запам'ятовування значень у файлах і для звертання з файловими даними як з потоком байтів (аналогічно запису на магнітну стрічку).
Запис даних у файл з послідовним доступом
Приклад 1. Написати програму запису даних у послідовний файл.
#include <stdio.h>
#include <stdlib.h>
int main()
{
File*outf;
int i;
outf=fopen (“int.dat”, “wb”);
if (!outf)
{
puts(“Can’t create file”);
exit(1);
}
puts(“Zapis into file”);
for (i=0; i<100; i++)
fwrite(&i, sizeof(int),1,outf);
fclose(outf);
return 0;
}
Для запису даних у бінарний файл використовується функція fwrite(), що містить чотири параметри:
Адреса змінної чи масиву змінних, з якого байти копіюються на диск;
Число байтів в одній змінній;
Число записуваних елементів: 1 для одного значення, або інше позитивне ціле число записуємих елементів масиву;
Змінна файлового типу File *, відкритого в двоїчному режимі.
Для запису у відкритий файл на диску масив 100 значень можна скористатися фрагментом програми:
int array[100];
fwrite(&array, sizeof(int),100,outf);
Читання даних з файлу послідовного доступу за допомогою функції fread().
Приклад 1. Написати програму для послідовного читання бінарних значень з файлу int.dat.
#include <stdio.h>
#include <stdlib.h>
int main()
{
File*inpf;
int I, val;
inpf=fopen (“int.dat”,“rb”);
if (!inpf)
{
puts(“Can’t create file”);
exit (1);
}
for(i=0;i<100;i++)
{
fread(&val,sizeof(int),1,inpf);
printf (“%d”,val);
}
return 0;
}
Функція fread() вимагає тих же аргументів, що і функція fwrite(). Перший аргумент функції є адресою приймача, у який ця функція повинна скопіювати байти з диска. Тому розмір цієї змінної достатній для запам'ятовування необхідної кількості байтів.
Для вивантаження всього масиву зі 100 цілочисельних значень з диска у файл можна використовувати фрагмент програми
int array[100];
fread(&array, sizeof(int),1, inpf);
це буде самим швидким способом читання значень з диска в пам'ять.