Министерствообразования Российской ФедерацииСеверо-Кавказский государственный техническийуниверситетИнститут ускореннойподготовкиКурсоваяработа по дисциплине «Технологиипрограммирования»
на тему:
Выполнил:
студентка группы
Проверил:
Ставрополь, 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- это мощная система, предназначеннаядля быстрой разработки приложений самого разного характера и назначения.
В своем курсовом проекте яиспользовала следующую литературу: Л.С. Атанасян«Геометрия» и М.Я. Выгодский «Справочник по элементарной математике».
2 Основнаячасть
Начнем работу над курсовым проектом с аналитическогорешения: во-первых, нужно определиться, что такое треугольник вообще и выяснить его основные признаки. Треугольник– многоугольник с тремя сторонами. Если все три угла острые, то треугольникостроугольный; если один из углов прямой – прямоугольный. Если одиниз углов тупой, треугольник тупоугольный.
Еще, пожалуй, будет полезна информация о том,что во всяком треугольнике сумма углов равна 180°.
Теперь, обладая начальнойинформацией можно переходить к методам решения задачи. Рассмотрим первый метод.Стоит стразу оговориться, что этот метод нам не подходит, почему – будетобъяснено ниже после описания самой структуры решения. Определение: прямоугольнойпроекцией (просто проекцией) точки на прямую называется основаниеперпендикуляра, опущенного из этой точки на прямую. Квадрат сторонытреугольника равен сумме квадратов двух других сторон без удвоенного произведенияодной из этих сторон на взятую на ней проекцию другой. Сообразно этомуопределению получаем:
a2 = b2+ c2 – 2b пр ACAB (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, в данной программе я не стала такделать для достижения должной точности. В WindowsXPProfessional® распределением оперативной памяти занимается сама операционная система.Узнать, как WinXPуправляет ОЗУ[2]и файлом подкачки, можно щелкнув на иконке мой компьютер правой кнопкоймышки, затем выбрать Свойства –>Дополнительно –> Использование памяти –> или
Виртуальная память.
Приложение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
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
Label9.Visible := true;Label9.Caption := 'Треугольник остроугольный';
end;
end;
end.
Списоклитературы
1. Анатолий Хомоненко, Владимир Гофман, ЕвгенийМещеряков, Владимир Никифоров «Delphi7». – С-Пб.: “БХВ-Петербург”,2004 г. – 1216 с.
2. Х.М. Дейтел,П.Дж. Дейтел «Какпрограммировать на С». – М.: ЗАО«Издательство Бином», 2000 г. – 1008 с.: ил.
3. Атанасян, В.Ф. Бутузов,С.Б. Кадомцев и др. «Геометрия». – М.: Просвещение,1990 г. – 336 с.: ил.
4.
5. Шипачев «Высшаяматематика». – М.: Высш. Школа, 1996 г. – 479 с.: ил.
[1]KIS – Keep It Simple – Делайпроще
[2] ОЗУ – ОперативноеЗапоминающее Устройство