Презентація на тему: "1 підпрограми. МАСИВИ ЯК ФОРМАЛЬНІ ПАРАМЕТРИ підпрограми Лекція 3 План 1.Процедури і функції з використанням масивів в заголовку 2.Опісаніе підпрограм." - Транскрипт:
1 + 1 підпрограми. МАСИВИ ЯК ФОРМАЛЬНІ ПАРАМЕТРИ підпрограми Лекція 3 План 1. Процедури і функції з використанням масивів в заголовку 2. Опис підпрограм з масивами 3. Параметри підпрограм з масивами Лектор: професор, д.т.н. Іванчина Емілія Дмитрівна
2 + 2 1. Процедури і функції з використанням масивів в заголовку Підпрограми можуть містити масиви як параметри. Глобальні параметри є загальними на всі програмні одиниці. Локальні параметри змінюють свої значення тільки всередині даної програмної одиниці. Опис параметрів в блоці VAR означає, що дана група параметрів є глобальними для вхідних і вихідних значень. При відсутності в заголовку службового слова VAR значення параметрів передаються всередину процедури, але не передаються з неї в головну програму. У тих випадках, коли параметрами процедур і функцій є масиви, необхідно розмірність і розмір цих масивів задавати через службове слово TYPE. TYPE a = array [1..3,1..4] of integer; a - ідентифікатор типу масиву Далі будуть розглянуті приклади складання процедур і функцій з використанням масивів в заголовку.
4 4 Заголовок підпрограми має вигляд: FUNCTION FUN (Y: a; var S: real): real; PROCEDURE proc (vd: b1; var md: d1); Для опису глобальних параметрів використовували службової слово var. Список формальних параметрів представляється через кому по порядку проходження
5 5 3. Параметри підпрограм з масивами. Процедури використовуються в тому випадку, якщо підпрограма має кілька результатів обчислень або результат є багатовимірною величиною (масивом). Опис процедури має вигляд: Procedure (формальні параметри); label; const; type; var Begin End; Процедура поміщається в основній програмі в розділі описів VAR.
6 6 тих випадках, коли параметрами процедур і функцій є масиви, необхідно вказати розмірність і розмір цих масивів через службове слово TYPE. Правило. Типом будь-якого параметра зі списку формальних параметрів може бути раніше оголошений тип. TYPE a = array [1..10] of real; Procedure S (b: a); Function f (c: a): real;
7 7 Приклад 1. Скласти програму розрахунку масиву Z (10). Розрахунок функції f (x) оформити у вигляді підпрограми - функції. Розрахунок суми - у вигляді підпрограми - процедури.
3 then f: = 1 / x else f: = 1 + 2xsqr (x) end; "title =" 8 Program Pro1; type mas = array [1..10] of real; var x, Z: mas; c, q, S: real; function F (x: real): real; begin if x> 3 then f: = 1 / x else f: = 1 + 2xsqr (x) end; "class =" link_thumb "> 8 8 Program Pro1; type mas = array [1..10] of real; var x, Z: mas; c, q, S: real; function F (x: real): real; begin if x> 3 then f: = 1 / x else f: = 1 + 2xsqr (x) end; 3 then f: = 1 / x else f: = 1 + 2xsqr (x) end; "> 3 then f: = 1 / x else f: = 1 + 2xsqr (x) end;"> 3 then f: = 1 / x else f: = 1 + 2xsqr (x) end; " title = "8 Program Pro1; type mas = array [1..10] of real; var x, Z: mas; c, q, S: real; function F (x: real): real; begin if x> 3 then f: = 1 / x else f: = 1 + 2xsqr (x) end; ">
3 then f: = 1 / x else f: = 1 + 2xsqr (x) end; "title =" 8 Program Pro1; type mas = array [1..10] of real; var x, Z: mas; c, q, S: real; function F (x: real): real; begin if x> 3 then f: = 1 / x else f: = 1 + 2xsqr (x) end; ">9 9 procedure Sum (x: mas; var S: real); var i: integer; begin S: = 0; for i: = 1 to 10 do S: = S + sqrt (x [i]) end;
10 10 BEGIN readln (c, q); for i: = 1 to 10 do readln (x [i]) Sum (x, S); for i: = 1 to 10 do begin Z [i]: = sqr (f (x [i])) / sin (c) + sqrt (x [i]) / (sqr (S) q); writeln (Z [i]: 10) end; END.
11 11 Приклад 2. Скласти програму для розрахунку вираження.
12 12 Program ppp; type m = array [1..10] of real; var x, y: m; f: real; i, k: integer; function Sum (a: m; n1, n2, p: integer): real; var S: real; i: integer; begin S: = 0; for i: = n1 to n2 do S: = S + exp (pln (a [i])); Sum: = S end;
13 13 BEGIN for i: = 1 to 8 do readln (x [i]);
14 14 for k: = 1 to 10 do readln (y [k]); end; F: = Sum (x, 3,8,2) + Sum (y, 2,10,3); writeln (F =, F: 10) END.
15 15 Приклад 3. Составвіть підпрограму для визначення макс. і хв. елемента матриці program maxmin; type b1 = array [1..4,1..3] of real; var i, j. integer; ymax, ymin: real; y: b1; r1, r2: text;
= Xmax then xmax: = x [n, k] end; end; "title =" 16 procedure mm (var x: b1; var xmax, xmin: real); var n, k: integer; begin xmax: = x [1,1]; xmin: = x [1,1]; for n: = 1 to 4 do for k: = 1 to 3 do begin if x [n, k] = xmax then xmax: = x [n, k] end; end; "class =" link_thumb "> 16 16 procedure mm (var x: b1; var xmax, xmin: real); var n, k: integer; begin xmax: = x [1,1]; xmin: = x [ 1,1]; for n: = 1 to 4 do for k: = 1 to 3 do begin if x [n, k] = xmax then xmax: = x [n, k] end; end; = xmax then xmax: = x [n, k] end; end; "> = xmax then xmax: = x [n, k] end; end; "> = xmax then xmax: = x [n, k] end; end;" title = "16 procedure mm (var x: b1; var xmax, xmin: real); var n, k: integer; begin xmax: = x [1,1]; xmin: = x [1,1]; for n : = 1 to 4 do for k: = 1 to 3 do begin if x [n, k] = xmax then xmax: = x [n, k] end; end; ">
= Xmax then xmax: = x [n, k] end; end; "title =" 16 procedure mm (var x: b1; var xmax, xmin: real); var n, k: integer; begin xmax: = x [1,1]; xmin: = x [1,1]; for n: = 1 to 4 do for k: = 1 to 3 do begin if x [n, k] = xmax then xmax: = x [n, k] end; end; ">17 17 begin assign (r1, 'a.dat'); reset (r1); for i: = 1 to 4 do for j: = 1 to 3 do read (r1, y [i, j]); assign (r2, 'b.res'); rewrite (r2); mm (y, ymax, ymin); write (r2, ymax, ymin); close (r2); end.
18 18 Приклад 4. Скласти підпрограму для розрахунку функції за формулою Лагранжа
19 19 Program lagr; TIPE a = ARRAY [1..4] OF real; Var x, y: a; i: integer; x0: real; Function lag (x, y: a, x0): real; Var I, j: integer; s, p, x0: real); BEGIN S: = 0; FOR i: = 1 TO 4 DO BEGIN P: = 1; FOR j: = 1 TO 4 DO IF i j THEN P: = P (x0-x [j]) / (x [i] -x [j]); S: = S + y [i] P; lag: = S; END; Begin for i: = 1 to 4 do read (x [i], y [i]); read (x0); writeln (lag (x, y, x0): 5: 2); end. END.