суботу, 11 листопада 2017 р.

Тема 2. Процедури з параметрами

Процедури з параметрами
Задача: по заданих дійсних значеннях x і y обчислити u=max(x+y,x*y), v=max(0.5,u).
Програма розв'язку цієї задачі з використанням процедур з параметрами:

Program Max3;
Var x,y,u,v:real;
Procedure Max(r1,r2:real;var res:real);
Begin
 If r1>r2 then res:=r1 else res:=r2
End;
Begin
 Read(x,y);
 Max(x+y,x*y,u);
 Max(0.5,u,v);
 Writeln(u,v)
End.
r1, r2 – формальні параметри процедури, бо вони представляють не якісь конкретні значення, а значення “взагалі”. При кожному зверненні до процедури її формальні параметри конкретизуються.
Оскільки формальні параметри мають тип real, то фактичним параметром може бути будь-який арифметичний вираз.
Встановлюється відповідність між формальними і фактичними параметрами.
r1, r2 називаються параметрами-значеннями, оскільки кожний з них у тілі процедури набуває значення, яке йому задають під час звертання за допомогою відповідного фактичного параметра.
Формальний параметр res відрізняється від r1, r2. Це не значення, а змінна.
Щоб відрізнити параметр-змінну від параметра-значення, перед ним в списку формальних параметрів записується службове слово var. Для параметра-змінної фактичним параметром може бути тільки змінна!

Принцип локалізації: імена, що вводяться в будь-якій процедурі, мають силу тільки в цій процедурі.
Формальні параметри. Ці змінні існують тільки на час виконання тіла процедури, а після виходу з процедури вони припиняють своє існування.
Глобальні ідентифікатори в тілі процедури мають той самий зміст, що і до моменту входу в процедуру.
Локальні ідентифікатори. Це ідентифікатори, що не є формальними парметрами, але описані в тілі процедури і діють тільки в процедурі.


Об’єкти, які описані в самій процедурі, називаються локальними по відношенню до самої програми і можуть використовуватись тільки в тій процедурі, в якій вони описані. Крім локальних об’єктів (зокрема змінних та типів, констант) в процедурі і функції можуть використовуватися об’єкти, які описані в основній програмі і їх називають глобальними.
Виклик процедури здійснюється шляхом вказування імені процедури і списку фактичних параметрів.
Формальні параметри в процедурах і функціях розрізняють 2-х видів: параметри значення і параметри змінні. Параметри значення–це ті формальні параметри, зміна значень яких не впливає на зміну відповідних фактичних параметрів.
 При виклику процедури чи функції слід пам’ятати:
1)кількість фактичних параметрів повинна співпадати з кількістю формальних параметрів і типи відповідних параметрівтеж повинні співпадати;
2)значення всіх фактичних параметрів передаються відповідно формальним параметрам.
Параметрами-змінними називаються ті формальні параметри, які після виконання процедури передають свої значення відповідно фактичним параметрам (тобто вони їх змінюють). При описі параметри-змінні відрізняють від параметрів-значень, вказавши перед ними службове слово var.
При виклику процедури слід пам’ятати, що на місці фактичного параметра, коли відповідний формальний параметр описаний, як параметр–значення, може стояти вираз того самого типу (зокрема змінна або константа).
В випадку, коли формальний параметр описаний як параметр–змінна, то відповідний фактичний параметр повинен бути тільки змінною(бо вона здатна набувати нового значення).

Приклад. Скласти програму з використанням процедур без параметрів: порахувати суму елементів матриць a,b,c розміру 3´4, що містить дійсні елементи.

program PR2;
const m =3; n = 4;
type matr= array[1..3,1..4] of real;
var  a,b,c:matr; s1,s2,s3:real;

procedure Vvid(var d:matr);
var i, j: integer;
 begin
           for i: = 1 to 3 do
             for j: = 1 to 4 do
                 read(d[i, j]);
 end;

procedure SUM(d:matr; var s:real);
begin s: =0;
    for i: = 1 to 3 do      
        for j: = 1 to 4 do
            s: = s + a[i, j];
 end;

begin  
      Vvid(a);  SUM(a,s1); writeln (‘s1=’, s1);
      Vvid(b);  SUM(b,s2); writeln (‘s2=’, s2);
      Vvid(c);  SUM(c,s3); writeln (‘s3=’, s3);
end.

Підручник : ст. 204
Д./з. (використовуючи процедури з параметрами)
1. Ввести ціле число x. Обчислити u = min(x,x2), v = min(0.2,u).
2. Порахувати суму і кількість додатніх елементів кожного з векторів a,b,c, які складаються з n дійсних елементів.
3. Порахувати кількість елементів, що належать проміжку [-6,6] кожного з векторів a,b,c, які складаються з n дійсних елементів. Також знайти максимальний елемент кожного з цих векторів.



1 коментар:

  1. Merit Casino - Your Merit Casino Online Games For Free
    Play and win at the Merit งานออนไลน์ Casino online casino! The Best Online Casino In the UK for Merit Slots, Blackjack, Roulette At Merit, all deccasino games are on a 카지노사이트

    ВідповістиВидалити