Инструменты пользователя

Инструменты сайта


bb:redbook:209

Различия

Здесь показаны различия между двумя версиями данной страницы.

Ссылка на это сравнение

Предыдущая версия справа и слева Предыдущая версия
bb:redbook:209 [2019/07/23 13:48]
caufman [3. Атрибут IN]
bb:redbook:209 [2019/07/23 16:12] (текущий)
caufman [4. Атрибут OUT]
Строка 36: Строка 36:
  
 Пример ниже показывает как работать с такими параметрами:​ Пример ниже показывает как работать с такими параметрами:​
-  +  MODULE TestTest_out;​ 
- +  ​IMPORT ​ Log, Math; 
 +   
 +  PROCEDURE Do(OUT z:INTEGER; r:REAL); 
 +  VAR 
 +  BEGIN 
 +      z:=5; 
 +      r:=-1; 
 +  END Do; 
 +   
 +  PROCEDURE Start*; 
 +  VAR 
 +  BEGIN 
 +      Do(0,0) 
 +  END;  
 +   
 +  BEGIN 
 +  END TestTest_out.
 Как видно из примера,​ попытка скомпилировать модуль,​ с вызовом пройцедуры Do закончилась крахом,​ так как, в качестве аргументов передаются константы,​ а не переменные. По возврате из процедуры,​ чему присваивать возвращаемые значения?​ В примере,​ представленном ниже, все ошибки устранены и модуль успешно компилируется:​ Как видно из примера,​ попытка скомпилировать модуль,​ с вызовом пройцедуры Do закончилась крахом,​ так как, в качестве аргументов передаются константы,​ а не переменные. По возврате из процедуры,​ чему присваивать возвращаемые значения?​ В примере,​ представленном ниже, все ошибки устранены и модуль успешно компилируется:​
-  +  MODULE TestTest_out;​ 
- +  ​IMPORT StdLog, Math; 
 +   
 +  PROCEDURE Do (OUT z: INTEGER; r: REAL); 
 +  VAR 
 +  BEGIN 
 +      z := 5; 
 +      r := - 1; 
 +  END Do; 
 +   
 +  PROCEDURE Start*; 
 +  VAR 
 +      z1: INTEGER; 
 +      r1: REAL; 
 +  BEGIN 
 +      Do(z1, r1); 
 +      StdLog.Int(z1);​ StdLog.Ln;​ 
 +      StdLog.Real(r1);​ StdLog.Ln;​ 
 +  END Start; 
 +   
 +  BEGIN 
 +  END TestTest_out. 
 +   
 +  (!)TestTest_out.Start
 Оператор RETURN мог бы возвращать несколько значений,​ во многих языках программирования такой функционал реализован. Но лучше оператор RETURN рассматривать как оператор управления потоком,​ с возможностью возврата кода выполнения операции,​ а не штатную возможность возвращать результат операций. Также стоит отметить,​ что возврат результата требует больше накладных расходов,​ чем непосредственное изменение переменной. Оператор RETURN мог бы возвращать несколько значений,​ во многих языках программирования такой функционал реализован. Но лучше оператор RETURN рассматривать как оператор управления потоком,​ с возможностью возврата кода выполнения операции,​ а не штатную возможность возвращать результат операций. Также стоит отметить,​ что возврат результата требует больше накладных расходов,​ чем непосредственное изменение переменной.
  
bb/redbook/209.txt · Последние изменения: 2019/07/23 16:12 — caufman