і даних, що вводяться.
Приклад тестування програми про знаходження кореня рівняння на відрізку з заданою точністю
Розглянемо наступний блок коду.
public static double func (double x)
{- 2.4 * x * x * x - 28.512 * x * x - 40.6272 * x + 44.928;
} static double divide (double x1, double x2, double e)/* 8 */
{res=0; (Math. Abs (x2 - x1) gt; e)/* 9 */
{= (x1 + x2)/2;/* 11 */(func (res) gt;=0)/* 12 * /=res;/* 13 * /=res;/* 14 */
} (x1 + x2/2.0);/* 10 */
} void Main (string [] args)
{(true)
{x1=0.0,/* 1 * /=0.0,=0.0; left=«»,=«»,=«»;. Write («Введіть ліву координату відрізка»); left=Console. ReadLine ();/* 2 * /. Write («Введіть праву координату відрізка»); right=Console. ReadLine () ;. Write («Введіть точність»); accurate=Console. ReadLine (); (! Double. TryParse (left, out x1) ||! Double. TryParse (right, out x2) ||! Double. TryParse (accurate, out e))/* 3 * /. WriteLine («Дані введені невірно»);/* 4 */
else if (e lt;=0)/* 5 * /. WriteLine («Точність повинна бути більше нуля»);/* 6 */
else
{Answer=divide (x1, x2, e);/* 7 * /. Write («Відповідь: {0} n», Answer);/* 15 */
}
Для даного програми використовуємо блок-схему, яка буде співвідноситися з кодом за допомогою пронумерованих блоків, кожному з яких відповідає такий же номер блоку коду.
тестування програмний рівняння
Малюнок 2. «Програма про знаходження кореня рівняння»
Використовуємо наступні тестові дані (x1, x2, e):
· 123;- 3; 0. При таких введених даних на блоці 3 програма знайде помилку і в 4 блоці буде надана інформація, яка повідомить про проблему і закінчить поточну ітерацію виконання програми.
· - 1;- 2;- 3. При таких даних програма дійде до 5 блоку, знайде помилку в допустимому значенні змінної, а на 6 блоці виведе інформацію і закінчить поточну ітерацію виконання програми.
· 30; 20; 15. При такому наборі тестових даних програма дійде до блоку номер 9 і оскільки не буде виконуватися умова, що модуль різниці x2 і x1 більше точності e, програма піде в блок 10 і потім завершить ітерацію виконання в блоці 15.
· 30; 20; 1. При таких даних програма дійде до блоку 12, після невиконання умови в якому вона потрапить в блок 14, а потім назад в блок 9, і так до тих пір поки на 12 блоці, не виконається умова і програма на закінчить роботу в блоці 13.
Необхідно визначити перетин двох прямих на площині. Кожна пряма задається координатами двох точок, що лежать на ній.
Розгляне наступний блок коду.
if ((x1 gt; 999) || (y1 gt; 999) || (x2 gt; 999) || (y2 gt; 999) || (x3 gt; 999) || (y3 gt; 999) || (x4 gt; 999) || (y4 gt; 999) || (x1 lt; - 999) || (y1 lt; - 999) || (x2 lt; - 999) | | (y2 lt; - 999) || (x3 lt; - 999) || (y3 lt; - 999) || (x4 lt; - 999) || (y4 lt; - 999))/* 1 */ . WriteLine («Введені дані виходять за межі необхідного діапазону»);/* 2 */
double a1=y1 - y2,=x2 - x1,=x1 * y2 - x2 * y1,=y3 - y4,=x4 - x3,=x3 * y4 - x4 * y3; (( x1 == x2 amp; amp; y1 == y2) || (x3 == x4) amp; amp; (y3 == y4))/* 3 */
Console. WriteLine («Прямі виродилися в точку»);/* 4 */
else if (((a1 * b2) == (a2 * b1)) amp; amp; ((a1 * c2) == (a2 * c1)))/* 5 * /. WriteLine («Прямі співпадають»);/* 6 */if ((a1 * b2) == (a2 * b1))/* 7 * /. WriteLine («Прямі паралельні»);/* 8 *//* 9 */
{X=(c1 * b2 - c2 * b1)/(b1 * a2 - b2 * a1),/* 10 * /=(c2 * a1 - c1 * a2)/(b1 * a2 - b2 * a1) ;. WriteLine («X={0}, Y={1}», X, Y);/* 11 */
}
Для даного програми використовуємо блок-схему, яка буде співвідноситися з кодом за допомогою пронумерованих блоків, кожному з яких відповідає такий же номер блоку коду.
Малюнок 3. «Програма про перетині двох прямих на площині»
Використовуємо наступні тестові дані:
· 1 001; Тисячі дві; 1 003; Тисячі чотири;- Тисяча одна;- 1002;- 1003;- 1004. Після перевірки в блоці 1, програма потрапить в блок 2, де виведеться повідомлення про порушення меж діапазону.
· 50, 2, 50, 2, 30, 6, 30, 6. При такому наборі тестових даних програма зайде в блок 3 і далі потрапить в блок 4, після чого виведе інформаційне повідомлення про вирожденність випадку і закінчить свою роботу.
...