к оглавлению

Программа решения квадратного уравнения в 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

к оглавлению

Знаете ли Вы, что объектно-ориентированное сборочное программирование - это разновидность сборочного программирования:
- основанная на методологии объектно-ориентированного программирования; и
- предполагающая распространение библиотек классов в виде исходного кода (obj) или упаковку классов в динамически компонуемую библиотеку (dll).

НОВОСТИ ФОРУМА

Форум Рыцари теории эфира


Рыцари теории эфира
 10.11.2021 - 12:37: ПЕРСОНАЛИИ - Personalias -> WHO IS WHO - КТО ЕСТЬ КТО - Карим_Хайдаров.
10.11.2021 - 12:36: СОВЕСТЬ - Conscience -> РАСЧЕЛОВЕЧИВАНИЕ ЧЕЛОВЕКА. КОМУ ЭТО НАДО? - Карим_Хайдаров.
10.11.2021 - 12:36: ВОСПИТАНИЕ, ПРОСВЕЩЕНИЕ, ОБРАЗОВАНИЕ - Upbringing, Inlightening, Education -> Просвещение от д.м.н. Александра Алексеевича Редько - Карим_Хайдаров.
10.11.2021 - 12:35: ЭКОЛОГИЯ - Ecology -> Биологическая безопасность населения - Карим_Хайдаров.
10.11.2021 - 12:34: ВОЙНА, ПОЛИТИКА И НАУКА - War, Politics and Science -> Проблема государственного терроризма - Карим_Хайдаров.
10.11.2021 - 12:34: ВОЙНА, ПОЛИТИКА И НАУКА - War, Politics and Science -> ПРАВОСУДИЯ.НЕТ - Карим_Хайдаров.
10.11.2021 - 12:34: ВОСПИТАНИЕ, ПРОСВЕЩЕНИЕ, ОБРАЗОВАНИЕ - Upbringing, Inlightening, Education -> Просвещение от Вадима Глогера, США - Карим_Хайдаров.
10.11.2021 - 09:18: НОВЫЕ ТЕХНОЛОГИИ - New Technologies -> Волновая генетика Петра Гаряева, 5G-контроль и управление - Карим_Хайдаров.
10.11.2021 - 09:18: ЭКОЛОГИЯ - Ecology -> ЭКОЛОГИЯ ДЛЯ ВСЕХ - Карим_Хайдаров.
10.11.2021 - 09:16: ЭКОЛОГИЯ - Ecology -> ПРОБЛЕМЫ МЕДИЦИНЫ - Карим_Хайдаров.
10.11.2021 - 09:15: ВОСПИТАНИЕ, ПРОСВЕЩЕНИЕ, ОБРАЗОВАНИЕ - Upbringing, Inlightening, Education -> Просвещение от Екатерины Коваленко - Карим_Хайдаров.
10.11.2021 - 09:13: ВОСПИТАНИЕ, ПРОСВЕЩЕНИЕ, ОБРАЗОВАНИЕ - Upbringing, Inlightening, Education -> Просвещение от Вильгельма Варкентина - Карим_Хайдаров.
Bourabai Research - Технологии XXI века Bourabai Research Institution