Составители:
Рубрика:
%*#$A&,& +($*,#&($"!)&P !"#$%!#&'&($"!))KH :&:#*%5@!"! 6
Локальные переменные, описанные в блоке
local
...
end_local;
действуют только в пределах данных функции или процедуры.
Ряд функций и процедур относится к стандартным и потому не требует опис ания во вновь разрабатываемых моде-
лях. Отметим следующие стандартные функции:
Abs — абсолютная величина; Sqrt — корень квадратный; Exp — экспонента; Log, Log2, Log)0 — логарифмы на-
туральный, двоичный, десятичный соответственно; Sin, Cos, Tan, Acos, Asin, ATan — тригонометрические и обратные
тригонометрические функции sin, cos, tg, Arc cos, Arc sin, Arc tg.
В число стандартных входят также функции: BLength — подсчет числа бит в двоичном коде; HiBound — верхняя
граница индекса у array или верхняя граница числа элементов у set, bag, list; LoBound — то же в отношении нижних гра-
ниц; Length — подсчет числа символов в строке; Odd — возвращает значение true, если аргумент — нечетное число;
SizeOf — возвращает число элементов в объекте агрегативного типа; TypeOf — возвращает список типов, к которым при-
надлежит параметр этой функции; Exists — возвращает значение true, если аргумент этой функции входит в число атри-
бутов соответствующей сущности, и др.
К стандартным процедурам относятся процедуры Insert и Remove — вставка или изъятие элемента в заданной по-
зиции у объекта агрегативного типа соответственно.
При описании алгоритмов в телах процедур и функций могут использоваться операторы 07+&#; (Null), 0"'+()'()-
*'9 (Assignment), (.2#") (:ase), +#+&)(*#; (Compound Statement), 7+4#(*.; (if..then..else), ='%4) (Repeat), (.,#-) '6 E7*%-
='' '4' 0"#=$-7". (Return), 0$"$,#-) *) %#*$= ='%4) (Skip).
В выражениях используются операнды, знаки операций, вызовы функций. Так, для арифметических операций над
числами типа real применяются следующие знаки: * — умножение, / — деление, DIV — целочисленное деление, + — сло-
жение, — - вычитание, ** — возведение в степень, MOD – деление по модулю.
Знаки логических операций: not — отрицание, and — конъюнкция, or — дизъюнкция, xor — исключающее ИЛИ.
В применении к величинам типа logical эти операции выполняются по правилам действий в трехзначном алфавите. Логи-
ческое выражение a1 in a2 принимает значение true, если а1 содержится в а2. Оператор like используется для посимволь-
ного сравнения строк. Для сравнения экземпляров сущностей используют операции “равно” и “неравно” со знаками :=: и
:<>: соответственно.
Операции над множествами (типами bag и set) – пересечение (Intersection), объединение (Union), разность
(Difference). Их знаки суть * (умножение), + (плюс), — (минус) соответственно. Оператор Query (А <* В | С) возвращает
подмноже ство тех элементов из агрегативного типа В, для которых выполняется условие С, здесь А – простая перемен-
ная, используемая в С. Знак + (плюс) по отношению к операндам типа binary или string есть знак конкатенации.
В качестве формальных параметров процедур и функций, кроме типов данных, применяемых в других конструкци-
ях языка и охарактеризованных выше, могут использоваться обобщенные типы: generic, aggregate и некоторые другие.
Тип generic формального параметра означает, что соответствующий фактический параметр может иметь любой тип дан-
ных из числа предусмотренных при описании процедуры. Аналогично тип aggregate обобщает агрегативные типы данных
— array, bag, list, set. Например:
function add (a,b: generic: intype): generic: intype;
local
nr: number;
vr: vector;
end_local;
if (‘number’ in typeof (a)) and (‘number’ in typeof (b))
then nr := a+b;
(* функция typeof (a) возвращает тип аргумента а и, если этот тип есть number, то первый операнд
логического выражения равен true *)
return (nr);
else
if (‘this schema.vector’ in typeof (a)) and (‘this schema.vector’ in typeof (b)) then
vr.i := a.i + b.i;
vr.j := a.j + b.j;
vr.k := a.k + b.k;
(* подразумевается, что декларация типа vector была произведена в схеме с именем this schema *)
return (vr);
end_if;
end_if;
end_function;
&.+.)$(*),$". !"#$%!#&'&($"!))$* +($*,#&($"!)&*
177
5@!"! 6 %*#$A&,& +($*,#&($"!)&P !"#$%!#&'&($"!))KH :&:#*% Локальные переменные, описанные в блоке local ... end_local; действуют только в пределах данных функции или процедуры. Ряд функций и процедур относится к стандартным и потому не требует описания во вновь разрабатываемых моде- лях. Отметим следующие стандартные функции: Abs — абсолютная величина; Sqrt — корень квадратный; Exp — экспонента; Log, Log2, Log)0 — логарифмы на- туральный, двоичный, десятичный соответственно; Sin, Cos, Tan, Acos, Asin, ATan — тригонометрические и обратные тригонометрические функции sin, cos, tg, Arc cos, Arc sin, Arc tg. В число стандартных входят также функции: BLength — подсчет числа бит в двоичном коде; HiBound — верхняя граница индекса у array или верхняя граница числа элементов у set, bag, list; LoBound — то же в отношении нижних гра- ниц; Length — подсчет числа символов в строке; Odd — возвращает значение true, если аргумент — нечетное число; SizeOf — возвращает число элементов в объекте агрегативного типа; TypeOf — возвращает список типов, к которым при- надлежит параметр этой функции; Exists — возвращает значение true, если аргумент этой функции входит в число атри- бутов соответствующей сущности, и др. К стандартным процедурам относятся процедуры Insert и Remove — вставка или изъятие элемента в заданной по- зиции у объекта агрегативного типа соответственно. При описании алгоритмов в телах процедур и функций могут использоваться операторы 07+ (Null), 0"'+()'()- *'9 (Assignment), (.2#") (:ase), +#+&)(*#; (Compound Statement), 7+4#(*.; (if..then..else), ='%4) (Repeat), (.,#-) '6 E7*%- ='' '4' 0"#=$-7". (Return), 0$"$,#-) *) %#*$= ='%4) (Skip). В выражениях используются операнды, знаки операций, вызовы функций. Так, для арифметических операций над числами типа real применяются следующие знаки: * — умножение, / — деление, DIV — целочисленное деление, + — сло- жение, — - вычитание, ** — возведение в степень, MOD – деление по модулю. Знаки логических операций: not — отрицание, and — конъюнкция, or — дизъюнкция, xor — исключающее ИЛИ. В применении к величинам типа logical эти операции выполняются по правилам действий в трехзначном алфавите. Логи- ческое выражение a1 in a2 принимает значение true, если а1 содержится в а2. Оператор like используется для посимволь- ного сравнения строк. Для сравнения экземпляров сущностей используют операции “равно” и “неравно” со знаками :=: и :<>: соответственно. Операции над множествами (типами bag и set) – пересечение (Intersection), объединение (Union), разность (Difference). Их знаки суть * (умножение), + (плюс), — (минус) соответственно. Оператор Query (А <* В | С) возвращает подмножество тех элементов из агрегативного типа В, для которых выполняется условие С, здесь А – простая перемен- ная, используемая в С. Знак + (плюс) по отношению к операндам типа binary или string есть знак конкатенации. В качестве формальных параметров процедур и функций, кроме типов данных, применяемых в других конструкци- ях языка и охарактеризованных выше, могут использоваться обобщенные типы: generic, aggregate и некоторые другие. Тип generic формального параметра означает, что соответствующий фактический параметр может иметь любой тип дан- ных из числа предусмотренных при описании процедуры. Аналогично тип aggregate обобщает агрегативные типы данных — array, bag, list, set. Например: function add (a,b: generic: intype): generic: intype; local nr: number; vr: vector; end_local; if (‘number’ in typeof (a)) and (‘number’ in typeof (b)) then nr := a+b; (* функция typeof (a) возвращает тип аргумента а и, если этот тип есть number, то первый операнд логического выражения равен true *) return (nr); else if (‘this schema.vector’ in typeof (a)) and (‘this schema.vector’ in typeof (b)) then vr.i := a.i + b.i; vr.j := a.j + b.j; vr.k := a.k + b.k; (* подразумевается, что декларация типа vector была произведена в схеме с именем this schema *) return (vr); end_if; end_if; end_function; &.+.)$(*),$" . !"#$%!#&'&($"!))$* +($*,#&($"!)&* 177
Страницы
- « первая
- ‹ предыдущая
- …
- 175
- 176
- 177
- 178
- 179
- …
- следующая ›
- последняя »