
- •Лабораторна робота №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
- •Порядок виконання
- •Завдання
- •Теоретичні відомості
- •Контрольні запитання
Приклад виконання завдання 2
Розробити описовий алгоритм, схему алгоритму і написати програму для підрахунку кількості стрічок двійкового файлу.
Дана програма буде складатися з основної функції int main(), та двох функцій для виконання поставленої задачі:
void EnterData(const char*file_name) –призначена для перезапису даних в файлі.
int GetLinesCount(const char*file_name) –призначена для підрахунку кількості рядків бінарного файлу.
Програма буде мати наступний вигляд:
Лістинг програми
#include <stdio.h>
#include <conio.h>
#include <string.h>
void EnterData(const char*file_name);
int GetLinesCount(const char*file_name);
/*
Перезапис всіх даних в файлі та запис нових даних даних
*/
void EnterData(const char*file_name)
{
FILE*f; // file variable
f=fopen(file_name,"wb");// відкриття файлу для запису
if(f)// якщо файл відкритий успішно
{
char str[100];
printf("Please enter data:\n");
do
{
gets(str); // введіть рядок з клавіатури
if(strlen(str)==0) // якщо рядок пустий, то вихід
break;
fprintf(f,"%s\n",str);
}while(1);
fclose(f); // закрити файл і зберегти всі зміни
}
}
int GetLinesCount(const char*file_name)/*підрахунок кількості рядків бінарного файлу*/
{
FILE*f;
f=fopen(file_name,"rb");
if(f)
{
char ch;
int k=1;
while(!feof(f)) //якщо ні, закрити файл
{
fread(&ch,1,1,f);//зчитування char з файлу
if(ch==10) // якщо char введені
k++;
}
fclose(f);
return k;
}
printf("Cannot open file");
return 0;
}
void main()
{
clrscr();
int h;
char file_name[]={"1.txt"};
h=GetLinesCount(file_name);
printf("k=%d",h);
getch();
}
Тестування:
Для перевірки правильності роботи програми безпосередньо введемо до текстового файлу „ 1.txt ” деяку інформацію, наприклад запишемо:
Ukraine
Ne xo4y v armijy
ale pidy
Slyjy Ukraini Видно що файл містить чотири стрічки.
Тоді запустимо програму і бачимо, що в файлі „ 1.txt ” кількість стрічок:
k=4.
Контрольні запитання
Як здійснюється форматне введення/виведення у двійковий файл?
Процес відкриття двійкових файлів.
Процес дозапису даних у двійковий файл.
Як організувати довільний доступ до файлу?
Переваги бінарних файлів.
Як здійснюється перекачування файлу?
Як здійснюється прийом файлу?
Що таке SEEK_SET, SEEK_CUR, SEEK_END?
Процедура читання даних з файлу послідовного доступу.
Введення/виведення рядків.
Лабораторна робота №3
Тема: Розробка програм з використанням найпростіших класів та об’єктів.
Мета: Набуття навиків в розробці найпростіших класів та робота з об’єктами класів.
Порядок виконання роботи
1. Ознайомитися з теоретичними основами та принципами роботи з динамічними масивами.
2. Розробити структуру класу для роботи з динамічними масивами, яка повинна включати не менше 2-х даних-членів класу та 5-х методів класу, з яких обов'язково повинні бути метод-член класу для:
створення масиву;
заповнення масиву;
виводу змісту масиву на екран;
очищення пам'яті.
3. Розробити метод для обробки динамічних масивів, що використовує клас для виконання завдання 1 та головну програму, яка використовує розроблений клас.
4. Розробити структуру класу для роботи з двовимірними масивами, яка повинна включати не менше 3-х даних-членів класу та 5-х методів класу, з яких обов'язково повинні бути метод-член класу для:
створення масиву;
заповнення масиву;
виводу змісту масиву на екран;
очищення пам'яті.
5. Розробити метод-член класу для обробки двовимірного масиву, відповідно до завдання 2 та головну програму, яка використовує розроблений клас.
6. Доповнити клас для роботи з одновимірними динамічними масивами з пункту 2 функцією, яка задана в завданні 3.
7. Розробити 2-3 тести для перевірки вірності роботи даної програми.
8. Оформити звіт до лабораторної роботи.