Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
(ООП).Лаб_3_5_1 Проектування взаємодії об'єктів через події.doc
Скачиваний:
39
Добавлен:
01.07.2025
Размер:
199.17 Кб
Скачать

Приклад 2

Я к приклад використання деяких вбудованих об’єктів розглянемо таке завдання:

Створити діалогову програму розрахунку таблиці значень математичних функцій, котра виконує наступне:

- забезпечує обрання математичної функції за допомогою ієрархічного меню. На першому рівні обирається клас функцій: тригонометричні, поліноми тощо. На другому рівні для кожного класу обирається математичний вираз, наприклад Y= a*Sin(b*X+c),

Y=a1*Sin(b1*X+c1)+a2*Cos(b2*X+c2)

та Y= a*Sin(b1*X+c1)*Cos(b2*X+c2).

- для обраного виразу функції забезпечує введення параметрів (у даному прикладі це коефіцієнти a, b, c, a1, b1, c1, a2, b2, c2).

- пропонує стандартний інтервал і крок обчислення значень виразу та забезпечує їх редагування користувачем.

- після натиснення кнопки „Розрахувати” заповняє таблицю з двома стовпчиками: у першому значення змінної X, у другому відповідні значення змінної Y.

Оскільки кожен вираз має власну кількість параметрів, оберемо метод введення даних через RichTextBox, та розташуємо цей об’єкт на формі і встановимо для нього шрифт Microsoft Sans Serif; 16pt.

Для створення меню розташуємо на формі об’єкт MenuStrip і заповнимо поля ієрархії відповідними назвами пунктів і формулами. Налагодимо розмір шрифту для меню в цілому.

Добавимо до форми мітку Label, в яку буде виводитися обраний вираз, і також налагодимо розмір шрифту.

Для подання результатів обчислення розташуємо на формі об’єкт DataGridView, започаткуємо в ньому два стовпчики і налагодимо їх властивості так, щоб користувач не міг змінювати в них дані.

Щоб система запрацювала, додамо в клас форми потрібні дані:

public partial class Form1 : Form

{

int gr_f = 0; //номер графіку за меню

int n_par=3; //кількість параметрів графіку

double x_min = 0, x_max = 10, dx = 0.50;

double[] par = new double[10]; // параметри виразів

Для розташованих на формі елементів керування запрограмуємо наступні обробники подій (реалізовано тільки для першої функції, решта аналогічна):

private void синусToolStripMenuItem_Click(object sender, EventArgs e)

{ // Обрано 1-й пункт 1-го розділу меню,

// виводимо в мітку з пункту меню вираз, що буде розразовано

label2.Text = синусToolStripMenuItem.Text;// "Y=a*Sin(b*X+c)";

// Затираємо результати попередніх обчислень.

richTextBox1.Clear();

// Встановлюємо значення параметрів розразунку і виразу "за замовченням"

par[0] = 0;

par[1] = 0;

par[2] = 0;

par[3] = 1;

par[4] = 1;

par[5] = 0;

// Пропонуємо користовачу перевірити і виправити значення параметрів

richTextBox1.AppendText(

"Початкове Х_min= "+x_min

+";\nКінцеве Х_max= "+x_max

+";\nКрок dХ= " +dx

+";\n\na= " +par[3]

+ ";\nb= " +par[4]

+ ";\nc= " +par[5]

+ ";");

// Встановлюємо службові параметри

gr_f = 0;

n_par = 6;

}

private void косинусToolStripMenuItem_Click(object sender, EventArgs e)

{

label2.Text = "Y=a1*Sin(b1*X+c1)+a2*Cos(b2*X+c2)";

// Заглушка для другого пункту меню

gr_f = 1;

n_par = 9;

}

private void yaSinb1Xc1Cosb2Xc2ToolStripMenuItem_Click(object sender, EventArgs e)

{

label2.Text = "Y=a*Sin(b1*X+c1)*Cos(b2*X+c2)";

// Заглушка для третього пункту меню

gr_f = 2;

n_par = 8;

}

private void button3_Click(object sender, EventArgs e)

{ // Натиснуто кнопку "Розрахувати"

// З використанням методу Find виділяємо значення параметрів,

// розташованих між символами "=" та ";"

int n1=0,n2=0;

string s;

char[] r1={'='};

char[] r2={';'};

for (int j = 0; j < n_par; j++)

{

n1 = richTextBox1.Find(r1, ++n2);

n2 = richTextBox1.Find(r2, ++n1);

richTextBox1.Select(n1, n2 - n1);

s = richTextBox1.SelectedText;

par[j] = double.Parse(s);

}

x_min = par[0];

x_max = par[1];

dx = par[2];