Лабораторна Робота № 15

Тема: Turbo Pascal.Алгоритми і програми з використанням підпрограм-процедур.

 

Мета: Формування умінь створення програм з використанням підпрограм-процедур алгоритмічною мовою високого рівня Turbo Pascal.

 

Теоретичні відомості

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

Загальний опис процедури:

procedure <назва>(<список формальних параметрів>);

<розділи описів і оголошень процедури>;

Begin

<розділ команд процедури>

end;

До процедури звертаються з основної програми за допомогою команди виклику:

<назва процедури>(<список фактичних параметрів>);.

 

Хід роботи

2.1 Постановка задачі

 

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

,

де s1 і k1 - сума і кількість додатних значень елементів масиву А(А1, А2 ,…,А10 ); s2 і k2 - сума і кількість додатни х значень елементів масиву В(В1, В2 ,…,В15 ). Для обчислення суми і кількості додатних елементів масиву використати процедуру.

 

2.2 Графічний алгоритм показаний на рис. 15.1:

а) графічний алгоритм основної програми;

б) графічний алгоритм підпрограми-процедури SUMKOL.

 

2.3 Таблиця ідентифікації змінних

Змінна Ідентифікатор
z z
x x
a a[i]
b b[i]
NMA NMA
NMB NMB
s1 s1
k1 k1
s2 s2
k2 k2

 

ні

 

 

так

 

 

б)

 

а)

 

 

Рисунок 15.1 – Графічний алгоритм

 

2.4 Програма мовою Pascal та результати обчислень

 

Program PR{Процедура};

Const

x=3.42;

Type

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

Var

NMA,NMB,i,k1,k2:integer;

z,s1,s2:real;

a,b:vector;

Procedure SUMKIL(mas:vector;MM:integer;

var s:real;k:integer);

Var

j:integer;

Begin

s:=0;

k:=0;

for j:=1 to MM do

if mas[j]>0 then begin

s:=s+mas[j];

k:=k+1 end;

end;

Begin

writeln('Ведіть кількість елементів масиву А:');

read(NMA);

writeln('Ведіть елементи масиву А:');

for i:=1 to NMA do

read(a[i]);

SUMKIL(a,NMA,s1,k1);

writeln('Ведіть кількість елементів масиву B:');

read(NMB);

writeln('Ведіть елементи масиву B:');

for i:=1 to NMB do

read(b[i]);

SUMKIL(b,NMB,s2,k2);

z:=exp(k1*ln(x))*exp(k2*ln(x))/(s1+s2);

writeln('Результати обчислень:');

writeln('z=',z:6:3);

end.

 

Результати обчислень:

z=0.713

3 Контрольні запитання

 

  1. З якою метою використовуються підпрограми-процедури?
  2. Що таке формальні і фактичні параметри в процедурах?
  3. Як оформляється процедура мовою програмування Turbo Pascal?
  4. Яка різниця між зовнішньою і внутрішньою процедурами?
  5. Як формується звернення до підпрограми-процедури мовою програмування Turbo Pascal?
  6. Поясніть, як і куди здійснюється вихід з підпрограми-процедури?

 

Варіанти завдань наведені нище:

 

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

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

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

ex=1+x+x2/2!+x3/3!+...

і порівняти одержаний результат зі значенням, отриманим при використанні стандартної функції EXP(X), для х=2,3; 8,5.

15.4. Дано двохвимірний масив. Відсортувати масив по стовпцях у спаданні. Перестановку чисел виконати у вигляді підпрограми.

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

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

15.8. Дано сторони двох трикутників: a, b, c та d, e, f. Знайти, на скільки площа одного трикутника більша від другого. Площа трикутника ABC зі сторонами A, B, C обчислюється за формулою Герона

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

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

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

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

Аргумент х змінюється від початкового значення 2,8 з кроком 0,15 до кінцевого 3,7.

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

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

15.13. Скласти прграму знаходження суми стовпців матриці розміром mxn рузельтат записати у вигляді вектора.

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

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

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

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

15.17. Дано координати 5 точок. Обчислити і вивести на друк полярні координати. Полярний радіус і полярний кут обчислюються так:

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

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

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

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

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

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

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

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

15.24. Дано координати точок х1, y1; x2, y2; x3, y3; x4, y4. Визначити і вивести на друк координати точок, для яких кут між віссю абсцис і променем, що з’єднує точку з початком координат, є максимальним. Обчислення величини кута між віссю абсцис і променем, що з’єднує точку з початком координат, оформити у вигляді підпрограми.

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


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: