for j:=1 to Length(morze) do // Разбираем строку Morze и проигрываем её
begin
write (morze [j]); // Вывод на экран буквы кодом Морзе
if morze[j]='-' then
begin
PlaySound(dash); Sleep(SoundLength(dash)); // играем dash
end
else
begin
PlaySound(dot); Sleep(SoundLength(dot)); // играем dot
end;
Sleep(50);
end;
write (' '); Sleep (500); // Пауза между буквами 500 мс
end; // end к внешнему оператору if
end.
- 45 -
Тема №17 Задача о квадратном уравнении
Решение квадратного уравнения выходит за рамки курса математики 7 класса, но мы сочли возможным внести эту классическую задачу программирования в дополнение.
Квадратным уравнением называется уравнение вида
ax2 + bx + c = 0
На первом этапе его решения определяется так называемый дискриминант:
d = b2 - 4ac
Далее рассматривают три случая
1. d < 0 – в этом случае вещественных решений нет[17];
2. d = 0 – один корень, определяемый формулой -b / 2a;
3. d > 0 – два корня, вычисляемых по формуле x1,2 = (-b ± √d)/2a, где знак «+» соответствует первому корню, а знак «–» – второму корню.
Составим программу для решения этой задачи:
Program SquareEquation;
var a, b, c : real; // Коэффициенты уравнения
d : real; // Дискриминант
x1, x2 : real; // Корни уравнения
begin
write ('Введите a, b, c ');
readln (a,b,c); // Ввод исходных данных
d:=b*b-4*a*c; // Вычисление дискриминанта
if d<0 then writeln('Решений нет')
else if d=0 then begin
x1:=-b/(2*a);
write('x=',x1)
end
else begin
x1:=(-b+sqrt(d))/(2*a);
x2:=(-b-sqrt(d))/(2*a);
write('x1=',x1,' x2=',x2)
end
end.
Последнюю ветвь else можно оптимизировать, убрав повторяющиеся вычисления (особенно вычисление квадратного корня)
else begin
d:=sqrt(d); a:=2*a;
x1:=(-b+d)/a;
x2:=(-b-d)/a;
write('x1=',x1,' x2=',x2)
end
- 46 -
01.06.2013