к оглавлению

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

к оглавлению

Знаете ли Вы, что такое мысленный эксперимент, gedanken experiment?
Это несуществующая практика, потусторонний опыт, воображение того, чего нет на самом деле. Мысленные эксперименты подобны снам наяву. Они рождают чудовищ. В отличие от физического эксперимента, который является опытной проверкой гипотез, "мысленный эксперимент" фокуснически подменяет экспериментальную проверку желаемыми, не проверенными на практике выводами, манипулируя логикообразными построениями, реально нарушающими саму логику путем использования недоказанных посылок в качестве доказанных, то есть путем подмены. Таким образом, основной задачей заявителей "мысленных экспериментов" является обман слушателя или читателя путем замены настоящего физического эксперимента его "куклой" - фиктивными рассуждениями под честное слово без самой физической проверки.
Заполнение физики воображаемыми, "мысленными экспериментами" привело к возникновению абсурдной сюрреалистической, спутанно-запутанной картины мира. Настоящий исследователь должен отличать такие "фантики" от настоящих ценностей.

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

Это мы видим на примере СТО и ОТО, превратившихся в своеобразный вид религии, управляющей наукой и общественным мнением. Никакое количество фактов, противоречащих им, не может преодолеть формулу Эйнштейна: "Если факт не соответствует теории - измените факт" (В другом варианте " - Факт не соответствует теории? - Тем хуже для факта").

Максимально, на что может претендовать "мысленный эксперимент" - это только на внутреннюю непротиворечивость гипотезы в рамках собственной, часто отнюдь не истинной логики заявителя. Соответсвие практике это не проверяет. Настоящая проверка может состояться только в действительном физическом эксперименте.

Эксперимент на то и эксперимент, что он есть не изощрение мысли, а проверка мысли. Непротиворечивая внутри себя мысль не может сама себя проверить. Это доказано Куртом Гёделем.

Понятие "мысленный эксперимент" придумано специально спекулянтами - релятивистами для шулерской подмены реальной проверки мысли на практике (эксперимента) своим "честным словом". Подробнее читайте в FAQ по эфирной физике.

Bourabai Research Institution home page

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