Главная страница
Навигация по странице:

  • Список литературы

  • Приложения

  • Модуль Function

  • Модуль Groutput

  • Жизненные циклыbibliofond_552434. Техническое задание Аналитический раздел 1 Обзор и анализ существующих программных решений


    Скачать 4.55 Mb.
    НазваниеТехническое задание Аналитический раздел 1 Обзор и анализ существующих программных решений
    АнкорЖизненные циклыbibliofond_552434.rtf
    Дата24.02.2023
    Размер4.55 Mb.
    Формат файлаrtf
    Имя файлаbibliofond_552434.rtf
    ТипТехническое задание
    #953352
    страница7 из 7
    1   2   3   4   5   6   7

    4.4 Отладка выявленных ошибок, обнаруженных при тестировании



    Во время выполнения отладки, были использованы следующие методы:

    · unit тестирование;

    · анализ кода без исполнения программы;

    · запуск программы из под отладчика.

    Отладка ряда ошибок прошла успешно, были внесены изменения в интерфейс программы.

    Также были предусмотрены некоторые исключительные ситуации:. Для квадратного корня не была учтена область допустимых значений. А также для операции "деление" не было учтено деление на "0". Для устранения данной ошибки преобразован оператор case:

    case CurrentFunc of



    '/': begin if stemp=0 then begin res: =0; outtextxy (450,65,'false'); end else if SParam<>'0'then begin Res: =FTemp/STemp;; end;

    '√': begin if ftemp <0 then begin res: =0; outtextxy (450,65,'false'); end else Res: =sqrt (Ftemp); end;




    Заключение



    В результате выполнения данного курсового проекта был разработан игровой программный продукт "Калькулятор". При помощи этой программы можно высчитывать определенные арифметические операции. Программа не занимает много места, не требовательна к установленному программному обеспечению.

    Также было проведено исследование полученного программного продукта. В результате были выявлены следующие достоинства и недостатки полученного программного продукта:

    Достоинства:

    · Существует возможность сбрасывать результат;

    · Программный продукт малотребователен к системным ресурсам компьютера.

    Недостатки:

    · Невозможность выполнения некоторых других математических операций;

    · Невозможность сохранения операндов или результатов в памяти программы;

    В целом, поставленная в начале курсового проекта цель была достигнута. В программе выполняются все необходимые функциональные требования.



    Список литературы



    1. Фаронов, В.В. Программирование в Delphi 7: учеб. пособие / В.В. Фаронов. - 7-е изд., перераб. - М.: Нолидж, 2006. - 412с.

    . Ставровский, А.Б. Delphi в задачах и примерах: учеб. для вузов / А.Б. Ставровский. - Киев: BНV, 2004. - 399с.

    . Кнут, Д.Э. Искусство программирования: учеб. пособие: в 3 т.: пер. с англ. Т.1: Основные алгоритмы. - 3-е изд. - М. и др.: Вильямс, 2000. - 720 с.

    . Гловацкая, А.П. Методы и алгоритмы вычислительной математики: учеб. пособие для вузов / А.П. Головыцкая. - М.: Радио и связь, 1999. - 408с.

    . Бежанова, М.М. Практическое программирование: структуры данных и алгоритмы: учеб. для вузов / М.М. Бежанова, Л.А. Москвина, И.В. Поттосин. - М.: Логос, 2001. - 223с.



    Приложения



    Приложение 1
    Листинг программы

    program Calculator;

    uses Functions,GrMouse,GrButton,Graph,GrOutPut,dos,crt;: string=' 7 8 9/< - x^y'+

    ' 4 5 6 * sin cos'+

    ' 1 2 3 - tg ktg'+

    ' 0 с. + = ы'+

    ' P R O E K T';

    {$F+}: array [1.35] of TGrButton;,QuitButton: TGrButton;,SecondEdit: TGrButton;: TMouseStatus;: boolean;GetCaption (i: byte): string;,TempPos,Count: byte;: =0;: =0;x: =1 to Length (Captions) doCaptions [x] =' ' then inc (count);Count=i-2 then TempPos: =x;Count=i-1 then GetCaption: =copy (Captions,TempPos+2,x-TempPos-1);;;ChangeSysOfCount (SysOfCount: TSysCountStr);: string;SysOfCount [1] of

    'D': begin;;SysOfCount [1] of

    'D': begin SysCount: =DEC; DisButtons: =DECindexes; end;;(FParam);(SParam);(false);(SParam);(true);(FParam);;SetGroupEnabled (SysOfCount: TSysCountStr);: =ALLnumbers;i: =2 to 35 doi in DisButtons thenButtons [i] donot Enabled then(true);(SysOFCount);i: =2 to 35 doi in DisButtons then[i]. SetEnabled (False);: ='';;DrawingSquareOfButt (MaxTopInc,LeftOffs,TopOffs,BStartInd,BCount: word);: =0;j<=MaxTopInc doi: =BStartInd-1 to BStartInd+BCount-2 do[j+i+1]. Left: =i*50+LeftOffs;[j+i+1]. Top: =j*7+TopOffs;[j+i+1]. Draw;;(j,7);;;Action;: =true;;SetRadioClick (var ActButt,DisAct1,DisAct2: TGrButton);ActButt. FillColor=ActButt. FillColor then. FillColor: =ActButt. PressedColor;. FillColor: =1;. FillColor: =1;. Fill (ActButt. PressedColor);. Fill (DisAct1. FillColor);. FIll (DisAct2. FillColor);;;SetDECsys;(Buttons [8],Buttons [1],Buttons [15]);('DEC');;FstAction;(FirstEdit. FillColor=1) then. FillColor: =4;. FillColor: =1;. Draw;. Draw;(true);: =false;;;SndAction;(SecondEdit. FillColor=1) then. FillColor: =1;. FillColor: =4;. Draw;. Draw;(false);;;;;. Init;. Init;. Init;. Init;i: =1 to 35 doButtons [i] do;: =GetCaption (i+1);;QuitButton do: =140;: =GetMaxY-50;: =20;: =370;: ='Quit';;;CEButton do: =GetMaxX-220;: =80;: =30;: =85;: ='CE';;;FirstEdit do: =GetMaxX-55;: =120;: ='Fst';: =4;;;SecondEdit do: =GetMaxX-55;: =170;: ='Snd';;;(30,140,1200,1,1);(30,170,120,2,6);(5,5,GetMaxX-5,GetMaxY-5);(OutXs,OutYs,OutXf,OutYf);

    {/*End of drawing*/};;;[1]. PressedColor: =8;[8]. PressedColor: =8;[15]. PressedColor: =8;('DEC');(Buttons [8],Buttons [1],Buttons [15]);[8]. Action: =SetDECsys;[6]. Action: =BackSpaceSymbol;[24]. Action: =SetPlusMines;[27]. Action: =GetResult;

    {*************************}not Quit doi: =1 to 35 doButtons [i] doonClick (Action,MouseStatus) then(Length (Caption) =1) then(Caption [1] in SysCount) then(Caption);: =false;;(Caption [1]);Caption [1] ='с' then Calculated: =false;;: =0;KeyPressed then: =Ord (readkey);Key of

    .57,46,97.103:UpCase (Char (Key)) in SysCount then(UpCase (Char (Key)));: =false;;

    : begin;: =false;;

    : SetEnterMode ('*'); {*}

    : SetEnterMode ('+'); {+}

    : SetEnterMode ('-'); {-}

    : SetEnterMode ('/'); {/}

    : exit;;;;. onClick (Action,MouseStatus);. OnClick (CEClick,MouseStatus);FirstEdit. OnClick (FstAction,MouseStatus) or (FActive) then FstAction;SecondEdit. OnClick (SndAction,MouseStatus) or (SActive) then SndAction;;;.

    Модуль Function

    unit Functions;

    {$F+} {$N+}Graph,GrOutPut;SetEnterMode (Func: char);GetResult;FilterExpValue (var Par: StrParam);IntToStr (Param: word): String;: string;: word;(Param,Temp);: =Temp;;FilterExpValue (var Par: StrParam);degree,mant,NullStr: string;,e,DotPos,ExpPos: integer;,minus: boolean;: integer;Par [1] ='-' then minus: =trueminus: =false;: =Pos ('. ',Par);: =Pos ('E',Par);: ='';: ='';: =false;

    {**************}ExpPos=0 then exit;: =Copy (Par,ExpPos+1,Length (Par) - ExpPos);: =Copy (Par,DotPos-1,ExpPos-DotPos+1);(Degree, IntDegree,e);(IntDegree>0)begini: =1 to IntDegreebegin: =Pos ('. ',mant);(mant,DotPos,1);('. ',mant,DotPos+1);;;(IntDegree<0)begini: =1 to - IntDegreebegin('0',mant,1);: =Pos ('. ',mant);(mant,DotPos,1);('. ',mant,2);;;: =Length (mant);(mant [i] ='0')begin(mant, i,1);: =i-1;;mant [Length (mant)] ='. 'Delete (mant,Length (mant),1);minus then insert ('-',mant,1);: =mant;;ExcludeMines (Par: boolean);Par thenPos ('-',FParam) <>0 then(FParam,1,1);Pos ('-',SParam) <>0 then(SParam,1,1);elsePos ('-',FParam) =0 then: ='-'+FParam;Pos ('-',SParam) =0 then: ='-'+SParam;;;Value (FPar,SPar: StrParam; var FTemp,STemp);: word;(FPar,Extended (FTemp),e);(SPar,Extended (STemp),e);;Operation: string;,STemp,Res: extended;,Answer: StrParam;,RetBin,Ex: boolean;: word;

    {******************}

    {******************}: =false;: =false;(FParam,SParam,FTemp,STemp);: =false; {*used for exit after odnomest function*}CurrentFunc of

    '+': Res: =FTemp+STemp;

    '-': Res: =FTemp-STemp;

    '*': Res: =FTemp*STemp;

    '/': if SParam<>'0'then Res: =FTemp/STemp;

    's': Res: =sin (ftemp);

    'c': Res: =cos (ftemp);

    't': Res: = (sin (ftemp) /cos (ftemp));

    'k': Res: = (cos (ftemp) /sin (ftemp));

    '√': Res: =sqrt (Ftemp);

    'x': Res: =exp (ln (Ftemp) *stemp);;(Res,St);Ex then exit;(st);(SParam);(FParam);: =St;: =st;: =#0;(Result);;;SetEnterMode (Func: char);(Func in AllOper) then(Length (FParam) =0) or (FParam='0') then(true);elseFunc in ['n','p'] then: =Func;;;;(False);CurrentFunc=#0 then: =Func;;Calculated then: =Operation;;Calculated then: =Result;;(true);(FParam);(false);: =false;: ='';: ='';else(Length (SParam) >0) and (SParam<>'0') then(FParam);(SParam);: =Operation;;;;;GetResult;not Calculated thenCurrentFunc<>#0 then: =Operation;;.

    Модуль Groutput

    unit GrOutPut;

    {$N+}Graph;=string [64];=Procedure;=record: char;: StrParam;;=record,y1,x2,y2: word;;

    {Output controls}=30;=20;=600;=60;

    {***************}

    {All ordinal operations}= ['+','-','*','/','c','s','t','k','√','x'];

    {**********************}= ['0'. '9','. '];

    {*****************************************}= [2,3,4,9,10,11,16,17,18,23,30.35];= [30.35];

    {***********************************}=13;=36;CheckOutPut (var Out: StrParam);ClearOutPut;ClrResOut;SetFActive (param: boolean);TextToOut (Out: StrParam);AddToOutPut (Param: string);SetPlusMines;ResultToScreen;BackSpaceSymbol;CEClick;CurrentFuncToScr;ClearCurrentFunc;,FParam,SParam: StrParam;: TMem;: set of char;: set of byte;: char;,Operation, i,j,Middle,Key: word;,SActive,Calculated: boolean;CheckOutPut (var Out: StrParam);: boolean;: =1;: =false;Pos ('-',Out) <>0 then(Out,1,1);: =true;;Pos (' ',Out) <>0 do delete (Out,Pos (' ',Out),1);i<=Length (Out) doOut [i] ='. ' theni<>Pos ('. ',Out) then(Out, i,1);: =i-1;;(i);;Out [2] <>'. ' then(Out [1] ='0') or (Out [1] ='. ') doLength (Out) >1 then Delete (Out,1,1) else;Out [1] ='. ' then Out: ='0'+Out;Out [Length (Out)] ='. ' then Out: =Out+'0';Length (Out) =0 then Out: ='0';MinesState thenPos ('-',Out) =0 then: ='-'+Out;;SetFActive (param: boolean);: =Param;: =not Param;;BackSpaceSymbol;: =false;FActive of:FParam<>'0' then(FParam,Length (FParam),1);(FParam);;:SParam<>'0' then(SParam,Length (SParam),1);(SParam);;;;ClrResOut;(OutXs+1,OutYs+FParamOfs+8,OutXf-1,OutYf-3,true);;(0,0,GetMaxX,GetMaxY,true);;TextToOut (Out: StrParam);FActive of: SetViewPort (OutXs+1,OutYs+3,OutXf-1,OutYs+FParamOfs-1,true);: SetViewPort (OutXs+1,OutYs+FParamOfs,OutXf-1,OutYf-3,true);;;(Out);;FActive of: begin OutTextXY (OutXf-40-TextWidth (Out) div 2,4,Out); ClrResOut; end;: OutTextXY (OutXf-40-TextWidth (Out) div 2,4,Out);;(0,0,GetMaxX,GetMaxY,true);;ResultToScreen;(OutXs+1,OutYs+23,OutXf-1,OutYf-1,true);;(OutXf-40-TextWidth (Result),2,OutXf-40,2);(OutXf-40-TextWidth (Result) div 2,9,Result);: =true;(0,0,GetMaxX,GetMaxY,true);;CEClick;: =0;;: =false;FActive of: begin FParam: ='0'; TextToOut ('0');(false); TextToOut (SParam);(true); end;: begin SParam: ='0'; TextToOut ('0');(true); TextToOut (FParam);(false); end;;('0');(true);;AddToOutPut (Param: string);: string;;FActive of: beginSysCount=Dec thenPos ('E',FParam) <>0 then FParam: ='0';: =FParam+Param;(FParam);;: beginSysCount=Dec thenPos ('E',SParam) <>0 then SParam: ='0';: =SParam+Param;(SParam);;;;;AddDelMines (var Param: StrParam);(Length (Param) >=1) and

    (Param<>'0') and (Param<>'0.0') thenPos ('-',Param) =0 then: ='-'+Param;(Param);(Param);else(Param,1,1);(Param);(Param);;;SetPlusMines;FActive of: AddDelMines (FParam);: AddDelMines (SParam);;;ClearCurrentFunc;: ViewPortType;(ViewPort);(OutXs+1,OutYs+6,OutXf-20-Middle,OutYs+14,true);;ViewPort do(x1,y1,x2,y2,Clip);;CurrentFuncToScr;: ViewPortType;

    {if CurrentFunc=#0 then exit; }(ViewPort);

    {**************}TextWidth (FParam) >TextWidth (SParam) then: =TextWidth (FParam)Middle: =TextWidth (SParam);

    {**************}(OutXs+1,OutYs+6,OutXf-30-Middle,OutYs+14,true);;

    {**************}(OutXf-OutXs-40-Middle,5,CurrentFunc);

    {**************}ViewPort do(x1,y1,x2,y2,Clip);;ClearOutPut;(OutXs+1,OutYs+1,OutXf-1,OutYf-1,true);;(0,0,GetMaxX,GetMaxY,true);;: =true;: =false;: =#0;: =DEC;: =false;: ='0';: ='0';: ='';

    en

    Приложение 2
    Графический интерфейс программы


    Рис.1. Графический интерфейс программы


    Рис.2. Программа во время работы
    1   2   3   4   5   6   7


    написать администратору сайта