Пример 8. 2 листинг основной программы

const

a: integer = 5;

b: integer = 7;

{объявление процедуры}

procedure Inc2 (var c: integer; b: integer); {заголовок процедуры}

begin {начало тела подпрограммы}

c:= c+c;

b:= b+b;

writeln (‘удвоенные:’, c:5, b:5);

end; {конец тела подпрограммы}

begin {начало тела основной программы}

writeln (‘исходные:’, a:5, b:5);

inc2(a, b); {вызов тела подпрограммы}

writeln (‘результат:’, a:5, b:5);

end. {конец тела подпрограммы}

В результате прогона программы, на экран будет выведено:

Исходные: 5 7

Удвоенные: 10 14

Результат: 10 7


 
 

Задача 8.1. Определить расстояние между двумя точками.

Блок-схема алгоритма

Листинг процедуры DLINA

PROCEDURE DLINA (X1, X2, Y1, Y2: REAL; VAR L: REAL);

BEGIN

L:= SQRT(SQR(X2-X1)+SQR(Y2-Y1));

 
 

END;

Блок-схема алгоритма основной программы

Листинг основной программы

PROGRAM TASK;

VAR Q1, Q2, K1, K2, D: REAL;

PROCEDURE DLINA(X1,X2,Y1,Y2:REAL; VAR L: REAL);

BEGIN

L:= SQRT(SQR(X2-X1)+SQR(Y2-Y1));

END;

BEGIN

READLN (Q1, Q2, K1, K2);

DLINA (Q1, Q2, K1, K2, D);

WRITELN (D);

END.

Здесь,

Q1, Q2, K1, K2, D – глобальные переменные,

X1, X2, Y1, Y2, L – формальные параметры, где

X1, X2, Y1, Y2 – входные параметры-значения и

L – выходной параметр-переменная.

Задача 8.2. Определить в одномерном массиве минимальный элемент и его номер.

 
 

Примечание. Если в качестве параметров используются массивы, их необходимо объявлять в разделе типов.

Блок-схема алгоритма подпрограммы-процедуры MINVECTOR

Листинг подпрограммы-процедуры MINVECTOR

PROCEDURE MINVECTOR (D: VECTOR; L: INTEGER; MIN: INTEGER);

VAR

I: INTEGER;

BEGIN

MIN:= 1;

FOR I:=2 TO L DO

IF D[MIN] > D[I] THEN MIN:= I;

END;


Блок-схема алгоритма основной программы

 
 

Листинг основной программы

PROGRAM TASK;

CONST N = 25;

TYPE VECTOR = ARRAY[1..N] OF REAL;

VAR I, M: INTEGER; A: VECTOR;

PROCEDURE MINVECTOR (D: VECTOR; L: INTEGER; MIN: INTEGER);

VAR I: INTEGER;

BEGIN

MIN:= 1;

FOR I:=2 TO L DO

IF D[MIN] > D[I] THEN MIN:= I;

END;

BEGIN

FOR I:= 1 TO N DO READLM (A[I]);

MINVECTOR (A, N, M);

WRITELN (‘Минимальный элемент массива равен - ’, A[M]:3);

END.


Задача 8.3. Даны три массива А (20), В (30), С (25). Расположить элементы по возрастанию. Использовать процедуры для формирования массива, вывода первоначальных значений на экран и вывода упорядоченных элементов массива.

Блок-схема алгоритма подпрограммы InputVector

Листинг подпрограммы InputVector

PROCEDURE INPUTVECTOR (L: INTEGER; VAR D: VECTOR);

VAR I: INTEGER;

BEGIN

RANDOMIZE;

FOR I:=1 TO L DO D[I]:=RANDOM (101) - 50;

END;

 
 

Блок-схема алгоритма подпрограммы OutputVector


Листинг подпрограммы OutputVector

PROCEDURE OUTPUTVECTOR (L: INTEGER; D: VECTOR);

VAR I: INTEGER;

BEGIN

FOR I:=1 TO L DO WRITELN (D[I]);

END;

 
 

Блок-схема алгоритма подпрограммы SortVector (сортировка посредством выбора)

Листинг подпрограммы SortVector

PROCEDURE SORTVECTOR (L: INTEGER; VAR D: VECTOR);

VAR

I, J, T: INTEGER;

BEGIN

FOR I:=1 TO L-1 DO

FOR J:=I+1 TO L DO

IF D[J]>D[I] THEN

BEGIN

T:= D[I];

D[I]:= D[J];

D[J]:= T;

END;

END;

 
 

Блок-схема алгоритма основной программы

Листинг основной программы

PROGRAM TASK;

USES CRT;

CONST N = 30;

TYPE

VECTOR = ARRAY[1..N] OF INTEGER;

VAR

A, B, C: VECTOR;

PROCEDURE SORTVECTOR

(L: INTEGER; VAR D: VECTOR);

VAR

I, J, T: INTEGER;

BEGIN

FOR I:=1 TO L-1 DO

FOR J:=I+1 TO L DO

IF D[J]>D[I] THEN

BEGIN

T:= D[I];

D[I]:= D[J];

D[J]:= T;

END;

END;

BEGIN

CLRSCR;

INPUTVECTOR(20, A);

INPUTVECTOR(30, B);

INPUTVECTOR(25, C);

WRITELN (‘Сформированный массив А: ’);

OUTPUTVECTOR(20, A);

WRITELN (‘Сформированный массив В: ’);

OUTPUTVECTOR(30, B);

WRITELN (‘Сформированный массив С: ’);

OUTPUTVECTOR(25, C);

WRITELN (‘Отсортированный массив А: ’);

SORTVECTOR(20, A);

WRITELN (‘Отсортированный массив В: ’);

SORTVECTOR(30, B);

WRITELN (‘Отсортированный массив С: ’);

SORTVECTOR(25, C);

READLN;

END.

Вопросы для самопроверки

1. Дайте определение подпрограммы?

2. Каково основное назначение подпрограммы?

3. Как можно описать процедуру?

4. Каким образом процедура возвращает результат?

5. Где указывается список формальных параметров?

6. Для чего используются фактические параметры?

7. Каков принцип действия выходных и входных параметров?

8. В чём заключается различие между параметрами-значениями и параметрами-переменными?

9. Каков формат вызова процедуры и передачи параметров?

10. Какие три правила необходимо учитывать при передаче параметров?

11. В чём состоит принцип использования глобальных и локальных переменных?



Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: