Поможем написать учебную работу
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.
PAGE 1
Лабораторна робота № 3 _ 2
Лабораторна робота № 3 _ 2
Тема роботи: Розробка та тестування програми з обробником події OnCreate для форми. Використання компонентів TCheckBox, TRadioGroup.
Мета роботи: Вивчення прийомів побудови додатка в середовищі C++Builder з обробником події OnCreate для форми. Використання компонентів TCheckBox, TRadioGroup.
Теоретичні відомості При запуску програми виникає подія OnCreate («создание формы»). Обробник цієї події використають для виконання підготовчих дій (ініціалізації параметрів, встановлення початкових значень тощо).
При создании программ в C++ Builder для организации разветвлений часто используются компоненты в виде кнопок-переключателей. Состояние такой кнопки (включено - выключено) визуально отражается на форме. На форме представлены кнопки-переключатели двух типов (TCheckBox, TRadioGroup).
Компонент TCheckBox создает кнопку независимого переключателя, с помощью которой пользователь может указать свое решение типа да/нет. В программе состояние кнопки связано со значением булевой переменной, которая проверяется с помощью оператора if.
Компонент TRadioGroup создает группу кнопок - зависимых переключателей. При нажатии одной из кнопок группы все остальные кнопки отключаются. В программу передается номер включенной кнопки (0,1,2,...), который анализируется с помощью оператора switch. Если ни одна из кнопок не выбрана, номер включенной кнопки равен -1.
Постановка задачи: ввести три числа - x,y,z. Вычислить по усмотрению u=sin(x), u=cos(x) или u=tg(x). Найти по выбору максимальное из трех чисел: max(u,y,z), или max (|u|,|y|,|z|). Создать форму, представленную на рис. 2.1, и написать соответствующую программу.
Проектування інтерфейсу
Спроектуйте інтерфейс у відповідності з формою, яка приведена на рисунку.
Выберите в меню компонентов Standard пиктограмму CheckBox и поместите ее в нужное место формы. С помощью инспектора объектов измените заголовок (Caption) на max/abs. Теперь в зависимости от того, нажата или нет кнопка, булева переменная CheckBoxl->Checked будет принимать значение true или false.
Выберите в меню компонентов Standard пиктограмму RadioGroupl и поместите ее в нужное место формы. На форме появится окаймленный линией чистый прямоугольник с заголовком RadioGroupl. Замените заголовок (Caption) на U(x). Для того чтобы разместить на компоненте кнопки, необходимо свойство Columns установить равным единице (кнопки размещаются в одном столбце). Дважды щелкните по правой части свойства Items мышью, появится строчный редактор списка заголовков кнопок. Наберите три строки с именами: в первой строке -cos(x), во второй - sin(x), в третьей - tg(x), нажмите ОК.
После этого на форме внутри окаймления появится три кнопки-переключателя с введенными надписями.
Теперь при нажатии одной из кнопок группы в переменной целого типа RadioGroupl->ItemIndex будет находиться номер нажатой клавиши (отсчитывается от нуля), что используется в тексте приведенной программы.
Функции для обработки событий FormCreate и BottonlClick создаются в соответствии с текстом, который приведен ниже.
Запустите программу и убедитесь в том, что все ветви алгоритма выполняются правильно.
Текст программы:
#include <vcl.h>
#pragma hdrstop
#include "Unit1.h"
#include "Math.h"
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{ }
//---------------------------------------------------------------------------
void __fastcall TForm1::FormCreate(TObject *Sender)
{
Edit1->Text="-0,1";
Edit2->Text="0,356";
Edit3->Text="0";
Memo1 ->Clear();
Memo1->Lines->Add("Виеонав Петров А.М., група ПЗ-10-1");
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
double x,y,z,u,ma;
// Ввод исходных данных
x=StrToFloat(Edit1 ->Text);
y=StrToFloat(Edit2->Text);
z=StrToFloat(Edit3->Text);
// Проверка номера нажатой кнопки и выбор соответствующей ей функции
if (RadioGroup1->ItemIndex == -1)
{
ShowMessage("Оберіть варіант функції!");
return;
}
else
{
switch(RadioGroup1->ItemIndex)
{
case 0: u=cos(x); break;
case 1: u=sin(x); break;
case 2: u=tan(x); break;
}
}
// вывод в окно Memo1
Memo1 ->Lines->Add("x="+Edit1 ->Text);
Memo1->Lines->Add("y="+Edit2->Text);
Memo1->Lines->Add("z="+Edit3->Text);
if (CheckBox1->Checked) // Проверка состояния кнопки CheckBox1
{
u=fabs(u);
y=fabs(y);
z=fabs(z);
}
// Нахождение максимального из трех чисел
if (u>y) ma=u;
else ma=y;
if (z>ma) ma=z;
if (CheckBox1->Checked)
Memo1->Lines->Add("maxabc="+ FloatToStrF(ma,ffFixed,8,6));
else Memo1->Lines->Add("max="+ FloatToStrF(ma,ffFixed,8,6));
}
//---------------------------------------------------------------------------
2.5. Индивидуальное задание
В качестве f(x) использовать по выбору: sh(x), x2, ех. Создать новый проект, поставить интерфейс формы в соответствие заданию. Создать текст обработчиков событий программы, выполняющих поставленную задачу. Предусмотреть вывод информации, показывающий, по какой ветви производились вычисления.