Курсовая работа Принципы построения программного обеспечения АСУ ТП Приложение Windows Forms для расчета определенного интеграла. Документ Microsoft Word. Курсовой проект вариант 1 Приложение Windows Forms для расчета определенного интеграла функции одной переменной с заданной точностью
Скачать 349.46 Kb.
|
Министерство цифрового развития, связи и массовых коммуникаций Российской Федерации Федеральное государственное образовательное бюджетное учреждение высшего профессионального образования «Санкт–Петербургский государственный университет телекоммуникаций им. проф. М.А. Бонч-Бруевича» Кафедра «Интеллектуальные системы автоматизации и управления» Дисциплина «Принципы построения программного обеспечения АСУ ТП» КУРСОВОЙ ПРОЕКТ вариант №1 «Приложение Windows Forms для расчета определенного интеграла функции одной переменной с заданной точностью» Выполнила: студентка группы ИСТ-042 « » 2022г. Л.В.Абольянина Принял: доцент кафедры, к.т.н. « » 2022г. В.А.Чебыкин Санкт-Петербург 2022 СодержаниеВведение 3 1.Листинг программы 4 1.1 «Program.cs» 4 1.2 «Func.cs» 4 1.3 «Form1.cs» 5 1.4 Скриншоты работы программы 7 2.Описание программы 9 2.1«Program.cs» 9 2.2 «Func.cs» 9 2.3 «Form1.cs» 10 Заключение 12 Введение C# - объектно-ориентированный язык программирования. Разработан в 1998—2001 годах группой инженеров компании Microsoft под руководством Андерса Хейлсберга и Скотта Вильтаумота как язык разработки приложений для платформы Microsoft .NET Framework и .NET Core. C# относится к семье языков с C-подобным синтаксисом, из них его синтаксис наиболее близок к C++ и Java. Язык имеет статическую типизацию, поддерживает полиморфизм, перегрузку операторов (в том числе операторов явного и неявного приведения типа), делегаты, атрибуты, события, переменные, свойства, обобщённые типы и методы, итераторы, анонимные функции с поддержкой замыканий, LINQ, исключения, комментарии в формате XML. Переняв многое от своих предшественников — языков C++, Delphi, Модула, Smalltalk и, в особенности, Java — С#, опираясь на практику их использования, исключает некоторые модели, зарекомендовавшие себя как проблематичные при разработке программных систем. Согласно рейтингу TIOBE, С# входит в 5 самых популярных языков и удерживает эту позицию уже несколько лет. Недавние изменения и выход .NET 6 в ноябре 2021 года выглядят весьма многообещающе для общества разработки на С#. Цель курсового проекта Создать приложение Windows Forms, рассчитывающее значение определенного интеграла функции одной переменной с заданными пользователями параметрами: начало интегрирования, конец интегрирования, необходимая точность. В выпадающем списке пользователь выбирает нужную функцию, после нажатия на кнопку «рассчитать» ответ выводится на экран. Листинг программы1.1 «Program.cs»using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; using System.Windows.Forms; namespace Curs { static class Program { /// /// Главная точка входа для приложения. /// [STAThread] static void Main() { Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); Application.Run(new Form1()); } } } 1.2 «Func.cs»using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace Curs { public delegate double Function(double x); static class Func { public static double f1(double x) { return Math.Cos(x); } public static double f2(double x) { return Math.Sin(x); } public static double f3(double x) { return Math.Sqrt(x); } public static double f4(double x) { return Math.Log(x); } public static double f5(double x) { return Math.Exp(x); } public double Summ (Function f, double a, double b, double eps) { int n = 2; double sum1, sum2 = 0; do { sum1 = sum2; sum2 = 0; double h = (b - a) / n; for (int i = 0; i < n; i++) { sum2 += h * f(a + i * h); } n *= 2; } while (Math.Abs(sum1 - sum2) > eps); return sum2; } } } 1.3 «Form1.cs»using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; namespace Curs { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void button1_Click(object sender, EventArgs e) { Rasc(); } public void Rasc() { try { double a = Convert.ToDouble(textBox1.Text); double b = Convert.ToDouble(textBox2.Text); double eps = Convert.ToDouble(textBox4.Text); double result; switch (comboBox1.SelectedIndex) { case 0: result = Func.Summ(Func.f1, a, b, eps); textBox3.Text = result.ToString(); break; case 1: result = Func.Summ(Func.f2, a, b, eps); textBox3.Text = result.ToString(); break; case 2: result = Func.Summ(Func.f3, a, b, eps); textBox3.Text = result.ToString(); break; case 3: result = Func.Summ(Func.f4, a, b, eps); textBox3.Text = result.ToString(); break; case 4: result = Func.Summ(Func.f5, a, b, eps); textBox3.Text = result.ToString(); break; default: MessageBox.Show("Ошибка!"); break; } } catch { MessageBox.Show("Возникло исключение. " + "Проверьте корректность введенных данных"); textBox3.Text = "ошибка"; } } private void textBox4_TextChanged(object sender, EventArgs e) { } } } 1 .4 Скриншоты работы программы Рис. 1 «Корректная работа программы» Рис. 2 «Проверка правильности вычислений» Исходя из сравнения значений на первом и втором рисунке, можно сделать вывод о корректности работы программы. Еще несколько примеров: Рис. 3 «Проверка работы программы» Рис. 4 «Проверка работы программы(2)» При некорректно введенных данных программа будет выдавать ошибку и давать пользователю еще один шанс: Рис. 5 «Поведение программы при ошибке» То же самое происходит, если какое-либо поле не заполнено или не выбрана функция для расчета. Описание программы «Program.cs» Первая строчка кода в функции Main: Application.EnableVisualStyles(). Этот метод включает визуальные стили для приложения. Визуальные стили — это цвета, шрифты и другие визуальные элементы, которые формируют тему операционной системы. Элементы управления будут рисоваться с визуальными стилями, если элемент управления и операционная система его поддерживают. Чтобы иметь результат, EnableVisualStyles() он должен вызываться перед созданием элементов управления в приложении; как правило, EnableVisualStyles() это первая строка в Main функции. Вторая строчка кода в функции Main: Application.SetCompatibleTextRenderingDefault(false). UseCompatibleTextRenderingсвойство предназначено для обеспечения совместимости элементов управления Windows Forms, которые отображают текст с помощью TextRenderer класса. В большинстве случаев рекомендуется оставлять булевское значение false. Третья строчка кода в функции Main содержит метод Application.Run, создающий новую Form1. Она будет рассмотрена в конце описания программы. 2.2 «Func.cs» Создаем делегат с сигнатурой double Function(double x). Делегат — это тип, который представляет ссылки на методы с определенным списком параметров и типом возвращаемого значения. При создании экземпляра делегата этот экземпляр можно связать с любым методом с совместимой сигнатурой и типом возвращаемого значения. Метод можно вызвать (активировать) с помощью экземпляра делегата. Делегаты используются для передачи методов в качестве аргументов к другим методам. В статическом классе Func создаем пять экземпляров делегата: каждый возвращает значение своей математической функции при заданной переменной. Далее следует метод Summ, который отвечает за расчет интеграла - он принимает на вход четыре аргумента (объявленный ранее делегат, значение начала интегрирования типа double, значение конца интегрирования типа double, и значение точности интегрирования типа double). В теле метода прописаны формулы для вычисления определенного интеграла одной переменной с заданной точностью: количество отрезков, составляющих прямоугольники, будет увеличиваться до тех пор, пока значение интеграла не достигнет определенной точности. Изначально отрезка всего два. Конструкция do while означает, что первый прогон метода пройдет в любом случае, а проверка условия будет осуществляться уже после него. Метод Summ возвращает значение типа double. 2.3 «Form1.cs»При нажатии на кнопку button1 вызывается функция Rasc, про которую будет сказано далее. В ней конвертируются значения (в тип double), записанные пользователем в textBox1, textBox2, textBox4, и присваиваются соответственно переменным a, b, eps. Поскольку нам нужно учитывать значения из текстбокса, создаем свитч по индексу выбранного в comboBox1 значения, и вызываем метод Summ с соответствующим делегатом в каждом кейсе от нуля до четырех. Результат выводится в textBox3. Код данной функции заключен в блок try: это сделано для того, чтобы при возникновении исключения программа не вылетала, а обрабатывала его. В нашем случае (прописано в блоке catch) выводится сообщение об ошибке и просьба проверить корректность введенных данных. ЗаключениеСоздано приложение Windows Forms, рассчитывающее значение определенного интеграла функции одной переменной с заданными пользователями параметрами: начало интегрирования, конец интегрирования, необходимая точность. В выпадающем списке пользователь выбирает нужную функцию, после нажатия на кнопку «рассчитать» ответ выводится на экран. В ходе работы приобретены навыки самостоятельного поиска и решения возникающих проблем, более полно изучена тема использования делегатов в коде программы, исследованы новые элементы управления для Windows Forms (такие как textbox и comboBox), использованы такие конструкции, как switch и try/catch. |