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

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


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 · Последнее изменение: 2020/10/29 07:08 (внешнее изменение)