
- •Введение
- •1. Последовательность выполнения курсовой работы
- •1.1. Получение задания
- •1.2. Детальная формулировка задания
- •1.3. Анализ задачи и выбор метода решения
- •1.3.1. Вывод расчетных выражений
- •1.3.2. Проведение расчетов и построение графиков
- •1.3.3. Разработка схемы обобщенного алгоритма
- •1.4. Разработка алгоритмов
- •1.4.1. Разработка схемы алгоритма главной функции
- •1.4.2. Разработка схем алгоритмов вызываемых функций
- •1.5. Разработка программы
- •1.5.1. Выбор имен переменных и составление таблицы идентификаторов
- •1.5.2. Требования к оформлению программы
- •1.5.3. Выполнение контрольных расчетов для проверки правильности работы программы
- •1.6. Отладка и тестирование программы
- •1.6.1. Проверка режима аномального завершения программы.
- •1.6.2. Проверка режима нормального завершения программы
- •2. Оформление пояснительной записки
- •3. Защита курсовой работы
- •П1.4. Задание входного сигнала Uвх(t) в виде графика (варианты с кодами а35 - 39)
- •П3.1. Максимальное или минимальное значение выходного напряжения (для вариантов с кодами в01- 02)
- •П3.6. Длительность переднего фронта импульса tпф
- •П3.7. Длительность заднего фронта импульса tзф
- •П3.8.Часть времени α от промежутка [tкон, tнач],
- •Методические указания к контрольному расчету
- •П5.2. Задание входного сигнала в виде графика
- •П5.3. Задание входного сигнала в виде суммы функций
- •П5.4.Задание передаточной характеристики в виде аналитических выражений
- •П5.5.Задание передаточной характеристики в виде графика
- •П5.6. Варианты вычисляемых характеристик выходного сигнала
- •Пример текста программы курсовой работы Первый файл
- •Второй файл
- •Третий файл
- •Четвертый файл
Второй файл
//funcs.cpp--функции pасчета напpяжений, pасчета хаpактеpистики и отладки
#include <stdio.h>
#include <conio.h>
/*Определение функции расчета массивов значений входного напряжения*/
void design_t_Uinp(int N, float t0, float tN, float tm, float Um, float Uinp[])
{
float t,dt,A,B;
int i;
A = Um / (tm - t0);
B = Um / (tN - tm);
dt = (tN - t0) / N; t = t0;
for (i = 0; i <= N; i++)
{
if (t <= tm)
Uinp[i] = A * (t - t0);
else
Uinp[i] = B * (tN - t);
t += dt;
}
}
//Определение функции расчета массива значений выходного напряжения
void design_Uout(int N, float Uinp1, float Uinp[], float Uout[])
{
int i;
for (i = 0; i <= N; i++)
if (Uinp[i] <= Uinp1)
Uout[i] = 4;
else
Uout[i] = (Uinp[i] - 1) * (Uinp[i] - 1);
}
//Определение функции расчета максимальнго значения выходного сигнала Umax
float design_Umax(int N, float Uout[])
{
int i;
float Umax;
Umax = Uout[0];
for (i = 1; i <= N; i++)
if (Uout[i] > Umax)
Umax = Uout[i];
return Umax;
}
//Опpеделение функции отладочного вывода
void debug_out(int N, char YN, float Umax, float Uinp[], float Uout[])
{
int i;
if (YN == 'y')
{
//Вывод на экран массивов времени, входного и выходного напряжений
printf("\ni Uinp Uout\n");
for (i = 0; i <= N; i++)
printf("%i %.3f %.3f\n", i, Uinp[i], Uout[i]);
//Вывод на экран массивов текущих значений хаpактеpистики и числа отсчетов
printf("Umax=%.3f N=%4i", Umax, N);
getch();
}
}
Третий файл
//outgraph.cpp--Функции вывода графиков на экран
#include <stdlib.h>;
#include <conio.h>
#include <stdio.h>
#include <graphics.h>
#include "def_func.h"
void RunGraphics(float t0, float tN, float tm, float Um, float Uinp1,
float Uinp[], float Uout[])
{
const NG = 500;
MyInitGraph();
design_t_Uinp(NG, t0, tN, tm, Um, Uinp);
MyGraphic(Uinp, NG, Left);
design_Uout(NG, Uinp1, Uinp, Uout);
MyGraphic(Uout, NG, Right);
closegraph();
}
void MyInitGraph()
{
int GraphDriver, GraphMode, ErrorCode;
GraphDriver = DETECT;
initgraph(&GraphDriver, &GraphMode, "d:\\borlandc\\bgi") ;
ErrorCode = graphresult();
if (ErrorCode != grOk)
{
printf(" Ошибка графики :%s", grapherrormsg(ErrorCode));
printf("Выполнение программы прервано");
getch();
exit(1);
}
}
void MyGraphic(float F[], int NumberPoint, ModeType Mode)
{
const H = 30;
int Xmax, Ymax, X1, Y1, X2, Y2, Xn, Yn, Xk, Yk, I;
float Fmax, Fmin, Dx, Dy;
int X, Y;
int Xt, L;
//Определение максимально допустимых значений координат
Xmax = getmaxx();
Ymax = getmaxy();
switch (Mode)
{
case Left:
{
X1 = 0;
X2 = Xmax / 2;
Y1 = 0;
Y2 = Ymax;
break;
}
case Right:
{
X1 = Xmax / 2;
X2 = Xmax;
Y1 = 0;
Y2 = Ymax;
break;}
}
setviewport(X1, Y1, X2, Y2, 1);
clearviewport;
Xn = 0;
Yn = 0;
Xk = Xmax / 2-H;
Yk = Ymax;
//Определение максимальных и минимальных значений
Fmin = F[0];
Fmax = F[0];
for (I = 0; I <= NumberPoint - 1; I++)
{
if(F[I] > Fmax)
Fmax = F[I];
if(F[I] < Fmin)
Fmin = F[I];
}
if (Fmin > 0)
Fmin = 0;
//Расчет приращения выводимой переменной на один пиксел
Dy = (float)(Fmax - Fmin) / (float)(Yk - Yn);
Dx = (float)(NumberPoint - 1) / (float)(Xk - Xn);
setcolor(7);
rectangle(1, 1, Xk, Yk);
setcolor(3);
setlinestyle(SOLID_LINE, 0, 5);
for (I = 0; I < NumberPoint; I++)
{
Y = Yk - ((F[I] - Fmin) / Dy);
X = Xn + I / Dx;
if (I == 0)
moveto(X, Y);
else
lineto(X, Y);
}
//Вывод заголовков графиков
if(Mode == Left)
outtextxy(20, 10, "Входной сигнал");
if(Mode == Right)
outtextxy(20, 10, "Выходной сигнал");
getch();
}