Реферат: Turbo Pascal

Рязанскаягосударственная радиотехническая академия

КафедраВычислительной и Прикладной математики

Пояснительная запискаК курсовой работепо дисциплине

«Алгоритмическиеязыки и программирование»

Рязань 2006

Содержание

Задание на курсовую работу.

Введение.

1. Анализ задания иматематическая постановка задачи.

2. Разработка схемы алгоритмаи её описание.

3. Инструкция поиспользованию разработанной программы.

4. Проверкаправильности функционирования программы.

5. Текст программы иеё описание.

Список литературы.


РЯЗАНСКАЯРАДИОТЕХНИЧЕСКАЯ АКАДЕМИЯ

ФАКУЛЬТЕТВЫЧИСЛИТЕЛЬНОЙ ТЕХНИКИ

КАФЕДРАВЫЧИСЛИТЕЛЬНОЙ И ПРИКЛАДНОЙ МАТЕМАТИКИ

Задание

на курсовую работу подисциплине

«Алгоритмические языки ипрограммирование»

Студенту Хамидулину А.Р.группы 041.

Задание 1. Составить программу вычисленияматрицы P=f(A,B,C)

f(A,B,C) – матричное выражение. A,B,C – исходныематрицы,

Размер и значениеэлементов, которых набираются произвольно.

f(A,B,C)=C(A+2B)T.

Сформировать вектор изсредних арифметических значений элементов столбцов.

Задание 2. Составить программу вычисленияопределённого интеграла /> спогрешностью, не превышающей заданную величину ε. Для проверки программыинтегрирования вычислить /> определённыйинтеграл с заданной точностью.

Интеграл вычислить с помощьюформулы прямоугольников.

/>

Пределы интегрирования: a=1; b=2.

Значения коэффициентов:

c= 1,9; 2,05; 2,1; 2,2.

d= 3; 3,05; 3,1.

Погрешность ε: 10-4.

Дата выдачизадания:

Датавыполнения задания:

Преподаватель:

Баринов В.В.


Введение

Современные средствавычислительной техники и ЭВМ позволяют существенным образом повыситьэффективность деятельности инженеров при решении различных задач. При этомнаиболее существенным вопросом является организация взаимодействия пользователясо средствами ЭВМ. В настоящей курсовой работе для этих целей использовалсядиалоговый режим, что позволило существенным образом упростить процесс отладкии работы с программой. В качестве языка программирования выбран изучаемый назанятиях по дисциплине «Алгоритмические языки и программирование» языкпрограммирования «Паскаль». К достоинствам языка следует отнести такие егохарактеристики, как модульность, универсальность, удобство работы с массивами ит. д.

Задание 1

1.        Анализ задания иматематическая постановка задачи

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

1.        Ввести значенияэлементов матриц A, B, C.

2.        Напечататьзначения элементов исходных матриц.

3.        Провеститранспонирование матрицы B, т.е. вычислить матрицу U=BT.

4.        Умножить матрицу ВТна 2, т. е. вычислить матрицу U=2*ВТ.

5.        Сложить матрицы A и 2*ВТ, т. е. вычислитьматрицу U=A+2*ВТ.

6.        Умножить матрицы Си (A+2*BТ), т. е. вычислить матрицу

 U=C*(A+2*BT).

7.        Вывести матрицу U.

8.        Сформироватьвектор VECT из средних арифметических значенийэлементов столбцов.

9.        Вывести вектор VECT .

Печать целесообразнореализовать с помощью подпрограммы (процедуры общего вида). Пункты 1-8целесообразно также оформить в виде подпрограмм.

Матрицей будем называтьтаблицу чисел:

А11 А12 … А1N

A21A22 … A2N

— — — — — — — - —

AM1AM2 … AMN

Если m=n, то матрицаназывается квадратной, n-порядок.

Произведением 2-хпрямоугольных матриц

 А11 А12 …А1N

 A=A21A22 … A2N

 - — — — — — — - —

 AM1AM2 … AMN

 

 B11 B12… B1N

 B=B21B22 … B2N

 - — — — — — — — —

 BM1 BM2 … BMN

называется матрица

 C11 C12 … C1N

 C=C21C22 … C2N

 - — — — — — — - —

 CM1CM2 … CMN

у которой элемент Сij, стоящий на пересечении i-ой строки и j-ого столбца, равен сумме произведений соответствующихэлементов i-ой строки первой матрицы А и j-того столбца 2-ой матрицы В.

Суммой 2-х прямоугольныхматриц А=(аi<sub/>j) и В=(вi<sub/>j) одинаковых размеров (m х n) называется матрица С=(сi<sub/>j) тех же размеров, элементы которой равны суммам cответствующих элементов даннойматрицы.

2.Разработкасхемы алгоритма и её описание

По результатам анализазадания можно составить укрупненную схему алгоритма последовательной структуры:

/>


/> /> /> /> /> /> /> /> /> /> <td/> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> <td/> /> /> /> />
Проведём детализацию блоков.1) Подпрограмма ввода матриц.

Имя подпрограммы: inputm.

/> /> /> /> /> /> /> <td/> /> /> /> /> /> /> /> />

 

/> /> /> /> /> /> /> /> /> /> <td/> /> /> /> /> /> /> /> <td/> /> /> /> /> /> /> /> /> /> /> /> />
2) Подпрограмма вывода матриц.

 Имя подпрограммы: outputmat.

/>

/> /> /> /> /> <td/> /> /> /> />

 

/> /> /> /> /> /> /> /> /> /> <td/> /> /> /> /> /> /> /> <td/> /> /> /> /> /> /> /> /> /> /> /> />

3) Подпрограмматранспонирования матриц

/> Имя подпрограммы transpm.

/> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> <td/> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> />

4) Подпрограмма умноженияматриц

 Имя подпрограммы: multm.

/> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> <td/> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> <td/> />

5) Подпрограмма умноженияматрицы на число

 Имя подпрограммы: multconstm.

/> 

/> /> /> /> /> /> /> /> /> /> /> /> <td/> /> /> /> /> /> /> /> /> /> /> /> />

/>6) Подпрограмма сложения матриц

 Имя подпрограммы: sum_m.


/> /> /> /> /> /> /> /> /> /> /> /> <td/> /> /> /> /> /> /> /> /> /> /> /> />

7) Подпрограмма формированиявектора из средних арифметических значений элементов столбцов.

 Имя подпрограммы: sred_arifm.

/> /> /> /> /> /> /> /> /> /> /> <td/> /> /> /> /> /> /> /> />

S:=0

  /> /> /> /> /> /> /> /> /> /> /> /> /> />

S:=0

  /> /> /> /> /> /> /> /> /> /> /> /> /> <td/> />

Полный алгоритм решениязадачи.

/> /> /> /> /> /> /> <td/> /> /> /> /> /> /> /> /> /> /> /> />
Да Нет

/>

/> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> <td/> /> /> /> /> /> <td/> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> <td/> /> /> /> <td/> /> /> /> /> /> /> /> />

3. Инструкцияпо использованию разработанной программы

Определим исходныеданные.

Матрица А: Матрица В: МатрицаС:

 /> /> />

Описание переменных имассивов:

Исходные сведения Описание в программе Обозначение Назначение

Идентификатор,

размерность

Атрибуты i, j, k Индексные переменные i, j, k Integer n

Размерность

матриц

n Word

A, B, C,

U, Vect

Матрицы

исходных данных и результата

a(10,10), b(10,10), c(10,10), u(10,10),

vect(10)

Array of real a, b, c, z Матрицы, используемые в подпрограммах

a(10,10), b(10,10),

c(10,10), z(10)

Array of real R,S Переменная, используемая в подпрограмме r Real m Переменная, используемая в подпрограмме m Char /> /> /> /> />

 

4. Проверкаправильности функционирования программы.

Введём исходные данные.

Программа выводит дляконтроля входные данные:

Матрица А: Матрица В: МатрицаС:

 /> /> />

Вывод результирующейматрицы:

/>


Вывод матрицыVect:

/>

5.Текстпрограммы и её описание.

В процессе получениярезультирующей матрицы реализованы следующие действия с массивами:

 -транспонированиеквадратных матриц произвольной размерности;

 -умножение квадратныхматриц произвольной размерности;

 -сложение квадратныхматриц произвольной размерности;

 -умножение на числоквадратных матриц произвольной размерности;

Все указанные действияреализованы с помощью подпрограмм. Ввод и вывод матриц также реализован в подпрограммах.

Окончательныйвариант программы:

МодульKursUn, содержащий описанныеподпрограммы.

Unit KursUn;{*** Начало модуля KursUn***}

 interface{*** Интерфейсная секция ***}

 usescrt;

 type

 matrix= array [1..10,1..10] of real;

 vector= array [1..10] of real;

 var

 i,j,k:integer;

 n:word;

 procedure outputmat (n:word; a:matrix; m:char);

 procedure inputm (n:word; var a:matrix;m:char);

 procedure sred_arifm (n:word; a:matrix;varz:vector);

 procedure transpm (n:word; a:matrix; var c:matrix);

 procedure sum_m (n:word; a,b:matrix; var c:matrix);

 procedure multm (n:word; a,b:matrix; var c:matrix);

 procedure multconstm (n:word; r:real; a:matrix;varc:matrix);

 implementation {*** ИСПОЛНЯЕМАЯЧАСТЬ***}

{***************************************************************************}

 {*** процедуравводаматриц***}

 procedure inputm;

 begin

 clrscr;

 writeln;

 writeln(' Введите матрицу ',m,'размером ',n,'*',n);

 fori:=1 to n do

 for j:=1 to n do

 begin

 write(' ',m,'[',i,',',j,']=');

 readln(a[i,j]);

 end;

 end;

{***************************************************************************}

 {*** процедуравыводаматриц***}

 procedure outputmat;

 begin

 writeln;

 writeln(' Матрица',m,'.');

 writeln;

 for i:=1 to n do

 begin

 write(' ');

 for j:=1 to n do

 write(' ',a[i,j]:3:1);

 writeln;

 end;

 end;

{***************************************************************************}

 {***процедура транспонирования матрицы ***}

 proceduretranspm;

 begin

 for i:=1 to n do

 for j:=1 to n do

 c[j,i]:=a[i,j];

 end;

{***************************************************************************}

 {***процедура умножения матрицы на число ***}

 proceduremultconstm;

 begin

 for i:=1 to n do

 for j:=1 to n do

 c[i,j]:=a[i,j]*r

 end;

{***************************************************************************}

 {***процедура суммирования матриц ***}

 proceduresum_m;

 begin

 for i:=1 to n do

 for j:=1 to n do

 c[i,j]:=a[i,j]+b[i,j];

 end;

{***************************************************************************}

 {*** процедураумноженияматриц***}

 procedure multm;

 begin

 for i:=1 to n do

 for j:=1 to n do

 begin

 c[i,j]:=0;

 for k:=1 to n do

 c[i,j]:=c[i,j]+a[i,k]*b[k,j];

 end;

 end;

{***************************************************************************}

 {***процедура формирования вектора из средних ***}

 {***арифметических значений элементов столбцов ***}

 proceduresred_arifm;

 var

 S:real;

 begin

 S:=0;

 for i:=1 to n do

 begin

 for j:=1 to n do

 S:=S+a[j,i];

 z[i]:=S/n;

 S:=0;

 end;

 end;

{***************************************************************************}

 end.{*** Конец модуля KursUn***}

Основнаяпрограмма.

Program Kursach1;

 Uses KursUn, Crt;

 Var

 a,b,c,u: matrix;

 vect: vector;

 begin

 ClrScr; textcolor(LightCyan);

 writeln;

 writeln(' ╔═══════════════════════════════════════════════════════════════╗');

 writeln(' ║ Этапрограммавычисляетматричноевыражение║');

 writeln(' ║ ║');

 writeln(' ║ T ║');

 writeln(' ║ U=C*( A+2*B ) ║');

 writeln(' ║ ║');

 writeln(' ╚═══════════════════════════════════════════════════════════════╝');

 writeln;

 write('Введите размерности матриц: '); readln(n);

 ifn=0 then {*** проверка размерности матрицы ***}

 begin

 ClrScr; textcolor(red);

 writeln;

 writeln(' Такая размерность недопустима!!!');

 readkey;

 exit;

 end;

 ClrScr;

 inputm(n,a,'A'); {*** вводматрицыA ***}

 ClrScr;

 inputm(n,b,'B'); {*** вводматрицыB ***}

 ClrScr;

 inputm(n,c,'C'); {*** вводматрицыC ***}

 transpm(n,b,u); {*** транспонированиематрицы B. ***}

 multconstm(n,2,u,u);{*** умножения матрицы на 2. ***}

 sum_m(n,a,u,u);{*** суммирование матриц A+2*BT. ***} multm(n,c,u,u); {*** умножение матриц С и(A+2*BT). ***}

 ClrScr;

 writeln;

 writeln('****************** Исходные значения ********************');

 outputmat(n,a, 'A');{*** вывод матрицы A***}

 outputmat(n,b, 'B');{*** вывод матрицы B***}

 outputmat(n,c, 'C');{*** вывод матрицы C***}

 writeln;

 writeln('***** Для продолжения нажмите любую клавишу *****');

 readkey;

 outputmat(n,u, 'U'); {*** вывод результата: матрицы U ***}

 writeln;

 writeln('***** Для продолжения нажмите любую клавишу *****');

 readkey;

 ClrScr;

 writeln;

 writeln(' *******************************************************');

 writeln(' * Вектор из среднихарифметических значений элементов *');

 writeln('* столбцов результирующей матрицы. *');

 writeln(' *******************************************************');

 sred_arifm(n, u, vect);

 writeln; write(' ');

 for i:=1 to n do

 write(' ',vect[i]:5:2);

 writeln;

 readkey;

 end.

Задание 2

1.        Анализ задания иматематическая постановка задачи

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

1.        Ввод исходныхданных.

2.        Нахождениезначения определённого интеграла с использованием метода прямоугольников.

3.        Выводрезультатов.

При численноминтегрировании вместо кривой подынтегральной функции используют заменяющие(аппроксимирующие) её кривые или ломаные линии, для которых вычислениеограниченной ими площади производится в соответствии с достаточно несложнымиформулами.

Принцип методапрямоугольников состоит в том, что исходный отрезок разбивается на достаточномалые части:

a= x1< x2<x3<…< xn-1< xn=b; h= xk-xk-1;

площадь каждой такойчасти (прямоугольника): Sk=h*f(xk);

соответственно площадьвсей фигуры, образованной из n-1таких прямоугольников: S= S1+S2+…+ Sn-2+ Sn-1.Величина S является приближённым значением определённого интеграла, онаприближается к истинному значению при увеличении числа n.

Погрешность данногометода определяется абсолютным значением разности приближённых значенийопределённого интеграла при различных n. Если эта разность меньше требуемой погрешности, то необходимая точностьдостигнута, и дальнейшее увеличение n не требуется.

2. Разработкасхемы алгоритма и её описание

По результатам анализазадания можно составить укрупненную схему алгоритма последовательной структуры:

/> /> /> /> /> /> /> <td/> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> <td/> />

Полный алгоритм:

/> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> /> <td/> /> /> /> /> /> /> /> />

n:=1000;y2:=0

  /> /> /> /> <td/>

h:= (b-a)/n; y1:=y2;

y2:=0; x:=a+h;

 

 

 

/> /> /> /> /> /> /> /> <td/> />
/>Нет Да

/>

/> /> /> /> /> /> /> /> /> />
Нет

/>/>


Да

/>

/> /> /> /> /> /> /> /> /> /> /> /> /> /> <td/> />
Нет

/>


Да

/>

/> /> /> /> /> /> /> <td/> /> /> /> /> /> /> /> />

Инструкция поиспользованию разработанной программы

Определим исходныеданные.

 a=1;b=2; e=0.0001;

c= 1,9; 2,05; 2,1; 2,2.

d= 3; 3,05; 3,1.

Исходные сведения Описание в программе Обозначение Назначение Идентификатор Атрибуты A, B Пределы интегрирования a, b Real C,D Параметры c, d Real e Погрешность eps Real y1, y2 Значения определённого интеграла при числах разбиений n и 2*n y1, y2 Real h Шаг интегрирования (определяется по формуле h=(b-a)/n) h Real x Текущее значение аргумента x Real n Количество разбиений отрезка [a;b] n Longint

Описание переменных имассивов:

4. Проверкаправильности функционирования программы.

Введём определённые ранееисходные данные.

a=1; b=2; e=0.0001;

 c=1,9; d=3;

При c=1,90 и d=3,00 значение определённого интеграла

0,113 с точностью до 0,00010

Количество разбиений отрезка[1,00;2,00]: 4000

 c=2,05; d=3,05

При c=2,05 и d=3,05 значение определённого интеграла

 0,110 с точностью до 0,00010

Количество разбиений отрезка[1,00;2,00]: 4000

 c=2,2; d=3,1

При c=2,20 и d=3,10 значение определённого интеграла

 0,108 с точностью до 0,00010

Количество разбиений отрезка[0,00;2,00]: 4000

Для проверки программыинтегрирования вычислим определённый интеграл /> сзаданной точностью.

 a=0; b=3.14;eps=0.0001.

Определённый интеграл />=2.

5.Текст программы

Program kursach2;

 uses crt;

 var

 a,b,c,d,e,y1,y2,h,x:real;

 n:longint;

 begin

 clrscr; textcolor(11);

 writeln(' ╔═══════════════════════════════════════════════════════════════╗');

 writeln(' ║ Этапрограммавычисляетопределённыйинтегралотфункции║');

 writeln(' ║ ║');

 writeln(' ║ x ║');

 writeln(' ║ f(x)= — ║');

 writeln(' ║ (x^4+d*x^2+c) ║');

 writeln(' ║ ║');

 writeln(' ║ наотрезке[a,b] спогрешностьюe. ║');

 writeln(' ╚═══════════════════════════════════════════════════════════════╝');

 writeln;

 write(' Введителевуюграницуинтервала:'); readln(a);

 write(' Введите правую границу интервала:'); readln(b);

 write('Введите погрешность вычислений: '); readln(e);

 clrscr;

 writeln('*****************************************');

 write('Введите значения c: '); read(c);

 write('Введите значения d: '); read(d);

 n:=2000;y2:=0;

 repeat

 h:=(b-a)/n; y1:=y2;

 y2:=0; x:=a+h;

 repeat

 y2:=y2+h*x/(x*x*x*x+d*x*x+c);

 {y2:=y2+h*sin(x);}

 x:=x+h;

 until x>b;

 n:=2*n;

 if n>255000 then

 begin

 ClrScr; textcolor(red); writeln;

 writeln(' **** Сработала защита отзацикливания ****');

 readkey;exit;

 end;

 until abs(y1-y2)<e;

 ClrScr;

 writeln;

 writeln('*******************************************************************');

 writeln('При с=',c:3:2,'иd=',d:3:2,'значение определённого интеграла',y2:5:3);

 writeln('с точностью до ',e:6:5 );

 writeln;

 writeln('Количество разбиений отрезка [',a:3:2,';',b:3:2,']: ',n div 2 );

writeln('*******************************************************************');

 readkey;

 end.


Список литературы

1. Методические указания по выполнению курсовой работы «Алгоритмическиеязыки и программирование»

 №1525, Рязань: РРТИ, 1988.

2. Методические указания «Модульное программирование на ТурбоПаскале» №3037, В.С.Новичков, Н. И. Парфилова, А. Н. Пылькин, Рязань: РГРТА,2000.

3. «Программирование на языке ПАСКАЛЬ», Г. Л. Семашко, А. И.Салтыков, Москва «Наука», 1988.

4. «Программирование на языкеПАСКАЛЬ», О. Н. Перминов, «Радио и связь», 1988.

еще рефераты
Еще работы по информатике, программированию