Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекция 2.doc
Скачиваний:
4
Добавлен:
10.11.2019
Размер:
238 Кб
Скачать
☆

2.5.2. Формальные и фактические параметры

Формальные параметры - это список имен переменных, следующий за именем подпрограммы, через которые передается информация от родительской подпрограммы в дочернюю, либо обратно. В этом списке может быть указан тип переменных.

Для того чтобы вызвать процедуру или функцию, необходимо к ней обратиться. Вызов процедуры NameProc производится оператором вида: NameProc(P1,P2,P3,...). Здесь P1, P2, P3 – фактические параметры. При различных вызовах подпрограммы в этом списке могут быть различные переменные и константы. Но должны выполняться следующие условия: фактические и формальные параметры должны соответствовать по числу, по типу и по смыслу.

2.5.3. Параметры-значения, параметры-переменные, нетипизированные параметры

Формальный параметр-значение при вызове подпрограммы копирует свое значение у фактического параметра. При этом для него выделяется дополнительная память и при изменении этой копии значение фактического параметра-значения (оригинала) – не меняется. Более того, фактический параметр-значение может быть константой или выражением.

Формальный параметр-значение

Фактический параметр-значение

function Sin(x: real): real;

Y:=Sin((x+Pi)/2);

Перед формальным параметром-переменной указывается служебное слово var и соответствующий фактический параметр должен быть переменной. Дополнительная область памяти для формального параметра-переменной не выделяется и, при изменение его внутри подпрограммы, меняется значение и фактического параметра.

Формальный параметр-переменная

Фактический параметр-переменная

Procedure Surf(a,b,c: real; var S: real);

SurF(1.2, 2+1, Sin(3.5), S);

Если для формального параметра-переменной не указан тип, то фактический параметр-переменная может быть ссылкой на переменную любого типа. В этом случае он называется нетипизированным параметром-переменной.

3. Операторы

3.2. Оператор if

Существует две формы оператора IF:

if <ВЫРАЖЕНИЕ> then <ОПЕРАТОР>;

if <ВЫРАЖЕНИЕ> then <ОПЕРАТОР1> else <ОПЕРАТОР2>;

Выражение должно быть логического типа. Перед else нельзя ставить “;”.

Пример 1: if J <> 0 then A := I/J;

Пример 2: if J <> 0 then A := I/J else A := 0;

Пример 3. Решение квадратного уравнения Ax2+Bx+C=0.

Листинг 7. Решение квадратного уравнения

program PrSqr;

{$APPTYPE CONSOLE}

var

A,B,C,D: real;

begin

Write(‘A=’); Readln(A);

Write(‘B=’); Readln(B);

Write(‘C=’); Readln(C);

if A = 0 then

if B = 0 then

if C = 0 then

Writeln(‘X - любое’)

else

Writeln(‘нет корней’)

else

Writeln(‘X = ’,-C/B:8:2)

else

begin

D := B*B-4*A*C;

if D < 0 then

Writeln(‘Нет вещественных корней’)

else

begin

D:=Sqrt(D);

Writeln(‘X1=’,(-B+ D)/(2*A),‘X2=’,(-B-D)/(2*A));

end;

end;

end.

Пример 4. Даны длины трех отрезков. Если они могут образовать треугольник, то вычислить его площадь.

Листинг 8. Площадь треугольника

program Pr8;

{$APPTYPE CONSOLE}

var

a,b,c,p,S : real;

begin

Write(‘a=’); Readln(a); Write(‘b=’); Readln(b);

Write(‘c=’); Readln(c);

if (a+b>c) and (a+c>b) and (b+c>a) then

begin

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

S:=Sqrt(p*(p-a)*(p-b)*(p-c));

Writeln(‘S=’,S:8:2);

end

else

Writeln(‘Не треугольник’);

Readln;

end.