Технологии программирования

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

Северо-Кавказский государственный технический университет

Институт ускоренной подготовки

Курсовая работа по дисциплине   «Технологии программирования»

на тему:

Выполнил:

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

Проверил:

 

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

Содержание  TOC \o "1-3" \h \z

1 Введение. \h 4

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

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

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

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

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

Текст основной программы на языке Borland Delphi 7.0 для Windows. \h 13

Список литературы.. \h 17

  1 Введение

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

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

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

2 Основная часть

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

  Еще, пожалуй, будет полезна информация о том, что во всяком треугольнике сумма углов равна 180°.

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

a2  = b2 + c2 – 2b пр AC AB  (1)

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

a2  = b2 + c2 – 2bx

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

a2  = b2 + c2 +2bx

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

a2  = b2 + c2

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

a2  = b2 + c2 – 2b cos A (2)

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

cos A =( b2 + c2 – a2 ) / 2 ·  b · c(3)

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

cos B =( a2 + c2 – b2 ) / 2 · a · c (4)

cos C =( a2 + b2 – c2 ) / 2 · a · b (5)

Теперь, зная косинус угла, можно вычислить сам угол. Угол меньше 90°

острый; равный 90° – прямой; больше 90° соответственно тупоугольный. Угол вычисляется при помощи обратной тригонометрической функции arccos(x). Арккосинус икс есть угол, косинус которого равен икс.

A =  arccos( b2 + c2 – a2  ) / 2 · b · c (6)

B =  arccos( a2 + c2 – b2  ) / 2 · a · c (7)

C =  arccos( a2 + b2 – c2  ) / 2 · a · b (8)

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

3 Руководство пользователя

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

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

·       

·       

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

Посчитав, программа выдаст результат в следующем виде:

 4 Тестирование приложения

Рассмотрим решение поставленной задачи на конкретном примере. Предположим, нам дан треугольник со сторонами соответственно 5, 6, 8. Следуя алгоритму программы получается очень простое и компактное выражение. Хотя при хорошем стиле программирования можно было бы разбить выражение на несколько логических блоков, придерживаясь стиля KIS[1]. Приступим к определению типа треугольника, используя формулы.

A =  arccos( b2 + c2 – a2  ) / 2 · b · c (6)

B =  arccos( a2 + c2 – b2  ) / 2 · a · c (7)

C =  arccos( a2 + b2 – c2  ) / 2 · a · b (8)

 

A = arccos( 62 + 82 – 52  ) / 2 · 6 · 8 = 38.62 °

B =  arccos( 52 + 82 – 62  ) / 2 · 5 · 8 = 48.5°

C =  arccos( 52 + 62 – 82  ) / 2 · 5 · 6 = 92.87°

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

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

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

1.    

2.    

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

4.    

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

5 Заключение

В ходе выполнения данного курсового проекта была составлена программа для определения вида треугольника по его трем сторонам. Программу можно модернизировать, введя такую инновацию, как графическое изображение получившегося треугольника с цветовыми вариациями линий и фона рисунка. Также возможно оптимизировать «ловушки» ошибок и исключений. В некоторых случаях рациональное введение -  замена структуры if…else на switch…case, что соответствовало бы требованиям структурного программирования. Что же касается использования типа данных, то для экономия памяти, используемой программой следует заменить тип extended на real, в данной программе я не стала так делать для достижения должной точности. В Windows XP Professional®  распределением оперативной памяти занимается сама операционная система. Узнать, как Win XP управляет ОЗУ[2] и файлом подкачки, можно щелкнув на иконке мой компьютер правой кнопкой мышки,  затем выбрать Свойства –> Дополнительно –> Использование памяти –> или

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

Приложение 1

Текст основной программы на языке Borland Delphi 7.0 для Windows

unit Unit1;

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

procedure TForm1.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.

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

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

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

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

4.    

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


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

[2] ОЗУ – Оперативное Запоминающее Устройство