Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Курсова-КСМз-сз.doc
Скачиваний:
1
Добавлен:
01.07.2025
Размер:
2 Мб
Скачать
☆

10 Процедури

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

- скласти графічний алгоритм розв’язання задачі з використанням процедури, передбачити введення вихідних даних, звертання до процедури, виведення вихідних даних задачі і результатів обчислень;

- скласти окремо графічний алгоритм процедури і навести опис формальних параметрів;

- скласти головну програму, в якій передбачити звернення до процедури. Процедуру-програму написати використавши формальні параметри;

- скласти програму самої процедури;

- розв’язати задачу а діалоговому режимі.

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

10.1 Дано квадратну матрицю А розміром nxn. Скласти програму нормування матриці, поділивши всі елементи кожного рядка на максимальний елемент за модулем цього рядка. Пошук максимального елемента рядка оформити у вигляді процедури.

10.2 Дано три одновимірні масиви різної розмірності. Скласти програму формування одновимірного вектора D, елементами якого є відмінні від нуля мінімальні елементи за модулем заданих масивів. Пошук мінімального елемента за абсолютним значенням виконати у вигляді процедури.

10.3 Оформити у вигляді програми обчислення функції

і порівняти одержаний результат зі значенням, отриманим при використанні стандартної функції ЕХР(Х), для х=2.3; 8.5.

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

10.5 Дано два одновимірні масиви, які складаються не більш як з 30 елементів кожний. Використавши підпрограму пошуку максимального елемента, знайти півсуму максимальних елементів заданих масивів.

10.6 дано два трикутники зі сторонами a, b, c, i d, e, f. Використавши підпрограму, визначити, чи ці трикутники є прямокутні чи ні?

10.7 Дано сторони двох трикутників a, b, c, i d, e, f.. знайти, на скільки площа одного трикутника більша від другого. Площа трикутника АВС зі сторонами А, В, С обчислюється за формулою Герона:

Де R – півпериметр трикутника АВС. Обчислення площі трикутників оформити у вигляді процедури.

10.8 Дано три квадратні матриці. Сформувати вектор, який складається з мінімальних елементів кожної матриці, відмінних від нуля. Пошук мінімального елемента виконати у вигляді процедури.

10.9 Дана прямокутна матриця. Сформувати вектор, який складається з максимальних елементів кожного стовпця (рядка) матриці. Пошук максимального елемента в стовпці (рядку) виконати у вигляді підпрограми.

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

Аргумент х змінюється від початкового значення 2.8з кроком 0.15 до кінцевого 3.7.

10.11 Використовуючи підпрограму, обчислити значення функції

Для значень х, які містяться в проміжку [-1.5;1.5] з кроком ∆х=0.5, φ=0, і для значень х, які містяться в проміжку [-2.5;3] з кроком 0.6; φ=0.1. Передбачити недопустимість ділення на 0.

10.12 Скласти програму перестановки стовпців прямокутної матриці розміром mxn таким чином, щоб сума елементів стовпця зросла від першого стовпця до останнього. Перестановку стовпців виконати в підпрограмі.

10.13 Обчислити значення перших n (n<30) елементів геометричної прогресії з допомогою підпрограми, якщо відомий перший елемент прогресії а та знаменник прогресії q. Кожний наступний елемент геометричної прогресії утворюється множенням попереднього на знаменник прогресії. Для розміщення в пам’яті обчислених елементів їх слід оголосити як одновимірний масив.

10.14 Обчислити сполучення з n елементів по m (n<m)

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

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

10.16 Дано декартові координати 5 точок. Обчислити і вивести на друк полярні координати, впорядкувати за зростанням полярного радіуса (полярного кута). Полярний радіус і полярний кут обчислюється так:

Де х,у – декартові координати точок. Переведення в полярні координати виконати у вигляді підпрограми.

10.17 Дано декартові координати 6 точок і координати базової точки. Визначити сумарну віддаль між базовою і рештою точок, а також максимальну віддаль. Обчислення віддаль між двома точками оформити у вигляді підпрограми.

10.18 Дано дві квадратні матриці одного порядку А і В. показати, що для них вірний асоціативний закон, тобто А*В=В*А. у випадку стверджувальної відповіді вивести на друк повідомлення «АСОЦІАТИВНИЙ ЗАКОН ВИКОНУЄТЬСЯ», в противному випадку – «АСОЦІАТИВНИЙ ЗАКОН НЕ ВИКОНУЄТЬСЯ». Обчислення добутку двох матриці виконати у вигляді підпрограми.

10.19. Дано експериментальні значення чотирьох випадкових величин, кожна з яких має не більше 8 значень. Обчислити дисперсію випадкової величини ri (i=1, 2, 3, 4 ) вважаючи її експериментальними значеннями , математичне значення заданих випадкових величин. Математичне сподівання і дисперсія випадкової величини Х обчислюється так:

Обчислення математичного сподівання оформити у вигляді процедури.

10.20 Дано три прямокутні матриці. Знайти слід кожної матриці і вивести на друк значення найменшого за модулем сліду. Обчислення сліду матриці оформити у вигляді підпрограми. Слідом матриці називається сума елементів головної діагоналі.

10.21 Дано три вектори. Визначити максимальний парний елемент кожного вектора і упорядкувати їх за спаданням. Пошук максимального елемента вектора виконати у вигляді підпрограми.

10.22 Дано дві прямокутна матриці. Розв’язати рівняння px+q=0, де р – мінімальний за модулем елемент першої матриці; q – мінімальний за модулем елемент другої матриці. Пошук мінімального за модулем елемента матриці оформити у вигляді процедури.

10.23 Дано координати точок х1, у1; х2, у2; х3, у3; х4, у4. визначити і вивести на друк координати точок, для яких кут між віссю абсцис і променем, що з’єднує точку з початком координат, є максимальним. Обчислення величини кута з початком координат, оформити у вигляді підпрограми.

10.24 Обчислити наближено площу фігури, яка обмежена віссю Х, прямими Х=а і Х=b (a<b) і кривою Y=Y(X)=X2/(1+X). Інтервал зміни Х поділити на 10 частин і підсумувати площі десяти прямокутників з основою 0.2; висота прямокутника дорівнює значенню функції на лівій границі його основи. Обчислення площі оформити у вигляді підпрограми. Для значень а=3; b=5; а=7; b=9.

Приклад. Дана прямокутна матриця А розміром 4х5. Скласти програму обчислення добутку ненульових елементів кожного рядка матриці. Обчислення добутку в рядку виконати у вигляді процедури.

Розв’язання

1 Графічний алгоритм розв’язання задачі показаний на рис.10.1 – головна програма, рис.10.2 – підпрограма.

2 Програма мовою Бейсік.

2.1 З використанням внутрішньої процедури

10 REM ВИКОРИСТАННЯ ПІДПРОГРАМ

20 DIM А(4,5): OPTION BASE 1

30 DATA 1E-1, 2E-1, 1.2, 1.4, 3.5, 4E-1, -1.6, 3.2, 1.2, 1.5

40 DATA 2.1, 3.5, 1.2, -3.6, 7.1, 2.4, 1.5, 3.2, 4.1, 1E-1

50 PRINT “ВИХІДНІ ДАНІ” : PRINT

60 FOR I=1 TO 4

70 FOR J=1 TO 5

80 READ A(I,J)

90 PRINT A(I,J);

100 NEXT J%

110 PRINT

120 NEXT I%

130 PRINT : PRINT “РЕЗУЛЬТАТИ РОЗРАХУНКУ” : PRINT

140 FOR I=1 TO 4

150 GOSUB 190

160 PRINT “D(“;I;”)=”;D

170 NEXT I

180 STOP

190 REM ПІДПРОГРАМА ОБЧИСЛЕННЯ ДОБУТКУ

200 D=1

210 FOR J=1 TO 5

220 IF A(I,J)=0 THEN 240

230 D=D*A(I,J)

240 NEXT J

250 RETURN

260 END

ВИХІДНІ ДАНІ

1Е-1 2Е-1 1.2 1.4 3.5

4E-1 -1.6 3.2 1.2 1.5

2.1 3.5 1.2 -3.6 7.1

2.4 1.5 3.2 4.1 1E-1

РЕЗУЛЬТАТИ РОЗРАХУНКУ

D(1)=1.176E-1

D(2)=-3.6864

D(3)=-225.439

D(4)=4.7232

3 Програма мовою Сі

#include <stdio.h>

#define ROWS 4

#define COLS 5

main ()

{

Float b[ROWS][ COLS]={

{1е-1 2е-1 1.2 1.4 3.5},

{4e-1 -1.6 3.2 1.2 1.5},

{2.1 3.5 1.2 -3.6 7.1},

{2.4 1.5 3.2 4.1 1e-1},

}

mul();

int i;

for(i=0;i<ROWS;i++)

printf(“d[%i]=%f\n”,i,mul(b,i));

}

float mul(c,k)

float c [ROWS][ COLS];

int k;

{

int i;

float d=1;

for (i=0;i<COLS;i++)

d*=c[k][i];

return (d);

}

d[0]=0.117600

d[1]=-3.686400

d[2]=-225.439194

d[3]=4.723200

Рисунок 10.1 Рисунок 10.2

    1. Програма мовою Паскаль з використанням підпрограми – процедури

program lab10;

type mass=array [1..4,1..5] of real;

var d:=array [1..4] of real;

i,j: integer;g:real;

a: mass;

procedure dob(k: integer; b: mass;var f:real);

var n: integer;

begin

f:=1;

for n:=1 to 5 do

if b[k,n]<>0 then f:=f*b[k,n];

end;

begin

for i:=1 to 4 do

for j:=1 to 5 do

begin

write(‘a[‘,i,’,’,j,’]=’);

read(a[i,j])

end;

for i:=1 to 4 do

begin

dob(i,a,g);d[i]:=g;

writeln(‘d[‘,i,’]=’,d[i]:12)

end;

end.

D(1)=1.17600E-01

D(2)=-3.68640E+00

D(3)=-2.25439E+02

D(4)=4.72320E+00

Пояснення до програм

На рис. 10.1 показаний алгоритм головної програми, який складається з введення матриці А, символ 2, звертання до підпрограми обчислення добутку, символ 5, яке здійснюється в тілі циклу із заголовком циклу, символ 4, і виводу заданої матриці А, символ 3, результатів обчислення, символ6. на рис. 10.2 наведений алгоритм підпрограми обчислення добутку ненульових елементів кожного рядка матриці С. формальними параметрами підпрограми є матриця С як двомірний масив.

Питання для самоперевірки

  1. З якою метою використовуються підпрограми?

  2. Що таке формальні і фактичні параметри в процедурах – підпрограмах?

  3. Як оформляється процедура мовою Бейсік?

  4. Яка різниця між глобальними і локальними параметрами?

  5. Як формується звернення до підпрограми мовами Сі і Паскаль?

  6. Охарактеризуйте відмінності при звертанні до програми мовою Бейсік і мовою Сі.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]