к оглавлению

Программа решения квадратного уравнения в Borland C++Builder

Итак, мы рассмотрели все необходимые инструменты, компоненты и способы программирования в среде разработки программ Borland C++ Builder 6. Теперь студенты вооружены достаточными знаниями, для того чтобы начать составление и разработку собственных программ. Но для закрепления изученного материала на практике, в этой главе вниманию читателей предлагается разработать несколько программ, которые помогут обрести уверенность в своих силах начинающим программистам.


Предлагаемая программа предназначена для вычисления корней квадратного уравнения и может быть особенно полезна учащимся школ. На ее примере можно будет создать множество других программ, облегчающих вычисления различных уравнений и функций.


Сформируем интерфейс программы. Создайте новое приложение и поместите на его форму пять компонентов Label, три компонента Edit, две кнопки Button и компонент MainMenu.


Задайте для формы Form1 свойство Name с именем FormMain, а свойство Caption с названием Square. Замените свойства Name компонентов Label1-Label5 на Labelformul, Labela, Labelb, Labelc и Labelx1x2, соответственно, и задайте для них следующие свойства Caption: Квадратное уравнение а*х^2+b*х+с=0, а=, b=, с= и x1=?, x2=?.


Замените свойства Name компонентов Button1 и Button2 на ButtonExe и ButtonOut, соответственно, и задайте для них следующие свойства Caption: Решить и Выход.

 

Измените значение свойства Name компонентов Edit1—Edit3 на Edita, Editb и Editc, соответственно, а свойства Text этих компонентов заполните значениями 1, 1 и 0.


Щелкните дважды левой кнопкой мыши по компоненту MainMenu1 и в открывшемся окне FormMain задайте свойство Caption для первого пункта меню в виде названия О программе.

Закройте окно FormMain и расположите компоненты на форме в соответствии с рис. 24.1.

Расположение компонентов на основной форме программы

Рис. 24.1. Расположение компонентов на основной форме программы


Сохраните проект в файле с названием Square.bpr а модуль программы — в файле Usquare.cpp.
Интерфейс программы сформирован. Теперь можно приступить к редактированию программного кода. Щелкните дважды левой кнопкой мыши по кнопке Решить и введите в обработчик события OnClick строки программы из листинга 24.1.

Листинг 24.1. Строки обработчика события OnCIick программы Square

double a,b,c,x1,x2;
try
 {
 a=Edita->Text.ToDouble();
 b=Editb->Text.ToDouble();
 c=Editc->Text.ToDouble();
 }
catch (EConvertError& )
 {
 ShowMessage("Неправильно введен коэффициент\rПовторить ввод");
 Labelx1x2->Caption="x1=? x2=?"; // Убрать предыдущий результат
 return;
 }
int d=b*b+4*a*c;
if (a==0){
         if (b==0){
                  Labelx1x2->Caption="Неправильно заданы коэффициенты a и b";
                  return;
                  };
         x1=-c/b;
         Labelx1x2->Caption="Корень один\rx="+String(x1)+";";
         return;
         };
if (d<0){
        Labelx1x2->Caption="Детерминат меньше нуля. Нет корней!";
        return;
        };
if (d==0){
         x1=(-b/(2*a));
         Labelx1x2->Caption="Детерминат равен нулю. Корень один.\rx="+String(x1)+";";
         return;
         };
x1=(-b+sqrt(d))/(2*a);
x2=(-b-sqrt(d))/(2*a);
Labelx1x2->Caption="x1="+String(x1)+"; x2="+String(x2)+";";

Эти программные строки и весь проект программы под названием Square можно скачать по ссылке внизу статьи. В них описываются переменные, которые участвуют в вычислениях корней квадратного уравнения, и включены операторы и функции для вычисления корней. Поскольку при вычислении могут встретиться запрещенные ситуации, наподобие деления на ноль и пр., в программу включены операторы проверки подобных ситуаций с выводом соответствующих сообщений пользователю программы. В программе эти сообщения присутствуют в виде текста, заключенного в кавычки. Если этого не делать, то программа будет выдавать системные предупреждения на английском языке или "зависать". Хорошим стилем программирования считается предупреждение всех ошибочных ситуаций и недопущение тупикового выполнения программы приводящего к ее "зависанию". В противном случае программа будет раздражать пользователя, и он от нее откажется.
Так как в тексте программы присутствуют непростые арифметические операции, например вычисление квадратного корня sqrt(), необходимо подключить к программе математическую библиотеку. Для этого в модуле программы после строки #include "Usquare.h" впишите строку подключения библиотеки с математическими функциями:
#include <math.h>.

Теперь сформируйте обработчик события OnClick для кнопки Выход и вставьте в него программную строку для закрытия приложения:
Close () ;


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


Сформируйте обработчик события OnClick для первого пункта меню N1 компонента MainMenul путем двойного щелчка левой кнопкой мыши по самому компоненту и вставьте в него строку для модального вызова формы FormAbout с описанием программы:
FormAbout->ShowModal ();


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


Поскольку формы с описанием программы нет, ее необходимо создать. Для этого выполните из главного меню команду: File | New | Form. Для вновь созданной формы задайте свойство Name с именем FormAbout и свойство Caption с названием О программе.

Теперь поместите на эту форму четыре компонента Label, один компонент Image и одну кнопку BitBtn из палитры Additional, а также компонент MonthCalendar из палитры Win32.


Для компонентов Label1—Label4 задайте свойство Caption с названиями: Программа решения квадратных уравнений, Версия 1.0, Послать E-mail и Поиск в Интернете.


Для компонентов Label3 и Label4 установите шрифт через свойство Font как синий, подчеркнутый, полужирный курсив. Свойство Cursor для этих компонентов поменяйте на crHandPoint. Это делается для того, чтобы выделить надписи данных компонентов и изменить при наведении на них вид курсора мыши.


Создайте обработчик события OnClick для компонента Label3 и вставьте в него программную строку вызова почтовой программы:
ShellExecute(Handle, "open", "mailto:user@mail.kz?x-priority=normal&subject=ТЕМА_ПИСЬМА", NULL, NULL, SW_SHOWNORMAL);


Здесь в программной строке можно изменить адрес получателя письма user@mail.kz и заполнить тему письма собственным текстом.

Далее создайте обработчик события OnClick для компонента Label4 и вставьте в него программную строку вызова обозревателя и вхождения с его помощью в Интернет:
ShellExecute(Handle, "open", "http://bourabai.kz", 0, 0, SW_SHOW);


Естественно, что адрес страницы http://bourabai.kz/ можно заменить на любой другой подходящий и существующий адрес.

Для кнопки BitBtn1 установите свойство Kind, как bkOk. Создайте обработчик события OnClick для этой кнопки и вставьте в него программную строку выхода:
Close () ;


Наконец, скопируйте в каталог с программой предварительно созданный файл с рисунком или фотографией в формате BMP или JPG и загрузите его через свойство Picture компонента Image. Для того чтобы рисунок совпадал с размерами компонента Image, установите его свойство AutoSize в значение true. Расположите все компоненты на форме в соответствии с рис. 24.2 и сохраните модуль программы в файле с именем about.cpp.

Расположение компонентов на дополнительной форме программы

Рис. 24.2. Расположение компонентов на дополнительной форме программы


Поскольку мы добавили в наше приложение еще одну форму, необходимо включить в основной модуль Usquare.cpp имя файла описания новой формы с названием about.h. Для этого впишите в модуле Usquare.cpp после строки
#include <math.h> программную строку:
#include "about.h".


Теперь остается лишь заменить значок-иконку программы с помощью команды главного меню Project | Options | Application на созданный во встроенном редакторе Image Edit файл иконки с расширением ico и откомпилировать программу.
Программа готова. Запустите ее на выполнение и проверьте в работе.
В этой программе мы использовали новый компонент MonthCalendar, который позволяет без труда внедрить в программу красочный календарь с богатыми функциями. Кроме того, мы научились запускать из программы почтовую службу отправки электронных писем и входить в Интернет из работающей программы. Подобные приемы можно применять во вновь создаваемых программах.

Square

Скачать проект Square

к оглавлению

В ПРИМОРЬЕ РЕЖИМ ФАКТИЧЕСКИ ВВОДИТ ВОЕННОЕ ПОЛОЖЕНИЕ

В России в Приморье происходит насильственный захват власти силами военной полиции и МЧС

По сообщениям от избирательного штаба члена ООД НПСР избранного народом губернатора Ищенко,
у которого в данный момент насильно отнимают победу, в Уссурийске доступ к местному ТИКу перекрыт военной полицией.
В ряде других районов доступ к избирательным комиссиям перекрывают силами МЧС.
По ряду источников из Москвы вылетел ОМОН для подавления возмущенных избирателей в Приморье.
В результате действия отстраненной всеобщим голосованием местной "власти" и ее политической крыши
в Москве попадают под статью 278 УК РФ "Насильственный захват власти или насильственное удержание власти"!

ПРИМОРЬЕ - ПЕРВЫЙ ВЗРЫВ. Владивосток-протесты

Юрий Болдырев:Захват власти в Приморье и массовая шизофрения

Павел Грудинин: Власть дурака и закон без права

ВСЕ ВИДЕО
Знаете ли Вы, что в 1974 - 1980 годах профессор Стефан Маринов из г. Грац, Австрия, проделал серию экспериментов, в которых показал, что Земля движется по отношению к некоторой космической системе отсчета со скоростью 360±30 км/с, которая явно имеет какой-то абсолютный статус. Естественно, ему не давали нигде выступать и он вынужден был начать выпуск своего научного журнала "Deutsche Physik", где объяснял открытое им явление. Подробнее читайте в FAQ по эфирной физике.

НОВОСТИ ФОРУМАФорум Рыцари теории эфира
Рыцари теории эфира
  23.09.2018 - 13:33: ВОЙНА, ПОЛИТИКА И НАУКА - War, Politics and Science -> Проблема государственного терроризма - Карим_Хайдаров.
23.09.2018 - 13:32: ВОЙНА, ПОЛИТИКА И НАУКА - War, Politics and Science -> ЗА НАМИ БЛЮДЯТ - Карим_Хайдаров.
23.09.2018 - 13:06: ЭКОНОМИКА И ФИНАНСЫ - Economy and Finances -> ПРОБЛЕМА КРИМИНАЛИЗАЦИИ ЭКОНОМИКИ - Карим_Хайдаров.
23.09.2018 - 02:32: ВОЙНА, ПОЛИТИКА И НАУКА - War, Politics and Science -> РУССКИЙ МИР - Карим_Хайдаров.
21.09.2018 - 02:58: ВОСПИТАНИЕ, ПРОСВЕЩЕНИЕ, ОБРАЗОВАНИЕ - Upbringing, Inlightening, Education -> Просвещение от Андрея Фурсова - Карим_Хайдаров.
18.09.2018 - 02:53: ВОЙНА, ПОЛИТИКА И НАУКА - War, Politics and Science -> РАСЧЕЛОВЕЧИВАНИЕ ЧЕЛОВЕКА. КОМУ ЭТО НАДО? - Карим_Хайдаров.
18.09.2018 - 02:52: ВОСПИТАНИЕ, ПРОСВЕЩЕНИЕ, ОБРАЗОВАНИЕ - Upbringing, Inlightening, Education -> Просвещение от Л.Г. Ивашова - Карим_Хайдаров.
18.09.2018 - 02:02: ЭКОНОМИКА И ФИНАНСЫ - Economy and Finances -> КОЛЛАПС МИРОВОЙ ФИНАНСОВОЙ СИСТЕМЫ - Карим_Хайдаров.
17.09.2018 - 12:04: ПЕРСОНАЛИИ - Personalias -> WHO IS WHO - КТО ЕСТЬ КТО - Карим_Хайдаров.
16.09.2018 - 20:01: АСТРОФИЗИКА - Astrophysics -> Метеориты - Валерий_Бурмакин.
16.09.2018 - 19:58: АСТРОФИЗИКА - Astrophysics -> Хондриты - Валерий_Бурмакин.
16.09.2018 - 13:11: ВОСПИТАНИЕ, ПРОСВЕЩЕНИЕ, ОБРАЗОВАНИЕ - Upbringing, Inlightening, Education -> Просвещение от проф. В.Ю. Катасонова - Карим_Хайдаров.
Bourabai Research Institution home page

Bourabai Research - Технологии XXI века Bourabai Research Institution