Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
8
Добавлен:
09.03.2016
Размер:
56.32 Кб
Скачать

5

Лекция №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 = ap.

Программа в этих обозначениях будет выглядеть следующим образом:

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.

Кафедра информатики

Иванов Борис Алексеевич. Файл

Соседние файлы в папке Lecture_Pascal