- •Лекция 2
- •1.8. Операторы, выражения, операции
- •1.8.1. Исполняемые операторы
- •1.8.2. Оператор присваивания
- •1.8.3. Выражения
- •1.8.4. Арифметические функции
- •1.8.6. Операции
- •1.8.6.1. Арифметические операции
- •1.8.6.2. Логические операции
- •1.8.6.3. Операторы отношения
- •1.8.6.4. Операторы для строк (String)
- •2. Структура: программы, процедуры, функции, модуля
- •2.1. Структура программы
- •2.2. Структура функции
- •2.3. Структура процедуры
- •2.4. Структура модуля
- •Имя модуля и имя файла, в котором записан модуль должны совпадать.
- •2.5. Список параметров
- •2.5.1. Область видимости
- •2.5.2. Формальные и фактические параметры
- •2.5.3. Параметры-значения, параметры-переменные, нетипизированные параметры
- •3. Операторы
- •3.2. Оператор if
- •3.1. Оператор for
- •3.2. Оператор while
- •3.3. Оператор цикла repeat
- •3.4. Оператор выбора case
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.
