Министерство образования Республики Беларусь
Белорусский национальный технический университет
Международный институт дистанционного образования
Кафедра: «Информационные системы и технологии»
КУРСОВАЯ РАБОТА
по дисциплине «Объектно-ориентировочное программирование»
тема работы: Разработка алгоритма и программы для вычисления коэффициента оперативной готовности системы.
МИНСК
2010
Содержание
Введение
1. Постановка задачи
2. Схема алгоритма программы
3. Разработка СИ-программы
4. Исходный текст СИ-программы
5. Исходный текст СИ++-программы
6. Результаты вычислений
Заключение
Список использованной литературы
Одной из основных задач электроники является расчет электрических схем, то есть получение детальной количественной информации о процессах, происходящих в этой схеме. Однако рассчитать произвольную схему, состоящую из реальных электронных компонент, практически невозможно. Мешает расчету то обстоятельство, что попросту не существует методик математического описания поведения реальных электронных компонент (например, транзистора) как единого целого. Имеются значения отдельных параметров и экспериментально снятые зависимости, но связать их в единую точную формулу, полностью описывающую поведение компоненты, в большинстве случаев не представляется возможным.
С другой стороны, исключительно простым математическим аппаратом описываются идеализированные базовые элементы электронных схем (например, идеальный резистор). Однако они не существуют в реальном мире. Так, любой резистор имеет множество паразитных параметров: индуктивность, емкость, температурные зависимости и т.п.
Введение понятия эквивалентная схема позволяет «связать» мир реальных компонент и мир их идеальных приближений. Эквивалентная схема представляет собой цепь только из идеальных компонент, которая функционирует примерно также, как и исходная схема. В эквивалентной схеме могут быть отражены, при необходимости, различные паразитные эффекты: утечки, внутренние сопротивления и т.д. Эквивалентная схема может составляться как для одного элемента, так и для сложной цепи.
Для цепи эквивалентные сопротивления между зажимами 1 – 11 (r11), 2 – 21(r22), 2 – 3 (r23) определяются по формулам:
; ; ;Составить программу расчёта и печати значений зависимостей эквивалентных сопротивлений r11, r22, r23 от сопротивлений r4 и r5.
Для расчёта значений зависимостей эквивалентных сопротивлений r11, r22 и r23 от сопротивлений r4 и r5 используем оператор цикла for.
Вычисление значений r11, r22, r23 выполним в виде подпрограмм.
Программа будет содержать следующие переменные:
1. тип int:
i, k – переменные цикла, для хранения значения текущей итерации
2. тип float:
r1, r2, r3, r4[3], r5[3] – для хранения значений сопротивлений.
#include <stdio.h>
#include <conio.h>
float r11(float r1, float r2, float r3, float r4, float r5)
{
float r11_;
r11_ = r1 + (r2 * (r3 + (r4 * r5)/(r4 + r5)))/(r2 + (r3 + (r4 * r5)/(r4 + r5)));
return r11_;
}
float r22(float r2, float r3, float r4, float r5)
{
float r22_;
r22_ = ((r2 + r3) * (r4 * r5)/(r4 + r5))/(r2 + r3 + (r4 * r5)/(r4 + r5));
return r22_;
}
float r23(float r2, float r3, float r4, float r5)
{
float r23_;
r23_ = (r3 * (r2 + (r4 * r5)/(r4 + r5)))/(r3 + (r2 + (r4 * r5)/(r4 + r5)));
return r23_;
}
int main()
{
float r1 = 60, r2 = 180, r3 = 10.5;
float r4[3] = {6.3, 7.5, 8.7};
float r5[3] = {50, 100, 150};
int i, k;
for (i = 0; i < 3; i++)
{
for (k = 0; k < 3; k++)
{
pritnf("Исходные данные: R1=%.3f, R2=%.3f, R3=%.3f, R4=%.3f, R5=%.3f \n", r1, r2, r3, r4[i], r5[k]);
printf("Результаты: R11=%.3f, R22=%.3f, R23=%.3f\n\n", r11(r1,r2,r3,r4[i],r5[k]),r22(r2,r3,r4[i],r5[k]),r23(r2,r3,r4[i],r5[k]));
}
}
printf("Вычисления окончены. Нажмите любую клавишу.");
while(!kbhit());
return 0;
}
5. Исходный текст на языке С++
#include <iostream.h> //Библиотека потокового ввода-вывода
#include <conio.h> //Библиотека консольного ввода-вывода
class resist{
private:
float r1;
float r2;
float r3;
float r4[3];
float r5[3];
public:
resist()
{
r1 = 60;
r2 = 180;
r3 = 10.5;
r4[0] = 6.3;
r4[1] = 7.5;
r4[2] = 8.7;
r5[0] = 50;
r5[1] = 100;
r5[2] = 150;
};
~resist(){};
float r11(int i, int k)
{
float r11_;//Объявляем переменную
r11_ = r1 + (r2 * (r3 + (r4[i] * r5[k])/(r4[i] + r5[k])))/(r2 + (r3 + (r4[i] * r5[k])/(r4[i] + r5[k]))); // Производим расчёт по формуле
return r11_;
};
float r22(int i, int k)
{
float r22_;//Объявляем переменную
r22_ = ((r2 + r3) * (r4[i] * r5[k])/(r4[i] + r5[k]))/(r2 + r3 + (r4[i] * r5[k])/(r4[i] + r5[k])); // Производим расчёт по формуле
return r22_;//Возвращаем результат
};
float r23(int i, int k)
{
float r23_;//Объявляем переменную
r23_ = (r3 * (r2 + (r4[i] * r5[k])/(r4[i] + r5[k])))/(r3 + (r2 + (r4[i] * r5[k])/(r4[i] + r5[k]))); // Производим расчёт по формуле
return r23_;
};
void show(int i, int k)
{
cout << "Исходные данные: R1=" << r1 << ", R2=" << r2 << ", R3=" << r3 << ", R4=" << r4[i] << ", R5=" << r5[k] << endl;
cout << "Результаты: R11=" << r11(i,k) << ", R22=" << r22(i,k) << ", R23=" << r23(i,k) << endl;
}
};
После запуска программы на экране появляются результаты расчёта зависимостей эквивалентных сопротивлений:
Исходные данные: R1=60.000, R2=180.000, R3=10.500, R4=6.300, R5=50.000
Результаты: R11=74.774, R22=5.435, R23=9.938
Исходные данные: R1=60.000, R2=180.000, R3=10.500, R4=6.300, R5=100.000
Результаты: R11=75.053, R22=5.748, R23=9.939
Исходные данные: R1=60.000, R2=180.000, R3=10.500, R4=6.300, R5=150.000
Результаты: R11=75.153, R22=5.860, R23=9.939
Исходные данные: R1=60.000, R2=180.000, R3=10.500, R4=7.500, R5=50.000
Результаты: R11=75.551, R22=6.306, R23=9.940
Исходные данные: R1=60.000, R2=180.000, R3=10.500, R4=7.500, R5=100.000
Результаты: R11=75.930, R22=6.730, R23=9.942
Исходные данные: R1=60.000, R2=180.000, R3=10.500, R4=7.500, R5=150.000
Результаты: R11=76.068, R22=6.885, R23=9.942
Исходные данные: R1=60.000, R2=180.000, R3=10.500, R4=8.700, R5=50.000
Результаты: R11=76.290, R22=7.133, R23=9.943
Исходные данные: R1=60.000, R2=180.000, R3=10.500, R4=8.700, R5=100.000
Результаты: R11=76.779, R22=7.681, R23=9.945
Исходные данные: R1=60.000, R2=180.000, R3=10.500, R4=8.700, R5=150.000
Результаты: R11=76.959, R22=7.883, R23=9.945
Вычисления окончены. Нажмите любую клавишу.
В ходе выполнения курсовой работы были выполнены расчёты эквивалентных сопротивлений для электрической цепи. Эти расчёты крайне важны, так как позволяют вычислить физические параметры реальной электрической цепи посредством преобразования её к эквивалентной, упрощённой, "пригодной" для расчёта.
Две созданные программы на языках программирования Си и С++ идентичны по общему смыслу между собой, различия сводятся к следующим:
1. Подключаемые библиотеки для работы с отображением данных на дисплей компьютера в Си это stdio.h в С++ iostream.h.
2. Использование функций printf в Си и cout в С++ для вывода информации на консоль.
3. Добавление классов в С++.
1. М. Эллис, Б. Строуструп. Справочное руководство по языку C++ с комментариями: Пер. с англ. - Москва: Мир, 1992. 445с.
2. Стенли Б. Липпман. C++ для начинающих: Пер. с англ. 2тт. - Москва: Унитех; Рязань: Гэлион, 1992, 304-345сс.
3. Бруно Бабэ. Просто и ясно о Borland C++: Пер. с англ. - Москва: БИНОМ, 1994. 400с.
4. В.В. Подбельский. Язык C++: Учебное пособие. - Москва: Финансы и статистика, 1995. 560с.
5. Ирэ Пол. Объектно-ориентированное программирование с использованием C++: Пер. с англ. - Киев: НИИПФ ДиаСофт Лтд, 1995. 480с.
6. Т. Фейсон. Объектно-ориентированное программирование на Borland C++ 4.5: Пер. с англ. - Киев: Диалектика, 1996. 544с.
7. Т. Сван. Освоение Borland C++ 4.5: Пер. с англ. - Киев: Диалектика, 1996. 544с.
8. Г. Шилдт. Самоучитель C++: Пер. с англ. - Санкт-Петербург: BHV-Санкт-Петербург, 1998. 620с.
9. У. Сэвитч. C++ в примерах: Пер. с англ. - Москва: ЭКОМ, 1997. 736с.
10. К. Джамса. Учимся программировать на языке C++: Пер. с англ. - Москва: Мир, 1997. 320с.
11. В.А. Скляров. Язык C++ и объектно-ориентированное программирование: Справочное издание. - Минск: Вышэйшая школа, 1997. 480с.
12. Х. Дейтел, П. Дейтел. Как программировать на C++: Пер. с англ. - Москва: ЗАО "Издательство БИНОМ", 1998. 1024с.