논리(부울) 연산자

비교식과 같이 논리식은 처리될 때 1(true) 또는 0(false)을 리턴합니다. 논리 연산자는 두 개의 비교를 결합시키고, 비교의 결과에 따라 1 또는 0을 리턴합니다.

논리 연산자

연산자
의미
&
AND
양쪽 비교가 true이면 1을 리턴합니다. 예를 들면, 다음과 같습니다.
(4 > 2) & (a = a) /* true, so result is 1 */

(2 > 4) & (a = a) /* false, so result is 0 */
|
포함적 OR
한 개 이상의 비교가 true이면 1을 리턴합니다. 예를 들면, 다음과 같습니다.
(4 > 2) | (5 = 3) /* at least one is true, so result is 1 */

(2 > 4) | (5 = 3) /* neither one is true, so result is 0 */
&&
배타적 OR
양쪽 모두가 아닌 단 하나의 비교가 true이면 1을 리턴합니다. 예를 들면, 다음과 같습니다.
(4 > 2) && (5 = 3) /* only one is true, so result is 1 */

(4 > 2) && (5 = 5) /* both are true, so result is 0 */

(2 > 4) && (5 = 3) /* neither one is true, so result is 0
*/
접두부 \,¬
논리 NOT
부정-반대 응답을 리턴합니다. 예를 들면, 다음과 같습니다.
\ 0 /* opposite of 0, so result is 1 */

\ (4 > 2) /* opposite of true, so result is 0 */

논리식 사용

원하지 않는 조건을 차단하기 위해 복합 조건부 명령어에서 체크포인트로 논리식을 사용할 수 있습니다. 일련의 논리식을 가지고 있는 경우 설명을 위해 한 개 이상의 괄호 세트를 사용하여 각 표현식을 묶습니다.
IF ((A < B) | (J < D)) & ((M = Q) | (M = D)) THEN ....
다음 예는 논리 연산자를 사용하여 의사결정합니다.
그림 1. 논리식 사용 예

/****************************** REXX ********************************/
/* This program receives arguments for a complex logical expression */
/* that determines whether a person should go skiing. The first     */
/* argument is a season and the other two can be 'yes' or 'no'.     */
/********************************************************************/

PARSE ARG season snowing broken_leg

IF ((season = 'WINTER') | (snowing ='YES')) & (broken_leg ='NO')
   THEN SAY 'Go skiing.'
ELSE
   SAY 'Stay home.'
이 예제에 전달된 인수가 SPRING YES NO 인 경우 IF절은 다음과 같이 변환됩니다.

IF ((season = 'WINTER') | (snowing ='YES')) & (broken_leg ='NO') THEN  
      \______________/     \____________/      \_____________/
          false                true                 true
            \___________________/                    /      
                    true                            /
                     \_____________________________/
                                 true
결과적으로 프로그램을 실행하면 다음 결과가 생성됩니다.
Go skiing.

연습: 논리식 사용

대학에 지원하는 학생은 다음 스펙에 따라 대학을 평가하기로 결정했습니다.
IF (inexpensive | scholarship) & (reputable | nearby) THEN
   SAY "I'll consider it."
ELSE 
   SAY "Forget it!"

대학은 저렴하고 장학금을 제공하지 않았고 평판이 좋지만 1000마일 이상 떨어져 있습니다. 학생이 지원해야 합니까?

ANSWER

예. 조건부 명령은 다음과 같이 작동됩니다.

IF (inexpensive | scholarship) & (reputable | nearby) THEN ... 
    \__________/ \___________/   \_________/ \______/
       true          false          true      false
          \___________/               \_________/
              true                       true    
                \_________________________/
                           true