ЛАБОРАТОРНАЯ РАБОТА 3. ПРОГРАММИРОВАНИЕ ЦИКЛИЧЕСКИХ АЛГОРИТМОВ. ТАБУЛИРОВАНИЕ ФУНКЦИИ

3.1 Исходное условие и уточнение постановки задачи

Заданы аргументы Xн, Хк,h,a.

Вычислить значения функции y, сумму, произведение, минимальное и максимальное значение функции у.

Уточнение постановки задачи

Исходные данные: вещественные значения xn,xk,h,a,x,y,sum,pr,min,max вещественного типа

Результаты: вывод шести чисел в символах x,y,sum,pr,min,max

3.2. Алгоритм

Алгоритм решения задачи включает одну алгоритмическую единицу (назовем ее R3) и может быть представлен в следующем виде.

Алгоритм R3

переменные

xn,xk,h,a,x,y,sum,pr,min,max: вещ; {входные параметры}

x,y,sum,pr,min,max: вещ; {выходные данные}

s:симв; {входные параметры}

начало алг

ввести (xn,xk,h,a);

x:=xn;

sum:=0;

pr:=1;

min:=100; max:=-100;

Цикл 1 начало

пока x<=xk

если x>sin(a) тогда y:= sqrt(x-sin(a)) иначе

если x<sin(a) тогда y:=sin(a)/x иначе

если x=sin(a) тогда y:=x*sin(a);

s:=s+floattostr(x)+' '+FloatToStr(y)+#13;

x:=x+h;

sum:=sum+y;

pr:=pr*y;

если y<min тогда min:=y иначе

если y>max тогда max:=y;

Цикл 1 Конец

вывести результат x,y,sum,pr,min,max на экран;

конец алг.

3.3. Программа

3.3.1. Интерфейс

3.3.2. Программа на языке Delphi

procedure TForm1.Button1Click(Sender: TObject);

var xn,xk,h,a,x,y,sum,pr,min,max:real;

s:string;

begin

xn:=StrToFloat(edit1.Text); // берем значение для xn

Xk:=StrToFloat(edit2.Text); // берем значение для xk

h:=StrToFloat(edit3.text); // берем значение для h

a:=StrToFloat(edit4.text); // берем значение для a

x:=xn; // присваиваем значение для x

sum:=0; // присваиваем значение для sum

pr:=1; // присваиваем значение для pr

min:=100; max:=-100; // присваиваем значение для min,max

 

while x<=xk do begin

if x>sin(a) then y:=sqrt(x-sin(a)) else // производим вычисление для y

if x<sin(a) then y:=sin(a)/x else // производим вычисление для y

if x=sin(x) then y:=x*sin(a); // производим вычисление для y

s:=s+floattostr(x)+' '+FloatToStr(y)+#13; // присваиваем значение для s

x:=x+h; // присваиваем значение для x

sum:=sum+y; // присваиваем значение для sum

pr:=pr*y; производим вычисление для pr

if y<min then min:=y else производим вычисление для min

if y>max then max:=y; производим вычисление для max

end;

label5.Caption:=s; выводим ответ для функции y,x на экран

label6.caption:='sum='+FloatToStr(sum); выводим ответ для функции sum на экран

label7.caption:='pr='+ FloatToStr(pr); выводим ответ для функции pr на экран

label8.caption:='min=' + FloatToStr(min); выводим ответ для функции min на экран

label9.caption:='max=' + FloatToStr(max); выводим ответ для функции max на экран

end;

end.

 

3.4. Результаты тестирования и выполнения программы

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

Исходные данные: Xn=1, Xk=5, h=3, a=4

Результаты: x=1 y=1,354 sum=3,506 min=1,325

X=4 y=2,181 pr=2,890 max=2,181

Исходные данные: Xn=2, Xk=5, h=1, a=1

Результаты: x=2 y=1,076 sum=6,362 min=1,076

X=3 y=1,469 pr=5,731 max=2,039

X=4 y=1,777

X=5 y=2,039

Исходные данные: Xn=3, Xk=4, h=2, a=2

Результаты: x=1 y=1,445 sum=1,445 min=1,445

pr=1,445 max=0

Исходные данные: Xn=8, Xk=10, h=1, a=3

Результаты: x=8 y=2,803 sum=8,919 min=2,803

X=9 y=2,976 pr=26,198 max=3,139

X=10 y=3,139

3.5. Заключение

Программа проверена. Решение задачи закончено.



/cgi-bin/footer.php"; ?>