Программирование и алгоритмические языкиВищевикладене може обгрунтовано свідчити про те, що програма виконана вірно. Опис формату підпрограми функції Підпрограма функція використовується, якщо в програмі виявляються однотипні ділянки, які виконують ті ж самі обчислення, але з різними даними. Структура функції така ж, як і структура основної програми, тобто включає заголовок і блок. В свою чергу блок складається з розділу операторів. Загальний вигляд функції: 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(a,' до ',b,' доpiвнює ',s:5:2); 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 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 елементу матриці ):
Структура процедури така ж, як і структура основної програми, тобто включає заголовок і блок. В свою чергу блок складається із розділу операторів. Опис процедури має вигляд: Procedure ім`я (формальні_параметри); розділ описів begin розділ операторів end; і розміщується в основній програмі (program) в розділі описів. Тут ім`я – ім`я процедури. Розділ описів, як і в основній програмі, включає розділи label, const, type, var і розділ процедур та функцій. Параметри процедур можуть бути трьох видів: 1) параметри-значення (вхідні параметри); 2) параметри-перемінні (вихідні параметри); 3) параметри процедурного типу. Опис вхідних параметрів процедури в списку формальних параметрів має такий вигляд: список_перемінних1:тип1; список_перемінних2:тип2; … Відповідно опис вихідних параметрів виглядає так: var список_перемінних1:тип1; var список_перемінних2:тип2; … В Турбо-Паскалі допускається також використання нетипізованих вихідних параметрів, які мають вигляд: var список_перемінних Виклик процедури в основній програмі відбувається оператором виду: ім`я_процедури (фактичні_параметри); Формальні і фактичні параметри процедури Формальні параметри мають вигляд списку перемінних із указуванням їх типу, які відділяються один від одного крапкою з комою. Ці перемінні не описуються в розділі опису процедур. Допускається використання процедур без списку перемінних. При виклику процедури в основній програмі, задаються параметри, які являють собою фактичні параметри, які перелічені через кому (без вказівки їх типу). Між формальними і фактичними параметрами повинна бути відповідність по кількості параметрів, порядку їх слідування і типу даних. Імена відповідних параметрів можуть бути однаковими або різними. Вхідними фактичними параметрами можуть бути константи, перемінні і вирази. Вихідними фактичними параметрами можуть бути тільки перемінні. Опис використаних в програмах операторів
|