- •“Затверджую”
- •Пояснювальна записка
- •Критерії оцінювання
- •Практичні роботи до модулю №1 Практична робота 1
- •Виконання
- •Короткі теоретичні відомості
- •2. Розглянемо програму, яка є прикладом використання оператора розгалуження
- •Контрольні запитання:
- •Практична робота 2
- •Виконання
- •1 Короткі теоретичні відомості
- •Розглянемо програми, які є прикладами роботи з масивами
- •Контрольні запитання:
- •Практична робота 3
- •Виконання
- •Короткі теоретичні відомості
- •Розглянемо програму для роботи з типом даних структура
- •4 Контрольні запитання:
- •Практична робота 4
- •Виконання
- •Короткі теоретичні відомості
- •Розглянемо програми, що використовують масиви в якості параметрів
- •4 Контрольні запитання:
- •Практична робота 5
- •Виконання
- •Короткі теоретичні відомості
- •Розглянемо приклад програми, яка використовує файли
- •Короткі теоретичні відомості
- •Розглянемо приклад програми, яка використовує класи
- •4 Контрольні запитання:
Короткі теоретичні відомості
Для того, щоб створити об’єкт, необхідно визначити його загальний вигляд, використовуючи ключове слово class. Клас може містити відкриту і закриту частини. За замовчуванням усі члени класу вважаються закритими. Визначення простого класу має вигляд:
class ім’я_класу{
закриті змінні класу
public:
відкриті змінні класу} список імен об’єктів;
Функції класу називають методами класу, або функціями-членами. Визначення методів складається з заголовку функції та тіла функції. Вони можуть мати типи, що повертаються, і аргументи. При визначенні методу, для ідентифікації класу, до якого цей метод належить, використовується оператор доступу до області визначення (::). В загальному вигляді визначення методу поза класом має наступний вигляд:
тип ім’я_класу :: ім’я_методу (агрументи)
Конструктори – це спеціальні методи класу, які призначені для побудови нових об’єктів та присвоєння елементам даних цих об’єктів початкових значень. Ім’я конструктора збігається з іменем класу. Конструктор не повертає значень. Існує три види конструкторів:
а) конструктор за замовчуванням – використовується для побудови об’єкту, коли явні значення для ініціалізації відсутні;
б) конструктор з параметрами (конструктор перевантаження) – використовується для побудови об’єкту, коли є явні значення для ініціалізації;
в) конструктор копіювання – виконує копіювання вже існуючого об’єкту в новий.
Розглянемо приклад програми, яка використовує класи
Програма використовує клас Точка(Point). В класі визначено: конструктор за замовчуванням, конструктор перевантаження, конструктор копіювання, функції виводу точки на екран та зникнення з екрану. Пам’ять під поля класу виділяється динамічно.
# include <iostream. h>
# include <stdlib. h>
# include <graphics. h>
// описання класу
class Point {
public:
int *x, *y; // поля для зберігання даних об’єкту
Point(); // конструктор за замовчуванням
Point (int x1, int y1); // конструктор з параметрами
Point (const Point &obj); // конструктор копіювання
~Point (){ // деструктор (визначаємо його в класі, тобто метод є вбудованим)
cout<< “ Ми в деструкторі \n”;
delete x;
delete y;}
void hide(); // метод, що приховує точку на екрані
};
void show (Point temp); // вільна функція, яка приймає в якості параметру об’єкт класу
// визначення методів класу
Point ::Point ( ) {
cout<< “Ми в конструкторі за замовчуванням \n”;
x=new int; // виділяємо пам’ять під змінну
if (!x){cout<<”Error memory!\n”; // помилка виділення пам’яті
exit (1);}
*x=250;
y=new int;
if (!y){cout<<”Error memory!\n”;
exit (1);}
*y=450;
cout<<”За замовчуванням координати точки К (”<<*x<<” , ”<<*y<<”)\n”; }
Point ::Point (int x1, int y1 ) {
cout<< “Ми в конструкторі з параметрами \n”;
x=new int; // виділяємо пам’ять під змінну
if (!x){cout<<”Error memory!\n”; // помилка виділення пам’яті
exit (1);}
*x=x1;
y=new int;
if (!y){cout<<”Error memory!\n”;
exit (1);}
*y= *y1;
cout<<”Координати точки К (”<<*x<<” , ”<<*y<<”)\n”; }
Point ::Point (const Point &obj ) {
cout<< “Ми в конструкторі копіювання \n”;
x=new int; // виділяємо пам’ять під змінну
if (!x){cout<<”Error memory!\n”; // помилка виділення пам’яті
exit (1);}
*x= *obj.x;
y=new int;
if (!y){cout<<”Error memory!\n”;
exit (1);}
*y= *obj.y; }
void Point::hide(){
putpixel(*x, *y,getbkcolor()); // виводимо точку кольором фону (таким чином –приховуємо)
}
void show (Point temp) {
setcolor(8); // встановлюємо колір, яким будемо виводити точку
int *s1=temp.x;
int *s2=temp.y;
putpixel(*s1,*s2, getcolor()); } // виводимо точку на екран
// використання об’єктів класу – функція main ()
void main() {
// ініціалізація графічного модулю
int l=DETECT, m;
initgraph(&l, &m, “C:\\BORLANDC\\bgi”);
int temp_x, temp_y;
cout<<”Введіть координату х точки К”;
cin>>temp_x;
cout<<” Введіть координату у точки К”;
cin>>temp_y;
Point a;
Point b(temp_x, temp_y);
show(a);
show (b);
cout<<”\n Точка зникне при натисканні будь-якої клавіші”;
getch();
a.hide();
b.hide();
closegraph(); }
Завдання: написати для заданого варіанту програму для роботи з класом. Створити конструктори: за замовчуванням, перевантаження, копіювання. Програма має забезпечувати елементарні функції-члени для роботи з об’єктами. Скласти демонстраційну програму.
Варіант 1
Написати програму для роботи з класом Дата. Програма має реалізовувати елементарні функції для роботи з даними класу: збільшення/зменшення на день, ввід/вивід значень. Ще додати функцію, яка за зазначеним роком виводить, високосний цей рік чи ні.
Варіант 2
Написати програму для роботи з класом Час. Програма має реалізовувати елементарні функції для роботи з даними класу: збільшення/зменшення на 1 годину, хвилину, секунду, ввід/вивід значень. Ще додати функцію, яка показує, скільки часу працювала програма.
Варіант 3
Написати програму для роботи з класом Рядок. Клас включає наступні поля: масив для зберігання рядка, його довжини, час створення рядка. Програма має реалізовувати елементарні функції для роботи з даними класу: зміна рядка, ввід/вивід рядка, пошук підрядка в рядку. Ще додати функцію, яка показує, скільки раз підрядок входить в рядок.
Варіант 4
Написати програму для роботи з класом Вікно. Клас включає наступні поля: розмір вікна, його положення на екрані, колір. Програма має реалізовувати елементарні функції для роботи з даними класу: відображення вікна, видалення вікна, зміна кольору. Ще додати функцію, яка змінює колір вікна на колір, обраний користувачем. Вікно виводити на екран в вигляді рамки (прямокутника) заданого розміру.
Варіант 5
Написати програму для роботи з класом Квадратна матриця. Клас включає наступні поля: порядок, набір елементів. Програма має реалізовувати елементарні функції для роботи з даними класу: ввід матриці, транспонування матриці, вивід матриці в зручній формі. Ще додати функцію, яка створює симетричну матрицю.
Варіант 6
Написати програму для роботи з класом Правильна дріб. Клас включає наступні поля: чисельник, знаменник. Програма має реалізовувати елементарні функції для роботи з даними класу: додавання, віднімання, множення, ділення, вивід дробу в зручній формі. Ще додати функцію, яка доповнює до одиниці дріб і виводить це значення на екран.
Варіант 7
Написати програму для роботи з класом Комплексні числа. Клас включає наступні поля: дійсну та уявну частини числа. Програма має реалізовувати елементарні функції для роботи з даними класу: додавання, віднімання, множення, ділення, вивід числа у зручній формі . Ще додати функцію, яка множить комплексне число на число, введене користувачем.
Варіант 8
Написати програму для роботи з класом Вектор. Клас включає наступні поля: координати вектора. Програма має реалізовувати елементарні функції для роботи з даними класу: додавання, віднімання, множення, ділення двох векторів. Ще додати функцію, яка множить вектор на скалярне число, введене користувачем.
Варіант 9
Написати програму для роботи з класом Масив. Клас включає наступні поля: масив для зберігання цілих чисел, довжину масиву. Програма має реалізовувати елементарні функції для роботи з даними класу: вивід масиву та упорядкування по убуванню. Ще додати функцію, яка знаходить середнє значення елементів масиву.
Варіант 10
Написати програму для роботи з класом Книга. Клас включає наступні поля: масив для зберігання назви книги, масив для зберігання прізвища автора, вартість книги, кількість сторінок в книзі. Програма має реалізовувати елементарні функції для роботи з даними класу: вивід інформації про книгу, пошук книги за автором. Ще додати функцію, яка змінює вартість зазначеної книги у зв’язку з уцінкою.