Program: testujący działania dążące do obliczenia funkcji kwadratowej.
Jak w opisie.
Kompilator: Microsoft Visual Studio
Kod programu:
Program główny:
//Program główny
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace Rownanie_kwadratowe
{
static class Program
{
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new Form1());
}
}
}
//Klasy
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Rownanie_kwadratowe
{
public class rownanie
{
public double liczba_a(double a)
{
if (a == 0)
throw new ArgumentOutOfRangeException();
else
return a;
}
public double delta(double a, double b, double c)
{
double delta = b * b - 4 * a * c;
return delta;
}
public double pierw_delta(double delta)
{
if (delta < 0)
throw new ArgumentOutOfRangeException();
double pierw_delta = Math.Sqrt(delta);
return pierw_delta;
}
public double pierwiastkiall_delta(double pierw_delta, double a, double b)
{
double x1;
if (pierw_delta == 0)
{
return x1 = (-b) / (2 * a);
}
else if (pierw_delta > 0)
{
return x1 = ((-b) + pierw_delta) / (2 * a) + ((-b) - pierw_delta) / (2 * a);
}
else
throw new ArgumentOutOfRangeException();
}
}
}
Jednostka testowa:
//Unit testowy
using System;
using Microsoft.VisualStudio.TestTools.UnitTesting;
using Rownanie_kwadratowe;
namespace UnitTestRownanie
{
[TestClass]
public class UnitTest1
{
rownanie test = new rownanie();
[TestMethod]
public void Test_LiczbaA()
{
double a = 1;
double pop = a;
double od_metody_testowej = test.liczba_a(a);
Assert.AreEqual(pop, od_metody_testowej);
}
[TestMethod]
public void Test_Delta()
{
double a = 1;
double b = 2;
double c = 3;
double pop = b * b - 4 * a * c;
double od_metody_testowej = test.delta(a, b, c);
Assert.AreEqual(pop, od_metody_testowej);
}
[TestMethod]
public void Test_Pierwiastek_z_delta()
{
double delta = 16;
double pop = Math.Sqrt(delta);
double od_metody_testowej = test.pierw_delta(delta);
Assert.AreEqual(pop, od_metody_testowej);
}
[TestMethod]
[ExpectedException(typeof(ArgumentOutOfRangeException))]
public void Test_Rozwiazania()
{
double pierw_delta = -3;
double pop;
double a = 1, b = 2;
if (pierw_delta == 0)
{
pop = (-b) / (2 * a);
double od_metody_testowej = test.pierwiastkiall_delta(pierw_delta, a, b);
Assert.AreEqual(pop, od_metody_testowej);
}
else
{
pop = ((-b) + pierw_delta) / (2 * a) + ((-b) - pierw_delta) / (2 * a);
double od_metody_testowej = test.pierwiastkiall_delta(pierw_delta, a, b);
Assert.AreEqual(pop, od_metody_testowej);
}
}
}
}
Słowniczek pojęć:
Funkcja wielomianowa drugiego stopnia, tzn. postaci f(x) = ax^2 + bx + c, gdzie a, b, c są pewnymi stałymi, przy czym a!=0 (co gwarantuje, że funkcja kwadratowa nie degeneruje się do przypadku funkcji liniowej; to założenie będzie obowiązywać w całym artykule). Funkcja kwadratowa realizuje pewien wielomian (drugiego stopnia), z tego powodu nazywa się ją czasami trójmianem kwadratowym.