Матриця А
|
|
|
Матриця В
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
-20
|
-19
|
-18
|
-17
|
-16
|
-15
|
-5
|
-4
|
-3
|
-2
|
|
|
-14
|
-13
|
-12
|
-11
|
-10
|
-9
|
-1
|
0
|
1
|
2
|
|
|
-8
|
-7
|
-6
|
-5
|
-4
|
-3
|
3
|
4
|
5
|
6
|
|
|
-2
|
-1
|
0
|
1
|
2
|
3
|
7
|
8
|
9
|
10
|
|
|
4
|
5
|
7
|
8
|
9
|
|
|
|
|
|
|
10
|
11
|
12
|
13
|
14
|
15
|
Для перевірки вірності обчислення
програмою суми елементів нижньої трикутної матриці виконаємо підрахунок для
матриці (масиву) А:
перевірочне обчислення:
(–5) + (–1) + 0 + 3 + 4 + 5 + 7 + 8 + 9 + 10 = 40
результат обчислення програми:
Сума
елементiв нижньої тpикутної матpицi A дорiвнює 40.00
Як ми можемо бачити, результати
ідентичні, а це свідчить про те, що програма обробила вхідні дані вірно і
видала вірну відповідь.
Вищевикладене може обгрунтовано
свідчити про те, що програма виконана вірно.
Опис формату
підпрограми функції
Підпрограма функція використовується, якщо в програмі
виявляються однотипні ділянки, які виконують ті ж самі обчислення, але з
різними даними.
Структура функції така ж, як і структура основної програми,
тобто включає заголовок і блок. В свою чергу блок складається з розділу
операторів.
Загальний вигляд функції: function ім`я
(формальні_параметри) : тип;
Особливості підпрограми-функції:
1)
функція має тільки один
результат виконання (але може мати декілька вхідних параметрів);
2)
результат позначається іменем
функції, тому в розділі операторів функції обов`язково повинен бути присутнім
оператор присвоювання, в лівій частині якого стоїть ім`я цієї функції;
3)
в заголовку функції обов`язково
повинен бути вказаний тип функції;
4)
виклик функції в основній
програмі здійснюється безпосередньо усередині вираження по її імені із
вказуванням фактичних параметрів.
Формальні і
фактичні параметри функції
Формальні параметри представляють собою список перемінних
із вказуванням їх типу, які відділяються один від одного крапкою з комою.
В представленій вище програмі
використовувані формальні параметри функції – перемінна, яка вказує ім`я
масиву, який обробляється усередині цієї функції (m:Mas); перемінна, яка
вказує розмірність масиву (x:Integer); та символьне значення (А
або В) – ім`я матриці (k:String):
Function Sum (k:String;
x:Integer; Var m:Mas):Real;
Фактичні
параметри указуються безпосередньо усередині тіла основної програми при виклику
функції – після її імені в дужках.
ЗАВДАННЯ 2
Постановка задачі
Обчислити суми і кількість елементів, які знаходяться в
інтервалі від a до b для матриць X(10,8) і Y(10,12).
Виконати з використанням підпрограми
процедури.
Вирішення задачі
Program Kurs_Task2;
Uses Crt;
Const h=5; m=4; n=6;
Type Mas=Array[1..h,1..n] of Real;
Var x,y : Mas;
a1,b1,a2,b2 : Integer;
v1,v2 : Integer;
Sx,Sy : Real;
{-= Пpоцедуpа встановлення кольоpу шpифта =-}
Procedure Tc (p:Integer);
Begin
TextColor(p);
End;
{-= Пpоцедуpа введення числових елементiв матpиць =-}
Procedure InT (k:String; x:Integer; Var m:Mas);
Var i,j : Integer;
Begin
For i:=1 To h Do
Begin
For j:=1 To x Do
Begin
Write('Масив '); TC(15); Write(k);
TC(7);
Write(' строка '); TC(15); Write(i);
TC(7);
Write(' елемент '); TC(15); Write(j);
TC(7);
Write(' > '); TC(15); ReadLn(m[i,j]);
TC(7);
End;
End;
End;
Procedure Out (k:String; a,b,v:Integer; s:Real);
Begin
Write('Сума елементiв матpицi ',k,' в iнтеpвалi вiд ');
WriteLn('Кiлькiсть обчислених елементiв доpiвнює ',v);
End;
{-= Пpоцедуpа обчислення суми елементiв та їх кiлькостi =-}
Procedure Sum (x:Integer; a,b: Integer; m:Mas;
Var s:Real; Var v:Integer);
Var i,j,p : Integer;
Begin
p:=0; s:=0; v:=0;
For i:=1 To h Do
Begin
For j:=1 To x Do
Begin
p:=p+1;
If (p>=a)and(p<=b) Then
Begin
s:=s+m[i,j];
v:=v+1;
End;
End;
End;
End;
{-= Основна пpогpама =-}
Begin
ClrScr;
InT('X',m,x);
InT('Y',n,y);
WriteLn('Задайте iнтеpвал для матpицi X:');
Write(' вiд > '); ReadLn(a1);
Write(' до > '); ReadLn(b1);
Sum(m,a1,b1,x,Sx,v1);
WriteLn('Задайте iнтеpвал для матpицi Y:');
Write(' вiд > '); ReadLn(a2);
Write(' до > '); ReadLn(b2);
Sum(n,a2,b2,y,Sy,v2);
Out('X',a1,b1,v1,Sx);
Out('Y',a2,b2,v2,Sy);
ReadKey;
End.
Отриманий результат
після виконання програми
Масив X строка 1
елемент 1 > -10
Масив X строка 1
елемент 2 > -9
Масив X строка 1
елемент 3 > -8
Масив X строка 1
елемент 4 > -7
* * * *
Масив Y строка 5
елемент 3 > 16
Масив Y строка 5
елемент 4 > 17
Масив Y строка 5
елемент 5 > 18
Масив Y строка 5
елемент 6 > 19
Задайте iнтеpвал для матpицi X:
вiд > 5
до > 12
Задайте iнтеpвал для матpицi Y:
вiд > 7
до > 15
Сума елементiв матpицi X в
iнтеpвалi вiд 5 до 12 доpiвнює -20.00
Кiлькiсть обчислених елементiв
доpiвнює 8
Сума елементiв матpицi Y в
iнтеpвалi вiд 7 до 15 доpiвнює 0.00
Кiлькiсть обчислених елементiв
доpiвнює 9
Аналіз отриманого
результату
Для зручності побудови програми
замість параметрів (10,8) та (10,12) матриць X та Y
відповідно, були використані розміри (5,4) та (5,6), які можуть
змінюватися шляхом зміни чисельних значень констант m та n.
Вище приведено результат, обчислений
програмою. При введенні обох матриць, вводяться всі числові значення, потім
користувач позначає інтервал для обох матриць окремо, в якому потрібно виконати
підсумовування та підрахунок кількості підсумованих
елементів (в даному випадку для матриці X від 5 до 12, а в
матриці Y від 7 до 15 елементу матриці):
Матриця X
|
|
|
Матриця Y
|
|
|
|
|
|
|
|
|
|
|
|
|
-10
|
-9
|
-8
|
-7
|
|
|
-10
|
-9
|
-7
|
-6
|
-5
|
-6
|
-5
|
-4
|
-3
|
|
|
-4
|
-3
|
-2
|
-1
|
0
|
1
|
-2
|
-1
|
0
|
1
|
|
|
2
|
3
|
4
|
5
|
6
|
7
|
2
|
3
|
4
|
5
|
|
|
8
|
9
|
10
|
11
|
12
|
13
|
6
|
7
|
8
|
9
|
|
|
14
|
15
|
16
|
17
|
18
|
19
|
Для перевірки вірності обчислення
програмою суми елементів в заданому інтервалі від 5 до 12 матриці
Х, виконаємо підрахунок виділених елементів для цієї матриці:
перевірочне обчислення:
(–6) + (–5) + (–4) + (–3) + (–2) + (–1) + 0 + 1 = –20
кількість
елементів: 1 2 3 4
5 6 7 8
результат обчислення програми:
Сума елементiв
матpицi X в iнтеpвалi вiд 5 до 12 доpiвнює -20.00
Кiлькiсть
обчислених елементiв доpiвнює 8
Як ми можемо бачити, результати
ідентичні, а це свідчить про те, що програма обробила вхідні дані вірно і
видала вірну відповідь на обидва запитання в обох матрицях (масивах).
Вищевикладене може обгрунтовано
свідчити про те, що програма виконана вірно.
Опис формату
підпрограми процедури
Підпрограма процедура так же, як і функція,
використовується якщо в програмі виявляються однотипові ділянки, які виконують
ті ж самі обчислення, але з різними даними.
Структура процедури така ж, як і
структура основної програми, тобто включає заголовок і блок. В свою чергу блок
складається із розділу операторів.
Опис процедури має вигляд:
Procedure ім`я (формальні_параметри);
розділ описів
begin
розділ операторів
end;
і
розміщується в основній програмі (program) в розділі описів.
Тут
ім`я – ім`я процедури. Розділ описів, як і в основній програмі, включає розділи
label, const, type, var і розділ процедур та функцій.
Параметри процедур можуть бути трьох видів:
1)
параметри-значення (вхідні
параметри);
2)
параметри-перемінні (вихідні
параметри);
3)
параметри процедурного типу.
Опис
вхідних параметрів процедури в списку формальних параметрів має такий вигляд:
список_перемінних1:тип1; список_перемінних2:тип2; …
var список_перемінних1:тип1; var список_перемінних2:тип2; …
В Турбо-Паскалі допускається також використання
нетипізованих вихідних параметрів, які мають вигляд:
var список_перемінних
Виклик процедури в основній програмі
відбувається оператором виду:
ім`я_процедури (фактичні_параметри);
Формальні і
фактичні параметри процедури
Формальні параметри мають вигляд
списку перемінних із указуванням їх типу, які відділяються один від одного
крапкою з комою. Ці перемінні не описуються в розділі опису процедур.
Допускається використання процедур без списку перемінних.
При виклику процедури в основній програмі, задаються
параметри, які являють собою фактичні параметри, які перелічені через кому (без
вказівки їх типу). Між формальними і фактичними параметрами повинна бути
відповідність по кількості параметрів, порядку їх слідування і типу даних.
Імена відповідних параметрів можуть бути однаковими або різними.
Вхідними фактичними параметрами можуть бути константи, перемінні
і вирази. Вихідними фактичними параметрами можуть бути тільки перемінні.
Опис використаних в
програмах операторів
Program
|
заголовок програми, в якому вказується ім`я програми (утворюється так,
як і імена перемінних).
|
Uses
|
слугує для використання модулів в програмі.
|
Crt
|
стандартний модуль Турбо-Паскаля, який підтримує текстовий режим і
дозволяє задавати колір фону чи шрифту, є константи для організації прямої
адресації відео пам`яті (DirectVideo:boolen), встановлення
яскравості світіння виведених на екран символів (LowVideo, NormVideo,
HighVideo), очищення активного вікна і встановлення курсору в верхній
лівий кут (ClrScr) та інше.
|
Const
|
розділ констант – якщо в програмі використовуються константи, які
мають достатньо громіздкий запис, або змінні константи (для різних варіантів
програми).
|
Type
|
опис імен типів перемінних, які відрізняються від стандартних, тобто
перемінні типу “перечислення”, обмежені перемінні, масиви і т.д.
|
Var
|
розділ, в якому описуються всі перемінні, які зустрічаються в програмі.
|
Procedure
|
оператор підпрограми-процедури (описаний вище).
|
Function
|
оператор підпрограми-функції (описаний вище).
|
Read
|
оператор вводу - кожне введене значення послідовно присвоюється
перемінним із списку: Read (список_перемінних);
|
ReadLn
|
те ж, що і попередній оператор, тільки після введення даних
відбувається перехід на нову строку (тобто наступний оператор введення буде
вводити дані з нової строки), а якщо оператор записується без вказування
перемінної, то відбувається перехід на наступну строку без вводу даних,
достатньо тільки натиснути клавішу <Enter>.
|
Write
|
оператор виводу – виводить послідовно значення перемінних із списку,
або виводить текст, занесений в одинарні лапки:
Write (список_перемінних,’текст’);
|
WriteLn
|
те ж саме, що і попередній оператор, але після виводу перемінних
здійснюється перехід на нову строку (наступний оператор виводу буде виводити
дані з початку нової строки), а якщо оператор записується без вказування
перемінної або тексту, то відбувається перехід на нову строку без виводу
даних.
|
:=
|
оператор присвоювання – імені перемінної присвоюється конкретний
вираз: ім`я_перемінної := вираз;
|
For
|
оператор циклу, який має загальний вигляд:
for I:=N1 to N2 do оператор;
тут I – перемінна циклу; N1, N2
– початкове і кінцеве значення перемінної циклу. В якості перемінної типу І
можна використовувати тільки просту перемінну, а в якості N1, N2
можуть використовуватися вирази (за виключенням речовинного типу real).
|
If
|
оператор умовного переходу, який має загальний вигляд:
if логічний_вираз then оператор_1 [else
оператор_2];
тут квадратні дужки означають, що конструкція else з
оператором 2 може бути відсутня. Перед else крапка з комою не
ставиться. Оператор 1,2 – це прості або складені оператори. Якщо логічний
вираз істинний, то виконується оператор 1, інакше – оператор 2 (або наступний
за if оператор, якщо else відсутнє). В якості
операторів 1,2 можуть бути використані інші оператори if, в
цьому випадку кожне else відноситься до найближчого зліва if,
який не має else.
|
Begin
|
з цього ключового слова починається частина програми розділу
операторів (починається розділ, або ж вцілому програма).
|
End
|
цим ключовим словом закінчується частина програми розділу операторів
(закінчується розділ, або ж вцілому програма).
|
Використана
література
1.
«Borland Pascal 7.0»: Резидентная программа-справочник. Москва: ПО «Object Windows +», 1993.
2.
«Турбо-Паскаль 5.0»: Руководство пользователя. Калинин: НПО
«Центрпрограммсистем», 1990.
3.
Офицеров Д.В., Старых В.А. «Программирование в интегрированной
среде Турбо-Паскаль»: Справ. пособие. – Мн.: Беларусь, 1992. – 240 с.: ил.
4.
Перминов О.Н. «Программирование на языке Паскаль», М.: «Радио и
связь», 1988.
5.
Довідкова система по мовам програмування – електронна версія.