Основы программирования в среде Turbo Pascal
Для решения таких задач чаще всего применяют методы прямоугольников, трапеции и Симпсона. В нашей задаче мы применим метод прямоугольников. Блок-схема к программе на рис. 1 и рис2. Т. е. функция не меняет свой знак на концах отрезка), и производная не меняет знак, поэтому в интервале корней нет. Проверим это с помощью программы. Блок-схема приведена на рис. 3. Разницей матриц, А (i, j) и B (i, j… Читать ещё >
Основы программирования в среде Turbo Pascal (реферат, курсовая, диплом, контрольная)
Известно, что технический уровень, а следовательно и конкурентоспособность Выпускаемой машиностроительными предприятиями продукции в большой степени зависят от качества проектных решений на стадии технологической подготовки производства. В процессе технологической подготовки производства инженерам приходится сталкиваться со сложными задачами расчетного и проектного характера, решение которых во многих случаях с помощью традиционных методов либо практически не возможно, либо занимает много времени. В связи с этим весьма актуальна автоматизация технологической подготовки производства, которая имеет следующие особенности:
1. использование принципиально новых методологических основ проектирования;
2. широкое применение экономико-математических методов проектирования;
3. всесторонняя автоматизация инженерного труда.
С появлением ЭВМ возможность автоматизации стала реальностью. Появилось много систем автоматизированного проектирования (САПР), управления производством, управления технологическими процессами и др. Возникли новые методы решения таких задач (в отличие от традиционных), которые рассматриваются в курсе информатике. Одной из известных программ является Turbo Pascal. В данной работе мы будем использовать 7-ю версию этой программы.
программирование функция turbo pascal.
1. Программирование нестандартных функций.
1.1 Постановка задачи.
Составить алгоритм и программу вычисления функции с использованием нестандартных функций и подпрограмм (процедур).
1.2 Метод решения.
В этой задаче встречается нестандартная функция sh? параболический синус.
Для определения этой функции воспользуемся невыполняемым оператором FUNCTION..
Составим блок — схемы для определения функции Sh (рис. 1.1) и основной функции Y (рис. 1.2):
Да.
Рис. 1.1.
Рис. 1.2.
1.3 Описание программы.
Program Irina1;
uses crt;
var x, y: Real;
Label 5;
function MySh (x:real):Real;
begin.
MySh:=(Exp (x)+Exp (-x))/2;
end;
begin.
clrscr;
begin.
5: write ('Vvedite x: x= ');
read (x);
end;
if x>0 then.
Y:=MySh (ln (x)) + ln (MySh (x)) — Sqrt (x).
else goto 5;
begin.
writeln ('y= ', y:5:3);
end;
readkey;
end.
1.4 Результаты.
Ручной счёт Машинный счёт.
x = 1 Y= 0.434 x = 1 Y= 0.434.
x = 3 Y= 2.244 x = 3 Y= 2.244.
1.5 Вывод по работе.
относительная погрешность составляет 0%.
2. Матрицы и операции над ними.
2.1 Постановка задачи.
Составить алгоритм и программу операций над матрицами.
(Aij-BijCij)•Djk•L; i=3, j=2,k=3.
2.2 Метод решения.
В данной задаче нам предстоит применить правила сложений матриц и умножения.
матрицы на число.
Разницей матриц А (i, j) и B (i, j) называется матрица Е (i, j) того же порядка, каждый элемент которого равен сумме соответствующих элементов матриц, А и В:
E (i, j) =A (i, j)-B (i, j).
Умножением матрицы А (i, j) на число V называется матрица В (i, j), получающаяся.
из матрицы, А умножением всех её элементов на V.
Составим блок? схему (смотри стр. 8−10):
Да.
Да.
Да.
Да.
Да.
Да.
Да.
Да Да.
Да Да.
Да.
Да.
2.3 Описание программы.
Program Irina3;
uses crt;
const L=3;
M=2;
N=3;
VAR.
A:array[1.L, 1. M] of integer;
B:array[1.L, 1. M] of integer;
C:array[1.L, 1. M] of integer;
D:array[1.M, 1. N] of integer;
E:array[1.L, 1. M] of integer;
X:array[1.L, 1. M] of integer;
Y:array[1.L, 1. N] of integer;
Z:array[1.L, 1. N] of integer;
i, j, k, V: integer;
begin.
clrscr;
for i:=1 to L do.
for j:=1 to M do.
begin.
write ('Vvedite element [', i,',', j,'] matricu A: A[', i,',', j,']= ');
read (A[i, j]);
end;
for i:=1 to L do.
for j:=1 to M do.
begin.
write ('Vvedite element [', i,',', j,'] matricu B: B[', i,',', j,']= ');
read (B[i, j]);
end;
for i:=1 to L do.
for j:=1 to M do.
begin.
write ('Vvedite element [', i,',', j,'] matricu C: C[', i,',', j,']= ');
read (C[i, j]);
end;
for j:=1 to M do.
for k:=1 to N do.
begin.
write ('Vvedite element [', i,',', k,'] matricu D: D[', i,',', k,']=');
read (D[i, k]);
end;
begin.
write ('Vvedite znachenie V: V= ');
read (v);
end;
for i:=1 to L do.
for j:=1 to M do.
begin.
E[i, j]: = A[i, j]-B[i, j];
end;
for i:=1 to L do.
for j:=1 to M do.
begin.
writeln ('E[', i,',', j,']= ', E[i, j]);
end;
for i:=1 to L do.
for j:=1 to M do.
begin.
X[i, j]: = E[i, j] - C[i, j];
end;
for i:=1 to L do.
for j:=1 to M do.
begin.
writeln ('X[', i,',', j,']= ', X[i, j]);
end;
for i:=1 to L do.
for k:=1 to N do.
Y[i, k]: = 0;
for i:=1 to L do.
for j:=1 to M do.
for k:=1 to N do.
begin.
Y[i, k]: = Y[i, k]+ (X[i, j]*D[j, k]);
end;
for i:=1 to L do.
for k:=1 to N do.
begin.
writeln ('Y[', i,',', k,']= ', Y[i, k]);
end;
for i:=1 to L do.
for k:=1 to N do.
begin.
Z[i, k]: =Y[i, k]*V.
end;
for i:=1 to M do.
for k:=1 to M do.
begin.
writeln ('Z[', i',', k']=, Z[I, k]);
end;
readkey;
end.
2.4. Результаты.
2.4.1 Ручной счёт.
1 2 3 3 2 1 2 2 2 -4 -2 0.
A 1 2 3 — B 3 2 1 — C 2 2 2 = X -4 -2 0.
1 2 -12 -6 0.
X -4 -2 0 * D 2 1 = Y -12 -6 0.
— 4 -2 0 1 2 -12 -6 0.
— 12 -6 0 -24 -12 0.
Y -12 -6 0 * 2 = Z -24 -12 0.
— 12 -6 0 -24 -12 0.
Y -12 -6 0 * 2 = Z -24 -12 0.
— 12 -6 0 -24 -12 0.
2.4.2 Машинный счёт.
— 24 -12 0.
Z -24 -12 0.
— 24 -12 0.
2.5 Вывод по работе.
Относительная погрешность составляет 0%.
3. Решение нелинейных уравнений.
3.1 Постановка задачи.
Найти значения корней нелинейного уравнения по методу половинного деления на отрезке [a, в] с точностью Е. .
3.2 Метод решения.
Подставляя значения а=3 и в=6 в функцию F (x), легко проверить, что F (1)•F (2)>0.
(т.е. функция не меняет свой знак на концах отрезка), и производная не меняет знак, поэтому в интервале [3,6] корней нет. Проверим это с помощью программы. Блок-схема приведена на рис. 3.
Нет.
Да.
Да Да.
Нет.
Рис. 3.
3.3 Описание программы.
Program Irina4;
uses crt;
var A, B, X, Fa, Fb, Fx, e: real;
Label 5,.
10,.
15,.
20;
begin.
clrscr;
5: write ('Vvedite A: A= ');
read (A);
10: write ('Vvedite B: B= ');
read (B);
write ('Vvedite e: e= ');
read (e);
if a<=0 then goto 5 else.
if b<=0 then goto 10 else.
Fa:=5*ln (a)-a+1;
15: X := (A + B)/2;
Fx:=5*ln (x)-x+1;
if (ABS (Fx) < e) then goto 20;
if ((Fa*Fx) <= 0) then b:=x else.
begin.
A:=X; Fa:=Fx;
end;
begin.
if (ABS (A-B) >= e) then goto 15;
end;
20: write ('X= ', X:5:3);
ReadKey;
end.
3.4 Результаты.
3.4.1 Машинный счёт.
Машина считает с точностью е = 0,001.
Ш На отрезке [0,1;5] х = 1;
Ш На отрезке [3;16] х = 14,302;
3.4.2 Ручной счёт.
Ш На отрезке [0,1;5] х = 1;
Ш На отрезке [3;16] х = 14,302;
3.5. Вывод по работе.
Относительная погрешность составляет 0%.
4. Численное интегрирование.
4.1 Постановка задачи.
Составить алгоритм и программу для вычисления определённого интеграла. Число разбиений каждого интервала интегрирования принять равным 10.
a =4, b =5, c =6, n =10.
4.2 Метод решения.
Для решения таких задач чаще всего применяют методы прямоугольников, трапеции и Симпсона. В нашей задаче мы применим метод прямоугольников. Блок-схема к программе на рис. 1 и рис2.
Рис. 1.
Рис. 2.
4.3 Описание программы.
Program Irina5;
uses crt;
var i: integer;
x1,x2,S1,S2,S, h1, h2:real;
const n=10;
a=0;
b=1;
c=2;
function Mych (x:real):real;
begin.
Mych := (Exp (x/2)+Exp (-x/2))/2;
end;
begin.
clrscr;
x1:=a; S1:= 0;
h1:=(b-a)/n;
for i:=1 to n do.
begin.
S1 := S1 + 1/(Mych (x½)*Mych (x½));
x1:=x1+h1;
S1 := S1*h1;
end;
x2:=b; S2:= 0;
h2:=(c-b)/n;
for i:=1 to n do.
begin.
S2 := S2 + 1/(1+cos (x2));
x2:=x2*h2;
S2 := S2*h2;
end;
S := S1 + S2;
writeln ('S= ', S:5:3);
readkey;
end.
4.4 Результаты.
Ручной счёт: Машинный счёт:
A=4, b=5, c=6, h=10, S=0.161; A=4, b=5, c=6, h=10, S=0.161;
4.5 Вывод по работе.
Относительная погрешность составляет 0%.
5. Оптимизация функции.
5.1 Постановка задачи.
Составить алгоритм и программу вычисления наибольшего и наименьшего значений функции на интервале [a, b]=[3,6].
.
5.2 Метод решения.
Решение проводим по методу перебора, при котором при нахождении наибольшего значения функции у перед циклом задают в качестве начального значения заведомо малую е, а внутри цикла находят текущее значение у при следующих условиях:
При нахождении минимальной величины функции за начальное значение принимают заведомо большую величину, с которой сравнивают текущее значение у с использованием следующих условий:
Составим блок — схему (см. стр.21):
Нет.
Нет.
Нет.
Да.
5.3 Описание программы.
Program OptimFun;
uses crt;
var x, h, Y, Ymax, Ymin: real;
const a=3;
b=6;
begin.
clrscr;
Write ('Input h= ');
Read (h);
Ymax:=5*ln (3)-3+1;
Ymin:=5*ln (6)-6+1;
x:=a;
While x<=b do.
begin.
Y:=5*ln (x)-x+1;
If Y>Ymax then Ymax:=Y;
x:=x+h;
end;
begin.
Writeln ('Ymax= ', Ymax:4:2);
end;
begin.
x:=b;
while x>=a do.
begin.
Y:=5*ln (x)-x+1;
if Y.
x:=x-h;
end;
begin.
writeln ('Ymin= ', Ymin:4:2);
end; end;
readkey;
end.
5.4 Результаты при h = 0.001.
ручной счёт: ymax =4.05, ymin =3.49; машинный счёт: ymax =4.05, ymin =3.49.
5.5 Вывод.
Относительная погрешность составляет 0%.
6. Численное дифференцирование.
6.1 Постановка задачи.
Составить алгоритм и программу решения дифференциального уравнения: .
6.2 Метод решения.
Решение проводим по методу Эйлера. Первообразную функцию в каждой точке определяем по формулам:
Составим блок — схему (см. рис.6).
Да.
Рис. 6.
6.3 Описание программы.
Program Difur;
Uses crt;
Label 25, 20;
Var X, Y, X0,Y0,H, Xk: Real;
Begin.
Clrscr;
20: Write ('Input X0= ');
Read (X0);
Write ('Input Y0= ');
Read (Y0);
Write ('Input H= ');
Read (H);
Write ('Input Xk= ');
Read (Xk);
X:=X0;
Y:=Y0;
If (x*x*x-1)>0 then.
25: Y:=Y+H*(x/(x*x*x-1));
Writeln ('X= ', X:4:6,'Y= ', Y:4:6);
X:=X+H;
If X<=Xk Then goto 25;
else goto 20;
Readkey;
End.
6.4 Результаты Машинный счёт:
X0= 2, X= 2.000, Y= 5.286,.
Y0= 5, X= 3.000, Y= 5.401,.
H= 1, X= 4.000; Y= 5.465.
Xk= 4;
Ручной счёт:
X= 2.000, Y= 5.286,.
X= 3.000, Y= 5.401,.
X= 4.000; Y= 5.465.
6.5 Вывод.
Относительная погрешность составляет 0%.
7. Аппроксимация функции.
7.1 Постановка задачи.
Найти аппроксимирующую функцию.
Изменение функции у от аргумента х.
Значения х.
0.1. | 0.2. | 0.3. | 0.4. | 0.5. | 0.6. | 0.7. | 0.8. | 0.9. | 1.0. | 1.1. | 1.2. | 1.3. | 1.4. | |
3,7. | 2,95. | 2,63. | 2,45. | 2,32. | 2,23. | 2,16. | 2,09. | 2,05. | 2,0. | 1,96. | 1,93. | 1,9. | 1,87. | |
7.2 Метод решения.
Решать будем методом наименьших квадратов:
Составим блок — схему (см. стр. 26):
7.3 Описание программы.
Program Aproks;
uses crt;
const n=14;
var K1, K2,L1,L2,A0,A1:Real;
X, Y: Array[1.n] of real;
i:integer;
Begin.
Clrscr;
For i:=1 to n do.
begin.
Write ('Input X[', i,']= ');
Read (X[i]);
end;
For i:=1 to n do.
begin.
Write ('Input Y[', i,']= ');
Read (Y[i]);
end;
K1:=0; K2:=0;
L1:=0; L2:=0;
For i:=1 to n do.
begin.
K1:=K1+X[i];
K2:=K2+X[i]*X[i];
L1:=L1+Y[i];
L2:=L2+X[i]*Y[i];
end;
A0:=(L2*K1-L1*K2)/(K1*K1-n*K2);
A1:=(K1*L1-n*L2)/(K1*K1-n*K2);
Writeln ('A0= ', A0:4:2, 'A1= ', A1:4:2);
Readkey;
end.
7.4 Результаты.
7.4.1 Машинный счёт.
Подставляем значения х и у из таблицы 7.1. (см. стр.25).
А0= 3,08; А1 =-1,04.
7.4.1. Ручной счёт.
;
=.
А0= 3,08;
А1= -1,04.
7.5 Вывод по работе.
Сравнивая значения машинного и ручного счёта, мы видим точное совпадение чисел.
Заключение
.
Итак, подводя итоги можно сказать, что появление ЭВМ действительно упростило труд инженеров в разработке проектных решений производственных задач. Работая с программой Turbo Pascal, мы убедились, что это быстрый и точный метод решения задач расчетного и проектного характера. К тому же эта программа очень удобна и проста в применении. Сравнивая ручной счет с машинным, мы увидели, что погрешность вычислений минимальна.
1 Технологическая информатика: методичка /Е. А. Карев: Ульяновск, 2006 г.- 52 с.
2 Программирование в среде Turbo Pascal: методичка/Ю.В. Псигин, О. Г. Крупенников: Ульяновск, 2008 г.- 95 с.
3 Информатика: учебное пособие/Е.А. Карев: Ульяновск, 2006 г.- 103 с.