Проектування програми на мові рівня С при рішенні на ЕОМ прикладної інженерної задачі - Курсовая работа

бесплатно 0
4.5 160
Основні розрахунки резисторів мікросхеми. Розробка алгоритму рішення задачі методом блок-схем. Характеристика та розробка програми на мові С з використанням принципів модульного і структурного програмування. План тестування і налагоджування програми.

Скачать работу Скачать уникальную работу

Чтобы скачать работу, Вы должны пройти проверку:


Аннотация к работе
В даній курсовій роботі буде представлено навички розробки, налагоджування, тестування і документування програми на мові високого рівня С при рішенні на ЕОМ прикладної інженерної задачі.Завдання на курсову роботу складається із загальної частини і індивідуального завдання.В даній роботі розглядаються тонкоплівкові резистори тільки двох видів: у формі прямокутника (мал.1) і у формі меандру (мал.2). Розрахунок резистора полягає у визначенні його розмірів (в мм) - довжини l і ширини b для прямокутного резистора (див. мал.1), ширини смужки b, відстані між смужками a, розмірів X і Y, а також числа ланок n - для резистора у формі меандру (див. мал.2). ? при кф <0,1 - резистор конструювати не рекомендується. Для резистора з кф?1 розрахунок розмірів починають з визначення ширини. Для резистора з кф<1 розрахунок розмірів починають з визначення довжини.Розрахунок k-ого резистора в діапазоні значень ? Пошук максимального (max) або мінімального (min) розрахункового значення ширини b Сортування розрахункових значень ширини b за збільшенням (зменшенням) Введення початкових даних Розрахункова частина в цілому Розрахунок коефіцієнта форми кф Вибір максимального з трьох при розрахунку b і l Округлення розрахункових значень b і l Розрахунок резисторів прямокутної форми Розрахунок резисторів у вигляді меандруБлок-схеми наочно показують, як діють керуючі структури. Проектування алгоритму було проведено зверху вниз, з урахуванням основних принципів структурного програмування: чітка структуризація задачі, розбиття її на послідовність підзадач, реалізація під задач окремими модулями, покрокова деталізація логіки алгоритму, використання типових конструкцій і базових алгоритмічних структур. В розробці блок-схеми алгоритму можна виділити наступні етапи: 1) аналіз структури даних: визначення початкових, проміжних і результуючих даних, типів даних (змінних і масивів; констант і змінні; цілих, дійсних і символьних); 2) розробка блок-схем допоміжних алгоритмів: а) визначення параметрів (якщо вони є) і значення, що повертається (якщо воно є), їх типів; б) складання блок-схем, які закінчуються словом “повернення ”і значенням, що повертається (у блоці “пуск-зупинка ”);2) візуальний контроль програми на екрані дисплея або по роздруку;R1 = 1 КОМ P1 = 20 МВТ ?1 = 20 КОМ/кв P01=10 МВТ/мм2 R4 = 100 КОМ P4 = 50 МВТ ?1 = 5 КОМ/кв P01=20 МВТ/мм2Вихідні дані для додаткового розрахунку: k = 2 ? = (0,5;10;50) КОМ/кв Резистор №2 має прямокутну форму. b? = 0,25 (мм) bпотужн = 0,5 (мм) bтехн = 0,1 (мм) b = 0,5 (мм) l = 1 (мм) bокругл = 0,51 (мм) lокругл = 1,01 (мм) Резистор №3 має прямокутну форму, у нього довжина менше ширини. l? = 0,38 (мм) lпотужн = 1,4142 (мм) lтехн = 0,3 (мм) l = 1,4142 (мм) b = 1,76775 (мм) lокругл = 1,42 (мм) bокругл = 1,77 (мм) Резистор має прямокутну форму b? = 0,5 (мм) bпотужн = 0,7 (мм) bтехн = 0,1 (мм) b = 0,7 (мм) l = 0.7 (мм) bокругл = 0,71 (мм) lокругл = 0,71 (мм)Користувач повинен ввести кількість резисторів для їхнього розрахунку (у змінну N) й інші вихідні дані: по N значень P і R (у масиви P[m] і R[m]), ? і P0 (у змінні PO[m] і P0[m]). Потім проводиться візуальний контроль введених даних - вивід вихідних даних для розрахунку на екран. Якщо відповідь негативна, то провадиться повторне введення всіх вихідних даних, потім візуальний контроль цих нових даних і т.д. В основному розрахунку для кожного резистора програма визначає його форму й відповідно до неї знаходить його розміри, а також визначає резистори, конструювання яких не рекомендується. Для прямокутного резистора програма обчислює l[i] і b[i], де i - номер цього резистора (обчислюються значення i-их елементів масивів l[i] і b[i]), для резистора у вигляді меандру обчислюються значення елементів масивів b[i], a[i], X[i], Y[i], n[i].Виконавши цю курсову роботу, я отримав навички розробки, налагоджування, тестування і документування програми на мові високого рівня С при рішенні на ЕОМ прикладної інженерної задачі. В роботі був розроблений обчислювальний алгоритм, що реалізує заданий метод рішення певної прикладної задачі.

План
Зміст

Вступ

1. Завдання на курсову роботу

1.1 Загальна частина

1.2 Індивідуальне завдання

2. Розробка алгоритму рішення задачі

3. Розробка програми на мові С

3.1 Коротка характеристика мови програмування С

3.2 Розробка програми на мові С

4. Тестування і налагодження програми

4.1 План тестування

4.2 Тестовий приклад

5. Документування програми

Висновки

Список використаної літератури

Додаток А. Текст програми на мові С

Додаток Б. Тестовий приклад (розрахунок на ЕОМ)

Додаток В. Блок-схема алгоритму

Вывод
мікросхема програмування с резистор

Виконавши цю курсову роботу, я отримав навички розробки, налагоджування, тестування і документування програми на мові високого рівня С при рішенні на ЕОМ прикладної інженерної задачі.

В роботі був розроблений обчислювальний алгоритм, що реалізує заданий метод рішення певної прикладної задачі. Проектування програми проходило з використанням принципів модульного і структурного програмування. Алгоритм був зображений у вигляді блок-схеми.

За цим алгоритмом була розроблена програма на мові С , що містить власні підпрограми, використовує одномірні масиви для зберігання початкових даних і результатів розрахунку, забезпечує взаємодію з користувачем (у формі “ запит-відповідь ”) та виведення результатів розрахунку у зручній формі.

В процесі тестування та відлагодження програми було усунуто ряд помилок. Завдяки цьому кінцева версія програми виконує вірні розрахунки, у чому можна переконатися за допомогою тестового прикладу.

Список литературы
1. Інформатика. Компютерна техніка. Компютерні технології / Посібник для ВНЗ. - К.: 2001.

2. Вычислительная техника и программирование: Учебник для техн. вузов / Под ред. А.В. Петрова. - М.: Высш.шк., 1990.

3. Программирование на С : Учеб. пособие / Под ред. А.Д. Хомоненко. - С-Пб.: 1999.

4. Конспект лекцій з дисципліни: “ Алгоритмічні мови та програмування ”

Додаток А. Текст програми на мові С

#include //Організація введення, виведення (cout, cin)

#include //Математична бібліотека (sqrt () ...)

#include //Бібліотека для використання функції getch () using namespace std;

//Прототипи функції double kf(double, double); //Обчислення коеф. форм. к-того резистора double max_d(double, double, double); //Обчислення максимальної ширини void Cal_pr_fo_bl(); //Розрахунок резистора прямокутної форми b>l void Cal_pr_fo_lb(); //Розрахунок резистора прямокутної форми l>b int i, k, Vv=0, povt=0, stp=0;//Глобальні змінні цілого типу const double b_tex = 0.1, l_tex = 0.3, Db = 0.01, Dl = 0.03, Yr = 0.1, a_min = 0.3, h = 0.01;//Константи вещ. типу const int m = 10;//Константа цілого типу double R[m];//Номінальний опір резистора double PO[m];//Опір квадрата резистивної плівки double P[m];//Потужність розсіювання резистора double Po[m];//Макс. питома потужність розсіювання резистивної плівки double N;//Кількість резисторів double kfe[m];//Коф. форм. к-того резистора double l[m];//Довжина резистора double b[m];//Ширина резистора double X[m];//Довжина меандра double Y[m];//Ширина меандра double BD;//Мінімальна ширина резистора double bpot;//Ширина задана потужністю double LD;//Мінімальна довжина резистора double lpot;//Довжина задана потужністю double lser;//Середня лінія меандра double piz;//Допоміжна змінна для рахунку к-того резистора double maxb=0;//Максимальна ширина b char Otv;// [Y/N] double a[m];//Відстань між смугами double t[m];//Крок ланки double n[m];//Число ланок double max_b(double a, double b, double с)//Обчислення максимальної ширини

{ if (a>b&&a>c) return a;

if (b>a&&b>c) return b;

else return c;

} void Cal_pr_fo_bl()//Розрахунок резистора прямокутної форми b>l

{

BD=(Db Dl/kfe[i])/Yr;

bpot=sqrt((PO[i]*P[i])/(R[i]*Po[i]));

b[i]=max_b(b_tex, BD, bpot);

l[i]=kfe[i]*b[i];

b[i]=int(b[i]/h)*h h;

l[i]=int(l[i]/h)*h h;

cout<<"

Ширина резистора, b = "<<b[i]<<" мм"<<endl;

cout<<" Довжина резистора, l = "<<l[i]<<" мм"<<endl;

} void Cal_pr_fo_lb()//Розрахунок резистора прямокутної форми l>b

{

LD=(Dl kfe[i]*Db)/Yr;

lpot=sqrt((R[i]*P[i])/(PO[i]*Po[i]));

l[i]=max_b(l_tex, LD, lpot);

b[i]=l[i]/kfe[i];

l[i]=int(l[i]/h)*h h;

b[i]=int(b[i]/h)*h h;

cout<<"

Ширина резистора, b = "<<b[i]<<" мм"<<endl;

cout<<" Довжина резистора, l = "<<l[i]<<" мм"<<endl;

} double kf(double a, double b)//Обчислення коеф. форм. к-того резистора

{ return a/b;

} void main () //Головна функція

{ setlocale(LC_ALL, "Ukrainian");

cout<<"\t\t\ТТАБЛ. №1"<<endl;

cout<<" ______________________________________________"<<endl;

cout<<"| | | | |"<<endl;

cout<<"| R, КОМ | p, КОМ/кв | P, МВТ | Po, MBT/мм2 |"<<endl;

cout<<"|___________|___________|___________|_____________|"<<endl;

cout<<"| | | | |"<<endl;

cout<<"| 0.05...10000 | 0,01...50 | 5...50 | 10...30 |"<<endl;

cout<<"|___________|___________|___________|_____________|"<<endl;

cout<<"

"<<endl;

while (1)

{ cout<<"Задайте кількість резисторів для розрахунку [max 10] = ";

cin>>N;

if (N>=1 && N<=10) break;

} for (i=0; i<N; i )

{ while (1)

{ cout<<"

\ТРЕЗИСТОР №"<<i 1<<endl;

cout<<"Номінальний опір резистора, [КОМ] R = ";

cin>>R[i];

cout<<"Опір квадрата резистивної плівки, [КОМ/кв] p = ";

cin>>PO[i];

cout<<"Потужність розсіювання резистора, [МВТ] P = ";

cin>>P[i];

cout<<"Макс.питома потужність розсіювання резистивної плівки, [МВТ/мм2] Po = ";

cin>>Po[i];

cout<<endl;

cout<<"Початкові данні відповідают данним Табл. №1 ? [Y/N] = ";

cin>>Otv;

if (Otv=="Y" || Otv=="y") break;

}

} for (i=0; i<N; i )

{

PS: kfe[i]=kf(R[i], PO[i]);

if (1<=kfe[i] && kfe[i]<=10)

{ cout<<"

______________________________________________"<<endl; cout<<"

\ТРЕЗИСТОР №"<<i 1<<" - прямокутрної форми"<<endl;

Cal_pr_fo_bl();

} else if (0.1<=kfe[i] && kfe[i]<1)

{ cout<<"

____________________________________________"<<endl;

coutd)"<<endl;

Cal_pr_fo_lb();

} else if (kf(R[i], PO[i])>10)

{ cout<<"

____________________________________________"<<endl;

cout<<"

\ТРЕЗИСТОР №"<<i 1<<" - резистор типу (меандр)"<<endl;

BD=(Db Dl/kfe[i])/Yr;

bpot=sqrt((PO[i]*P[i])/(R[i]*Po[i]));

b[i]=int(max_b(b_tex, BD, bpot)/h)*h h;

lser=b[i]*kfe[i];

a[i]=b[i];

if (a[i]<a_min) a[i]=a_min;

while (1)

{ t[i]=a[i] b[i];

n[i]=int(sqrt(lser/t[i]));

X[i]=n[i]*(a[i] b[i]);

Y[i]=(lser-a[i]*n[i])/n[i];

if ((Y[i]/a[i])<=10) break;

else a[i]=a[i] a_min;

} cout<<"

Ширина меандри, Y = "<<Y[i]<<" мм"<<endl;

cout<<" Довжина меандри, X = "<<X[i]<<" мм"<<endl;

cout<<" Ширина смушки, b = "<<b[i]<<" мм"<<endl;

cout<<" Відстань між смужками, a = "<<a[i]<<" мм"<<endl;

cout<<" Число ланок, n = "<<n[i]<<endl;

} else if (kfe[i]<0.1)

{ cout<<"

_____________________________________________"<<endl;

cout<<"\ТРЕЗИСТОР №"<<i 1<<" - резистор використовувати не рекомендовано"<<endl;

} if (PO[i]==piz) break;

} if(1<N)

{ if(povt==0)

{ for (i=0; i<N; i )

{ if(maxb<b[i]) maxb=b[i];

} cout<<"\NМАКСIМАЛЬНАЯ ширина b = "<<maxb<<" мм"<<endl;

povt ;

} if (Vv==0)

{ while (1)

{ cout<<"\NВВЕДIТЬ номер резистора для додаткових обчислень = ";

cin>>k;

if(1<=k&&k<=N) break;

else cout<<"Цього резистора не існує"<<endl;

} k=k-1;

Vv ;

}

} while (1)

{ cout<<"\NОПIР квадрата резистивної плівки (для закінчення обчислень введіть 0), [КОМ/кв] p = ";

cin>>piz;

if(piz<=50) break;

else cout<<"

\TMAX 50 [КОМ/кв] "<<endl;

} i=k;

PO[i]=piz;

if (piz!=0) goto PS;

getch();

system("cls");//Функція очищення екрана cout<<"\ТАВТОР програми : Жмуд Е.В."<<endl;

cout<<"\t20.09.2012"<<endl;

getch();

}

Додаток Б. Тестовий приклад (розрахунок на ЕОМ)

Мал.1. Введення початкових даних, розрахунок та виведення результату.

Мал.2. Розрахунок k-го резистора.

Вы можете ЗАГРУЗИТЬ и ПОВЫСИТЬ уникальность
своей работы


Новые загруженные работы

Дисциплины научных работ





Хотите, перезвоним вам?