asd / корзина / лекции по TP / Lecture_Pascal / lecture5
.doc
Лекция №5
Пример выполнения лабораторной работы №2.
Составить программу вычисления функции
Значения x,z задаются по вводу, т.е. с помощью оператора READ. Программу можно написать двумя способами. Ниже приводятся алгоритмы и тексты программ, без оператора CASE и с оператором CASE.
нет
да
нет
да
нет
да
нет
да
Вариант программы без оператора CASE
program lab2;
var x,y,u:real;
{ *********************************************** }
function koren3(t:real):real;
begin if t>0 then koren3:=exp(ln(t)/3)
else if t=0 then koren3:=0
else koren3:=-exp(ln(abs(t))/3)
end;
{ *********************************************** }
begin
writeln(' vvody x,y');
read(x,y);
writeln(' ishodny danny');
writeln(' x=',x:4:1,' y=',y:4:1);
if x<-2 then if x<>-8 then begin
u:=(cos(x)+3*y)/(x+8);
writeln( u=',u:6:2)
end
else writeln('division by zero')
else if x>=2 then begin
u:=5*x*x+exp(x-y);
writeln(' u=',u:6:2)
end
else if x+y<>0 then begin
u:=koren3(x+1)+ln(abs(x+y));
writeln(' u=',u:6:2)
end
else writeln('argum ln = 0');
writeln();
end.
Вариант программы c оператором CASE
var x,y,u:real; k:byte;
{ *********************************************** }
function koren3(t:real):real;
begin if t>0 then koren3:=exp(ln(t)/3)
else if t=0 then koren3:=0
else koren3:=-exp(ln(abs(t))/3)
end;
{ *********************************************** }
Begin
K:=0;
writeln(' vvody x,y');
read(x,y);
writeln(' ishodny danny');
writeln(' x=',x:4:1,' y=',y:4:1);
if x<-2 then if x<>-8 then u:=(cos(x)+3*y)/(x+8)
else k:=1
else if x>=2 then u:=5*x*x+exp(x-y)
else if x+y<>0 then u:=koren3(x+1)+ln(abs(x+y))
else k:=2;
case k of
0: writeln(' u=',u:6:2);
1: writeln('division by zero');
2: writeln('argum ln = 0')
end;
end.
Пример выполнения лабораторной работы №3.
Составить программу для получения таблицы значений функции
,
где x, y – соответственно меньший и больший корни квадратного уравнения at2+bt+c=0. При этом c меняется на интервале –3 c 3 с шагом 0,3, b=6, a=4.
Программа выглядит следующим образом
program lab3;
uses crt;
var z,x,y,c:real;
k:boolean;
const a=4; b=6; c0=-3; ck=3; h=0.3;
{ ***************************************** }
function max:real;
begin
if x>a then max:=x else max:=a
end;
{ ***************************************** }
function arccos(x:real):real;
begin
arccos:=arctan(sqrt(1-x*x)/x)
end;
{ ***************************************** }
procedure uravn;
var d,r,p:real;
t1,t2:real;
begin
k:=true;
d:=b*b-4*a*c;
if d>=0 then begin
r:=2*a; p:=sqrt(d);
t1:=(-b-p)/r;
t2:=(-b+p)/r;
x:=t1;
y:=t2;
if t1>t2 then begin y:=t1; x:=t2 end
end
else k:=false
end;
{ ***************************************** }
begin
clrscr;
c:=c0;
writeln('┌──────┬────────┬──────────┬────────────────┐');
writeln('│ c │ x │ y │ z │');
writeln('├──────┼───────—┼——————————┼————————————————┤');
while c<=ck do
begin
uravn;
if k=true then begin
z:=max*(5*y*y+2*x*y)/(1+y*y)+arccos(abs(y)/(1+abs(y)));
writeln(' ',c:4:1,' ',x:7:2,' ',y:7:2,' ',z:7:4,' ');
end
else
writeln('і ',c:4:1,' і error і error і error і');
c:=c+h
end;
writeln('└──────────┴────────────┴──────────┴────────┘')
end.
Пример выполнения лабораторной работы №4
Вычислить значение U, напечатав значения выражения в скобках при каждом k.
при x=0.35, y=-1.7.
Для упрощения понимания схемы вычисления имеет смысл ввести следующие обозначения:
,
b=
,
p= , t = a – p.
Программа в этих обозначениях будет выглядеть следующим образом:
program lab4;
const x=0.35; y=-1.7;
var u,s,p,t:real;
k,n:byte;
{ **************************************** }
function a:real;
var c1,c2:real;
begin
c1:=3*sqr(cos(k*x))+exp(k*x+y);
c2:=x*k/(1+x*k);
c2:=arctan(c2/sqrt(1-c2*c2));
a:=c1/c2
end;
{ **************************************** }
function b:real;
var c1,c2:real;
begin
c1:=1+k*x/n+y;
c2:=1+n*n+1/(k*k);
b:=c1/c2
end;
{ **************************************** }
begin
u:=0;
for k:=1 to 5 do begin
p:=1;
for n:=3 to 6 do p:=p*b;
t:=a-p;
writeln(' k=',k,'скобка =',t:7:3);
u:=u+t
end;
writeln;
writeln(' u=',u:7:3)
end.
Кафедра информатики
Иванов
Борис Алексеевич. Файл