Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Прогр_алгор_в среде BUILDER C++_Ч_1.pdf
Скачиваний:
106
Добавлен:
11.05.2015
Размер:
784.02 Кб
Скачать

Например:

If (mm > mRed) …

switсh (mm) { case mRed … brеak;

}

По умолчанию перечисляемые значения интерпретируются как целые числа, начиная с -1.

2.3. Кнопки-переключатели в C++ Builder

При создании программ в C++ Builder для организации разветвлений часто используются компоненты в виде кнопок-переключателей. Состояние такой кнопки (включено - выключено) визуально отражается на форме. На форме (рис.2.1) представлены кнопки-переключатели двух типов (TCheckBox, TRadioGroup ).

Компонент TCheckBox создает кнопку независимого переключателя, с помощью которой пользователь может указать свое решение типа да/нет. В программе состояние кнопки связано со значением булевой переменной, которая проверяется с помощью оператора if.

Компонент TRadiogroup создает группу кнопок - зависимых переключателей. При нажатии одной из кнопок группы все остальные кнопки отключаются. В программу передается номер включенной кнопки (0,1,2,...), который анализируется с помощью оператора switсh.

2.4. Пример написания программы

Задание: ввести три числа - x,y,z. Вычислить по усмотрению u=sin(x), u=cos(x) или u=tg(x). Найти по выбору максимальное из трех чисел: max(u,y,z), или max (|u|,|y|,|z|). Cоздать форму, представленную на рис. 2.1, и написать соответствующую программу.

2.4.1. Coздание формы

Создайте форму, такую же, как в первом задании, скорректировав текст надписей и положение окон TEdit.

2.4.2. Работа с компонентом TСheckBox

Выберите в меню компонентов Standard пиктограмму и поместите ее в нужное место формы. С помощью инспектора объектов измените заголовок (Caption) на maxabs. В тексте программы появилась переменная CheckBox1 типа

PDF created with pdfFactory Pro trial version www.pdffactory.com

TСheckBox. Теперь в зависимости от того, нажата или нет кнопка, булева переменная CheckBox1.Checked будет принимать значение true или false.

2.4.3. Работа с компонентом TRadioGroup

Выберите в меню компонентов Standard пиктограмму и поместите ее в нужное место формы. На форме появится окаймленный линией чистый прямоугольник с заголовком RadioGroup1. Замените заголовок (Caption) на U(x). Для того чтобы разместить на компоненте кнопки, необходимо свойство Columns установить равным единице (кнопки размещаются в одном столбце). Дважды щелкните по правой части свойства Items мышью, появится строчный редактор списка заголовков кнопок. Наберите три строки с именами: в первой строке - cos(x), во второй - sin(x), в третьей - tg(x), нажмите ОК.

После этого на форме внутри окаймления появится три кнопки- переключателя с введенными надписями.

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

переменной целого типа RadioGroup1->ItemIndex будет находиться номер нажатой клавиши (отсчитывается от нуля), что используется в тексте приведенной программы.

2.4.4. Создание обработчиков событий FormСreate и Botton1Сlick

Функции для обработки событий FormСreate и Botton1Сlick создаются аналогично тому, как и в первой теме. Текст процедур приведен ниже.

Запустите программу и убедитесь в том, что все ветви алгоритма выполняются правильно. Форма приведена на рис.2.1.

Рис. 2.1

PDF created with pdfFactory Pro trial version www.pdffactory.com

Текст программы: //---------------------------------------------------------------------------

#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("Рез-ты ст. гр.920201 Петрова И.И.");

}

//---------------------------------------------------------------------------

void __fastcall TForm1::Button1Click(TObject *Sender)

{

double x,y,z,u,ma;

// Ввод исходных данных и вывод в окно Memo1 x=StrToFloat(Edit1->Text); Memo1->Lines->Add("x="+Edit1->Text); y=StrToFloat(Edit2->Text); Memo1->Lines->Add("y="+Edit2->Text); z=StrToFloat(Edit3->Text);

Memo1->Lines->Add("z="+Edit3->Text);

// Проверка номера нажатой кнопки и выбор соответствующей ей

функции switch(RadioGroup1->ItemIndex)

{

case 0: u=cos(x); break; case 1: u=sin(x); break; case 2: u=tan(x); break;

}

if (CheckBox1->Checked) // Проверка состояния кнопки CheckBox1

PDF created with pdfFactory Pro trial version www.pdffactory.com