Основы программирования в среде Turbo Pascal
Введение
Известно, что технический уровень, а следовательно и
конкурентоспособность Выпускаемой машиностроительными предприятиями продукции в
большой степени зависят от качества проектных решений на стадии технологической
подготовки производства. В процессе технологической подготовки производства
инженерам приходится сталкиваться со сложными задачами расчетного и проектного
характера, решение которых во многих случаях с помощью традиционных методов
либо практически не возможно, либо занимает много времени. В связи с этим
весьма актуальна автоматизация технологической подготовки производства, которая
имеет следующие особенности:
1. использование принципиально новых методологических основ
проектирования;
. широкое применение экономико-математических методов проектирования;
. всесторонняя автоматизация инженерного труда.
С появлением ЭВМ возможность автоматизации стала реальностью. Появилось
много систем автоматизированного проектирования (САПР), управления
производством, управления технологическими процессами и др. Возникли новые
методы решения таких задач (в отличие от традиционных), которые рассматриваются
в курсе информатике. Одной из известных программ является 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;x,y: Real;5;MySh(x:real):Real;:=(Exp(x)+Exp(-x))/2;;
begin
clrscr;
: write ('Vvedite x: x= ');(x);;x>0 then:=MySh(ln(x)) +
ln(MySh(x)) - Sqrt(x)goto 5;('y= ',y:5:3);;
readkey;
end.
.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. Матрицы и операции над ними
.1 Постановка задачи
Составить алгоритм и программу операций над матрицами.
(Aij-Bij- Cij)∙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):
Да
Да
Да
Да
Да
Да
Да
Да Да
Да Да
Да
Да
.3 Описание программы
Program Irina3;
uses crt;L=3;=2;=3;:array[1..L,1..M] of
integer;:array[1..L,1..M] of integer;:array[1..L,1..M] of
integer;:array[1..M,1..N] of integer;:array[1..L,1..M] of
integer;:array[1..L,1..M] of integer;:array[1..L,1..N] of
integer;:array[1..L,1..N] of integer;,j,k,V:integer;;i:=1 to L doj:=1 to M
do('Vvedite element [',i,',',j,'] matricu A: A[',i,',',j,']= ');(A[i,j]);;i:=1
to L doj:=1 to M do('Vvedite element [',i,',',j,'] matricu B: B[',i,',',j,']= ');(B[i,j]);;i:=1
to L doj:=1 to M do('Vvedite element [',i,',',j,'] matricu C: C[',i,',',j,']=
');(C[i,j]);;j:=1 to M dok:=1 to N do('Vvedite element [',i,',',k,'] matricu D:
D[',i,',',k,']=');(D[i,k]);;('Vvedite znachenie V: V= ');(v);;i:=1 to L doj:=1
to M do[i,j]:= A[i,j]-B[i,j];;i:=1 to L doj:=1 to M do('E[',i,',',j,']=
',E[i,j]);;i:=1 to L doj:=1 to M do[i,j]:= E[i,j] - C[i,j];;i:=1 to L doj:=1 to
M do('X[',i,',',j,']= ',X[i,j]);;i:=1 to L dok:=1 to N do[i,k]:= 0;i:=1 to L
doj:=1 to M dok:=1 to N do[i,k]:= Y[i,k]+ (X[i,j]*D[j,k]);;i:=1 to L dok:=1 to
N do('Y[',i,',',k,']= ',Y[i,k]);;i:=1 to L dok:=1 to N do[i,k]:=Y[i,k]*V;i:=1
to M dok:=1 to M do('Z[',i',',k']= ,Z[I,k]);;
readkey;
end.
.4. Результаты
.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 -4 -2 0 * D 2 1 = Y -12 -6 0
-4 -2
0 1 2 -12 -6 0
-12 -6
0 -24 -12 0 -12 -6 0 * 2 = Z
-24 -12 0
-12 -6
0 -24 -12 0
Y -12
-6 0 * 2 = Z -24 -12 0
-6 0 -24 -12 0
.4.2 Машинный счёт
-12 0
-12 0
.5 Вывод по работе
Относительная погрешность составляет 0%
3. Решение
нелинейных уравнений
.1 Постановка задачи
Найти
значения корней нелинейного уравнения по методу половинного деления на отрезке
[a, в] с точностью Е. .
.2
Метод решения
Подставляя
значения а=3 и в=6 в функцию F(x), легко проверить, что F(1)∙F(2)>0
(т.е.
функция не меняет свой знак на концах отрезка), и производная не меняет знак, поэтому в интервале [3,6] корней нет.
Проверим это с помощью программы. Блок-схема приведена на рис. 3.
Нет
Да
Да Да
Нет
Рис.3
3.3 Описание программы
Irina4;crt;A,B,X,Fa,Fb,Fx,e:real;5,
,
,
;;
: write('Vvedite A: A= ');(A);
: write('Vvedite B: B= ');(B);('Vvedite e: e= ');(e);a<=0
then goto 5 elseb<=0 then goto 10 else:=5*ln(a)-a+1;
: X := (A + B)/2;:=5*ln(x)-x+1;(ABS(Fx) < e) then goto
20;((Fa*Fx) <= 0) then b:=x else:=X; Fa:=Fx;;(ABS(A-B) >= e) then goto
15;;
: write('X= ',X:5:3);;
end.
.4 Результаты
3.4.1 Машинный счёт.
Машина считает с точностью е = 0,001.
Ø На отрезке [0,1;5] х = 1;
Ø На отрезке [3;16] х = 14,302;
.4.2 Ручной счёт
Ø На отрезке [0,1;5] х = 1;
Ø На отрезке [3;16] х = 14,302;
.5. Вывод по работе
Относительная погрешность составляет 0%.
4. Численное интегрирование
.1 Постановка задачи
Составить алгоритм и программу для вычисления определённого интеграла.
Число разбиений каждого интервала интегрирования принять равным 10.
, a =4,
b =5, c =6, n =10.
.2
Метод решения
Для
решения таких задач чаще всего применяют методы прямоугольников, трапеции и
Симпсона. В нашей задаче мы применим метод прямоугольников. Блок-схема к программе
на рис.1 и рис2.
Рис.1
Рис.2
4.3 Описание программы
Irina5;crt;i:integer;,x2,S1,S2,S,h1,h2:real;n=10;=0;=1;=2;Mych(x:real):real;:=
(Exp(x/2)+Exp(-x/2))/2;;;:=a; S1:= 0;:=(b-a)/n;i:=1 to n do:= S1 +
1/(Mych(x1/2)*Mych(x1/2));:=x1+h1;:= S1*h1;;:=b; S2:= 0;:=(c-b)/n;i:=1 to n
do:= S2 + 1/(1+cos(x2));:=x2*h2;:= S2*h2;;:= S1 + S2;('S= ',S:5:3);;.
.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.
Оптимизация функции
.1 Постановка задачи
Составить алгоритм и программу вычисления наибольшего и наименьшего
значений функции на интервале [a,b]=[3,6].
.
.2 Метод решения
Решение проводим по методу перебора, при котором при нахождении
наибольшего значения функции у перед циклом задают в качестве начального значения
заведомо малую е, а внутри цикла находят текущее значение у при следующих
условиях:
При нахождении минимальной величины функции за начальное значение
принимают заведомо большую величину, с которой сравнивают текущее значение у с
использованием следующих условий:
Составим
блок - схему (см. стр.21):
Нет
Нет
Нет
Да
5.3 Описание программы
.4 Результаты при h = 0.001
ручной счёт: ymax =4.05, ymin =3.49; машинный счёт: ymax =4.05, ymin =3.49.
.5 Вывод
Относительная погрешность составляет 0%.
6. Численное дифференцирование
.1 Постановка задачи
Составить
алгоритм и программу решения дифференциального уравнения: .
.2
Метод решения
Решение
проводим по методу Эйлера. Первообразную функцию в каждой точке определяем по
формулам:
Составим
блок - схему(см. рис.6).
Да
Рис.6
6.3 Описание программы
Program Difur;
Uses crt;25, 20;X,Y,X0,Y0,H,Xk:Real;;
: Write('Input X0= ');(X0);('Input Y0= ');(Y0);('Input H=
');(H);('Input Xk= ');(Xk);:=X0;:=Y0;(x*x*x-1)>0 then
: Y:=Y+H*(x/(x*x*x-1));('X= ', X:4:6,'Y=
',Y:4:6);:=X+H;X<=Xk Then goto 25; goto
20;
Readkey;
End.
.4 Результаты Машинный счёт:
X0= 2, X= 2.000, Y= 5.286,= 5, X= 3.000, Y= 5.401,= 1, X=
4.000; Y= 5.465.= 4;
Ручной счёт:
X=
2.000, Y= 5.286,
X=
3.000, Y= 5.401,
X=
4.000; Y= 5.465.
.5 Вывод
Относительная погрешность составляет 0%.
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
|
.2 Метод решения
Решать будем методом наименьших квадратов:
Составим блок - схему (см. стр. 26):
7.3 Описание программы
Aproks;crt;n=14;K1,K2,L1,L2,A0,A1:Real;,Y:Array[1..n] of
real;:integer;;i:=1 to n do('Input X[',i,']= ');(X[i]);;
For
i:=1 to n do
begin('Input Y[',i,']= ');(Y[i]);;:=0; K2:=0;:=0; L2:=0;i:=1
to n
do:=K1+X[i];:=K2+X[i]*X[i];:=L1+Y[i];:=L2+X[i]*Y[i];;:=(L2*K1-L1*K2)/(K1*K1-n*K2);:=(K1*L1-n*L2)/(K1*K1-n*K2);('A0=
',A0:4:2, 'A1= ',A1:4:2);
Readkey;.
.4 Результаты
.4.1 Машинный счёт
Подставляем значения х и у из таблицы 7.1. (см. стр.25).
А0= 3,08; А1 =-1,04.
;
=
А0= 3,08;
А1= -1,04.
.5 Вывод по работе
Сравнивая значения машинного и ручного счёта, мы видим точное совпадение
чисел.
Заключение
Итак, подводя итоги можно сказать, что появление ЭВМ действительно
упростило труд инженеров в разработке проектных решений производственных задач.
Работая с программой Turbo Pascal, мы
убедились, что это быстрый и точный метод решения задач расчетного и проектного
характера. К тому же эта программа очень удобна и проста в применении.
Сравнивая ручной счет с машинным, мы увидели, что погрешность вычислений
минимальна.
Список
использованной литературы
1 Технологическая информатика: методичка /Е. А. Карев:
Ульяновск, 2006г.- 52 с
2 Программирование в среде Turbo Pascal: методичка/Ю.В. Псигин, О.Г. Крупенников: Ульяновск,
2008г.- 95 с.
Информатика: учебное пособие/Е.А. Карев: Ульяновск, 2006г.-
103 с.