Міністерство освіти і науки, молоді та спорту України
Сумський державний університет
Кафедра комп`ютерних наук
Курсова робота
з предмету «Алгоритмічні мови»
Виконала:
студентка групи ІН-91
Сохань В.
Перевірила:
Скаковська А.М.
Суми-2011
Зміст
1. Постановка задачі.
2. Пояснювальна записка.
3. Код програми.
4. Результат роботи програми.
5. Висновки.
6. Список література.
Постановка задачі
Активна потужність, яка розсіюється в діелектрику, визначається виразом:
Ра= u2 · 2π · ƒ · C · tgδ,
де:
u – діюче значення змінної напруги;
ƒ – частота змінного струму;
C – ємність конденсатора;
tgδ – тангенс кута діелектричних втрат;
Ра – активна потужність.
Описати абстрактний клас «Об`єкт_обчислення» з елементом даних «Обчислюваний_параметр».
Передбачити чисті віртуальні функції:
1) Введення даних із файлу;
2) Розрахунок обчислюваного параметру;
3) Виведення в файл результату та вхідних даних.
Описати клас «Діелектрик», похідний від абстрактного класу. В ньому добавити елементи даних: u, ƒ, C, tgδ.
Крім віртуальних функцій передбачити перевантажені операції присвоєння, порівняння(==, !=, <, <=, >, >=), а також конструктори: пустий, з ініціалізацією і копіювання.
Привести приклад програми, в якій застосовуються усі конструктор, члени-функції і перевантажені оператори.
Порядок значень параметрів:
u = 1000 ÷ 1500 В(вольт),
ƒ = 1000 ÷ 10000 Гц,
C = (1000 ÷ 4000) · 10-12 Ф,
tgδ = 1·10-3 ÷ 8·10-3.
Пояснювальна записка
#include <iostream.h> |
Заголовочний файл бібліотеки, що підтримує потоковий ввод/вивід. |
#include <math.h> |
Заголовочний файл бібліотеки, розроблений для виконання простих математичних операцій, використання базових математичних функцій. |
#include <conio.h> |
Заголовочний файл,що об`являє декілька бібліотечних функцій для роботи з «консольним вводом/виводом» програми(clrscr(); getch();). |
#include <fstream.h> |
Заголовочний файл, необхідний для файлового зчитування/занесення даних. |
#include <stdlib.h> |
Заголовний файл стандартної бібліотеки мови Сі, який містить в собі функції, що займаються виділенням пам'яті, контроль процесу виконання програми, перетворення типів та інші. |
class Obect_obchisl { … }: |
Об`явлення класу – різновид абстрактного типу даних в об'єктно-орієнтованому програмуванні (ООП), що характеризується способом своєї побудови(елементи даних, методи). |
protected: |
Мітка доступу, що дає доступ власним методам класу та методам похідних класів. |
double obchisl_parametr; |
Елемент даних класу «Obect_obchisl» з типом даних double, що може приймати значення в діапазоні [1.7E-308; 1.7E+308]. |
public: |
Мітка доступу, що дає доступ всім методам програми. |
virtual void vvod(char *name)=0; virtual double rozrahunok()=0; virtual void vivod(char *name)=0; |
Чисті віртуальні функції з параметром – вказівник на ім`я файлу для зчитування/занесення даних. Функції з типом повертаємого значення void-нічого не повертають, double-повертають значення в діапазоні [1.7E-308; 1.7E+308]. Ключове слово inline є модифікатором визначення функції, що наказує компілятору поміщати розширення тіла функції скрізь, де відбувається звернення до неї, замість того, щоб генерувати код виклику. |
class Dielectric : public Obect_obchisl |
Клас «Dielectric» є похідним класом від базового класу «Obect_obchisl». |
private: |
Мітка доступу, що дає доступ тільки власним методам класу. |
Dielectric() {} |
Пустий конструктор класу «Dielectric». |
Dielectric(double uu, double ff, double cc, double tgg):u(uu),f(ff),c(cc),tg(tgg) {} |
Конструктор з ініціалізацією списком класу «Dielectric». |
Dielectric(const Dielectric &x) { u=x.u; f=x.f; c=x.c; tg=x.tg; } |
Конструктор копіювання сприймає як аргумент просте посилання на об'єкт (тип_класу &). А посилання передається всякий раз, коли новий об'єкт ініціалізується значеннями вже існуючого. |
ifstream ifs(name); |
Створення файлової змінної з параметром «name» - ім`я файлу для зчитування; відкриття файлу. |
if (!ifs) {cout << "Error" << name << endl; exit(1); } |
Оператор if здійснює умовне розгалуження програми, перевіряючи істинність висловлювання – якщо файл не відкрився: виведення повідомлення про помилку та негайне завершення процесу. |
ifs >> u >> znach2; |
Зчитування з файлового потоку значень: в u заноситься чисельник дробу, в znach2 заноситься знаменник дробу (Пр.: u = 1000 ÷ 1500 В(вольт) u=1000 znach2=1500). |
ifs.close(); |
Закриття файлового потоку для зчитування. |
virtual double rozrahunok() { obchisl_parametr=(u*u*2*M_PI*f*c*tg); return obchisl_parametr; } |
Визначення віртуальної функції. Використання математичної функції M_PI з бібліотеки math.h |
ofstream ofs(name); |
Відкриття файлового потоку для занесення даних. |
ofs << "obchisl_parametr: Pa=" << obchisl_parametr << endl; |
Занесення до файлу обчислюваного параметру. |
ofs.close(); |
Закриття файлового потоку. |
Dielectric &operator=(const Dielectric &x) {u = x.u; f = x.f; c = x.c; tg = x.tg; return *this; } |
Перевантажений оператор присвоєння. В якості аргумента завжди передається значення правого операнда. Операція присвоєння для ініціалізації об’єкту елементами даних іншого об’єкта, що передається в якості параметру. |
int operator<(Dielectric &x) {if (obchisl_parametr<x.obchisl_parametr) return 1; else return 0; } |
Перевантажена операція « < ». Функція повертає 1, якщо даний об’єкт менше об’єкту, що передається в якості параметру, та 0, якщо навпаки. |
int operator==(Dielectric &x) {if obchisl_parametr==x.obchisl_parametr) return 1; else return 0; } |
Перевантажена операція « <= =». Функція повертає 1, якщо об`єкти рівні та 0, якщо не рівні. |
friend double get_obchisl_parametr(Dielectric &x); |
Дружня функція – це абсолютно звичайна функція, яка відрізняється лише своїм правом на використання приватних імен членів класу. |
void main() |
Головна функція програми, котра нічого неповертає. |
Dielectric x; |
Створення об’єкта класу «Dielectric». |
Obect_obchisl &p1=x; |
створення посилання типу «Obect_obchisl» на об’єкти похідного класу «Dielectric». |
p1.vvod("input.txt"); |
Виклик віртуальної функції через посилання з параметром – файл, в якому знаходяться вхідні дані |
if (x>=y) |
В операторі if виконується перевантажений оператор «>=» для об’єктів класу «Dielectric». |
w=x; |
Використання перевантаженого оператора присвоювання. |
clrscr(); |
Функція бібліотеки conio.h, котра очищує екран. |
getch(); |
Функція бібліотеки conio.h, котра залишає екран з результатами програми. |
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.