Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
34
Добавлен:
07.02.2016
Размер:
100.35 Кб
Скачать

Процедури.

На відміну від функції, процедура -це підпрограма, в результаті якої можна виконати деякі дії та обчислити величини. Кількість величин, які вертаються процедурою, може бути більше однією. Опис процедури починається службовим словом Procedure, далі іде ім’я процедури та у дужках список формальних параметрів з описами їх типів. Список формальних параметрів не є обов’язковим. Викликається процедура в програмі за ім’ям, після якого слідує список фактичних параметрів, якщо це потрібно. Загальний вид процедури:

procedure ім’я_функції(список_форм._параметрів: тип_форм._пар.);

розділ опису процедури

begin

розділ операторів процедури

end;

Приклад 3.6. Обчислити площу та периметр трикутника, що заданий координатами його сторін.

Для розв’язку задачі використаємо процедуру , за якою обчислюється площа трикутника, який задано довжинами його сторін. А для знаходження довжини сторони трикутника використаємо функцію.

Var x1,y1,x2,y2,x3,y3, pl, per:real;

function d_st(f1,b1,f2,b2:real): real;

begin

d_st:=sqrt(sqr(a2-a1)+sqr(b2-b1));

end;

procedure sqtr(a,b,c:real; var s,p:real);

begin

p:=(a+b+c)/2;

s:=sqrt(p*(p-a)*(p-b)*(p-c));

p:= 2*p;

end;

begin

writeln('x1,y1,x2,y2,x3,y3');

readln(x1,y1,x2,y2,x3,y3);

sqtr(d_st(x1,y1,x2,y2), d_st(x2,y2,x3,y3), d_st(x1,y1, x3,y3), p1, per);

writeln(p1:5:2, per:5:2);

end.

Функція d_st обчислює довжину сторони трикутника за координатами вершин. А для обчислення площі трикутника та його периметру за формулою Герона якраз і треба значення сторін трикутника. Тому вхідними параметрами процедури при її виклику є значення функції d_st для точок з координатами (x1,y1), (x2,y2), (x3,y3) попарно. Програма складається з декількох операторів: введення даних, виклик процедури та виведення даних. Простий та зрозумілий алгоритм роботи. Процедура описується окремо та може бути легко перенесена на іншу програму. Функція викликається для визначення вхідних параметрів процедури. При цьому ми економимо на декількох ідентифікаторах довжин сторін трикутників, які є допоміжними величинами.

Чи використовувати у програмі саме функцію чи процедуру – це вирішує програміст. Але використання процедур у тому випадку, коли в програму вертається одне значення призводить до збільшення кількості змінних. Тому в таких випадках рекомендується використовувати функції.

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

Увага! При використанні підпрограм, особливо процедур, результат ви можете отримати тільки тоді, коли в опису формальних параметрів перед ідентифікатором результату поставите службове слово var. І ще одне. Для опису типів формальних параметрів дозволяється використовувати тільки прості типи, або ідентифікатори структурованих типів.

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

  1. Що таке підпрограма?

  2. Які види підпрограм використовується у мові Pascal?

  3. Що таке функція?

  4. Що таке процедура:

  5. Які змінні називають глобальними?

  6. Які змінні називають локальними:

  7. Що таке формальні параметрі?

  8. Що таке фактичні параметри?

  9. Як використовують параметри – значення?

  10. Як використовують параметри – змінні?

  11. Як використовують нетипизовані параметри?

  12. Чи можна використовувати підпрограму без параметрів? Якщо можна, то як?

Тести для підсумкового контролю.

Процедури та функції

Для програми:

Var a,x,y: real;

Procedure df(w,r:real; var t: real);

Var z:real;

Begin

If w>=0 then z:= sqrt(w+234);

T:=z+r;

End;

Begin

Readln(a,x);

Df(a,x,y);

Writeln(y);

End.

1. Перелічити фактичні параметри:

1) w,r,234 2) w, r 3) w,r,t 4) a,x,y

2. Перелічити локальні змінні:

1) z 2) z, r 3) w,r,t 4) a,x,y

3. Перелічити формальні параметри:

1) w,r,234 2) w, r 3) w,r,t 4) a,x,y

3. Перелічити глобальні змінні:

1) z 2) z, r 3) w,r,t 4) a,x,y

5. Що буде виведено на екран наступною програмою:

Var x,y : char;

Procedure p(x:integer);

Const y=true;

Begin

Writeln(x,’ ‘,y)

End;

Procedure q;

Var x:car;

Begin

X:=succ(y);

Y:=’*’;

Writeln(x,’ ‘,y)

End;

Begin

X:=’a’;

Y:=’5’;

P(8);

Writeln(x,’ ‘,y)

Q;

Writeln(x,’ ‘,y)

End.

1) 8 true 2) 8 true 3) 8 * 4)5 true

a 5 a true a * **

6 * 6 a6 5 6 6

a*a6aa5 5

6. Що буде виведено на екран наступною програмою:

Var a,b,c,d: integer;

Procedure p(var b:integer; c:integer);

Var d:integer;

Begin

A:=5; b:=6; c:=7; d:=8;

Writeln(a,b,c,d);

End;

Begin

A:=1; b:=2; c:=3; d:=4;

P(a,b);

Writeln(a,b,c,d)

End.

1) 6 6 7 8 2) 6 2 3 4 3) 1 2 3 4 4)1 2 3 4

6 2 3 4 6 7 8 9 1 2 3 4 6 2 3 4

7. В яких операторах допущені помилки:

Procedure er(var x: Boolean);

Const char=0;

Var c: char;

Begin

If x then x:=(ord(true)=char) and false end;

  1. case=1;

b=('b','a');

var c:char;

if x then x:=(ord(true)=char) and( false);

2) Procedure er(var x: Boolean);

b=('b','a');

var c:char;

if x then x:=(ord(true)=char) and( false);

3) case=1;

b=('b','a');

var c:char;

4) case=1;

b=('b','a');

if x then x:=(ord(true)=char) and( false);

8. Якщо

var c,d:integer;

procedure p(x,y:integer);

begin y:=x + 1; end;

procedure Q(x: integer; var y: integer);

begin y:= x+1; end;

Записати, що буде надруковано:

c:=2; d:=0; P(sqr( c ) +c, d); writeln(d);

c:=2; d:=0; q(sqr( c ) +c, d); writeln(d);

9. Для процедури:

var x,w,r,t,:integer; d:real;

procedure min(x1,x2:integer; var sq:integer);

var k: integer;

begin if x1<x2 then sq:=sqr(x1) else sq:=sqr(x2); end;

вказати правильний виклик

1) min(-2+x, , 10); 2) min(w, r , t); 3) min(-2+x, k, t); 4) min(d,x , t);

  1. Нехай процедура skor(a,b,p,q) від цілих параметрів (b0) приводить дріб до нескороченого виду . Чи можуть бути використані звернення skor(k+1,14,p,7) та skor(k,sqrt(36),k,n), де k та n- цілі змінні?

1. перше допустиме, друге не допустиме

  1. обидва не допустимі

  2. перше не допустиме, друге допустиме

  3. обидва допустимі

Соседние файлы в папке конспект лекцій 1 паск