Поможем написать учебную работу
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.
МОСКОВСКИЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ СВЯЗИ И ИНФОРМАТИКИ
Лабораторная работа
Тема 4.2: «Основные средства языка С#»
Выполнил студент
группы ИТ1051
Бахтеев А.С.
Содержание:
1. Условия задания:
Создать приложение для вычисления арифметических выражений. То есть,
Задано: х и у вещественные переменные
Определить: i=c;
где i, c результаты вычислений, причем i целое, с вещественная.
Проверяем для X=2,123 и Y=-1,89.
2. Формализация задания:
На входе приложения вводим вещественные числа X и Y аргументы предложенной функции, в которых целая часть отделяется от десятичной запятой.
На выходе получаем вещественное число С, рассчитанное по формуле
Правильность работы приложения доказываем для X=2,123 и Y=-1,89.
3. Блок схемы
3.1 Блок-схема библиотеки классов
3.2 Блок-схема консольного приложения
3.3 Блок-схема windows приложения
3.4 Пояснения к блок-схемам:
4. Библиотека классов
Программный код библиотеки классов:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace MyLab
{
public static class MyFormula
{
public static double Formula(double X, double Y)
{
return Math.Pow(Y*X*X-1,2)*(Math.Cos(Y)*Math.Cos(Y)-Math.Sin(X*X))/2;
}
}
}
5. Приложения
5.1 Консольное приложение
Программный код консольного приложения:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ProjConsole_4_2_Lab
{
class MyProj
{
static void Main(string[] args)
{
//Входные данные
double X; double Y; double С;
int i; double M; double N;
string H; string G;
const string INVITE =
"Введите числа X, Y - аргументы рассчитываемой функции?";
const string CONTINUE = "Продолжим? (Yes/No)";
string answer = "yes";
do
{ //Организация ввода данных
Console.WriteLine(INVITE);
Console.WriteLine("Введите Х - ?");
string temp1 = Console.ReadLine();
X = Convert.ToDouble(temp1);
Console.WriteLine("Введите У - ?");
string temp2 = Console.ReadLine();
Y = Convert.ToDouble(temp2);
//Вычисления и вывод результата
С = MyLab.MyFormula.Formula(X, Y);
Console.WriteLine("\nРезультат вычислений C=");
Console.WriteLine(С.ToString());
i = (int)С;
Console.WriteLine("i=");
Console.WriteLine(i.ToString());
Console.WriteLine("\n");
M = Math.Floor(С);
Console.WriteLine("Floor(C) - M=");
Console.WriteLine(M.ToString());
Console.WriteLine("\n");
N = Math.Ceiling(С);
Console.WriteLine("Ceiling(C) - N=");
Console.WriteLine(N.ToString());
Console.WriteLine("\n");
H = Math.Floor(Math.Abs(С)).ToString();
Console.WriteLine("Floor(Abs(C))=");
Console.WriteLine(H);
Console.WriteLine("\n");
G = Math.Ceiling(Math.Abs(С)).ToString();
Console.WriteLine("Ceiling(Abs(C))=");
Console.WriteLine(G);
Console.WriteLine("\n");
//диалог с пользователем
Console.WriteLine(CONTINUE);
answer = Console.ReadLine();
} while (answer == "yes");
}
}
}
Рис. 1 «Окно консольного приложения»
На рис. 1 изображено окно консольного приложения, рассчитывающего по формуле .
Входящие данные X = 1, Y = 2; на выходе С = - 0, 334146397619851.
Остальные расcчитанные данные:
i = 0 целая часть от полученного результата.
М = -1 наибольшее целое число, которое меньше заданного числа С.
N = 0 наименьшее целое число, которое больше заданного числа С.
Floor(Abs(C)) = 0 наибольшее целое число, которое меньше абсолютного значения числа C.
Ceiling(Abs(C)) = 1 - наименьшее целое число, которое больше абсолютного значения C.
«Продолжим? <Yes/No>» - запрос на повторение ввода данных и повторение вычислений (при ответе yes работа приложения продолжится, в остальных случаях работа приложения завершится).
5.2 Windows приложение
Рис. 2 «Графический интерфейс»
На рис. 2 изображен графический интерфейс windows приложения. Кнопка «Вычислить» запускает вычисления. Кнопка «Выход» завершает работу программы и закрывает окно приложения.
В текстовые поля X и Y вводим значения соответствующих переменных.
В текстовых полях с, i, Floor(c), Ceiling(c), Floor(Abs(c)), Ceiling(Abs(c)) выводятся соответствующие посчитанные значения.
Программный код 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 ProjWin_4_2_Lab
{
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 X; double Y; double C;
int i; double M; double N;
X = double.Parse(textBox1.Text);
Y = double.Parse(textBox2.Text);
C = MyLab.MyFormula.Formula(X, Y);
i = (int)C;
M = Math.Floor(C);
N = Math.Ceiling(C);
textBox3.Text = C.ToString();
textBox4.Text = i.ToString();
textBox5.Text = M.ToString();
textBox6.Text = N.ToString();
textBox7.Text = Math.Floor(Math.Abs(C)).ToString();
textBox8.Text = Math.Ceiling(Math.Abs(C)).ToString();
}
}
}
Программный код класса Program:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Windows.Forms;
namespace ProjWin_4_2_Lab
{
static class Program
{
/// <summary>
/// Главная точка входа для приложения.
/// </summary>
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new Form1());
}
}
}
Рис. 3 «Результаты работы»
На рис. 3 изображено окно windows приложения, рассчитывающего по формуле
Входящие данные X = 2,123, Y = -1,89; на выходе С = 48,810798702454.
Остальные расcчитанные данные, отображенные в текстовых блоках:
i = 48 целая часть от полученного результата.
Floor(c) = 48 наибольшее целое число, которое меньше заданного числа С.
Ceiling(c) = 49 наименьшее целое число, которое больше заданного числа С.
Floor(Abs(c)) = 48 наибольшее целое число, которое меньше абсолютного значения числа C.
Ceiling(Abs(c)) = 49 - наименьшее целое число, которое больше абсолютного значения C.
В данном примере значения X и Y взяты из задания поэтому доказательство правильности работы программы будет рассчитываться исходя из приведенных результатов.
6. Доказательство правильности результата
X=2,123 Y=-1,89
Разобьем формулу на несколько частей для простоты расчета
(Cos(y))^2 = 0,098477067165134616031709870381143
Sin(x^2) = -0,97900802796429090174793070345712
(Cos(y))^2 - Sin(x^2) = 1,0774850951294255177796405738381
Y*X^2 - 1 = -9,51847381
(Y*X^2 1)^2 = 90,6013436716559161
(Y*X^2 1)^2 / 2 = 45,30067183582795805
(Cos^2(y) - Sin(x^2)) * (Y*X^2 1)^2 / 2 = 48,810798702453974691277879129007
|
Вот здесь происходит округление
Для полученного числа справедливо неравенство:
48 < 48,810798702453974691277879129007 < 49
Поэтому:
i = 48
Floor(c) = 48
Ceiling(c) = 49
Floor(Abs(c)) = 48
Ceiling(Abs(c)) = 49
7. Выводы
1. В работе была проведена формализация задачи и составлен алгоритм решения.
2. Для предлагаемой формулы была создана библиотека классов, получающая на входе вещественные Х и Y, а на выходе выдающая результат вычислений согласно заданному выражению.
3. Исходя из поставленных задач был разработан интерфейс пользователя для консольного и windows приложения.
4. Корректность работы приложений проверена путем введения и обработки различных данных.
5. Правильность работы приложения была проверена при помощи предложенных в задании данных, которые в свою очередь были посчитаны вручную. Отсюда делаем вывод, что программа работает корректно.