8 - 3 Технологический раздел (1094767)
Текст из файла
3 ТЕХНОЛОГИЧЕСКИЙ РАЗДЕЛ
3.1 Технология разработки программы
Целью программирования является описание процессов обработки данных. Программа должна быть понятной и человеку, т. к. и при разработке программ, и при их использовании часто приходится выяснять, какой именно процесс она порождает. Поэтому программа составляется на удобном для человека формализованном языке программирования, с которого она с помощью транслятора автоматически переводится на язык, понятный компьютеру.
Программисту прежде, чем составлять программу на удобном для него языке программирования, приходится преодолевать большую подготовительную работу по уточнению постановки задачи, выбору метода её решения, выяснению специфики применения требуемой программы и др. Использование этой информации может существенно упростить задачу понимания программы человеком. Поэтому её весьма полезно фиксировать в виде отдельных документов. Обычно программы разрабатываются в расчете на обычного пользователя, поэтому для освоения программы пользователем помимо ее текста требуется определенная дополнительная документация.
Программа или логически связанная совокупность программ на носителе данных, снабженная программной документацией, называется программным средством (ПС)[10]. ПС позволяют осуществлять автоматическую обработку данных, а программная документация позволяет понять, какие функции выполняет та или иная программа программного средства, как подготовить исходные данные и запустить процесс их обработки, а также что означают полученные результаты.
Резкое удешевление стоимости компьютеров и, в особенности, стоимости хранения информации на компьютерных носителях привело к широкому внедрению ПК во все сферы человеческой деятельности, что существенно изменило направленность технологии программирования, и человеческий фактор сыграл в ней решающую роль. Сформировалось глубокое понятие качества ПС, в котором акценты стали ставиться не столько на его эффективность, сколько на удобство работы с ним пользователей и надежность.
Широкое внедрение компьютерных сетей привело к естественному развитию распределённых вычислений, дистанционного доступа к информации и электронного способа обмена сообщения между людьми.
Фрагмент программы модуля расчета построения заданной и реальной траектории движения :
procedure ProcMain();
var nsc,ns,i,si,ifi,id: integer;
xzn,yzn,sns,xi,yi,xli,yli,xri,yri,fi,r,dif,xcn,ycn,fivn,vxv: real;
begin
pi:=3.14159;
pi2:=pi/2;
xi:=0;yi:=0;
//считывание параметров из главного меню
with Fmain.SGmain do begin
//shp - ширина проезжей части, м
shp:=strtofloat(cells[2,2]);
//v - скорость продольного движения, м/с
v:=strtofloat(cells[2,3])/3.6;
//sck - коэф-т сцепления с дорогой
sck:=strtofloat(cells[2,4]);
//kboksm - коэф-т чувств-ти водителя к боковому смещению
kboksm:=strtofloat(cells[2,5]);
//kfit - коэф-т чувств-ти водителя к отклонению угла курса
kfit:=strtofloat(cells[2,6]);
end;
//считывание параметров из конструктивного меню
with Fmain.SGkonstr do begin
//am - масса автомобиля, кг
am:=strtofloat(cells[2,1]);
//baz - база автомобиля, м
baz:=strtofloat(cells[2,2])/1000;
//amf - масса на переднюю ось, кг
amf:=strtofloat(cells[2,3]);
//cf - коэф-т сопротивления уводу передней оси
cf:=strtofloat(cells[2,4]);
//cr - коэф-т сопротивления уводу задней оси
cr:=strtofloat(cells[2,5]);
//ri - передаточное отношение рулевого механизма
ri:=strtofloat(cells[2,6]);
//ds - масштаб детализации
ds:=strtofloat(cells[2,7]);
end;
//считывание параметров из участков цикла
with Fmain.SGroad do begin
//определение кол-ва участков цикла
nsc:=Fmain.SGroad.Rowcount - 1;
//ns - номер цикла
for ns:=1 to nsc do begin
sc[ns]:=strtofloat(cells[1,ns]);
fic[ns]:=strtofloat(cells[2,ns]);
fic[ns]:=fic[ns]*pi/180;
end;
end;
amr:=am-amf;
bf:=baz*amr/am;
br:=baz-bf;
rj:=amf*bf*bf+amr*br*br;
dsm:=0.02;
//начальные условия для дороги
xzn:=0;
yzn:=2.5;
//половина ширины полосы движения
shp:=shp/2;
for ns:=1 to (nsc-1) do begin
sns:=sc[ns+1]-sc[ns];
//начальное значение угла курса, его синус и косинус
fit:=fic[ns];
sifi:=sin(fit);
cofi:=cos(fit);
//проверка кривизны участка
if (fic[ns+1]=fic[ns])
then begin
//движение по прямой
//вычисляем кол-во точек
si:=trunc(sns/dsm);
for i:=1 to si do begin
//координаты текущей точки заданной траектории
xi:=xzn+si*dsm*cofi;
yi:=yzn+si*dsm*sifi;
//координаты левой границы
xli:=((xi-shp*sifi)/dsm)+0.5;
yli:=((yi+shp*cofi)/dsm)+0.5;
//координаты правой границы
xri:=((xi+shp*sifi)/dsm)+0.5;
yri:=((yi-shp*cofi)/dsm)+0.5;
end;
xzn:=xi;
yzn:=yi;
end
else begin
//движение по криволинейному участку
fi:=fic[ns+1]-fic[ns];
r:=sns/fi;
dif:=sns/dsm;
ifi:=trunc(dif);
//координаты центра поворота
xcn:=xzn-r*sin(fit);
ycn:=yzn+r*cos(fit);
xi:=(xcn/dsm)+0.5;
yi:=(ycn/dsm)+0.5;
for i:=1 to ifi do begin
//текущее значение угла курса, его синус и косинус
sifi:=sin(fit);
cofi:=cos(fit);
//координаты текущей точки заданной траектории
xli:=((xcn+(r-shp)*sifi)/dsm)+0.5;
yli:=((ycn-(r-shp)*cofi)/dsm)+0.5;
FResult.SerRoadLeft.AddXY(yli,xli);
xri:=((xcn+(r+shp)*sifi)/dsm)+0.5;
yri:=((ycn-(r+shp)*cofi)/dsm)+0.5;
FResult.SerRoadRight.AddXY(yri,xri);
fit:=fit+(fi/dif);
end;
//начало отсчета следующего участка
xzn:=xcn+r*sifi;
yzn:=ycn-r*cofi;
end;
end;
Фрагмент программы модуля расчета характеристик двигателя:
procedure PROCAvto();
begin
// om1 - угловая скорость вращения первичного вала коробки передач
om1:=(oms+omys+v/rks)*rit;
// amh - суммарный крутящий момент на шинах ведущих колес
amh:=am1*rit*tetta-4.*amf-2.*rjv*omkp-torm ;
if ( abs(am1*rit*tetta) <= abs (4.*amf) )
and(v < 0.000001)
then amh:=0;
// момент на колесе < мом. сопр.
// pz - суммарная вертикальная реакция на ведущих колесах
pz:=pz0+akkf*(h0*am*vp*0.5/al);
// po - предельно возможная горизонт. реакция вед.колес без потерь
po:=pz*f0;
// d- запас тяги на ведущих колесах
d:=po-(abs(amh)/(rks*2));
if(d<=0)
then eps:=abs(amh)/(ce*2)
else begin
// te- к-т, отражающий эластичные св-ва шины в прод. движении
te:=rks*po/ce;
// eps- тангенциальная деформация шины
eps:=abs(-te*(ln(d)-ln(po)));
end;
// tx- расчетная горизонтальная реакция ведущих колес с учетом потерь
tx:= pz*(f0*(1-exp(-eps/te))-b*(1-exp(-v/tv))*(1-exp(-s/ts))*(1.-exp(-eps/(te*2)))*(1.-exp(-eps/(te*2)))*
(1-exp(-eps/(te*2)))*(1-exp(-eps/(te*2)))*(1-exp(-eps/(te*2)))*(1-exp(-eps/(te*2))));
if(amh < 0)
then tx:=-tx;
f1:=tx/pz;
// omsp- угловое ускорение при фрикционном проскальзывании
//showmessage('amh: '+floattostr(amh)+', tx:'+floattostr(tx)+', rks'+floattostr(rks)+', rjv'+floattostr(rjv));
omsp:=(amh-2*tx*rks)/(rjv*2);
// vp- продольное ускорение автомобиля
vp:=(2*tx - f*akw*v*v)/am;
// v- продольная скорость автомобиля
v:=v+vp*dt;
// расчет по методу эйлера
if(v < 0)
then v:=0;
vkm:=v*3.6;
// oms- угловая скорость фрикционного проскальзывания колеса
oms:=oms+omsp*dt;
// расчет по методу эйлера
// omkp- угловое ускорение виртуального колеса
omkp:=vp/rks;
// omabp- угловое ускорение реального колеса
omabp:=omsp+omkp ;
// omys- угловая скорость упругого проскальзывания колеса
omys:=tteps*ce*v*eps/rks;
if(amh < 0)
then omys:=-omys;
// в режиме торможения
// s- суммарное проскальзывание ведущего колеса
if(v>0.5)
then s:=abs((oms+omys)*rks/v);
x:=x+v*dt;//x- пройденный путь
end;
3.1.1 Технология модульного программирования
Приступая к разработке каждой программы ПС, следует иметь в виду, что она, как правило, является большой системой, поэтому мы должны принять меры для ее упрощения. Для этого такую программу разрабатывают по частям, которые называются программными модулями. А сам такой метод разработки программ называют модульным программированием. Программный модуль - это любой фрагмент описания процесса, оформляемый как самостоятельный программный продукт, пригодный для использования в описаниях процесса. Это означает, что каждый программный модуль программируется, компилируется и отлаживается отдельно от других модулей программы, и тем самым, физически разделен с другими модулями программы. Более того, каждый разработанный программный модуль может включаться в состав разных программ, если выполнены условия его использования, декларированные в документации по этому модулю. Таким образом, программный модуль может рассматриваться и как средство борьбы со сложностью программ, и как средство борьбы с дублированием в программировании.
Модульное программирование является воплощением общих методов борьбы со сложностью и обеспечение независимости компонент системы, и использование иерархических структур[10]. Для воплощения первого метода формулируются определенные требования, которым должен удовлетворять программный модуль, т.е. выявляются основные характеристики «хорошего» программного модуля. Для воплощения второго метода используют древовидные модульные структуры программ (включая деревья со сросшимися ветвями).
Не всякий программный модуль способствует упрощению программы. Выделить хороший с этой точки зрения модуль является серьезной творческой задачей. Для оценки приемлемости выделенного модуля используются некоторые критерии. Так, Хольт [19] предложил следующие два общих таких критерия:
-
хороший модуль снаружи проще, чем внутри;
-
хороший модуль проще использовать, чем построить.
Майерс [19] предлагает для оценки приемлемости программного модуля использовать более конструктивные его характеристики :
-
размер модуля;
-
прочность модуля;
-
сцепление с другими модулями;
-
рутинность модуля (независимость от предыстории обращений к нему).
В качестве модульной структуры программы принято использовать древовидную структуру, включая деревья со сросшимися ветвями[10]. В узлах такого дерева размещаются программные модули, а направленные дуги (стрелки) показывают статическую подчиненность модулей, т.е. каждая дуга показывает, что в тексте модуля, из которого она исходит, имеется ссылка на модуль, в который она входит. Другими словами, каждый модуль может обращаться к подчиненным ему модулям, т.е. выражается через эти модули. При этом модульная структура программы, в конечном счете, должна включать и совокупность спецификаций модулей, образующих эту программу .
При разработке программного модуля обычно придерживаются следующего порядка действий:
-
изучение и проверка спецификации модуля, выбор языка программирования;
-
выбор алгоритма и структуры данных;
-
программирование (кодирование) модуля;
-
шлифовка текста модуля;
-
проверка модуля;
-
компиляция модуля.
3.2 Технология разработки графического интерфейса пользователя
Интерфейс – это, определенная стандартами, граница между взаимодействующими независимыми объектами [10]. Он объединяет устройства ввода, вывода и программное обеспечение, которое обслуживает их. В более широком смысле интерфейс включает в себя всё, что помогает пользователю взаимодействовать с компьютером, в том числе документацию, обучение и техническую поддержку.
В дипломном проекте пользовательский интерфейс разработан в соответствии с принципами, сформулированными в [10]:
- контроль пользователем интерфейса;
- уменьшение загрузки памяти пользователя;
- последовательность пользовательского интерфейса.
Основное правило проектирования – необходим контроль пользователя над системой.
Принципы, которые дают пользователю контроль над системой:
1) благоразумное использование режимов. Известны два типа режимов интерфейса, которые во многих случаях необходимы, однако надолго лишают пользователя самостоятельности.
Первый тип – режим приложения. Он позволяет работать только в определённом месте программы, либо устанавливает конкретный режим работы.
Второй тип режима – системный. Пока пользователь находится в этом режиме, ему не разрешено работать нигде, кроме текущей программы;
2) пользователь должен иметь возможность выбора: работать либо мышью, либо клавиатурой, либо их комбинацией (гибкость);
3) пользователь должен иметь возможность сфокусировать внимание (прерываемость). Программный интерфейс спроектирован так, чтобы пользователь мог в любую минуту прерваться или сохранить результаты работы на данной стадии;
4) демонстрация сообщений, для помощи в работе (полезность). Данный принцип применен не только для сообщений, но и для всех текстов на экране: приглашение, инструкция, заголовок или надпись на кнопке. Сообщение – ключ к диалогу программы с пользователем;
5) создание условия для немедленных и обратимых действий, а также обратной связи (снисходительность). Применение обратной связи и индикатора прогресса – один из важных аспектов интерфейса, имеющих неоценимое значение для повышения комфорта пользователей;
6) создание наиболее понятного пользовательского интерфейса (облегчённость в пользовании).
Принципы создания совместимого интерфейса:
1) проектирование последовательного интерфейса (последовательность). Пользователи должны иметь опорные точки при перемещении в интерфейсе;
Характеристики
Тип файла документ
Документы такого типа открываются такими программами, как Microsoft Office Word на компьютерах Windows, Apple Pages на компьютерах Mac, Open Office - бесплатная альтернатива на различных платформах, в том числе Linux. Наиболее простым и современным решением будут Google документы, так как открываются онлайн без скачивания прямо в браузере на любой платформе. Существуют российские качественные аналоги, например от Яндекса.
Будьте внимательны на мобильных устройствах, так как там используются упрощённый функционал даже в официальном приложении от Microsoft, поэтому для просмотра скачивайте PDF-версию. А если нужно редактировать файл, то используйте оригинальный файл.
Файлы такого типа обычно разбиты на страницы, а текст может быть форматированным (жирный, курсив, выбор шрифта, таблицы и т.п.), а также в него можно добавлять изображения. Формат идеально подходит для рефератов, докладов и РПЗ курсовых проектов, которые необходимо распечатать. Кстати перед печатью также сохраняйте файл в PDF, так как принтер может начудить со шрифтами.