Блок схема квадратного уравнения информатика пошаговая инструкция

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

Рисунок 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

Рассмотрим использование оператора if на
примерах3В задачах этой главы мы не будем уделять много внимания интерфейсу создаваемых программ, чтобы у читателя была возможность разобраться в алгоритмах и способах их записи на языке Free Pascal..

ЗАДАЧА 3.1. Дано вещественное число x. Для функции, график которой приведён на рис. 3.10, вычислить y = f (x).

Аналитически функцию, представленную на рис. 3.10, можно записать так:

y(x) = \begin{cases}
4,   & x \le -2, \\
x^2, & -2 < x < 1, \\
1,   & x \ge 1.
\end{cases}

Составим словесный алгоритм решения этой задачи:

  1. Начало алгоритма.
  2. Ввод числа x (аргумент функции).
  3. Если значение x меньше либо равно -2, то переход к п. 4, иначе переход к п. 5.
  4. Вычисление значения функции: y = 4, переход к п. 8.
  5. Если значение x больше либо равно 1, то переход к п. 6, иначе переход к п. 7.
  6. Вычисление значения функции: y = 1, переход к п. 8.
  7. Вычисление значения функции: y = x^2.
  8. Вывод значений аргумента x и функции y.
  9. Конец алгоритма.

Блок-схема, соответствующая описанному алгоритму, представлена на рисунке 3.11. Как видно, блок-схема нагляднее и проще для восприятия, чем словесное описание алгоритма. В дальнейшем для описания алгоритма мы часто будем использовать именно блок-схемы.

Текст программы на языке Free Pascal будет иметь вид:

var
	x, y : real;
begin
	write ( ’ x= ’ );
	readln ( x );
	if x<= -2 then y:=4
	else if x>=1 then y:=1
	else y:= sqr ( x );
	writeln ( ’ x= ’, x : 5 : 2, ’    y= ’, y : 5 : 2 );
end.

Эту программу можно ввести в текстовом редакторе Geany (или в текстовом редакторе Free Pascal) и запустить на выполнение.

ЗАДАЧА 3.2. Даны вещественные числа x и y. Определить, принадлежит ли точка с координатами (x; y) заштрихованной части плоскости (рис. 3.12).

Как показано на рис. 3.12, область ограничена линиями x = -1, x = 3, y = -2 и y = 4. Значит, точка с координатами (x; y) будет принадлежать этой области, если будут выполняться следующие условия: x \ge -1, x \le 3, y \ge -2 и y \le 4. Иначе точка лежит за пределами области.

Блок-схема, описывающая алгоритм решения данной задачи, представлена на рис. 3.13.

Текст программы к задаче 3.2:

var x, y : real;
begin
	write ( ’ x= ’ ); readln ( x );
	write ( ’ y= ’ ); readln ( y );
	if ( x>= -1) and ( x<=3) and ( y>= -2) and ( y<=4) then
		writeln ( ’Точка принадлежит области ’ )
	else
		writeln ( ’Точка не принадлежит области ’ );
end.

ЗАДАЧА 3.3. Написать программу решения квадратного уравнения ax^2+ bx + c = 0.

Исходные данные: вещественные числа a, b и c — коэффициенты квадратного уравнения.

Результаты работы программы: вещественные числа x_1 и x_2 — корни квадратного уравнения — либо сообщение о том, что корней нет.

Вспомогательные переменные: вещественная переменная d, в которой будет храниться дискриминант квадратного уравнения.

Составим словесный алгоритм решения этой задачи.

  1. Начало алгоритма.
  2. Ввод числовых значений переменных a, b и c.
  3. Вычисление значения дискриминанта d по формуле d = b^2-4ac.
  4. Если d < 0, то переход к п. 5, иначе переход к п. 6.
  5. Вывод сообщения «Действительных корней нет» и переход к п. 8.
  6. Вычисление корней x_1 = \left(-b+\sqrt{d}\right)/(2a) и x_2 =\left(-b-\sqrt{d}\right)/(2a).
  7. Вывод значений x_1 и x_2 на экран.
  8. Конец алгоритма.

Блок-схема, соответствующая этому описанию, представлена на рис. 3.14.

Текст программы, которая реализует решение квадратного уравнения:

{Описание переменных.}
var a, b, c, d, x1, x2 : real;
begin
{Ввод значения коэффициентов квадратного уравнения.}
writeln ( ’Введите коэффициенты квадратного уравнения ’ );
readln ( a, b, c );
{Вычисление дискриминанта.}
d:=b * b-4*a*c;
{Если дискриминант отрицателен,}
if d<0 then
	{то вывод сообщения, что корней нет,}
	writeln ( ’Действительных корней нет ’ )
else
begin
	{иначе вычисление корней x1, x2}
	x1:=(-b+sqrt ( d ) ) / 2 / a;
	x2:=(-b_sqrt ( d ) ) / ( 2 * a );
	{и вывод их на экран.}
	writeln ( ’X1= ’, x1 : 6 : 3, ’ -X2= ’, x2 : 6 : 3 )
end
end.

ЗАДАЧА 3.4. Составить программу нахождения действительных и комплексных корней квадратного уравнения ax^2 + bx + c = 0.

Исходные данные: вещественные числа a, b и c — коэффициенты квадратного уравнения.

Результаты работы программы: вещественные числа x_1 и x_2 — действительные корни квадратного уравнения — либо x_1 и x_2 — действительная и мнимая части комплексного числа.

Вспомогательные переменные: вещественная переменная d, в которой будет храниться дискриминант квадратного уравнения.

Можно выделить следующие этапы решения задачи:

  1. Ввод коэффициентов квадратного уравнения a, b и c.
  2. Вычисление дискриминанта d по формуле d = b^2- 4ac.
  3. Проверка знака дискриминанта. Если d \ge 0, то вычисление действительных корней:

    x_1 = \frac{-b+\sqrt{d}}{2a}\text{ и }
x_2 = \frac{-b-\sqrt{d}}{2a}

и вывод их на экран. При отрицательном дискриминанте выводится сообщение о том, что действительных корней нет, и вычисляются комплексные
корни4Комплексные числа записываются в виде a+bi, где a — действительная часть комплексного числа, b — мнимая часть комплексного числа, i — мнимая единица \sqrt{-1}.

\frac{-b}{2a}+i\frac{\sqrt{|d|}}{2a},
\frac{-b}{2a}-i\frac{\sqrt{|d|}}{2a}.

У обоих комплексных корней действительные части одинаковые, а мнимые отличаются знаком. Поэтому можно в переменной x1 хранить действительную часть числа -b/(2a), в переменной x2 — модуль мнимой части \sqrt{|d|}/(2a), а в качестве корней вывести x1+ix2 и x1-ix2.

На рис. 3.15 изображена блок-схема решения задачи. Блок 1 предназначен для ввода коэффициентов квадратного уравнения. В блоке 2 осуществляется вычисление дискриминанта. Блок 3 осуществляет проверку знака дискриминанта; если дискриминант отрицателен, то корни комплексные, их расчёт происходит в блоке 4 (действительная часть корня записывается в переменную x1, модуль мнимой — в переменную x2), а вывод — в блоке 5 (первый корень x1+ix2, второй — x1-ix2). Если дискриминант положителен, то вычисляются действительные корни уравнения (блоки 6—7) и выводятся на экран (блок 8).

Текст программы, реализующей поставленную задачу:

var a, b, c, d, x1, x2 : real;
begin
	writeln ( ’Введите_коэффициенты_квадратного_уравнения ’ );
	readln ( a, b, c );
	d:=b * b-4*a*c;
	if d<0 then
	begin
	//Если дискриминант отрицателен, то вывод сообщения,
	//что действительных корней нет, и вычисление комплексных корней.
		writeln ( ’Действительных корней нет ’ );
		{Вычисление действительной части комплексных корней.}
		x1:=-b /(2 * a );
		{Вычисление модуля мнимой части комплексных корней.}
		x2:= sqrt ( abs ( d ) ) / ( 2 * a );
		writeln ( ’Комплексные корни уравнения  ’,
		a : 1 : 2, ’ x^2+ ’, b : 1 : 2, ’ x+ ’, c : 1 : 2, ’=0 ’ );
		{Вывод значений комплексных корней в виде x1\pm ix2}
		writeln ( x1 : 1 : 2, ’+i * ( ’, x2 : 1 : 2, ’ ) ’ );
		writeln ( x1 : 1 : 2, ’- i * ( ’, x2 : 1 : 2, ’ ) ’ );
	end
	else
	begin
	{иначе вычисление действительных корней x1, x2}
		x1:=(-b+sqrt ( d ) ) / 2 / a;
		x2:=(-b_sqrt ( d ) ) / ( 2 * a );
		{и вывод их на экран.}
		writeln ( ’Действительные корни уравнения  ’,
			a : 1 : 2, ’ x^2+ ’, b : 1 : 2, ’ x+ ’, c : 1 : 2, ’=0 ’ );
		writeln ( ’X1= ’, x1 : 1 : 2, ’ X2= ’, x2 : 1 : 2 )
	end
end.

ЗАДАЧА 3.5. Составить программу для решения кубического уравнения ax^3 + bx^2 + cx + d = 0.

Кубическое уравнение имеет вид

ax^3 + bx^2 + cx + d = 0 (
3.1)

После деления на a уравнение (3.1) принимает канонический вид:

x^3 + rx^2 + sx + t = 0 (
3.2)

где r = b/a, s = c/a, t = d/a. В уравнении (3.2) сделаем замену x = y - r/3 и получим приведённое уравнение:

y^3 + py + q = 0, (
3.3)

где

p = \frac{3s-r^2}{3}, q = \frac{2r^{3}}{27} - \frac{rs}{3}+t.

Число действительных корней приведённого уравнения (3.3) зависит от знака дискриминанта D = (p/3)^3+ (q/2)^2 приведённого кубического уравнения (табл. 3.1).

Таблица
3.1.
Количество корней кубического уравнения

Дискриминант Количество действительных корней Количество комплексных корней
D > 0 1 2
D < 0 3

Корни приведённого уравнения могут быть рассчитаны по формулам Кардано:

\begin{aligned}
y_{1} & = u+v\\
y_{2} & = \frac{-{u+v}}{2}+\frac{u-v}{2}i\sqrt{3}\\
y_{3} & = \frac{-{u+v}}{2}-\frac{u-v}{2}i\sqrt{3}
\end{aligned} (
3.4)

где

u=\sqrt[{3}]{-q/2+\sqrt{D}},
v=\sqrt[{3}]{-q/2-\sqrt{D}}.

При отрицательном дискриминанте уравнение (3.1) имеет три действительных корня, но они будут вычисляться через вспомогательные комплексные величины. Чтобы избавиться от этого, можно воспользоваться формулами:

\begin{aligned}
y_1&=2\sqrt[3]{\rho}\cos\left(\frac{\varphi}{3}\right),\\
y_2&=2\sqrt[3]{\rho}\cos\left(\frac{\varphi}{3}+\frac{2\pi}{3}\right),\\
y_3&=2\sqrt[3]{\rho}\cos\left(\frac{\varphi}{3}+\frac{4\pi}{3}\right),
\end{aligned} (
3.5)

где

\rho =\sqrt{\frac{-p^3}{27}}, \cos(\varphi)=\frac{-q}{2\rho}.

Таким образом, при положительном дискриминанте кубического уравнения (3.3) расчёт корней будем вести по формулам (3.4), а при отрицательном — по формулам (3.5).

После расчёта корней приведённого уравнения (3.3) по формулам (3.4) или (3.5) необходимо по формулам

x_{k}=y_{k}-\frac{r}{3}, k=1,2,3\ldots

перейти к корням заданного кубического уравнения (3.1).

Блок-схема решения кубического уравнения представлена на рис. 3.16.

Описание блок-схемы. В блоке 1 вводятся коэффициенты кубического уравнения, в блоках 2—3 рассчитываются коэффициенты канонического и приведённого уравнений. Блок 4 предназначен для вычисления дискриминанта. В блоке 5 проверяется знак дискриминанта кубического уравнения. Если он отрицателен, то корни вычисляются по формулам (3.5) (блоки 6—7). При положительном значении дискриминанта расчёт идет по формулам (3.4) (блок 9, 10). Блоки 8 и 11 предназначены для вывода результатов на экран.

Текст программы с комментариями приведён
ниже55При расчёте величин u и v в программе предусмотрена проверка значения подкоренного выражения. Если \frac{-q}{2}\pm \sqrt{D} > 0, то u=\sqrt[3]{\frac{-q}{2}+ \sqrt{D}} > 0, а v=\sqrt[3]{\frac{-q}{2}- \sqrt{D}} > 0. Если
\frac{-q}{2}\pm \sqrt{D} < 0, то
u=\sqrt[3]{\frac{-q}{2}+ \sqrt{D}} > 0, а v=\sqrt[3]{\frac{-q}{2}- \sqrt{D}} > 0. Соответственно, при нулевом значении подкоренного выражения u и v обращаются в ноль.
.

var
	a, b, c, d, r, s, t, p, q, ro, f i, x1, x2, x3, u, v, h, g : real;
begin
	//Ввод коэффициентов кубического уравнения.
	write ( ’ a= ’ ); readln ( a );
	write ( ’ b= ’ ); readln ( b );
	write ( ’ c= ’ ); readln ( c );
	write ( ’ d= ’ ); readln ( d );
	//Расчёт коэффициентов канонического уравнения по 3.2.
	r :=b/a; s := c /a; t :=d/a;
	//Вычисление коэффициентов приведённого уравнения 3.3.
	p :=(3 * s - r * r ) / 3;
	q:=2* r * r * r /27- r * s/3+ t;
	//Вычисление дискриминанта кубического уравнения.
	d :=( p /3) * sqr ( p/3)+ sqr ( q / 2 );
	//Проверка знака дискриминанта,
	//ветка then реализует формулы (3.5),
	//ветка else — формулы 3.4
	if d<0 then
	begin
		ro := sqrt (-p * p * p / 27 );
		//Следующие два оператора реализуют расчёт угла fi,
		//сначала вычисляется величина косинуса угла,
		//затем вычисляется его арккосинус через арктангенс.
		fi :=-q /(2 * ro );
		fi := pi /2-arctan ( fi / sqrt (1 - fi * fi ) );
		//Вычисление действительных корней уравнения x1, x2 и x3
		x1 :=2 * exp (1/3 * ln ( ro ) ) * cos ( fi /3) - r / 3;
		x2 :=2 * exp (1/3 * ln ( ro ) ) * cos ( fi /3+2 * pi /3) - r / 3;
		x3 :=2 * exp (1/3 * ln ( ro ) ) * cos ( fi /3+4 * pi /3) - r / 3;
		writeln ( ’ x1= ’, x1 : 1 : 3, ’ x2= ’, x2 : 1 : 3, ’ x3= ’, x3 : 1 : 3 );
end
else
begin
	//Вычисление u и v с проверкой знака
	// подкоренного выражения.
	if -q/2+ sqrt ( d)>0 then
		u:=exp (1/3 * ln (-q/2+ sqrt ( d ) ) )
	else
		if -q/2+ sqrt ( d)<0 then
			u:=-exp (1/3 * ln ( abs(-q/2+ sqrt ( d ) ) ) )
		else
			u : = 0;
	if -q/2- sqrt ( d)>0 then
		v:=exp (1/3 * ln (-q/2- sqrt ( d ) ) )
	else
		if -q/2- sqrt ( d)<0 then
			v:=-exp (1/3 * ln ( abs(-q/2- sqrt ( d ) ) ) )
		else
			v : = 0;
	//Вычисление действительного корня кубического уравнения.
	x1:=u+v-r / 3;
	//Вычисление действительной и
	// мнимой части комплексных корней.
	h:=-(u+v)/2 - r / 3;
	g :=(u - v )/2 * sqrt ( 3 );
	writeln ( ’ x1= ’, x1 : 1 : 3, ’ x2= ’, h : 1 : 3, ’+i*  ’, g : 1 : 3,
				’ x3= ’, h : 1 : 3, ’ -i*  ’, g : 1 : 3 );
	end
end.

ЗАДАЧА 3.6. Заданы коэффициенты a, b и c биквадратного уравнения ax^4 + bx^2+ c = 0. Найти все его действительные корни.

Входные данные: a, b, c. Выходные данные: x1, x2, x3, x4.

Для решения биквадратного уравнения необходимо заменой y = x^2 привести его к квадратному уравнению ay^2 + by + c = 0 и решить это уравнение.

Опишем алгоритм решения этой задачи (рис. 3.17):

  1. Ввод коэффициентов биквадратного уравнения a, b и c (блок 1).
  2. Вычисление дискриминанта уравнения d (блок 2).
  3. Если d < 0 (блок 3), вывод сообщения, что корней нет (блок 4), а иначе определяются корни соответствующего квадратного уравнения y_1 и y_2 (блок 5).
  4. Если y_1 < 0 и y_2 < 0 (блок 6), то вывод сообщения, что корней нет (блок 7).
  5. Если y_1 \ge 0 и y_2  \ge 0 (блок 8), то вычисляются четыре корня по формулам \pm \sqrt{y_1}, \pm \sqrt{y_2} (блок 9) и выводятся значения корней (блок 10).
  6. Если условия 4) и 5) не выполняются, то необходимо проверить знак y_1. Если y_1 > 0 (блок 11), то вычисляются два корня по формуле \pm \sqrt{y_1} (блок 12), иначе (если y_2 > 0) вычисляются два корня по формуле \pm \sqrt{y_2} (блок 13).
  7. Вывод вычисленных значений корней (блок 14).

Текст программы на языке Free Pascal с комментариями:

//Описание переменных:
//a,b,c - коэффициенты биквадратного уравнения,
//d - дискриминант,
//x1,x2,x3,x4 - корни биквадратного уравнения,
//y1,y2 - корни квадратного уравнения ay^2+by+c=0.
var
	a, b, c, d, x1, x2, x3, x4, y1, y2 : real;
begin
	//Ввод коэффициентов уравнения.
	writeln ( ’Введите коэффициенты биквадратного уравнения ’ );
	readln ( a, b, c );
	//Вычисление дискриминанта.
	d:=b * b-4*a*c;
	//Если он отрицателен,
	if d<0 then
		//вывод сообщения "Корней нет"
		writeln ( ’Корней нет ’ )
	//Если дискриминант >= 0,
	else
	begin
		//вычисление корней квадратного уравнения.
		y1:=(-b+sqrt ( d ) ) / 2 / a;
		y2:=(-b-sqrt ( d ) ) / ( 2 * a );
		//Если оба корня квадратного уравнения < 0,
		if ( y1 <0) and ( y2 <0) then
			//вывод сообщения "Корней нет".
			writeln ( ’Корней нет ’ )
		//Если оба корня квадратного уравнения >= 0,
		else if ( y1>=0) and ( y2>=0) then
		begin
			//вычисление четырех корней биквадратного уравнения.
			x1:= sqrt ( y1 );
			x2:=-x1;
			x3:= sqrt ( y2 );
			x4:=-sqrt ( y2 );
			//Вывод корней биквадратного уравнения на экран.
			writeln ( ’X1= ’, x1 : 6 : 3, ’ X2= ’, x2 : 6 : 3 );
			writeln ( ’X3= ’, x3 : 6 : 3, ’ X4= ’, x4 : 6 : 3 );
		end
		//Если не выполнились оба условия
		// 1. y1<0 И y2<0
		// 2. y1>=0 И y2>=0,
		//то проверяем условие y1>=0
		else if ( y1>=0) then
		//Если оно истинно
		begin
			x1:= sqrt ( y1 );
			x2:=-x1;
			writeln ( ’X1= ’, x1 : 6 : 3, ’   X2= ’, x2 : 6 : 3 );
		end
		else
		//Если условие y1>=0 ложно, то
		begin
			x1:= sqrt ( y2 );
			x2:=-x1;
			writeln ( ’X1= ’, x1 : 6 : 3, ’    X2= ’, x2 : 6 : 3 );
		end
	end
end.

Рис.7.1. Блок схема
алгоритма решения квадратного уравнения

4. Реализация алгоритма в среде Delphi

После запуска
Delphi и открытия окна формы
(модуль Form1) разместим в
нем следующие объекты:

  • поля
    редактирования Edit1–Edit3
    – для ввода исходных коэффициентов
    уравнения a,b,c
    соответственно;

  • метки
    Label1–Label9
    – для вывода заголовков, пояснений и
    результатов;

  • кнопки
    Button1–Button3
    – для управления работой программы.

Для этого на
панели визуальных компонент (вкладка
standard) щелчком мыши трижды
выбирается объект Edit и
вставляется в указываемое курсором
место формы. Затем то же самое проделывается
девять раз с объектом Label
и три раза с объектом Button.
Далее с помощью инспектора объектов
(object inspector)
определяются заголовки для объектов
Form1, Label1 –
Label8 путем ввода
соответствующего текста в поле caption
вкладки properties. Например,
для окна Form1 в поле Caption
вводится текст «Вычисление корней
квадратного уравнения»; для метки Label6
– текст «Результаты счета», для метки
Label9 поле caption
остается свободным, для кнопки Button1
– текст «Ввод коэффициентов уравнения»
и т.д.

Общий вид окна
формы с выбранными компонентами
представлен на рис.7.2.

Рис.7.2. Окно формы
(модуль Form1) программы в
Delphi

Отметим, что
при размещении объектов в окне формы
автоматически добавляются соответствующие
этим объектам описания в исходный код
программы (модуль Unit1).
Таким образом, после того как в окне
формы размещены все объекты, в окне кода
будет представлен следующий код:

Unit
Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls,
Forms, Dialogs;

type
TForm1 = class(Tform)

Label1:
Tlabel;

Label2: Tlabel;

Label3: Tlabel;

Label4: Tlabel;

Label5: Tlabel;

Label6: Tlabel;

Label7: Tlabel;

Label8: Tlabel;

Label9: Tlabel;

Label10: Tlabel;

Label11:
Tlabel;

Edit1:
Tedit;

Edit2:
Tedit;

Edit3:
Tedit;

Button1:
Tbutton;

Button2:
Tbutton;

Button3:
Tbutton;

private

{
Private declarations }

public

{
Public declarations }

end;

var
Form1: Tform1;

implementation

{$R *.dfm}

end.

Для управления
работой программы с каждой кнопкой
связывается событие «щелкнуть» и
задается, что при щелчке на кнопке 1
(объект Button1) программа
должна ввести значения коэффициентов
a,b,c
исходного уравнения из полей редактирования
(объекты Edit1–Edit3)
и присвоить их переменным a,b,c
соответственно. Для этого после двойного
щелчка кнопки Button1 и
попадания в окно кода вводятся три
оператора присваивания:

a:=StrToFloat(Edit1.text);

b:=StrToFloat(Edit2.text);

c:=StrToFloat(edit3.text);

Здесь стандартная
функция StrToFloat преобразует символьное
представления значения поля text
объекта edit в вещественное
значение.

Далее после
двойного щелчка кнопки Button2
и попадания снова в окно кода вводятся
операторы, реализующие алгоритм
нахождения корней квадратного уравнения
и их вывод в поле caption
меток Label7–Label9.
Аналогично после двойного щелчка кнопки
Button3 и попадания в окно
кода вводится оператор вызова процедуры
Close для завершения работы
программы. В текст программы добавляются
комментарии, определяются переменные
a,b,c,x1,x2 в операторе var
(добавляя строку a,b,c,x1,x2: Real; после строки
var Form1: TForm1;) и с помощью команды Save
as меню Fyle
созданный модуль с кодом программы
сохраняется в файле kvur.pas.
В результате исходный код программы
(модуль kvur) будет иметь
следующий вид

unit
kvur;

{
* * * * * * * * * * * * * * * * * * *}

{
Решение квадратного уравнения }

{
* * * * * * * * * * * * * * * * * * * }

interface

uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Menus, Grids, ExtCtrls;

type
TForm = class(TForm)

Label1:
Tlabel;

Label2:
Tlabel;

Label3:
Tlabel;

Label4:
Tlabel;

Label5:
Tlabel;

Label6:
Tlabel;

Label7:
Tlabel;

Label8:
Tlabel;

Label9:
Tlabel;

Label10:
Tlabel;

Label11:
Tlabel;

Edit1:
Tedit;

Edit2:
Tedit;

Edit3:
Tedit;

Button1:
Tbutton;

Button2:
Tbutton;

Button3:
Tbutton;

procedure
Button1Click(Sender: TObject);

procedure
Button2Click(Sender: TObject);

procedure
Button3Click(Sender: TObject);

private

{
Private declarations }

public

{
Public declarations }

end;

var
Form1: TForm1;

a,b,c,x1,x2:
Real;

implementation

{$R
*.DFM}

procedure
TMyForm.Button2Click(Sender: TObject);

{Ввод
коэффициентов исходного уравнения }

begin

a:=StrToFloat(Edit1.text);

b:=StrToFloat(Edit2.text);

c:=StrToFloat(edit3.text);

end;

procedure
TMyForm.Button1Click(Sender: TObject);

{Завершение
работы программы}

begin

close

end;

procedure
TMyForm.Button3Click(Sender: TObject);

{Решение
квадратного уравнения }

var
d:real;

begin

label7.Caption:=»;

label10.Caption:=»;

label11.Caption:=»;

if
(a<>0) then begin

d:=b*b-4*a*c;

if
d>=0 then

begin

x1:=(-b-sqrt(d))/(2*a);

x2:=(-b+sqrt(d))/(2*a);

label9.Caption:=’уравнение
имеет два корня’;

label10.Caption:=floatToStr(x1);

label11.Caption:=floatToStr(x2);

end

else

begin

label9.Caption:=’дискриминант
отрицательный, решения комплексны’;

label10.Caption:=’нет’;

label11.Caption:=’нет’;

end
end

else
if (b<>0) then

begin

x1:=-c/b;

label9.Caption:=’уравнение
имеет один корень’;

label10.Caption:=floatToStr(x1);

label11.Caption:=’ нет ‘;

end
else

if
(c<>0) then

begin
label9.Caption:=’уравнение не имеет решений’;

label10.Caption:=’нет’;

label11.Caption:=’нет’;

end

else

begin

label9.Caption:=’решениe
— любое x’;

label10.Caption:=’любое’;

label11.Caption:=’любое’;

end;

end;
end.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]

  • #
  • #
  • #
  • #
  • #
  • #
  • #
  • #
  • #
  • #
  • #

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

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

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

Содержание

  1. Составление блок-схемы алгоритма решения квадратного уравнения
  2. Как составить блок-схему алгоритма решения квадратного уравнения: пошаговая инструкция
  3. Шаг 1: Определение коэффициентов уравнения
  4. Шаг 2: Вычисление дискриминанта
  5. Шаг 3: Определение количества корней уравнения
  6. Решение квадратного уравнения с помощью блок-схемы
  7. Шаг 4: Находим значения x1 и x2
  8. Шаг 5: Проверка корней
  9. Вопрос-ответ
  10. Что такое блок-схема алгоритма решения квадратного уравнения?
  11. Какие блоки используются в блок-схеме алгоритма решения квадратного уравнения?
  12. Какой алгоритм использовать для решения квадратного уравнения?
  13. Какие ошибки могут возникнуть при составлении блок-схемы алгоритма решения квадратного уравнения?
  14. Как проверить правильность решения квадратного уравнения с помощью блок-схемы?

Составление блок-схемы алгоритма решения квадратного уравнения

Для того, чтобы составить блок-схему алгоритма решения квадратного уравнения, необходимо сначала разобраться в самом уравнении. Квадратное уравнение имеет общий вид: ax^2 + bx + c = 0, где a, b и c — известные числа, а x — неизвестное.

Сам алгоритм состоит из нескольких шагов. Первым шагом является определение коэффициентов a, b и c. Далее необходимо вычислить дискриминант по формуле D = b^2 — 4ac. Если D>0, то уравнение имеет два корня. Если D=0, то уравнение имеет один корень. Если D<0, то уравнение не имеет корней.

После вычисления дискриминанта необходимо вычислить корни уравнения. Если уравнение имеет два корня, то они вычисляются по формулам: x1=(-b+√D)/2a и x2=(-b-√D)/2a. Если уравнение имеет один корень, то он вычисляется по формуле: x=-b/2a.

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

Как составить блок-схему алгоритма решения квадратного уравнения: пошаговая инструкция

Шаг 1: Определение коэффициентов уравнения

Квадратное уравнение имеет вид ax^2 + bx + c = 0, где a, b и c — это коэффициенты уравнения. На первом шаге необходимо определить эти коэффициенты. Коэффициент a не должен быть равным нулю, если он равен нулю, то это приведет к делению на ноль на последующих шагах. Коэффициенты могут быть целыми числами или дробями.

Чтобы найти коэффициенты уравнения, можно рассмотреть его общий вид и сопоставить его с доступными данными. Например, если дано уравнение x^2 — 4x + 3 = 0, то a = 1, b = -4 и c = 3.

Также можно использовать формулы известных свойств квадратных уравнений, например, если дано уравнение 4x^2 + 8x — 12 = 0, то a = 4, b = 8 и с = -12.

  • Если коэффициент a = 0, то уравнение не является квадратным.
  • Если все коэффициенты равны нулю, то уравнение имеет бесконечное количество решений.
  • Если b и c равны нулю, то уравнение имеет только одно решение x = 0.

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

Шаг 2: Вычисление дискриминанта

Дискриминант – это формула, которая позволяет нам определить, имеет ли квадратное уравнение действительные корни. Нам необходимо вычислить дискриминант для нахождения решения.

Формула дискриминанта имеет вид D = b² — 4ac, где a, b и c соответствуют коэффициентам квадратного уравнения.

Если D меньше нуля, то уравнение не имеет действительных корней. Если D равен нулю, то уравнение имеет один корень. А если D больше нуля, то уравнение имеет два действительных корня.

Шаг 3: Определение количества корней уравнения

Для решения квадратного уравнения важно определить количество корней, которые оно имеет. Это можно сделать с помощью дискриминанта.

Дискриминант — это выражение, которое находится под знаком корня в формуле решения квадратного уравнения. Он равен b^2 — 4ac, где a, b и c — это коэффициенты уравнения ax^2 + bx + c = 0.

Если дискриминант больше нуля, то уравнение имеет два различных корня. Если дискриминант равен нулю, то уравнение имеет один корень (корень кратности 2). Если дискриминант меньше нуля, то уравнение не имеет корней.

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

Решение квадратного уравнения с помощью блок-схемы

Шаг 4: Находим значения x1 и x2

После получения значений a, b и c можно перейти к расчету значений x1 и x2 с помощью определенной формулы. Она выглядит следующим образом:

x1 = (-b + √D) / (2a) и x2 = (-b — √D) / (2a), где D = b2 — 4ac

Эти значения можно вывести на экран для пользователя, чтобы он мог узнать, что x1 и x2 являются корнями квадратного уравнения. Если значение дискриминанта D отрицательное, то ответом будет комплексное число, значение которого можно выразить в тригонометрической форме.

if D > 0
  • Выводим на экран x1 и x2.
  • Конец работы алгоритма.
if D = 0
  • Выводим на экран x1 (x2 такой же как x1).
  • Конец работы алгоритма.
if D < 0
  • Вычисляем действительную и мнимую части комплексного числа.
  • Выводим на экран результат в тригонометрической форме.
  • Конец работы алгоритма.

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

Шаг 5: Проверка корней

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

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

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

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

Вопрос-ответ

Что такое блок-схема алгоритма решения квадратного уравнения?

Блок-схема — это графическое представление алгоритма, в данном случае — решения квадратного уравнения, состоящее из блоков-операций и блоков-условий, соединенных линиями.

Какие блоки используются в блок-схеме алгоритма решения квадратного уравнения?

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

Какой алгоритм использовать для решения квадратного уравнения?

Для решения квадратного уравнения нужно использовать стандартную формулу: x = (-b ± sqroot(b^2 — 4ac)) / 2a, где a, b, c — коэффициенты уравнения.

Какие ошибки могут возникнуть при составлении блок-схемы алгоритма решения квадратного уравнения?

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

Как проверить правильность решения квадратного уравнения с помощью блок-схемы?

Для проверки можно использовать несколько тестовых значений коэффициентов и проверить результаты решения на соответствие ожидаемому результату (две действительных корня, два комплексных корня, один корень).

1. Решение квадратного уравнения

алгоритм и программа

2. Формулировка

Даны вещественные числа a, b и c, причем a
отлично от 0. Решить квадратное уравнение
ax2 + bx + c = 0 или сообщить о том, что
действительных решений нет.

3. Алгебраическое решение

4. Алгебраическое решение

Квадратное уравнение ax2 + bx + c = 0,
выражение D = b2 – 4ac – дискриминант:
– если D > 0,
имеет два решения:
,
– если D = 0,
имеет единственное решение:
– если D < 0,
не имеет действительных решений.
;

5. Логические операции

Список операторов отношения:
• больше: >
• меньше: <
• больше либо равно: >=
• меньше либо равно: <=
• равно: =
• неравно: <>

6. Блок-схема

7.

program QuadraticEquation;
var a, b, c, d, x1, x2: real;
begin
readln(a, b, c);
d := b * b — 4 * a * c;
d >= 0
begin
d <> 0
begin
x1 := (-b + sqrt(d)) / 2 * a;
x2 := (-b — sqrt(d)) / 2 * a;
writeln(‘x1 = ‘, x1:4:2, ‘, x2 = ‘, x2:4:2)
end
begin
{кол-во
{кол-во знаков
x1 := -(b / 2 * a);
знаков перед
после запятой}
writeln(‘x = ‘, x1:4:2)
запятой}
end
end
writeln(‘No real solutions!’);
end.

8.

ax2+bx+c=0
a=0
уравнение линейное
a≠0

9. Специальные логические операции

Условие1 AND Условие2
ветка THEN, если выполняются оба условия
Условие1 OR Условие2
ветка THEN, если выполняется хотя бы одно
условие

10. Специальные логические операции

Условие1 XOR Условие2
ветка THEN, если ровно одно из двух условий
NOT — логическое НЕ (отрицание).

11. Оператор выбора CASE

case выражение of
значение1 : оператор ;
значение2 : оператор ;
………………….
значениеN : оператор
else оператор;
end;

12. Пример

Определить к какому кварталу относится месяц
Program Name;
var MONTH: integer;
begin
case MONTH of
1, 2, 3 : writeln (‘Первый квартал‘);
4, 5, 6 : writeln (‘Второй квартал‘);
7, 8, 9 : writeln (‘Третий квартал‘);
10, 11, 12 : writeln (‘Четвёртый квартал‘);
end;

13. Задания

1.Напишите программу, которая
определяет четное или не четное число.
2.Написать программу преобразования
цифр в слова.
3.Написать программу для нахождения
числа дней в месяце, если даны:
номер месяца n — целое число;
а, равное 1 для високосного года и равное
0 в противном случае.

Понравилась статья? Поделить с друзьями:
  • Дорамектин инструкция по применению в ветеринарии
  • Создание интерактивного руководства
  • Zkteco официальный сайт инструкция по применению
  • Мазда протеже руководство по ремонту скачать
  • Дезар 7 паспорт инструкция по эксплуатации