Пензенська ДЕРЖАВНИЙ УНІВЕРСИТЕТ
Кафедра ІнОУП
Курсова робота
Рішення прикладної задачі
Виконала: ст-ка групи 06 ВД-1
Е.А. Одінокова
Прийняв: доцент
А. І. Черноскутов
2007
Зміст
1 Мета роботи
2 Постановка задачі
3 Розрахунок контрольної точки
4 Розробка схем алгоритмів і текстів підпрограм, їх опис
4.1 Function Proizvedenie
4.2 Function Symma
4.3 Procedure Massive_Z
5 Розробка схеми алгоритму і тексту основної програми та їх опис
Висновок
Список використаних джерел літератури
Додаток А. Лістинг програми
Додаток Б. Результат роботи програми
Введення
Мова програмування Паскаль (названий на честь видатного французького математика і філософа Блеза Паскаля (1623-1662)), розроблений в 1968-1971 рр.. Ніклаус Віртом, професором, директором інституту інформатики Швейцарської вищої політехнічної школи. Мова Паскаль, створений спочатку для навчання програмуванню як систематичній дисципліні, скоро став широко використовуватися для розробки програмних засобів в професійному програмуванні.
Розробка програм на Паскалі включає в себе наступні дії (етапи розробки програми): введення і редагування тексту програми на мові програмування Паскаль, її трансляцію, налагодження.
Для виконання кожного етапу застосовуються спеціальні засоби: для введення і редагування тексту використовується редактор текстів, для трансляції програми - компілятор, для побудови виконуваного комп'ютером програмного модуля з об'єднанням розрізнених скомпільованих модулів і бібліотекою стандартних процедур Паскаля - компонувальник, для налагодження програми з аналізом її поведінки, пошуком помилок, переглядом та зміною вмісту комірок пам'яті комп'ютера - відладчик.
Для підвищення якості і швидкості розробки програм в середині 80-х рр.. була створена система програмування Турбо Паскаль. Слово «турбо» у назві системи програмування - це відображення торгової марки фірми - розробника Borland International, Inc. (США).
1. Мета роботи
Метою даної курсової роботи є закріплення теоретичних і практичних навичок у вирішенні прикладних задач із застосуванням функцій і процедур. Освоєння структурного (модульного) програмування.
2. Постановка завдання
Розробити схему алгоритму і програму для обчислення масиву z за формулою:
.
Вихідними даними є:
Обчислення довільній суми і твори оформити функціями, обчислення масиву - Процедурою.
3. Розрахунок контрольної точки
Для розрахунку контрольної точки використовуємо вихідний дані. В якості вихідних даних приймаються:
Розрахуємо крок для визначення елементів масиву за формулою:
;
Відповідно до вихідних даних Xmax дорівнює 100, а Xmin - -10.
У результаті крок дорівнює:
Розрахуємо крок для визначення елементів масиву за формулою:
;
Відповідно до вихідних даних Ymax дорівнює 100, а Ymin - 0.1.
У результаті крок дорівнює:
Визначимо значення елементів масиву . За перший елемент масиву приймемо значення Xmin. Потім за допомогою послідовного додавання кроку визначимо інші елементи масиву. У результаті:
.
Визначимо елементи масиву . За перший елемент масиву приймемо значення Ymin. Потім за допомогою послідовного додавання кроку визначимо інші елементи масиву. У результаті:
.
Визначимо значення елементів масиву згідно з формулою:
.
Оскільки y [1] = 0.1 і y [1] <a, то розрахунок першого елемента масиву зробимо за формулою:
У результаті:
Оскільки y [2] = 25,075 і y [2]> a, то розрахунок першого елемента масиву зробимо за формулою:
У результаті:
Оскільки y [3] = 50,05 і y [3]> a, то розрахунок першого елемента масиву зробимо за формулою, наведеною в пункті б.
У результаті:
Оскільки y [4] = 75,025 і y [4]> a, то розрахунок першого елемента масиву зробимо за формулою, наведеною в пункті б.
У результаті:
Оскільки y [5] = 100 і y [5]> a, то розрахунок першого елемента масиву зробимо за формулою, наведеною в пункті б.
У результаті:
Результати обчислення контрольної точки порівняємо з результатом виконання програми. Результат виконання програми зображено на малюнку 1, а також представлений в додатку А.
Зробимо висновок, що програма робить обчислення вірно.
4. Розробка схем алгоритмів і текстів підпрограм, їх опис
4.1 Function Proizvedenie
Призначення: обчислення твори елементів за формулою .
Звернення: Proizvedenie (x, y [j], n);
Опис параметрів:
x - змінна типу massiv. Відображає масив розмірністю 5 2.
Y - змінна типу double. Елемент масиву .
n - кількість елементів у масиві x. n = 12.
Необхідні функції і процедури: немає.
Графічне подання алгоритму функції Proizvedenie:
Лістинг функції Proizvedenie:
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;
4.2 Function Symma
Призначення: обчислення суми елементів за формулою .
Звернення: Symma (x, y [j], n);
Опис параметрів:
x - змінна типу massiv. Відображає масив розмірністю 5 2.
Y - змінна типу double. Елемент масиву .
n - кількість елементів у масиві x. n = 12.
Необхідні функції і процедури: немає.
Лістинг функції Symma:
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: = s 1;
end;
Графічне подання алгоритму функції Symma:
4.3 Procedure Massive_Z
Призначення: визначення значення елементів масиву .
Звернення: Massive_Z (y, m);
Опис параметрів:
y - змінна типу massiv. Відображає масив розмірністю 1 5.
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 (ab))) * 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 (ab))) * 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 - результат виконання програми