Реферат по предмету "Информатика, программирование"


Расчетная методика проектирования программного комплекса

Министерствообразования и науки Российской Федерации
Государственноеобразовательное учреждение высшего профессионального образования
«Комсомольский– на – Амуре государственный технический университет »
Институт ИКПМТО
Кафедра Технологиимашиностроения
ПОЯСНИТЕЛЬНАЯЗАПИСКА
к курсовомупроекту
Расчетнаяметодика проектирования программного комплекса
Студент группы 5МС-1 З.С. Асотова
2006

Содержание
Введение
1. Постановка и анализ задачи
1.1 Потребность в идентификациираспределения погрешностей
1.2 Оптимальное число интерваловгруппирования экспериментальных данных
2. Проектирование программногокомплекса
3. Кодирование программы
3.1 Модуль Math
3.2 Модуль 1
3.3 Модуль 2
3.4 Модуль 3
3.5 Модуль 4
Заключение
Приложение А
Приложение Б
Приложение В
Приложение Г
Приложение Д
Список использованных источников

Введение
Информационныетехнологии занимают уникальное положение и стали неотъемлемой частью нашейповседневной деятельности. Информационные системы — область науки и техники, без знаниякоторой невозможно дальнейшее развитие современного общества. В отличие от других научно-технических достижений средствавычислительной техники и информатики применяются практически во всех сферахинтеллектуальной деятельности человека, способствуя прогрессу в технике итехнологии. Конечно, освоение уже имеющихся и хорошо себя зарекомендовавшихпрограммных систем и основанных на них технологий — важная и необходимаязадача. Нужно создавать необходимые условия для развития в нашей странеисследований в области информационных технологий и реализации их результатов впрактических системах и различных приложениях.

1. Постановка и анализзадачи
Цельюданной работы является разработка программы на языке программирования Delphi для идентификации формы законараспределения погрешностей экспериментальных данных.
1.1 Потребность видентификации распределения погрешностей
Обоснованное решениемногих задач требует идентификации формы распределения погрешностей.
Эта идентификация нужна,т.к. рассеяние многих оценок зависит от формы закона распределения. Дляобеспечения одной и той же погрешности в определении оценки при одном законеможно ограничиться достаточно малой выборкой, в то время как при другом –выборка исходных данных должна быть значительно больше. Из этого следует, чтознание вида закона распределения необходимо для определения одних параметровзакона распределения через другие его параметры. Изменение вида законараспределения погрешностей может служить признаком какого-либо измененияусловий проведения измерений.
Экспериментальные данныео разнообразии форм распределения погрешностей измерений накоплены вдостаточном количестве. В результате этого факт разнообразия законовраспределения погрешностей был признан законодательно. 1 января 1974 г. былвведен в действие ГОСТ 8.011 – 72, устанавливающий, что при сообщении размерапогрешности результата измерения целесообразно указывать вид распределения. Также были стандартизованы модели равномерного, трапецеидального, треугольного,нормального и двухмодальных распределений.
Надо заметить, чтовозможность идентификации формы распределения экспериментальных данныхограничена, прежде всего, малостью объема выборки. При большом объеме выборки,например в несколько тысяч наблюдений, построение гистограммы часто позволяетполучить достаточно плавную кривую, которая отражает все характерныеособенности наблюдаемого закона. Другими словами, более тонкая идентификацияформы распределения возможна лишь при соответствующем увеличении объема выборкиэкспериментальных данных.
Следовательно, можносделать вывод о том, что имеет большое значение накопление данных и составлениекаталога распределения погрешностей различных средств измерений (датчиков,приборов), широко применяемых методов измерений, для того чтобы этими даннымиможно было затем пользоваться даже при наличии малых серий измерений.
1.2 Оптимальное числоинтервалов группирования экспериментальных данных
Для определения медианы,сгибов, других квантилей, использования критерия согласия Колмогорова-Смирноваили для обнаружения промахов экспериментальные данные необходимо расположить впорядке возрастания, т.е. построить вариационный ряд (упорядоченную выборку).
Для определения формыраспределения просто упорядоченной выборки недостаточно, она должна бытьпредставлена в виде гистограммы, состоящей из m столбцов с определенной протяженностью d соответствующих им интервалов. Принятоделать эти интервалы одинаковыми. Существует оптимальное число интерваловгруппирования, когда ступенчатая огибающая гистограммы наиболее близка к плавнойкривой распределения. При группировании данных в слишком большое число мелкихинтервалов гистограмма будет отличаться от плавной кривой распределениявследствие изрезанности многими всплесками и провалами (некоторые интервалыокажутся пустыми или мало заполненными), т.е. будет иметь «гребенчатый» вид. Нопри слишком малом числе mинтервалов характерные особенности будут потеряны вследствие слишком крупнойступенчатости. Таким образом, оптимальным числом m интервалов является такое, когда максимальное возможноесглаживание случайных данных сочетается с минимальным искажением от сглаживаниясамой кривой искомого распределения. Для распределения погрешностей одним изпрактических признаков приближения к оптимуму может служить в гистограммепровалов. Близким к оптимальному считается наибольшее m, при котором гистограмма еще сохраняет плавный характер.

2 Проектированиепрограммного комплекса
/>
В данной работе будет использовано5 модулей и 4 формы.
Первая форма (mainForm) должна отражатьдружественный интерфейс, вариационный ряд чисел, количество этих чисел, оценкуцентра, количество столбцов и две кнопки. Button1 будет называться «Гистограмма», Button2 – «Рассчитать».
При нажатии кнопки Button2 рассчитываются min и max числа ряда, ширина интервала иколичество попаданий чисел в интервалы. Для пользователя выводятся на экранварианты количества столбцов для дальнейшего построения гистограммы. Поумолчанию предлагается максимальное количество.
В Delphi имеется два компонента,представляющие меню: MainMenu – главное меню />, и PopupMenu –всплывающее меню /> (страница Standard).
Основное свойствокомпонентов Items.Его заполнение производится с помощью конструктора меню. Расположим на формеэти компоненты.
1) Двойным щелчком покомпоненту MainMenu1 вызовем редактор меню.
2) Задаем свойству Captionзначение Файл.
/>
3) Щелчкоммышью ниже пункта меню Файл создаем новый пункт Открыть.
4) Аналогичнымспособом создаем все пункты меню Файл.
5) Аналогичным способомсоздаем все пункты меню Правка.
6) Аналогичным способомсоздаем все пункты меню ?
/>
7) Добавляем на формукомпонент ImageList1и заносим в него иконки для пунктов меню. Используя свойство Images компонента MainMenu1,связываем меню с наборомиконок. Для некоторыхпунктов меню, используя свойство ImageIndex, задаем иконки.
/>
При нажатии кнопки Button1 открывается вторая форма(grafic), которая отображает графики (гистограмма исходных данных,симметрированная гистограмма и полигон). Для удобства внизу формы расположеныфлажки (CheckBox1, CheckBox2, CheckBox3), а они в свою очередь на панели (компонентGroupBox1). Эти флажки можно как включать так и отключать. По умолчанию, при открытииформы, они активированы.
/>
Открывая пункт меню «Опрограмме» появляется третья форма (о программе). На нее помещенкомпонент Image1 (данная картинка отображает суть программы), кнопка «ОК»(компонент Button1) и краткие данные.
/>
Открывая пункт меню«Справка» появляется четвертая форма (справка). На которую помещенкомпонент Memo1, в котором отображено как пользоваться данной программой.
3. Кодированиепрограммы
/>
3.1 Модуль Math
В данном модуле мыописываем все свои математические действия. Здесь мы рассчитываем ширинуинтервала, количество интервалов, max, min.
Код модуля приведен вприложении А.
3.2 Модуль 1
Первый модуль связаннепосредственно с первой формой, о которой говорилось выше. Здесь мы описываемдружественный интерфейс, вывод вариационного ряда в компонент Memo1. Причем,нужно учесть, что в файле, где сохранены числа первым указана оценка центра Хс,его мы выводим на форму в Label3. Так же мы описываем здесь расчеты, которыепрограмма выполняет при нажатии на кнопку Button2 и Button3. Описана связьпервой формы со второй.
Код модуля приведен вприложении Б.
3.3 Модуль 2
В данном модуле программарассчитывает и строит графики. Связан с модулем 1 и модулем Math
Код модуля приведен вприложении В.
3.4 Модуль 3
Этот модуль описываеттретью форму, связан с первым модулем.
Код модуля приведен вприложении Г.
 
3.5 Модуль 4
Данный модуль прилагаетсяк четвертой форме, на которой располагается справка.
Код модуля приведен вприложении Д.

Заключение
Цельюданной работы являлась разработка программы на языке программирования Delphi для идентификации формы законараспределения погрешностей экспериментальных данных. Построение полигона,который более наглядно, чем гистограмма, отражает форму распределения,производилось путем соединения прямыми середин верхних оснований каждогостолбца гистограммы. За пределами гистограммы, как слева, так и справаследовали пустые интервалы, в которых точки, соответствующие их серединам,лежали на оси абсцисс. Все эти точки, при построении полигона, соединялисьмежду собой отрезками прямых линий, образуя с осью х замкнутую фигуру. Призамене гистограммы кривой в виде полигона выполняется автоматически правилонормирования, т.к. от каждого большого столбца гистограммы (рис.1) отсекается иотбрасывается часть площади в виде треугольников, заштрихованных на рис.1вертикально, а к каждому меньшему столбцу добавляются такие же площадитреугольников, заштрихованных горизонтально. В итого общая площадь под кривойполигона остается равной площади исходной гистограммы. Однако это «перемещениеплощадей» при переходе от гистограммы к полигону происходит всегда «вниз по склону».В итоге площадь центрального столбца в полигоне оказывается меньше площадицентрального столбца гистограммы. Чтобы устранить это явление, мы считалицентральный столбец гистограммы состоящим из двух равных столбцов. В этомслучае вершина кривой полигона выше верхнего основания центрального столбца,как это показано штриховой линией на рис.1, но площадь под кривой полигона впределах центрального столбца будет равна площади центрального столбцагистограммы.

/>
Рис.1

ПРИЛОЖЕНИЕ А
(Модуль Math)
unit uMath;
interface
const
 MaxN = 1000;
type
 IndexEl = 1..maxN;
 TM =array[IndexEl] of Real;
 TParam =(lev, prav, kolvo);
var
 arrReal: TM;//исходные данные
 CountX: Integer; //кол-во исходныхчисел
 dX: Real; //ширина интервала
 MasInt: array[TParam, IndexEl] of Real;
 dXmax:IndexEl;
 M: integer;
 N: integer; //фактрическое кол-во чисел
 CountInterv: Integer; //фактическоекол-во интервалов
 i: IndexEl;
 s: integer;
 sa: real;
 buf: Real;
 imin:IndexEl;
 j: IndexEl;
 Me: Real;
 x: Real;
 Mmin: Real;
 Mmax: Real;
 Xc: Real;//оценка центра
 SredInt:Integer;
 Max, Min:real;
functionfMmin(N: Integer): Integer;
functionfMmax(N: Integer): Integer;
functionfdX(M: TM; N: Integer; Xc: Real; NInt: Integer): Real;
procedureChastotaGist;
implementation
uses Math;
functionfMmin(N: Integer): Integer;
var
 x: Real;
begin
 X :=0.55*power(N,0.4);
 Result :=round(X);
end;
functionfMmax(N: Integer): Integer;
var
 x: Real;
begin
 X :=1.25*power(N,0.4);
 Result :=round(X);
end;
functionfdX(M: TM; N: Integer; Xc: Real; NInt: Integer): Real;
var
 i: Integer;
 x, R: Real;
 nGist,NumInt: integer;
 Gist: array[1..5] of Integer;
begin
 Mmax := M[1];
 Mmin := M[1];
 for i := 2 toN do
 begin
 if M[i] >Mmax then Mmax := M[i];
 if M[i]
 end;
 if abs(MMax — Xc) > abs(MMin — Xc) then
 x := MMax
 else
 x := MMin;
 Result := (2* abs(x — Xc)) / NInt;
end;
procedureChastotaGist;
var
 i, NumInt:Integer;
begin
 for i := 1 to CountIntervdo
 MasInt[kolvo,i] := 0;
 for i := 1 toN do
 begin
 NumInt :=Trunc((arrReal[i] — MMin)/dx) + 1;
 MasInt[kolvo,NumInt] := MasInt[kolvo, NumInt] + 1;
 end;
end;
end.

ПриложениеБ (Модуль1)
unit Unit1;
interface
uses
 Windows,Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
 Dialogs,ImgList, Menus, StdCtrls, ExtCtrls, ExtDlgs, ComCtrls, Math;
type
 TForm1 =class(TForm)
 MainMenu1:TMainMenu;
 PopupMenu1:TPopupMenu;
 N1:TMenuItem;
 N2:TMenuItem;
 N3:TMenuItem;
 N4:TMenuItem;
 N5:TMenuItem;
 N6:TMenuItem;
 N7:TMenuItem;
 N8:TMenuItem;
 N9:TMenuItem;
 N10:TMenuItem;
 N11:TMenuItem;
 ImageList1:TImageList;
 N12:TMenuItem;
 N13:TMenuItem;
 N14:TMenuItem;
 Memo1: TMemo;
 OpenDialog1:TOpenDialog;
 SaveDialog1:TSaveDialog;
 N15:TMenuItem;
 Button1:TButton;
 Button2:TButton;
 ComboBox1:TComboBox;
 Label1:TLabel;
 Label2:TLabel;
 Label3:TLabel;
 Label4:TLabel;
 N16:TMenuItem;
 procedureN6Click(Sender: TObject);
 procedureN11Click(Sender: TObject);
 procedureN4Click(Sender: TObject);
 procedureN3Click(Sender: TObject);
 procedureN15Click(Sender: TObject);
 procedureN2Click(Sender: TObject);
 procedureButton1Click(Sender: TObject);
 procedureButton2Click(Sender: TObject);
 procedureN16Click(Sender: TObject);
 private
 { Privatedeclarations }
 public
 { Publicdeclarations }
 functionTextSaved: Boolean;
 end;
var
 Form1:TForm1;
 implementation
 uses Unit2,uMath, Unit3, Unit4;
{$R *.dfm}
 functionTForm1.TextSaved: Boolean;
 begin
 Result :=True;
 ifMemo1.Modified then
 caseMessageDlg('Save current document?', mtConfirmation, mbYesNoCancel, 0) of
 mrYes:
 begin
 N3Click(Self);
 Result := notMemo1.Modified;
 end;
 mrCancel:Result := False;
 end;
 end;
procedureTForm1.N6Click(Sender: TObject);
begin
 if TextSavedthen
 begin
 Memo1.Lines.Clear;
 Caption :='Text Editor';
 SaveDialog1.FileName:= '';
 end;
end;
procedureTForm1.N11Click(Sender: TObject);
begin
 Form3.Show;
end;
procedureTForm1.N4Click(Sender: TObject);
begin
 withSaveDialog1 do
 if Executethen
 begin
 Memo1.Lines.SaveToFile(FileName);
 Memo1.Modified := False;
 // — сохранение текста вфайле
 Caption := 'Text Editor — ' +ExtractFileName(FileName);
 end;
end;
procedureTForm1.N3Click(Sender: TObject);
begin
 withSaveDialog1 do
 if FileName ='' then
 N4Click(Self)
 else
 begin
 Memo1.Lines.SaveToFile(FileName);
 Memo1.Modified:= False;
 end;
end;
procedureTForm1.N15Click(Sender: TObject);
begin
 Close;
end;
procedureTForm1.N2Click(Sender: TObject);
 var
 i:Integer;
 f:System.Text;
 sX: string;
 X: Real;
begin
 withOpenDialog1 do
 if Executethen
 begin
 AssignFile(f,OpenDialog1.FileName);
 Reset(f);
 ReadLn(f,sX);
 X :=StrToFloat(sX);
 Xc := X;
 i := 0;
 while notEOF(f) do
 begin
 i := i + 1;
 ReadLn(f,sX);
 X :=StrToFloat(sX);
 arrReal[i] :=X;
 end;
 N := i;
 CloseFile(f);
 Label2.Caption:= FloatToStr(Xc);
 Label4.Caption:= format('Кол-во: %d',[N]);
 Memo1.Lines.Clear;
 for i:=1 to Ndo
 Memo1.Lines.Add(format('%f',[arrReal[i]]));
 Caption :='Text Editor — ' + ExtractFileName(FileName);
 end;
end;
procedureTForm1.Button1Click(Sender: TObject);
begin
 Form2.Raschet;
 Form2.Show;
end;
procedureTForm1.Button2Click(Sender: TObject);
var
 i, min, max:Integer;
begin
 min :=fMmin(N);
 max :=fMmax(N);
 ComboBox1.Clear;
 for i := minto max do
 if Odd(i)then
 ComboBox1.Items.Add(format('%d',[i]));
 ComboBox1.ItemIndex:= ComboBox1.Items.Count — 1;
end;
procedureTForm1.N16Click(Sender: TObject);
begin
 Form4.Show;
end;
end.

Приложение В (Модуль 2)
unit Unit2;
interface
uses
 Windows,Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
 Dialogs,TeEngine, Series, ExtCtrls, TeeProcs, Chart, Math, StdCtrls;
 const
 MaxN = 1000;
type
 TForm2 =class(TForm)
 Chart1:TChart;
 Series1:TBarSeries;
 Series2:TBarSeries;
 Series3:TLineSeries;
 GroupBox1:TGroupBox;
 CheckBox1:TCheckBox;
 CheckBox2:TCheckBox;
 CheckBox3:TCheckBox;
 procedureCheckBox1Click(Sender: TObject);
 procedureCheckBox2Click(Sender: TObject);
 procedureCheckBox3Click(Sender: TObject);
 private
 { Privatedeclarations }
 public
 { Publicdeclarations }
 procedureRaschet;
 end;
var
 Form2:TForm2;
implementation
uses Unit1,uMath;
{$R *.dfm}
{ TForm2 }
procedureTForm2.Raschet;
var
 sum: Real;
 i: integer;
 a, Centr:Real;
begin
 CountInterv:=StrToInt(Form1.ComboBox1.Items[Form1.ComboBox1.ItemIndex]);
 SredInt :=(CountInterv div 2) + 1;
 dX :=fdX(arrReal, N, Xc, CountInterv);
 ChastotaGist;
 Chart1.Series[0].Clear;
 Chart1.Series[1].Clear;
 Chart1.Series[2].Clear;
//исходные
 for i := 1 toCountInterv do
 Chart1.Series[0].AddXY(i,MasInt[kolvo,i]);
//симмметрированные
 for i :=SredInt+1 to CountInterv do
 begin
 sum :=MasInt[kolvo, i] + MasInt[kolvo, CountInterv+1-i];
 MasInt[kolvo,i] := sum /2;
 MasInt[kolvo,CountInterv+1-i] := sum /2;
 end;
 for i := 1 toCountInterv do
 Chart1.Series[1].AddXY(i,MasInt[kolvo,i]);
//полигон
 a :=abs(MasInt[kolvo, SredInt] — MasInt[kolvo, SredInt — 1]);
 a := a / 3 *4;
 Centr :=MasInt[kolvo, SredInt — 1] + a;
 Chart1.Series[2].Clear;
 Chart1.Series[2].AddXY(0,0);
 for i := 1 toCountInterv do
 begin
 if i SredInt then
 Chart1.Series[2].AddXY(i,MasInt[kolvo,i])
 else
 Chart1.Series[2].AddXY(i,Centr);
 end;
 Chart1.Series[2].AddXY(CountInterv+1,0);
end;
procedureTForm2.CheckBox1Click(Sender: TObject);
begin
 Chart1.Series[0].Active:= CheckBox1.Checked;
end;
procedureTForm2.CheckBox2Click(Sender: TObject);
begin
 Chart1.Series[1].Active:= CheckBox2.Checked;
end;
procedureTForm2.CheckBox3Click(Sender: TObject);
begin
 Chart1.Series[2].Active:= CheckBox3.Checked;
end;
end.

Приложение Г (Модуль 3)
unit Unit3;
interface
uses
 Windows,Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
 Dialogs, ExtCtrls,StdCtrls;
type
 TForm3 = class(TForm)
 Image1:TImage;
 Label1: TLabel;
 Label2:TLabel;
 Label3:TLabel;
 Label4: TLabel;
 Label5:TLabel;
 Button1:TButton;
 procedureButton1Click(Sender: TObject);
 private
 { Privatedeclarations }
 public
 { Publicdeclarations }
 end;
var
 Form3:TForm3;
implementation
{$R *.dfm}
procedureTForm3.Button1Click(Sender: TObject);
begin
 Close;
end;
end.

ПриложениеД (Модуль 4)
unit Unit4;
interface
uses
 Windows,Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
 Dialogs,StdCtrls;
type
 TForm4 =class(TForm)
 Memo1: TMemo;
 private
 { Privatedeclarations }
 public
 { Publicdeclarations }
 end;
var
 Form4:TForm4;
implementation
{$R *.dfm}
end.

Список использованныхисточников
1. Новицкий П.В. Оценка погрешностейрезультатов измерений / П.В. Новицкий, И.А Зограф. — 2-е изд., перераб. – Л.:Энерго – Атомиздат,1991. – 304 с.


Не сдавайте скачаную работу преподавателю!
Данный реферат Вы можете использовать для подготовки курсовых проектов.

Поделись с друзьями, за репост + 100 мильонов к студенческой карме :

Пишем реферат самостоятельно:
! Как писать рефераты
Практические рекомендации по написанию студенческих рефератов.
! План реферата Краткий список разделов, отражающий структура и порядок работы над будующим рефератом.
! Введение реферата Вводная часть работы, в которой отражается цель и обозначается список задач.
! Заключение реферата В заключении подводятся итоги, описывается была ли достигнута поставленная цель, каковы результаты.
! Оформление рефератов Методические рекомендации по грамотному оформлению работы по ГОСТ.

Читайте также:
Виды рефератов Какими бывают рефераты по своему назначению и структуре.