3.2 Задание 2
Вычислить значения функции:
где a=2.5 , x = [0 ; 4]
Обратим внимание, что функция с не определена в диапазоне a >= x >= b {(x <= a) and (x >= b)}. В этой ситуации программа должна обеспечить вывод соответствующего сообщения, например "функция не определена". Таким образом, фактически имеем три диапазона изменения x:
Функция не
определена
a cos x x2 sin x
0 2 3 4
Примем диапазон изменения x от 0 до 4, что позволит протестировать программу по всем трем условиям. Поскольку в задаче три условия, число блоков «решение» в алгоритме должно быть два (на единицу меньше). Блок-схема одного из вариантов алгоритма решения задачи и соответствующая программа будут иметь вид:
Рис. 2. Блок-схема алгоритма задачи 2
program Zadacha2;
{$mode objfpc}{$H+}
uses
{$IFDEF UNIX}{$IFDEF UseCThreads}
cthreads,
{$ENDIF}{$ENDIF}
Classes
{ you can add units after this };
label out;
var x,c:real;const a=2.5;
begin
writeln('vvedite x');
readln(x);
if(x<2)and(x>=0)then c:=cos(x)
else
if(x>=3)and(x<=4)then c:=x*x *sin(x)
else
begin
writeln('function NO');
goto out;
end;
writeln('c=',c:8:3);
out:readln
end.
Результаты работы программы:
Vvedite x Vvedite x Vvedite x
1 2.5 3.5
C = 0.540 function NO C = - 4.297
3.3 Задание 3
Используя оператор fo… to…do , вычислить на ПК значения функции
где a = 2.8; b = 0.7; x = 5.1
Параметром цикла является аргумент n.
При вычислении конечных сумм и произведений искомый результат формируется постепенно. При вычислении суммы сначала вычисляется S1 = S0 + S(n1), во втором повторе цикла эта сумма увеличивается на второе слагаемое и получается S2 = S1 + S(n2), в третьем повторе - на третье слагаемое S3 = S2 + S(n3) и т.д. Здесь S0 - начальное значение суммы и т.к. S1 должна быть равна S(n1) , то S0 = 0.
При вычислении произведения сначала вычисляется Р1=Р0P(n1), затем Р2 = Р1P(n2) и т.д. Здесь Р0 - начальное значение произведения и т.к. Р1 должно быть равно P(n1) , то Р0 = 1.
Поскольку cos na2b2 можно вынести за знак суммы, в тело цикла это произведение включать не следует. Тем самым сокращается время исполнения программы.
Блок-схема алгоритма решения задачи и соответствующая программа будут иметь вид (рис. 3):
Ввод
b
Ввод
a
Рис. 3. Блок-схема алгоритма задачи 3
program project1;
{$mode objfpc}{$H+}
uses
{$IFDEF UNIX}{$IFDEF UseCThreads}
cthreads,
{$ENDIF}{$ENDIF}
Classes
{ you can add units after this };
var a,b,x,v:real; n:byte;
begin
writeln('vvedite x');
writeln('vvedite a');
writeln('vvedite b');
readln(x);
readln(a);
readln(b);
v:=0;
for n:=1 to 12 do v:=v+1/n;
v:=cos (n)*a*a*b*b;
writeln('v=',v:6:2);
readln
end.