Реферат: Технологии программирования

Министерствообразования Российской Федерации

Северо-Кавказский государственный техническийуниверситетИнститут ускореннойподготовкиКурсоваяработа по дисциплине   «Технологиипрограммирования»

<img src="/cache/referats/21716/image001.gif" v:shapes="_x0000_s1074 _x0000_s1075 _x0000_s1076 _x0000_s1077">на тему:

 

 

 

 

 

 

Выполнил:

студентка группы

Проверил:

 

Ставрополь, 2005 г.

Содержание TOCo«1-3» hz

1 Введение. PAGEREF _Toc94495289 h 4

2 Основная часть. PAGEREF _Toc94495290 h 5

3 Руководство пользователя. PAGEREF _Toc94495291 h 8

4 Тестирование приложения. PAGEREF _Toc94495292 h 10

5 Заключение. PAGEREF _Toc94495293 h 12

Приложение 1. PAGEREF _Toc94495294 h 13

Текст основнойпрограммы на языке BorlandDelphi7.0 дляWindows. PAGEREF _Toc94495295 h 13

Список литературы… PAGEREF _Toc94495296 h 17

 
1Введение

Для разработки курсовогопроекта была предоставлена задача: определить тупоугольный ли, остроугольный,прямоугольный перед нами треугольник по трем его сторонам.

Существует несколько методоврешения поставленной задачи. Первый метод напрямую связан с прямоугольнойпроекцией и соотношениями между углами треугольника, сюда также вовлеченытригонометрические отношения. Второй, основан на прямоугольных проекциях. Всяработа выполнена в программной среде Delphi 7.0 0 фирмы-производителя Borland – ведущего производителяинструментального программного обеспечения в мире. BorlandSoftware Corporation (Nasdaq NM: BORL) – лидирующий поставщик систем, упрощающихразработку, развертывание и интегрирование приложений. Компания Borland основана в 1983, фирма имеет представительстваболее чем в 20 странах. Delphi-  это мощная система, предназначеннаядля быстрой разработки приложений самого разного характера и назначения.

В своем курсовом проекте яиспользовала следующую литературу: Л.С. Атанасян«Геометрия» и М.Я. Выгодский «Справочник по элементарной математике».

<span Times New Roman",«serif»; mso-fareast-font-family:«Times New Roman»;mso-bidi-font-family:Arial; mso-font-kerning:14.0pt;mso-ansi-language:RU;mso-fareast-language:RU; mso-bidi-language:AR-SA">
2 Основнаячасть

         Начнем  работу над курсовым проектом с аналитическогорешения: во-первых, нужно определиться, что такое треугольник вообще и выяснить его основные признаки. Треугольник– многоугольник с тремя сторонами. Если все три угла острые, то треугольникостроугольный; если один из углов прямой – прямоугольный. Если одиниз углов тупой, треугольник тупоугольный.

  Еще, пожалуй, будет полезна информация о том,что во всяком треугольнике сумма углов равна 180<span Times New Roman CYR",«serif»">°

.

Теперь, обладая начальнойинформацией можно переходить к методам решения задачи. Рассмотрим первый метод.Стоит стразу оговориться, что этот метод нам не подходит, почему – будетобъяснено ниже после описания самой структуры решения. Определение: прямоугольнойпроекцией (просто проекцией) точки на прямую называется основаниеперпендикуляра, опущенного из этой точки на прямую. Квадрат сторонытреугольника равен сумме квадратов двух других сторон без удвоенного произведенияодной из этих сторон на взятую на ней проекцию другой. Сообразно этомуопределению получаем:<span Arial",«sans-serif»">

<span Arial",«sans-serif»;mso-ansi-language:EN-US">a2

<span Arial",«sans-serif»"><img src="/cache/referats/21716/image003.gif" v:shapes="_x0000_i1025"><span Arial",«sans-serif»; mso-ansi-language:EN-US"> = b2+ c2 – 2b <span Arial",«sans-serif»">пр<span Arial",«sans-serif»;mso-ansi-language:EN-US"> ACAB (1)

Если х обозначает длину проекции(положительное число), то, когда угол А острый:

<span Arial",«sans-serif»;mso-ansi-language:EN-US">a2

<span Arial",«sans-serif»"><img src="/cache/referats/21716/image003.gif" v:shapes="_x0000_i1026"><span Arial",«sans-serif»; mso-ansi-language:EN-US"> = b2+ c2 – 2bx

а когда угол А тупой, то

<span Arial",«sans-serif»;mso-ansi-language:EN-US">a2

<span Arial",«sans-serif»"><img src="/cache/referats/21716/image003.gif" v:shapes="_x0000_i1027"><span Arial",«sans-serif»; mso-ansi-language:EN-US"> = b2+ c2 +2bx

прямой угол А:

<span Arial",«sans-serif»;mso-ansi-language:EN-US">a

<span Arial",«sans-serif»">2<span Arial",«sans-serif»"> <img src="/cache/referats/21716/image003.gif" v:shapes="_x0000_i1028"> = <span Arial",«sans-serif»;mso-ansi-language:EN-US">b<span Arial",«sans-serif»">2<span Arial",«sans-serif»"> + <span Arial",«sans-serif»; mso-ansi-language:EN-US">c<span Arial",«sans-serif»">2

Из первого метода решениявытекает второй, которым я воспользуюсь в процессе создания программы. Формулу(1) можно представить в виде:

<span Arial",«sans-serif»;mso-ansi-language:EN-US">a2

<span Arial",«sans-serif»"><img src="/cache/referats/21716/image003.gif" v:shapes="_x0000_i1029"><span Arial",«sans-serif»; mso-ansi-language:EN-US"> = b2+ c2 – 2b cos A (2)

Стоит объяснить, почему нам не подходит первый метод. Проекциипредполагают графическое построение треугольника, что в моем случае не тольконецелесообразно, а просто не требуется поставленной задачей.  Из формулы (2) соответственно:

<span Arial",«sans-serif»;mso-ansi-language:EN-US">cos

<span Arial",«sans-serif»;mso-ansi-language:EN-US"> A=( b2 + c2 – a2) <span Arial",«sans-serif»;mso-ansi-language:EN-US">/2<span Arial CYR",«sans-serif»; mso-bidi-font-family:«Times New Roman»;mso-ansi-language:EN-US"> <span Arial CYR",«sans-serif»; mso-bidi-font-family:«Times New Roman»;mso-ansi-language:EN-US">·<span MS Shell Dlg",«sans-serif»; mso-ansi-language:EN-US">  b <span Arial CYR",«sans-serif»; mso-bidi-font-family:«Times New Roman»;mso-ansi-language:EN-US">· c(3)

С помощью заменыбукв получаются остальные две формулы для оставшихся углов:

<span Arial",«sans-serif»;mso-ansi-language:EN-US">cos

<span Arial",«sans-serif»;mso-ansi-language:EN-US"> B=( a2 + c2 – b2) <span Arial",«sans-serif»;mso-ansi-language:EN-US">/2<span Arial CYR",«sans-serif»; mso-bidi-font-family:«Times New Roman»;mso-ansi-language:EN-US"> <span Arial CYR",«sans-serif»; mso-bidi-font-family:«Times New Roman»;mso-ansi-language:EN-US">· a<span Arial CYR",«sans-serif»; mso-bidi-font-family:«Times New Roman»;mso-ansi-language:EN-US">· c (4)

<span Arial",«sans-serif»;mso-ansi-language:EN-US">cos

<span Arial",«sans-serif»;mso-ansi-language:EN-US"> C=( a2 + b2 – c2) <span Arial",«sans-serif»;mso-ansi-language:EN-US">/2<span Arial CYR",«sans-serif»; mso-bidi-font-family:«Times New Roman»;mso-ansi-language:EN-US"> <span Arial CYR",«sans-serif»; mso-bidi-font-family:«Times New Roman»;mso-ansi-language:EN-US">· a<span Arial CYR",«sans-serif»; mso-bidi-font-family:«Times New Roman»;mso-ansi-language:EN-US">· b (5)

Теперь, зная косинус угла, можно вычислить сам угол. Угол меньше 90<span Times New Roman CYR",«serif»">°

<span MS Shell Dlg",«sans-serif»">

острый; равный 90<span Times New Roman CYR",«serif»">°

– прямой; больше 90<span Times New Roman CYR",«serif»">°соответственно тупоугольный. Уголвычисляется при помощи обратной тригонометрической функции arccos(x). Арккосинус икс есть угол, косинускоторого равен икс.

<span Arial",«sans-serif»;mso-ansi-language:EN-US">A =  arccos( b2+ c2 – a2

  ) <span Arial",«sans-serif»;mso-ansi-language:EN-US">/ 2<span Arial CYR",«sans-serif»;mso-bidi-font-family:«Times New Roman»; mso-ansi-language:EN-US">· b · c(6)

<span Arial",«sans-serif»;mso-ansi-language:EN-US">B =  arccos( a2+ c2 – b2

  ) <span Arial",«sans-serif»;mso-ansi-language:EN-US">/ 2<span Arial CYR",«sans-serif»;mso-bidi-font-family:«Times New Roman»; mso-ansi-language:EN-US">· <span Arial",«sans-serif»; mso-ansi-language:EN-US">a <span Arial CYR",«sans-serif»;mso-bidi-font-family: «Times New Roman»;mso-ansi-language:EN-US">· c<span Arial",«sans-serif»;mso-ansi-language:EN-US"> (7)

<span Arial",«sans-serif»;mso-ansi-language:EN-US">C =  arccos( a2+ b2 – c2

  ) <span Arial",«sans-serif»;mso-ansi-language:EN-US">/ 2<span Arial CYR",«sans-serif»;mso-bidi-font-family:«Times New Roman»; mso-ansi-language:EN-US">· a · b<span Arial",«sans-serif»;mso-ansi-language:EN-US"> (8)

Реализациюалгоритма в блок-схеме можно увидеть на следующей странице.

<img src="/cache/referats/21716/image005.gif" v:shapes="_x0000_i1030">

<span Times New Roman",«serif»; mso-fareast-font-family:«Times New Roman»;mso-bidi-font-family:Arial; mso-font-kerning:14.0pt;mso-ansi-language:RU;mso-fareast-language:RU; mso-bidi-language:AR-SA">
3 Руководствопользователя

Пользоваться данной программойочень просто: начинать работу с нажатия кнопки или просто нажать кнопку Enter.

<img src="/cache/referats/21716/image006.gif" v:shapes="_x0000_i1031">

После следует ввести три числа,соответственно являющиеся сторонами треугольника. На ввод существует несколькоограничений:

·<span Times New Roman"">       

·<span Times New Roman"">       

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

<img src="/cache/referats/21716/image007.gif" v:shapes="_x0000_i1032">

<img src="/cache/referats/21716/image008.gif" v:shapes="_x0000_i1033">

<img src="/cache/referats/21716/image009.gif" v:shapes="_x0000_s1079">
Посчитав, программа выдаст результат в следующем виде:

<span Times New Roman",«serif»; mso-fareast-font-family:«Times New Roman»;mso-bidi-font-family:Arial; mso-font-kerning:14.0pt;mso-ansi-language:RU;mso-fareast-language:RU; mso-bidi-language:AR-SA">
 4Тестирование приложения

Рассмотрим решение поставленнойзадачи на конкретном примере. Предположим, нам дан треугольник со сторонамисоответственно 5, 6, 8. Следуя алгоритму программы получается очень простое икомпактное выражение. Хотя при хорошем стиле программирования можно было быразбить выражение на несколько логических блоков, придерживаясь стиля KIS<span Times New Roman",«serif»;mso-fareast-font-family:«Times New Roman»; mso-font-kerning:14.0pt;mso-ansi-language:EN-US;mso-fareast-language:RU; mso-bidi-language:AR-SA">[1]

.Приступим к определению типа треугольника, используя формулы.

<span Arial",«sans-serif»;mso-ansi-language:EN-US">A =  arccos( b2+ c2 – a2

  ) <span Arial",«sans-serif»;mso-ansi-language:EN-US">/ 2<span Arial CYR",«sans-serif»;mso-bidi-font-family:«Times New Roman»; mso-ansi-language:EN-US">· b · c(6)

<span Arial",«sans-serif»;mso-ansi-language:EN-US">B =  arccos( a2+ c2 – b2

  ) <span Arial",«sans-serif»;mso-ansi-language:EN-US">/ 2<span Arial CYR",«sans-serif»;mso-bidi-font-family:«Times New Roman»; mso-ansi-language:EN-US">· <span Arial",«sans-serif»; mso-ansi-language:EN-US">a <span Arial CYR",«sans-serif»;mso-bidi-font-family: «Times New Roman»;mso-ansi-language:EN-US">· c<span Arial",«sans-serif»;mso-ansi-language:EN-US"> (7)

<span Arial",«sans-serif»;mso-ansi-language:EN-US">C =  arccos( a2+ b2 – c2

  ) <span Arial",«sans-serif»;mso-ansi-language:EN-US">/ 2<span Arial CYR",«sans-serif»;mso-bidi-font-family:«Times New Roman»; mso-ansi-language:EN-US">· a · b<span Arial",«sans-serif»;mso-ansi-language:EN-US"> (8)

 

A = arccos( 62+ 82 – 52  ) / 2 <span Arial CYR",«sans-serif»; mso-bidi-font-family:«Times New Roman»;mso-ansi-language:EN-US">· 6 · 8 = 38.62

<span Arial CYR",«sans-serif»; mso-ansi-language:EN-US;mso-bidi-font-weight:bold"> <span Arial CYR",«sans-serif»; mso-ansi-language:EN-US;mso-bidi-font-weight:bold">°<span MS Shell Dlg",«sans-serif»; mso-ansi-language:EN-US;mso-bidi-font-weight:bold">

B =  arccos( 52 + 82 – 62  ) / 2 <span Arial CYR",«sans-serif»; mso-bidi-font-family:«Times New Roman»;mso-ansi-language:EN-US">· 5

<span Arial CYR",«sans-serif»; mso-bidi-font-family:«Times New Roman»;mso-ansi-language:EN-US">· 8 = 48.5<span Arial CYR",«sans-serif»; mso-ansi-language:EN-US;mso-bidi-font-weight:bold">°

C =  arccos( 52 + 62 – 82  ) / 2 <span Arial CYR",«sans-serif»; mso-bidi-font-family:«Times New Roman»;mso-ansi-language:EN-US">· 5 · 6 = 92.87

<span Arial CYR",«sans-serif»; mso-ansi-language:EN-US;mso-bidi-font-weight:bold">°

<span Arial CYR",«sans-serif»; mso-ansi-language:EN-US;mso-bidi-font-weight:bold">

По значениям углов можносделать вывод, что треугольник тупоугольный. Логику программы по этому пунктуможно будет просмотреть в блок-схеме и листинге программы в комментариях.Вышеприведенное тестирование называется структурным. Существует множество методовструктурного (по маршруту) тестирования. Например, покрытие операторов,покрытие решений, условий, комбинаторное покрытие.

Если у тестеров нет исходников программы, применяют функциональноетестирование, так называемый черный ящик. Функциональное тестирование -  выяснение обстоятельств, при которыхпрограмма не будет соответствовать спецификациям. Также как и в структурномтестировании, в этом случае есть несколько методов.

Стоит остановиться на методахпоподробнее:

1.<span Times New Roman"">    

2.<span Times New Roman"">    

3.<span Times New Roman"">    

причинно-следсвенныхсвязей;

4.<span Times New Roman"">    

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

<span Times New Roman",«serif»; mso-fareast-font-family:«Times New Roman»;mso-bidi-font-family:Arial; mso-font-kerning:14.0pt;mso-ansi-language:RU;mso-fareast-language:RU; mso-bidi-language:AR-SA">
5 Заключение

В ходе выполнения данногокурсового проекта была составлена программа для определения вида треугольникапо его трем сторонам. Программу можно модернизировать, введя такую инновацию,как графическое изображение получившегося треугольника с цветовыми вариациямилиний и фона рисунка. Также возможно оптимизировать «ловушки» ошибок иисключений. В некоторых случаях рациональное введение -  замена структуры if…else на switch…case, что соответствовало бытребованиям структурного программирования. Что же касается использования типаданных, то для экономия памяти, используемой программой следует заменить тип extended на real, в данной программе я не стала такделать для достижения должной точности. В WindowsXPProfessional<span Arial",«sans-serif»;mso-bidi-font-family:«Times New Roman»; mso-font-kerning:0pt">®

 распределением оперативной памяти занимается сама операционная система.Узнать, как WinXPуправляет ОЗУ<span Times New Roman",«serif»;mso-fareast-font-family:«Times New Roman»; mso-ansi-language:RU;mso-fareast-language:RU;mso-bidi-language:AR-SA">[2]и файлом подкачки, можно щелкнув на иконке мой компьютер правой кнопкоймышки,  затем выбрать Свойства –>Дополнительно –> Использование памяти –> или

Виртуальная память.

<span Times New Roman",«serif»; mso-fareast-font-family:«Times New Roman»;mso-bidi-font-family:Arial; mso-font-kerning:14.0pt;mso-ansi-language:RU;mso-fareast-language:RU; mso-bidi-language:AR-SA">
Приложение1Текст основной программы на языке BorlandDelphi7.0 для Windows

unitUnit1;

interface

uses

  Windows, Messages, SysUtils,Variants, Classes, Graphics, Controls, Forms,

  Dialogs, StdCtrls,Math;

type

  TForm1 = class(TForm)

    Label1: TLabel;

    Button1: TButton;

    Label2: TLabel;

    Label3: TLabel;

    Label4: TLabel;

    Label5: TLabel;

    Label6: TLabel;

    Label7: TLabel;

    Label8: TLabel;

    Label9: TLabel;

    procedure Button1Click(Sender: TObject);

  private

    { Private declarations }

  public

    { Public declarations }

  end;

7

var

  Form1: TForm1; Label1: TLabel;

  A: extended; B: extended;  C: extended ;

  i: integer;  a1, B1, C1: extended;

implementation

procedureTForm1.Button1Click(Sender: TObject);

   label start;

begin

  {$R *.dfm}

//Ввод сторон треугольника

   i:= 0;

   start:

   A:= StrToFloat(InputBox('Введите А','Введите А','0'));

   B:= StrToFloat(InputBox('Введите B', 'Введите B','0'));

   C:= StrToFloat(InputBox('Введите C', 'Введите C','0'));

   Button1.Visible := false;

   Label1.Visible := true;

   Label2.Visible := true;

   Label3.Visible := true;

   Label1.Caption := ('A =')+FloatToStr(a);

   Label2.Caption := ('B = ')+FloatToStr(b);

   Label3.Caption := ('C = ')+FloatToStr(c);

   Label7.Visible := true;  

 

 Label7.Caption := 'Стороны треугольника:';

   if(a+b <c) or (a+c <b) or (b+c<a) or (a<= 0) or (b <= 0) or (c <= 0)then begin

      ShowMessage('Неверныйввод, введите число > 0');

      i:=i+1;

      if(i>2) then

         exit;

      goto start;

   end;// end;

   Label8.Visible := true; Label8.Caption := 'Углы треугольника:';

   Label4.Visible := true;

   Label5.Visible := true;

  Label6.Visible := true;

   A1 := ((arccos((b*b+c*c-a*a)/(2*b*c)))*180)/Pi;

   B1 := ((arccos((A*A+c*c-B*B)/(2*A*c)))*180)/Pi;

   C1 := ((arccos((b*b+A*A-C*C)/(2*b*A)))*180)/Pi; //Вычислениеуглов

   Label4.Caption := FloatToStr(a1);

   Label5.Caption := FloatToStr(B1);

   Label6.Caption := FloatToStr(C1);

   //Определение треугольника по егоуглу

   if(a1 = 90)or(b1 = 90)or(c1 = 90) then begin

       Label9.Visible := true; Label9.Caption:= 'Треугольник прямоугольный';

   end;

   if(a1 > 90)or(b1 > 90) or (c1 > 90)then begin

          Label9.Visible := true; Label9.Caption:= 'Треугольник тупоугольный';

   end;

   if(a1 < 90)and(b1 < 90)and(c1 < 90)then begin

          Label9.Visible := true;Label9.Caption := 'Треугольник остроугольный';

   end;

end;

end.

<span Times New Roman",«serif»; mso-fareast-font-family:«Times New Roman»;mso-bidi-font-family:Arial; mso-font-kerning:14.0pt;mso-ansi-language:RU;mso-fareast-language:RU; mso-bidi-language:AR-SA">
Списоклитературы

1.<span Times New Roman"">    

Анатолий Хомоненко, Владимир Гофман, ЕвгенийМещеряков, Владимир Никифоров «Delphi7». – С-Пб.: “БХВ-Петербург”,2004 г. – 1216 с.

2.<span Times New Roman"">    

 Х.М. Дейтел,П.Дж. Дейтел «Какпрограммировать на С». – М.:  ЗАО«Издательство Бином», 2000 г. – 1008 с.: ил.

3.<span Times New Roman"">    

Атанасян, В.Ф. Бутузов,С.Б. Кадомцев и др. «Геометрия». – М.: Просвещение,1990 г. – 336 с.: ил.

4.<span Times New Roman"">    

5.<span Times New Roman"">    

Шипачев «Высшаяматематика». – М.: Высш. Школа, 1996 г. – 479 с.: ил.

<span Times New Roman",«serif»;mso-fareast-font-family: «Times New Roman»;mso-ansi-language:RU;mso-fareast-language:RU;mso-bidi-language: AR-SA">[1]

KIS – Keep It Simple – Делайпроще

<span Times New Roman",«serif»;mso-fareast-font-family: «Times New Roman»;mso-ansi-language:RU;mso-fareast-language:RU;mso-bidi-language: AR-SA">[2]

ОЗУ – ОперативноеЗапоминающее Устройство
еще рефераты
Еще работы по программированию, базе данных