Написання програми, що знаходить активну потужність, яка розсіюється в діелектрику

Страницы работы

Содержание работы

Міністерство освіти і науки, молоді та спорту України

Сумський державний університет

Кафедра комп`ютерних наук

Курсова робота

з предмету «Алгоритмічні мови»

Виконала:

студентка групи ІН-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, котра залишає екран з результатами програми.

Похожие материалы

Информация о работе