Главная » Basic » УПРАВЛЯЮЩИЕ СТРУКТУРЫ

0

Привычный цикл FOR-NEXT  включен в   COMAL  в   своей обычной  форме,  но  с  добавлением служебного слова DO (выполнять), указывающего на блочный характер цикла, например:

FOR LOOP=1 TO 10 STEP 2 DO

операторы

NEXT LOOP Этот оператор можно записывать в одной строке без указания NEXT:

FOR CNT = 1 TO 100 DO S=S + 10 В  языке COMAL имеются циклы как WHILE,  так и REPEAT,

например: WHILE A>0 DO операторы ENDWHILE и REPEAT операторы

UNTIL A>BOTTOM

а также однострочная версия цикла WHILE, похожая на FOR: WHILE (NOT A = B)DO A = A+C

Кроме того, имеется настоящий оператор выбора CASE, форма которого гораздо предпочтительнее, чем  оператора  Бейсика ON-GOTO;  он  позволяет осуществить  выбор оператора  по  совпадению значений сложных выражений  и  допускает указания действий  для непредусмотренных случаев с помощью  служебного  слова OTHERWISE  (в  противном случае)  .  Кроме того,  для  завершения оператора используется, опять-таки чтобы  подчеркнуть его  блочный характер, служебное слово ENDCASE (конец выбора) .

Предусмотрен и стандартный оператор IF-THEN, а также версия IF-THEN-ELSE, которая, как и все другие управляющие структуры,  заканчивается  соответствующим  служебным  словом (ENDIF)  . Например, оператор

IF (A>B AND C=0) THEN операторы ELSE операторы

ENDIF имеет четкую и недвусмысленную форму.

6.7.1.  ПРОЦЕДУРЫ

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

20  EXEC BUFFEROUT(A,B)

а  для  вызова как  функции имя процедуры  указывается обычным  образом  в   арифметическом выражении

100   DUMMY=LIMIT+MAX(A,B,C)

где  МАХ   имя процедуры, возвращающей  значение. Структура такой  процедуры может иметь следующий вид:

200   PROC MAX(REF X,REF Y, REF Z)

210      MAX=X

220     IF Y>MAX THEN MAX=Y

230     IF Z>MAX THEN MAX=Z

240   ENDPROC MAX

Обратите  внимание на служебное слово REF при формальных параметрах X,Y,Z; оно указывает на то,  что  параметры  А,В,С  передаются  по  адресу.  Это  означает,  что  при манипуляциях  внутри процедуры  X,Y,Z  действия осуществляются с  фактическими  параметрами А,В,С  и   что  любые изменения  X,Y,Z  автоматически  изменяют А,В,С.  Следовательно, такие параметры при необходимости могут использоваться в качестве как входных, так и выходных. Массивы также передаются

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

ме.  (Программисты, знакомые  с  Фортраном,  могут  протестовать, утверждая, что  в   этом  языке возможен возврат значений из  подпрограмм, при обращении к которым параметры передаются по значению. Да, это так, но такой возврат осуществляется  очень своеобразным способом, при котором существует реальная опасность искажения констант и  команд программы, что совершенно нельзя признать удовлетворительным.)

~ Таким образом, COMAL предусматривает  очень полезные процедурные блоки и  обеспечивает строгий подход к установлению соответствия между параметрами  (фактическими и формальными) .

Источник: Уолш Б.    Программирование на Бейсике: Пер. с англ. М.: Радио и связь, 1988. 336 с: ил.

По теме:

  • Комментарии