Turbo Pascal

[ виправити ] текст може містити помилки, будь ласка перевіряйте перш ніж використовувати.

скачати

Рязанська державна радіотехнічна академія

Кафедра Обчислювальної та Прикладної математики

Пояснювальна записка

До курсової роботи

з дисципліни

«Алгоритмічні мови та програмування»

Рязань 2006

Зміст

Завдання на курсову роботу.

Введення.

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

Розробка схеми алгоритму та її опис.

Інструкція з використання розробленої програми.

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

Текст програми та її опис.

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

Рязанська РАДІОТЕХНІЧНА АКАДЕМІЯ

ФАКУЛЬТЕТ ОБЧИСЛЮВАЛЬНОЇ ТЕХНІКИ

КАФЕДРА ОБЧИСЛЮВАЛЬНОЇ І ПРИКЛАДНОЇ МАТЕМАТИКИ

Завдання

на курсову роботу з дисципліни

«Алгоритмічні мови та програмування»

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

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

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

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

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

Сформувати вектор з середніх арифметичних значень елементів стовпців.

Завдання 2. Скласти програму обчислення визначеного інтеграла з похибкою, що не перевищує задану величину ε. Для перевірки програми інтегрування обчислити визначений інтеграл із заданою точністю.

Інтеграл обчислити за допомогою формули прямокутників.

=1; b =2. Межі інтегрування: a = 1; b = 2.

Значення коефіцієнтів:

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

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

Похибка ε: 10 -4.

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

Дата виконання завдання:

Викладач:

Баринов В.В.

Введення

Сучасні засоби обчислювальної техніки та ЕОМ дозволяють істотно підвищити ефективність діяльності інженерів при вирішенні різних завдань. При цьому найбільш істотним питанням є організація взаємодії користувача із засобами ЕОМ. У цій курсовій роботі для цих цілей використовувався діалоговий режим, що дозволило істотно спростити процес налагодження та роботи з програмою. В якості мови програмування вибрано вивчається на заняттях з дисципліни «Алгоритмічні мови та програмування» мова програмування «Паскаль». До переваг мови слід віднести такі його характеристики, як модульність, універсальність, зручність роботи з масивами і т. д.

Завдання 1

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

При вирішенні поставленого завдання необхідно виконати наступні дії:

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

Надрукувати значення елементів вихідних матриць.

, т. е. вычислить матрицу U = B T . Провести транспонування матриці B, тобто обчислити матрицю U = B T.

=2*В Т . Помножити матрицю В Т на 2, тобто обчислити матрицю U = 2 * В Т.

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

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

U = C * (A +2 * B T).

. Вивести матрицю U.

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

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

Друк доцільно реалізувати за допомогою підпрограми (процедури загального вигляду). Пункти 1-8 доцільно також оформити у вигляді підпрограм.

Матрицею будемо називати таблицю чисел:

А 12 … А 1N А 11 А 12 ... А 1N

A 21 A 22 ... A 2N

- - - - - - - - -

A M1 A M2 ... A MN

Якщо m = n, то матриця називається квадратною, n-порядок.

Твором 2-х прямокутних матриць

А 11 А 12 ... А 1N

A = A 21 A 22 ... A 2N

- - - - - - - - -

A M1 A M2 ... A MN

B 11 B 12 ... B 1N

2 N B = B 21 B 22 ... B 2 N

- - - - - - - - -

1 B M 2 … B MN B M 1 B M 2 ... B MN

називається матриця

C 11 C 12 ... C 1N

C = C 21 C 22 ... C 2N

- - - - - - - - -

C M1 C M2 ... C MN

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

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

2.Розробка схеми алгоритму та її опис

За результатами аналізу завдання можна скласти укрупнену схему алгоритму послідовної структури:















блоков. Проведемо деталізацію блоків.

1) Підпрограма введення матриць.

. Ім'я підпрограми: inputm.








2) Підпрограма виводу матриць.

. Ім'я підпрограми: outputmat.








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

. Ім'я підпрограми transpm.







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

. Ім'я підпрограми: multm.











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

. Ім'я підпрограми: multconstm.







6) Підпрограма додавання матриць

_ m . Ім'я підпрограми: sum _ m.







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

_ arifm . Ім'я підпрограми: sred _ arifm.












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



Так

Ні



















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

Матриці, використовувані в підпрограма

(10,10), b (10,10), 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, що містить описані підпрограми.

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

interface {*** Інтерфейсна секція ***}

; uses crt;

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; var z: 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; var c: matrix);

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

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

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

procedure inputm;

begin

clrscr;

writeln;

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

for i: = 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;

Матрица ',m,'.'); 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;

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

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

procedure transpm;

begin

for i: = 1 to n do

for j: = 1 to n do

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

end;

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

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

procedure multconstm;

begin

for i: = 1 to n do

for j: = 1 to n do

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

end;

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

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

_ m ; procedure sum _ 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;

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

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

{*** Арифметичних значень елементів стовпців ***}

_ arifm ; procedure sred _ 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);

if n = 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 ('****************** Вихідні значення ********************');

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

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

( n , c , ' C '); {*** вывод матрицы C ***} 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

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

При вирішенні поставленого завдання необхідно виконати наступні дії:

Введення вихідних даних.

Знаходження значення певного інтеграла з використанням методу прямокутників.

Виведення результатів.

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

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

a = x 1 <x 2 <x 3 <... <x n-1 <x n = b; h = x k-x k-1;

= h * f ( x k ); площа кожної такої частини (прямокутника): S k = h * f (x k);

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

. Похибка даного методу визначається абсолютним значенням різниці наближених значень певного інтеграла при різних n. не требуется. Якщо ця різниця менше необхідної похибки, то необхідна точність досягнута, і подальше збільшення n не потрібно.

2. Розробка схеми алгоритму та її опис

За результатами аналізу завдання можна скласти укрупнену схему алгоритму послідовної структури:





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









Ні


Так





Ні



Так



Ні



Так



Інструкція з використання розробленої програми

Визначимо вихідні дані.

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

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

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

Вихідні відомості


Опис в програмі

Позначення

Призначення

Ідентифікатор

Атрибути

, B A, B

Межі інтегрування

a, b

Real

, D C, D

Параметри

c, d

Real

e

Похибка

eps

Real

y1, y2

и 2* n Значення певного інтеграла при числах розбиття n і 2 * n

y1, y2

Real

h

=( b - a )/ n ) Крок інтегрування (визначається за формулою h = (b - a) / n)

h

Real

x

Поточне значення аргументу

x

Real

n

; b ] Кількість розбиття відрізка [a; b]

n

Longint


Опис змінних і масивів:

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

Введемо визначені раніше вихідні дані.

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

=1,9; d =3; c = 1,9; d = 3;

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

0,113 з точністю до 0,00010

Кількість розбиття відрізка [1,00; 2,00]: 4000

=2,05; d =3,05 c = 2,05; d = 3,05

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

0,110 з точністю до 0,00010

Кількість розбиття відрізка [1,00; 2,00]: 4000

=2,2; d =3,1 c = 2,2; d = 3,1

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

0,108 з точністю до 0,00010

Кількість розбиття відрізка [0,00; 2,00]: 4000

Для перевірки програми інтегрування обчислимо визначений інтеграл із заданою точністю.

=0; b =3.14; eps =0.0001. 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);

(e); write ('Введіть похибка обчислень:'); read ln (e);

; clrscr;

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

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

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

n: = 2000; y2: = 0;

repeat

h: = (ba) / 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.

Додати в блог або на сайт

Цей текст може містити помилки.

Програмування, комп'ютери, інформатика і кібернетика | Курсова
116.2кб. | скачати


Схожі роботи:
Основні відомості про алгоритмічну мову Turbo Pascal Графіка Pascal
Оператори Turbo Pascal 7
Процедури та функції в Turbo Pascal
Модульне програмування Turbo Pascal
Мова програмування Turbo Pascal
Типи даних в Turbo Pascal
Файли в мові Turbo Pascal
Записи у мові Turbo Pascal
Програми в середовищі Turbo Pascal
© Усі права захищені
написати до нас