m – количество элементов в массиве y. m=5.
Требуемые функции и процедуры:
Sqrt – арифметическая функция, возвращающая квадратный корень аргумента.
Sqr – арифметическая функция, возвращающая аргумент в квадрате.
Exp – возвращает экспоненту аргумента.
Cos – возвращает косинус аргумента.
Proizvedenie (x,y[j],n) – вычисляет произведение элементов по формуле
.Symma (x,y[j],n) –вычисляет сумму элементов по формуле
.Графическое представление алгоритма процедуры Massive_Z:
Листинг процедуры Massive_Z:
Procedure Massive_Z (y1:Massiv;m1:integer);
begin
for j:=1 to m1 do
if a>=y1[j] then
z[j]:=a*Sqr(cos(al))+(1/(b*Sqrt(exp(-t))))+Proizvedenie (x,y[j],n)
else
if a<y1[j] then
z[j]:=a*((exp(-(Sqr(t-tay))))/(Sqrt(a-b)))*Symma (x,y[j],n);
end;
5. Разработка схемы алгоритма и текста основной программы и их описание
Разработанная программа написана на языке Turbo Pascal 7.0. программа предназначена для осуществления расчета по формулам, представленным выше.
В программе используется одна из директив компилятора {$N+), которая позволяет использовать числовой сопроцессор, т.е. реализовывать операции с плавающей точкой программно.
В программе используются константы:
в программе используется тип Massiv=array [1..d] of real.
В программе используются следующие переменные:
x:Massiv – озномерный массив вещественных чисел размерностью n.
y:Massiv – одномерный массив вещественных чисел размерностью m;
z – одномерный массив чисел типа double размерностью d;
i,j – типа integer;
h,k – типа double;
Графическое представление алгоритма основной программы:
Листинг основной программы:
Begin
clrscr;
writeln ('Курсовая работа "Решение прикладной задачи"');
writeln;
k:=(Xmax-Xmin)/(n-1);
writeln ('Шаг для вычисления массива x равен ',k:10:4);
h:=(Ymax-Ymin)/(m-1);
writeln ('Шаг для вычисления массива y равен ',h:10:4);
x[1]:=Xmin;
for i:=2 to n do
x[i]:=x[i-1]+k;
y[1]:=Ymin;
for j:=2 to m do
y[j]:=y[j-1]+h;
writeln ('Исходный массив x');
for i:=1 to n do
begin
write (x[i]:10:4, '':2);
if ((i mod 5)=0) then writeln;
end;
writeln ('Исходный массив y');
for j:=1 to m do
write (y[j]:10:4, '':2);
writeln;
Massive_Z (y,m);
writeln ('Вычисленный массив z равен');
for j:=1 to m do
writeln (z[j]);
writeln;
write ('Нажмите любую клавишу...');
readln;
End.
В процессе выполнения данной курсовой работы были закреплены теоретические и практические навыки в решении прикладных задач с применением функций и процедур, было освоен принцип структурного (модульного) программирования. Также в процессе выполнения данной курсовой работы была создана программы, осуществляющая формирование массива z в соответствии с приведенными формулами.
Список использованных источников литературы
1. Фаронов В.В. Turbo Pascal 7.0 – М.: «Нолидж», 2001 г. – 576 с.
Листинг программы
Program Kyrsov_rabota;
{$N+}
uses crt;
const
n=10;
m=5;
a=23.56;
b=7.86;
al=0.364;
t=10;
tay=0.05;
d=100;
Ymin=0.1;
Ymax=100;
Xmin=-10;
Xmax=100;
type
Massiv=array [1..d] of real;
var
x,y:Massiv;
z:array [1..d] of double;
i,j:integer;
h,k:double;
Function Proizvedenie (x1:Massiv;y1:double;n1:integer):double;
var
p1:double;
i:integer;
begin
p1:=1;
for i:=1 to n1 do
p1:=p1*(x1[i]-y1);
Proizvedenie:=p1;
end;
Function Symma (x1:Massiv;y1:double;n1:integer):real;
var
s1:real;
begin
s1:=0;
for i:=1 to n1 do
s1:=s1+(x1[i]-y1);
Symma:=s1;
end;
Procedure Massive_Z (y1:Massiv;m1:integer);
begin
for j:=1 to m1 do
if a>=y1[j] then
z[j]:=a*Sqr(cos(al))+(1/(b*Sqrt(exp(-t))))+Proizvedenie (x,y[j],n)
else
if a<y1[j] then
z[j]:=a*((exp(-(Sqr(t-tay))))/(Sqrt(a-b)))*Symma (x,y[j],n);
end;
Begin
clrscr;
writeln ('Курсовая работа "Решение прикладной задачи"');
writeln;
k:=(Xmax-Xmin)/(n-1);
writeln ('Шаг для вычисления массива x равен ',k:10:4);
h:=(Ymax-Ymin)/(m-1);
writeln ('Шаг для вычисления массива y равен ',h:10:4);
x[1]:=Xmin;
for i:=2 to n do
x[i]:=x[i-1]+k;
y[1]:=Ymin;
for j:=2 to m do
y[j]:=y[j-1]+h;
writeln ('Исходный массив x');
for i:=1 to n do
begin
write (x[i]:10:4, '':2);
if ((i mod 5)=0) then writeln;
end;
writeln ('Исходный массив y');
for j:=1 to m do
write (y[j]:10:4, '':2);
writeln;
Massive_Z (y,m);
writeln ('Вычисленный массив z равен');
for j:=1 to m do
writeln (z[j]);
writeln;
write ('Нажмите любую клавишу...');
readln;
End.
Результат работы программы
Рисунок Б1 – результат выполнения программы