Один из методов решения квадратных уравнений

Разделы: Информатика


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

Рисунок 1

Рисунок 2

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

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

procedure SqRoot(Editi,Edit2,Edit3:tEdit;Label2:tLabel);
var
a,b,c:real; {Коэффициенты уравнения}
d:real; {Дискриминант}
xl,x2:real; {Корни уравнения}
begin
{Ввод исходных данных} a:=StrToFloat(Editl.text);
b:=StrToFloat(Edit2.text);
с:=StrToFloat(Edj.t3.text);
{ Вычисление дискриминанта } d:=Sqr(b)-4*a*c;
if d=0 then begin
Label2.color:=clRed;
Label2.font.color:=clRed;
Label2.caption:='Дискриминант меньше нуля.'+#13+
'Уравнение не имеет корней.' end else
begin
{Вычисление корней}
х1:=(-b+Sqrt(d))/(2*a);
x2:=(-b-Sqrt(d))/(2*а);
{ Вывод результата - значений корней}
Label2.font.color:=clBlack;
Label 2.caption='Корни уравнения:' +#13+'xl=1+FloatToStr(xl)
+#13+'x2='+FloatToStr(x2);
end;
end.

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

Рисунок 3

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

Решение квадратных уравнений средствами Visual Basic

Задача: Дано квадратное уравнение общего вида: ax2+bx+c=0. Ввести в память компьютера числовые коэффициенты: a, b, c, выполнить необходимый анализ введенной информации согласно известному из курса средней школы алгоритму решения квадратного уравнения: найти дискриминант d=b2-4ac и, проанализировав его знак, найти все действительные корни, если знак дискриминанта положительный, или сообщить о том, что действительных корней нет, если знак дискриминанта отрицательный.

Начать составление проекта решения данной задачи необходимо с ответа на вопрос: что нужно поместить на форму Form1?

Поместим на форму две кнопки: CommandButton1 и CommandButton2.

Рисунок 4

Для этого нужно воспользоваться Панелью элементов (объектов) управления General, которая расположена в левой части основного окна компилятора Visual Basic.

Первая кнопка CommandButton1 предназначается для начала работы программы согласно следующему алгоритму:

  1. ввод коэффициентов исходного уравнения a, b, c;
  2. расчет дискриминанта d=b2 - 4ac;
  3. анализ знака дискриминанта, вычисление корней уравнения и вывод их на форму, если знак дискриминанта d>0 (положительный);
  4.  вывод сообщения: «Решений нет», если знак дискриминанта d<0 (отрицательный).

Необходимо написать специальную процедуру события, реагирующую на щелчок мышки по кнопке CommandButton1 на форме, которую назовем: «Введите коэффициенты уравнения a, b, c», и выполняющую названный выше алгоритм.

Рисунок 5

Эта процедура будет иметь название: Command1_Click().

Войдя в компилятор Visual Basic, выберем в главном меню раздел RUN и выполним команду Start. Перед нами появится окно формы нашего проекта задачи «Решение квадратного уравнения». Щелкнем по кнопке «Введите коэффициенты уравнения a, b, c».

Перед нами появится окно InputBox для ввода коэффициента a уравнения.

Рисунок 6

Введем числовое значение, например 1, требуемого коэффициента и нажмите кнопку Ok.

Вслед за этим появится окно для ввода второго коэффициента уравнения b.

Рисунок 7

Введем коэффициент b (например –5), как это мы сделали для коэффициента a уравнения. Нажмем кнопку Ok.

Проделаем то же самое, чтобы ввести третий коэффициент уравнения c, например с=6.

Рисунок 8

После ввода третьего коэффициента уравнения c перед нами появится окно формы, содержащее решение квадратного уравнения, коэффициенты которого мы ввели.

Рисунок 9

Мы рассмотрели процесс решения квадратного уравнения: x2-5x+6=0.

Далее рассмотрим процесс решения второго квадратного уравнения: 10x2+5x+200=0.

В окне InputBox вводим значение первого коэффициента уравнения a=10.

Рисунок 10

Ввод первого коэффициента a завершается нажатием кнопки Ok.

Аналогично в окне InputBox вводим значение второго коэффициента уравнения b=5.

Рисунок 11

Ввод второго коэффициента b так же завершается нажатием соответствующей кнопки Ok.

Наконец, в окне InputBox вводим значение третьего коэффициента нового уравнения c=200.

Рисунок 12

Ввод третьего коэффициента c так же завершается нажатием соответствующей кнопки Ok.

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

Рисунок 13

И, наконец, рассмотрим процесс решения третьего квадратного уравнения: x2-8x+16=0.

Это уравнение имеет двукратный корень, так как его дискриминант d=0. Как и в двух предыдущих случаях, вводим коэффициенты квадратного уравнения. Первым вводим коэффициент a=1.

Рисунок 14

Далее вводим второй коэффициент уравнения b= –8.

Рисунок 15

Третий коэффициент уравнения c=16 вводим в последнюю очередь.

 Рисунок 16

В итоге мы должны увидеть правильное решение третьего квадратного уравнения. Действительно последнее уравнение имеет два одинаковых корня.

 Рисунок 17