курсовые,контрольные,дипломы,рефераты
Министерство образования Российской Федерации
на тему:
Выполнил:
студентка группы
Проверил:
Ставрополь, 2005 г.
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
Текст основной программы на языке Borland Delphi 7.0 для Windows. PAGEREF _Toc94495295 h 13
Список литературы.. PAGEREF _Toc94495296 h 17
Для разработки курсового проекта была предоставлена задача: определить тупоугольный ли, остроугольный, прямоугольный перед нами треугольник по трем его сторонам.
Существует несколько методов решения поставленной задачи. Первый метод напрямую связан с прямоугольной проекцией и соотношениями между углами треугольника, сюда также вовлечены тригонометрические отношения. Второй, основан на прямоугольных проекциях. Вся работа выполнена в программной среде Delphi 7.0 0 фирмы-производителя Borland – ведущего производителя инструментального программного обеспечения в мире. Borland Software Corporation (Nasdaq NM: BORL) – лидирующий поставщик систем, упрощающих разработку, развертывание и интегрирование приложений. Компания Borland основана в 1983, фирма имеет представительства более чем в 20 странах. Delphi - это мощная система, предназначенная для быстрой разработки приложений самого разного характера и назначения.
В своем курсовом проекте я использовала следующую литературу: Л.С. Атанасян «Геометрия» и М.Я. Выгодский «Справочник по элементарной математике».
Начнем работу над курсовым проектом с аналитического решения: во-первых, нужно определиться, что такое треугольник вообще и выяснить его основные признаки. Треугольник – многоугольник с тремя сторонами. Если все три угла острые, то треугольник остроугольный; если один из углов прямой – прямоугольный. Если один из углов тупой, треугольник тупоугольный.
Еще, пожалуй, будет полезна информация о том, что во всяком треугольнике сумма углов равна 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)
Реализацию алгоритма в блок-схеме можно увидеть на следующей странице.
Пользоваться данной программой очень просто: начинать работу с нажатия кнопки или просто нажать кнопку Enter.
После следует ввести три числа, соответственно являющиеся сторонами треугольника. На ввод существует несколько ограничений:
·
·
Переввод значений в случае нарушений разрешается до трех раз, на четвертой попытке, будет выполнен выход из программы.
Посчитав, программа выдаст результат в следующем виде:
Рассмотрим решение поставленной задачи на конкретном примере. Предположим, нам дан треугольник со сторонами соответственно 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.
Вводимые данные разбиваются на следующие группы: стороны треугольника больше нуля, соответственно меньше. И числа, подчиняющиеся следующему правилу: сумма длин двух сторон не должна превышать длину третьей. Числа должны быть целыми, в противном случае будет выдано сообщение, что сторона треугольника не целое число, и программа вернется к своему логическому началу.
В ходе выполнения данного курсового проекта была составлена программа для определения вида треугольника по его трем сторонам. Программу можно модернизировать, введя такую инновацию, как графическое изображение получившегося треугольника с цветовыми вариациями линий и фона рисунка. Также возможно оптимизировать «ловушки» ошибок и исключений. В некоторых случаях рациональное введение - замена структуры if…else на switch…case, что соответствовало бы требованиям структурного программирования. Что же касается использования типа данных, то для экономия памяти, используемой программой следует заменить тип extended на real, в данной программе я не стала так делать для достижения должной точности. В Windows XP Professional® распределением оперативной памяти занимается сама операционная система. Узнать, как Win XP управляет ОЗУ[2] и файлом подкачки, можно щелкнув на иконке мой компьютер правой кнопкой мышки, затем выбрать Свойства –> Дополнительно –> Использование памяти –> или
Виртуальная память.
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 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] ОЗУ – Оперативное
Запоминающее Устройство
Список
литературы
Алгоритмизация и программирование процессов обработки данных в среде СУБД типа FoxPro
Системы счисления, переводы чисел
Программа для тестовых проверок знаний
Объектно-ориентированные базы данных, работающие в распределенных сетях
Программирование микроконтроллера на ассемблере. Симуляция игральной кости
Моделирование движения объектов в Pascal
Информационная база данных по гигиеническим нормативам химических веществ
База данных пилотов Формулы 1
Разработка автоматизированного рабочего места менеджера розничной торговли
Основные возможности С++, операторы Case, построение интерфейса
Copyright (c) 2024 Stud-Baza.ru Рефераты, контрольные, курсовые, дипломные работы.