Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
??-?????5_???? сеев_Куров.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
670.72 Кб
Скачать

15.5 Лабораторная работа №1. Освоение среды визуального программирования на примере создания приложения для вычисления значения определенного интеграла

В ходе выполнения первой лабораторной работы, выполняемой в среде визуального программирования, студенты должны освоить принципы работы в визуальной среде программирования с использованием простейших компонентов этой среды.

Задание на лабораторную работу предусматривает вычисление значения определенного интеграла для заданной подынтегральной функции тремя методами (по методу прямоугольников, трапеций и парабол). Выбор такого задания объясняется тем, что на занятиях в первом семестре были изложены простейшие методы численного интегрирования, студенты реализовывали их во время лабораторных работ, поэтому основное внимание может быть сосредоточено на освоении среды визуального программирования и принципов написания программ при реализации событийно-ориентированного подхода.

Используя написанную программу, студенты могут провести несложные исследования, в ходе которых они получат зависимость точности получаемых результатов от интервала интегрирования при фиксированном числе разбиений или количества разбиений для вычисления интеграла с заданной точностью. В ходе проведения экспериментов студенты на практике могут убедиться в удобстве использования визуальной среды, т.к. проведение нового эксперимента не требует каждый раз запуска программы на выполнение, исходные данные и результаты представляются в удобной форме.

Первая часть работы предусматривает вычисление интеграла при заданных пределах интегрирования и заданном количестве разбиений (интервалов).

Во второй части работы (при наличии времени) те же интегралы вычисляются с учетом заданной точности (начальное количество разбиений может браться из первой части работы).

Последовательность действий при выполнении первой работы может быть следующей.

  1. Нанести на форму последовательно (в столбик) три компонента Label (метка) и под каждой меткой нанести компонент textBox (поля для ввода исходных данных). Используя окно сведений об объекте, свойству текст первой метки присвоить значение Нижний предел интегрирования. Испоьзуя окно сведений об объекте, свойству текст второй метки присвоить значение Верхний предел интегрирования. Испоьзуя окно сведений об объекте, свойству текст третьей метки присвоить значение Количество разбиений.

  2. Чтобы каждый раз в процессе отладки не вводить исходные данные, следует с помощью окна сведений об объекте свойству текст компонента textBox1 назначить значение нижнего предела интегрирования, например, 0. С помощью окна сведений об объекте свойству текст компонента textBox2 назначить значение верхнего предела интегрирования, например, 4. С помощью окна сведений об объекте свойству текст компонента textBox3 назначить значение количества разбиений интервала интегрирования, например, 20.

  3. Поместить на форму кнопку Button1 (под элементом textBox3). С помощью окна сведений об объекте свойству текст компонента Button1 назначить значение Ввод данных.

  4. Разместить на форме (во втором столбце) три кнопки. С помощью окна сведений об объекте свойству текст компонента Button2 назначить значение Интеграл по методу прямоугольников. С помощью окна сведений об объекте свойству текст компонента Button3 назначить значение Интеграл по методу трапеций. С помощью окна сведений об объекте свойству текст компонента Button4 назначить значение Интеграл по методу парабол.

  5. Разместить на форме под каждой из трех последних кнопок по элементу textBox (для вывода получаемых в результате работы программы значений интегралов).

  6. В поле textBox4 должно выводиться значение интеграла, вычисленное по методу прямоугольников, в поле textBox5 должно выводиться значение интеграла, вычисленное по методу трапеций, в поле textBox6 должно выводиться значение интеграла, вычисленное по методу парабол.

  7. Поместить на форму кнопку Button5 (под элементом textBox6). С помощью окна сведений об объекте свойству текст компонента Button5 назначить значение Выход.

  8. Для каждой кнопки (всего пять кнопок), размещенной на форме, с помощью окна сведений об объекте, выбрав вкладку Events (события), инициализировать событие щелчок на кнопке (Click), при этом в текст модуля будут добавлены заголовки методов-обработчиков этих событий.

  9. Разработать и вставить в обработчики событий необходимый программный код.

При выполнении второй части работы (вычисление интеграла с заданной точностью) необходимо на форму нанести окно для ввода точности, кнопку для ввода точности, а также кнопки, для которых инициализировать событие щелчок на кнопке (Click), обработка которого будет состоять в вычислении интеграла с точностью соответствующим методом. Под каждой из кнопок разместить текстовые окна для вывода результатов. Целесообразно разместить также поля для вывода информации о количестве разбиений интервала интегрирования для получения интеграла с заданной точностью по каждому из трех используемых методов. Для этого следует выполнить следующие два пункта 10 и 11.

10. При выполнении второй части лабораторной работы (вычисление интеграла с

точностью) на форму следует нанести метку Label4 (заголовок третьего столбца

объектов), выводящую заголовок (Вычисление интеграла с точностью), элемент

textBox7 для ввода точности, метку Label5 (Точность), кнопку Button6 для ввода

точности, а также три кнопки Button7, Button8, Button9, при нажатии которых

будут вычисляться те же интегралы, но с учетом точности. Под каждой из кнопок

следует разместить элементы textBox8, textBox9, textBox10 для вывода полученных

результатов.

  1. Для каждой кнопки (всего четыре кнопки), размещенной на форме, с помощью

окна сведений об объекте, выбрав вкладку Events (события), инициализировать

событие щелчок на кнопке (Click), при этом в текст модуля будут добавлены заго-

ловки методов-обработчиков этих событий. Разработать и вставить в обработчики

событий необходимый программный код.

Окончательный вид формы может выглядеть следующим образом (рис.4).

Рис.4 Вид формы при выполнении первой лабораторной работы

Обработчик события button6_Click должен обеспечивать считывание нового исходного данного (точности) из поля ввода textBox7 и преобразование этого значения из строкового представления в числовой тип (использовать метод Parse).

Обработчики событий button7_Click, button8_Click, button9_Click должны обеспечивать вычисление интеграла с точностью соответствующим методом и вывод результата в поле вывода. При этом должны использоваться ранее написанные функции вычисления интегралов указаными методами при фиксированном количестве разбиений.

При написании обработчиков событий (кода программы) следует иметь в виду, что вся информация, размещаемая в текстовых окнах и других элементах интерфейса, представляет собой объект-строку класса String. Поэтому, если содержимое строки представляет собой число, используемое далее в вычислениях, то его надо преобразовать к числовому типу. Аналогично надо поступить и при выводе результатов вычислений: значение числового типа преобразовать в строку.

Объект-строка String размещается в регулируемой куче, поэтому переменная этого типа объявляется следующим образом String ^s; Переменной этого типа можно присваивать значения того же типа, если они были уже созданы s=a;. Значение переменной s можно присваивать и с помощью конструктора, использующего утилиту gcnew, которая выделяет память под объект и может в качестве присваиваемого значения использовать тип, отличный от типа String.При этом присваиваемое значение будет преобразовано к типу String.

При использовании числовых типов следует иметь в виду, что данные этих типов представляют собой структуры, имеющие в своем составе методы обработки этих данных, в частности преобразования числа в строку и обратное преобразование. Метод Parse() преобразует строковое представление числа в эквивалентное ему число с плавающей запятой. Метод ToString() преобразует числовое значение данного экземпляра в эквивалентное ему строковое представление.

В качестве примера приведем тексты функций вычисления значения подынтегрального значения и функции вычисления интеграла при заданном числе разбиений методом средних прямоугольников.

// функция, вычисляющая значение подынтегральной функции

double f(double x)

{ return x*x*x;}

)//вычисление интеграла методом средних прямоугольников

double pram(double a, double b,int n)

{

double dx,sum,x,integ;

int i;

dx=(b-a)/n;

a=a+dx/2;

sum=0;

for (i=0;i<n;i++)

{

x=a+i*dx;

sum+=f(x);

}

integ=dx*sum;

return integ;

}

Обработчики событий, заключающихся в нажатии на кнопки 1 (ввод данных) и 2 (вычисление интеграла методом прямоугольников), выглядят следующим образом:

//Ввод данных

private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e)

{

String ^s=this->textBox1->Text;

a=a.Parse(s);

s=this->textBox2->Text;

b=b.Parse(s);

s=this->textBox3->Text;

n=n.Parse(s);

}

//Вычисление интеграла методом прямоугольников без точности

private: System::Void button2_Click(System::Object^ sender, System::EventArgs^ e)

{

String ^s;

double integ;

integ=pram(a,b,n);

s=integ.ToString();

this->textBox4->Text=s;

}

В заключении приводится текст обработчика события щелчок на кнопке 7 (вычисление интеграла с точностью методом прямоугольников):

//Вычисление интеграла методом прямоугольников с точностью

private: System::Void button7_Click(System::Object^ sender, System::EventArgs^ e)

{

double integ1,integ2;

int n1;

String ^s;

integ2=pram(a,b,n);

n1=n;

do

{

integ1=integ2;

n1*=2;

integ2=pram(a,b,n1);

}while(fabs(integ1-integ2)>eps);

s=integ2.ToString();

this->textBox8->Text=s;

}