Будь умным!


У вас вопросы?
У нас ответы:) SamZan.net

Лабораторная работа Тема 4

Работа добавлена на сайт samzan.net:


МОСКОВСКИЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ СВЯЗИ И ИНФОРМАТИКИ

Лабораторная работа

Тема 4.3: «Структура C#-программ и процедуры.

Средства программирования  алгоритмов
линейной структуры
»

Выполнил студент

группы ИТ1051

Бахтеев А.С.

Содержание:

  1.  Условия задания_____________________________________ стр. 3
  2.  Формализация задания________________________________стр. 3
  3.  Вывод формулы_____________________________________  стр. 4
  4.  Блок-схемы
    1.   Блок-схема библиотеки классов___________________стр. 5
    2.   Блок-схема консольного приложения______________ стр. 6
    3.   Блок-схема windows приложения__________________стр. 7
  5.  Библиотека классов___________________________________стр. 8
  6.  Приложения
    1.   Консольное приложение_________________________ стр. 8
    2.   Windows приложение____________________________стр. 11
  7.  Доказательство правильности результата_________________стр.14
  8.  Выводы_____________________________________________ стр. 15

1. Условия задания:

Создать приложение для вычисления площади пятиугольника, заданного прямоугольными координатами своих вершин.

Задано: A1(3;2), A2(9;6), A3(14;2), A4(10;-3), A5(7;-2)

Вычислить: площадь пятиугольника используя формулу площади треугольника:

2. Формализация задания:

На входе приложения вводим вещественные числа от Х1, Y1 до X5, Y5 – прямоугольные координаты вершин пятиугольника, десятичная часть отделяется от целой при помощи запятой. Так как в задании для расчета предложены координаты вершин выпуклого пятиугольника, то будем выводить формулу для расчета площади выпуклого пятиугольника.

Используя формулу площади треугольника вывести площадь пятиугольника.

На выходе приложения получаем вещественное число S5, рассчитанное по выведенной формуле.

Правильность работы приложения доказываем для A1(3;2), A2(9;6), A3(14;2), A4(10;-3), A5(7;-2).

Рис. 1 «Выпуклый пятиугольник»

3. Вывод формулы.

Ввиду того, что в задании для вывода формулы задана формула площади треугольника, то разобьем наш выпуклый пятиугольник на три треугольника (рис. 2): A1A2A3, A1A3A5 и A5A3A4. Согласно приведенной в задании формулы рассчитаем площадь для каждого из них:

S123 = ½|(x2 – x1)(y3 – y1) – (x3 – x1)(y2 – y1)|

S135 = ½|(x3 – x1)(y5 – y1) – (x5 – x1)(y3 – y1)|

S534 = ½|(x3 – x5)(y4 – y5) – (x4 – x5)(y3 – y5)|

 Рис. 2 «Иллюстрация действий»         Так как пятиугольник у нас разбит на три треугольника, то площадь пятиугольника складывается из трех площадей треугольников. Следовательно площадь пятиугольника можно записать следующим образом:

S5 = S123 + S135 + S534;

Площадь пятиугольника выведена.

4. Блок-схемы

4.1 Блок-схема библиотеки классов

                                                                                                   Процедура функция

 Area5(X1, X2, X3, X4, X5,

           Y1, Y2, Y3, Y4, Y5)

 Входные параметры

X1, X2, X3, X4, X5, Y1, Y2,

Y3, Y4, Y5

Возвращаемое значение

Area5;

 

4.2 Блок-схема консольного приложения

4.3 Блок-схема windows приложения

5. Библиотека классов

Программный код библиотеки классов:

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

namespace Lab3_DLL

{

   public static class AreaF

   {

    public static double Area5(double X1, double X2, double X3, double X4,

    double X5, double Y1, double Y2, double Y3, double Y4, double Y5)

     {

      return Math.Abs((X2-X1)*(Y3-Y1)-(X3-X1)*(Y2-Y1))/2 +

      Math.Abs((X3-X1)*(Y5-Y1)-(X5-X1)*(Y3-Y1))/2 +

      Math.Abs((X3-X5)*(Y4-Y5)-(X4-X5)*(Y3-Y5))/2;

     }

   }

}

6. Приложения

6.1 Консольное приложение

Программный код консольного приложения:

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

namespace ProjConsole_4_3_Lab

{

   class Program

   {

       static void Main(string[] args)

       {

           double X1, X2, X3, X4;

           double X5, Y1, Y2, Y3;

           double Y4, Y5;

           double S5;

           const string INVITE =

           «Введите числа X, Y, являющиеся координатами \nточек от А1 до А5 – вершин выпуклого пятиугольника?»;

           const string CONTINUE = “Продолжим? (Yes/No)”;

           string answer = “yes”;

           do

           { //Организация ввода данных

               Console.WriteLine(INVITE);

               //вводим координаты первой вершины

               Console.WriteLine(«Введите Х1 - ?»);

               string temp1 = Console.ReadLine();

               X1 = Convert.ToDouble(temp1);

               Console.WriteLine(“Введите У1 - ?”);

               string temp2 = Console.ReadLine();

               Y1 = Convert.ToDouble(temp2);

               //вводим координаты второй вершины

               Console.WriteLine(“Введите Х2 - ?”);

               string temp3 = Console.ReadLine();

               X2 = Convert.ToDouble(temp3);

               Console.WriteLine(“Введите У2 - ?”);

               string temp4 = Console.ReadLine();

               Y2 = Convert.ToDouble(temp4);

               //вводим координаты третьей вершины

               Console.WriteLine(«Введите Х3 - ?»);

               string temp5 = Console.ReadLine();

               X3 = Convert.ToDouble(temp5);

               Console.WriteLine(“Введите У3 - ?”);

               string temp6 = Console.ReadLine();

               Y3 = Convert.ToDouble(temp6);

               //вводим координаты четвертой вершины

               Console.WriteLine(“Введите Х4 - ?”);

               string temp7 = Console.ReadLine();

               X4 = Convert.ToDouble(temp7);

               Console.WriteLine(“Введите У4 - ?”);

               string temp8 = Console.ReadLine();

               Y4 = Convert.ToDouble(temp8);

               //вводим координаты пятой вершины

               Console.WriteLine(«Введите Х5 - ?»);

               string temp9 = Console.ReadLine();

               X5 = Convert.ToDouble(temp9);

               Console.WriteLine(“Введите У5 - ?”);

               string temp10 = Console.ReadLine();

               Y5 = Convert.ToDouble(temp10);

               //Вычисления и вывод результата

               S5 = Lab3_DLL.AreaF.Area5(X1, X2, X3, X4, X5, Y1, Y2, Y3, Y4, Y5);

               Console.WriteLine(«\nРезультат вычислений площадь пятиугольника =»);

               Console.WriteLine(S5.ToString());

               //диалог с пользователем

               Console.WriteLine(CONTINUE);

               answer = Console.ReadLine();

           } while (answer == “yes”);

       }

   }

}

Рис. 3 «Окно консольного приложения»

На рис. 3 изображено окно консольного приложения, рассчитывающего площадь выпуклого пятиугольника по заданным прямоугольным координатам вершин.

Входящие данные X1 = 1, Y1 = 1, X2 = 3, Y2 = 3, X3 = 6, Y3 = 2, X4 = 5, Y4 = 1,      X5 = 2, Y5 = 0. На выходе площадь пятиугольника = 8.

«Продолжим? <Yes/No>» - запрос на повторение ввода данных и повторение вычислений (при ответе yes работа приложения продолжится, в остальных случаях работа приложения завершится).

6.2 Windows приложение

Рис. 4 «Графический интерфейс»

На рис. 4 изображен графический интерфейс windows приложения. Кнопка «Вычислить» запускает вычисления. Кнопка «Выход» завершает работу программы и закрывает окно приложения.

В текстовые поля A1 (X1,       Y1) и т.д. вводятся прямоугольные координаты вершин пятиугольника. В текстовом поле «Площадь пятиугольника равна» выводятся результаты вычислений.

Программный код windows интерфейса:

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Linq;

using System.Text;

using System.Windows.Forms;

namespace WindowsFormsApplication1

{

   public partial class Form1 : Form

   {

       public Form1()

       {

           InitializeComponent();

       }

       private void button2_Click(object sender, EventArgs e)

       {

           Close();

       }

       private void button1_Click(object sender, EventArgs e)

       {

           //координаты вершин пятиугольника

           double X1, X2, X3, X4, X5, Y1, Y2, Y3, Y4, Y5;

           //переменная S5 - площадь пятиугольника

           double S5;

           //считываем координаты первой вершины

           X1 = double.Parse(textBox1.Text);

           Y1 = double.Parse(textBox2.Text);

           //считываем координаты второй вершины

           X2 = double.Parse(textBox3.Text);

           Y2 = double.Parse(textBox4.Text);

           //считываем координаты третьей вершины

           X3 = double.Parse(textBox5.Text);

           Y3 = double.Parse(textBox6.Text);

           //считываем координаты четвертой вершины

           X4 = double.Parse(textBox7.Text);

           Y4 = double.Parse(textBox8.Text);

           //считываем координаты пятой вершины

           X5 = double.Parse(textBox9.Text);

           Y5 = double.Parse(textBox10.Text);

           //Вычисления и вывод результата

           S5 = Lab3_DLL.AreaF.Area5(X1, X2, X3, X4, X5, Y1, Y2, Y3, Y4, Y5);

           textBox11.Text = S5.ToString();

       }

   }

}

Программный код класса Program:

using System;

using System.Collections.Generic;

using System.Linq;

using System.Windows.Forms;

namespace WindowsFormsApplication1

{

   static class Program

   {

       /// <summary>

       /// Главная точка входа для приложения.

       /// </summary>

       [STAThread]

       static void Main()

       {

           Application.EnableVisualStyles();

           Application.SetCompatibleTextRenderingDefault(false);

           Application.Run(new Form1());

       }

   }

}

Рис. 5 «Результаты работы»

На рис. 5 изображено окно windows приложения, рассчитывающего площадь выпуклого пятиугольника по заданным прямоугольным координатам вершин.

Входящие данные X1 = 3, Y1 = 2, X2 = 9, Y2 = 6, X3 = 14, Y3 = 2, X4 = 10, Y4 = -3, X5 = 7,  Y5 = -2. На выходе площадь пятиугольника равна 53,5.

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

7. Доказательство правильности результата

X1 = 3, Y1 = 2, X2 = 9, Y2 = 6, X3 = 14, Y3 = 2, X4 = 10, Y4 = -3, X5 = 7,  Y5 = -2

S123 = ½|(x2 – x1)(y3 – y1) – (x3 – x1)(y2 – y1)|

S135 = ½|(x3 – x1)(y5 – y1) – (x5 – x1)(y3 – y1)|

S534 = ½|(x3 – x5)(y4 – y5) – (x4 – x5)(y3 – y5)|

   

S123 = ½|(93)(22) – (143)(62)| = |6*0-11*4|/2=22;

S135 = ½|(143)(-22) – (73)(22)| = |11*(-4)-4*0|/2=22;

S534 = ½|(14 – 7)(-3 – (-2)) – (10 – 7)(2 – (-2))| = |7*(-1)-3*4|/2=9,5;

S5 = 22 + 22 + 9,5 = 53,5верно

 

8. Выводы

1. В работе была проведена формализация задачи и составлен алгоритм решения.

2. Для решения задачи была выведена необходимая формула.

2. Для выведенной формулы была создана библиотека классов, получающая на входе вещественные данные – прямоугольные координаты вершин пятиугольника, а на выходе выдающая результат вычислений согласно выведенному выражению.

3. Исходя из поставленных задач был разработан интерфейс пользователя для консольного и windows приложения.

4. Корректность работы приложений проверена путем введения и обработки различных данных.

5. Правильность работы приложения была проверена при помощи предложенных в задании данных, которые в свою очередь были посчитаны вручную. Отсюда делаем вывод, что программа работает корректно.


A2(x
2,y2)

A1(x1,y1)

A3(x3,y3)

A4(x4,y4)

A5(x5,y5)

Ввод

answer

Вывод

S5

button1_Click

S5 = Lab3_DLL.AreaF.Area5 (X1, X2, X3, X4, X5, Y1, Y2, Y3, Y4, Y5);

Ввод       X1, X2, X3, X4, X5, Y1, Y2, Y3, Y4, Y5

answer ==  “yes”

Начало

Конец

Area5 = |((X3-X5)*(Y4-Y5)-(X4-X5)*(Y3-Y5))|/2 +  + |((X3-X1)*(Y5-Y1)-(X5-X1)*(Y3-Y1))|/2 +        + |((X2-X1)*(Y3-Y1)-(X3-X1)*(Y2-Y1))|/2;

Area5();

Да

Конец

Вывод

S5

S5 = Lab3_DLL.AreaF.Area5 (X1, X2, X3, X4, X5, Y1, Y2, Y3, Y4, Y5);

Ввод       X1, X2, X3, X4, X5, Y1, Y2, Y3, Y4, Y5

Конец

A4(x4,y4)

A5(x5,y5)

A1(x1,y1)

A2(x2,y2)

A3(x3,y3)




1.  Факультет заочный Курс Студент Шифр специальн
2. Мастерство публичного выступления.html
3. Секрет медальона
4. Тема 31 Бухгалтерский баланс влияние хозяйственных операций на изменения в балансе Лекция 10
5.  Таблица 81 ~ Выбор разъединителя Условия выбора и проверки
6. Об утверждении Методических указаний о порядке назначения проведения документальных выездных проверок ст
7. маркетинг. Виды маркетинга и принципы маркетинговой деятельности
8. Билеты по гражданскому праву
9. ТЕМА ВІЙСЬКОВОГО ВИХОВАННЯ В УКРАЇНІ- ІСТОРИЧНІ ПЕРЕДУМОВИ ТА ЗАСАДИ РОЗВИТКУ 18 2
10. Разработка слесарно-механического отделения на 321 автомобиль ПАЗ-627М
11. кМ-Проспект2012 -148450- Год- 2012 Рассмотрены структура политической системы общества формы правления и
12. общое движение представители кот.
13. Тема- Безопасность труда при эксплуатации грузоподъемных устройств
14. Прикоснись ко тьме Карен ЧэнсПрикоснись ко тьме Серия Кассандра Палмер ~ 1 OCR
15. Дифференциация доходов населения и социальная политика государства
16. А МОВА Навчальнометодичний посібник Дніпропетровськ ~ 2012 Міністерство осв
17. Регулирование валютных операций коммерческих банков
18. РЕФЕРАТ дисертації на здобуття наукового ступеня кандидата сільськогосподарських наук.7
19. .12.2013 6 17.
20. Мозговое кровообращение