- •(Мова програмування Сі) Практична робота № 1 "Прості типи даних. Базові конструкції мови с"
- •Короткі теоретичні відомості
- •Практична робота № 2 "Цикли та розгалуження. Функції та їх застосування"
- •Короткі теоретичні відомості оператори розгалуження
- •If (умова) оператор1;
- •For (вираз_1; вираз_2; вираз_3 ) оператор;
- •Практична робота № 3 "Одновимірні та багатовимірні масиви, робота з текстовими рядками"
- •Короткі теоретичні відомості
- •Практична робота № 4 "Структури та їх використання. Масиви структур. Використання динамічної пам’яті"
- •Короткі теоретичні відомості Структури
- •Рядки, як одновимірні масиви символів
- •Практична робота № 5 "Робота з файлами. Обробка текстової інформації"
- •Короткі теоретичні відомості
- •Практична робота № 1 "Вступ у класи та об’єкти. Елементи об'єктного підходу: модульність та обмеження доступу"
- •Короткі теоретичні відомості Анатомія класу
- •Рівні доступу до членів класу
- •Практична робота № 2
- •Короткі теоретичні відомості
- •Return 0;
- •Char st[80];
- •Int main() {int n; double c;
- •Switch (ab[I].Gender) {
- •Switch (ab[I].Gender) {
- •Подбельский в. В., Фомин с. С. Программирование на языке Си: Учеб. Пособие. –м.:Финансы и статистика, 1998. –600с.
Практична робота № 2
“Класова ієрархія та механізм успадкування. Віртуальність та поліморфізм"
Мета роботи: навчитися створювати ієрархії класів та використовувати віртуальність і
поліморфізм .
Завдання: Створити клас для зберігання бази даних, вказаної у варіанті, із вказаними
полями. Утворити похідний клас, залучивши до нього як мінімум два додаткових поля таким
чином, щоб клас набув більшої спеціалізованості. Для другого класу використати конструктор,
аби він містив усі аргументи, необхідні для ініціалізації об’єкту похідного класу. Створіть
необхідні функції, що дозволяють виводити інформацію на екран та можливість додавати та
знищувати записи.
Короткі теоретичні відомості
Віртуальний метод або віртуальна функція — метод об'єкта в об'єктно-орієнтованому програмуванні, різний для базового класу і класу нащадка.
Концепція віртуальної функції вирішує наступну проблему:
У ООП, якщо клас-нащадок наслідується від базового класу, об'єкт екземпляр класу-нащадку може використовуватись або як екземпляр батьківського класу (бути приведеним до батьківського класу), або як екземпляр класу-нащадка. Якщо у класі-нащадку є функції, що перекривають (мають таку ж сигнатуру) функції із батьківського класу, то поведінка при виклику таких методів (при використанні даного об'єкта як екземпляра батьківського класу) є невизначеною.
Відмінність між віртуальністю і невіртуальністю функцій вирішує цю невизначеність. Якщо функція описана як віртуальна у базовому класі, тоді буде викликана функція із класу нащадка (якщо така існує). Якщо вона не віртуальна, тоді — із батьківського класу.
Поліморфі́зм — концепція в програмуванні, відповідно до якої використовується спільний інтерфейс для обробки даних різних спеціалізованих типів.
На противагу поліморфізму, концепція мономорфізму вимагає однозначного зіставлення.
В контексті об'єктно-орієнтованого програмування, найпоширенішим різновидом поліморфізму є здатність екземплярів підкласу грати роль об'єктів батьківського класу, завдяки чому екземпляри підкласу можна використовувати там, де використовуються екземпляри батьківського класу.[1]
Прикладом поліморфізму в більшості мов програмування є бінарний оператор +, який може мати своїми аргументами дані різного типу: цілі числа, числа з плаваючою комою, комплексні числа та навіть рядки:
1 + 2 - операнди цілого типу, результат цілого типу.
1.2 + 1.0e3 - операнди дійсних типів, результат дійсного типу
"Андрій" + "Ольга" - операнди рядки, результат - конкатенований рядок
Поліформізм реалізується в багатьох мовах програмування за домогою перевантаження функцій.
Предметна область БД Поля бази даних
„перелік товарів” Назва товару, вага, ціна, кількість.
Лістинг програми 1: див. додаток 6А
Лістинг програми 2: див. додаток 6В
Додаток А
Блок-схема 1
Лістинг 1А
//---------------------------------------------------------------------------
#pragma hdrstop
#include <iostream.h>
//---------------------------------------------------------------------------
#pragma argsused
int main()
{
int a,count = 0;
cout<<"Type your numeric : ";
cin>>a;
for (int i = 1; i <=a ; i++)
{
int z = a%i;
if (z==0) {count++;}
}
if (count < 3) cout<<"\nNumeric "<<a<<" is simple.\n";
else cout<<"\nNumeric "<<a<<" is not simple.\n";
system("pause");
return 0;
}
//---------------------------------------------------------------------------
Додаток В
Блок-схема 2
Лістинг 2А
//---------------------------------------------------------------------------
#pragma hdrstop
#include <iostream.h>
//---------------------------------------------------------------------------
#pragma argsused
int main()
{
double a,b,c,xp,xk,h,f;
int x;
cout<<"Type <a> : ";
cin>>a;
cout<<"\nType <b> : ";
cin>>b;
cout<<"\nType <c> : ";
cin>>c;
cout<<"\nType <X start> : ";
cin>>xp;
cout<<"\nType <X end> : ";
cin>>xk;
cout<<"\nType step <H> : ";
cin>>h;
cout<<"\n\n__________________________________\n";
for (x = xp; x <= xk; x+=h) {
if ((x + c < 0)&&(a!=0)) f = -a*pow(x,3.0) - b;
else if ((x + c > 0)&&(a==0)) f = (x-a)/(x-c);
else f = x/c + c/x;
if (((int)a%(int)b)|((int)a%(int)c)==0)
f=(int)f; else f=f;
cout<<"| x = "<<x<<" | F(x) = "<<f<<" |\n__________________________________\n";
}
system("pause");
return 0;
}
//---------------------------------------------------------------------------
Додаток С
Лістинг 3А
//---------------------------------------------------------------------------
#pragma hdrstop
#include <iostream.h>
#include <tchar.h>
#include <algorithm>
//---------------------------------------------------------------------------
#pragma argsused
int f_1 (double *a, unsigned int N, double C)
{
double buf=0.0, dob=1.0, min=a[0];
int k=0;
for (int i = 0; i < N; i++) {
if (a[i]>C) {k++;}
}
cout<<"\nThere are "<<k<<" element(s) bigger then "<<C<<" .\n";
int q=0;
for (int i = 0; i < N; i++){
if (a[i]<min) {min=a[i]; q = i;}
}
for (int i = q+1; i < N; i++) {
dob = dob*a[i];
}
cout<<"\nThe product of elements wich go after <"<<min<<"> = "<<dob<<" .\n";
sort(a,a+N);
cout<<"\nOrdered array : \n";
for (int i = 0; i < N; i++){cout<<a[i]<<" ";}
