연산자, 조건문, 반복문 이해하기
PML Beginner 4
연산자와, 조건문, 반복문
이번엔 연산자, 조건문, 반복문 에 대해 설명해보도록 하겠습니다.
1. 연산자
1. 산술 연산자
기본적인 수학 연산을 수행할 때 사용되는 연산자들입니다.
- 더하기 (Addition):
+ - 빼기 (Subtraction):
- - 곱하기 (Multiplication):
* - 나누기 (Division):
/
예시:
!A = 10
!B = 5
!addition = !A + !B $* 더하기
!subtraction = !A - !B $* 빼기
!multiplication = !A * !B $* 곱하기
!division = !A / !B $* 나누기
q var !addition !subtraction !multiplication !division결과:
<Real> 15
<Real> 5
<Real> 50
<Real> 22. 비교 연산자
두 값을 비교할 때 사용되는 연산자들입니다.
- 작다 (Less than):
LT - 크다 (Greater than):
GT - 같다 (Equal to):
EQ - 다르다 (Not equal to):
NEQ - 작거나 같다 (Less than or equal to):
LE - 크거나 같다 (Greater than or equal to):
GE
예시:
!X = 10
!Y = 20
IF (!X LT !Y) THEN
$P 'X는 Y보다 작다'
ENDIF
IF (!X GE !Y) THEN
$P 'X는 Y보다 크거나 같다'
ENDIF
이 예시에서:
- 첫 번째 조건문은
!X가!Y보다 작으면"X는 Y보다 작다"메시지를 출력합니다. - 두 번째 조건문은
!X가!Y보다 크거나 같으면"X는 Y보다 크거나 같다"메시지를 출력합니다.
3. 논리 연산자
여러 조건을 기반으로 결정을 내릴 때 사용되는 연산자들입니다.
AND 연산자: AND
OR 연산자: OR
NOT 연산자: NOT
여러 조건을 결합하여 보다 복잡한 조건 판단을 할 수 있습니다.
예시:
!X = 10
!Y = 20
IF (!X LT 15 AND !Y GT 15) THEN
$P '두 조건이 모두 참이다'
ENDI이 예시에서:
IF 조건문은 !X가 15보다 작고 !Y가 15보다 큰 경우에만
"두 조건이 모두 참이다"라는 메시지를 출력합니다.
4. 문자형 결합 연산자:
문자형을 결합할 때 사용되는 연산자입니다.
숫자를 합할때도 사용하지만 문자형일경우 문자형을 합하는데 사용됩니다.
결합 연산자: +
예시:
!FirstName = 'John'
!LastName = 'Doe'
!FullName = !FirstName + ' ' + !LastName
q var !FullName결과:
<string> 'John Doe'2. 조건문
1. IF 문 기본 구조
기본구조:
IF (조건) THEN -- 조건이 참일 때 실행할 코드 ENDIF
- 조건: 참(true) 또는 거짓(false)으로 평가되는 논리식입니다.
- THEN: 조건이 참일 때 실행할 코드 블록을 의미합니다.
- ENDIF: 조건문이 끝났음을 나타냅니다.
예시:
!X = 10
IF (!X GT 5) THEN
$P 'X는 5보다 큽니다.'
ENDIF이 예시에서는 !X가 5보다 크기 때문에 "X는 5보다 큽니다."라는 메시지가 출력됩니다.
2. IF...ELSE 구조
ELSE 구문을 사용하면 조건이 거짓일 때 실행할 코드 블록을 정의할 수 있습니다.
기본구조:
IF (조건) THEN -- 조건이 참일 때 실행할 코드 ELSE -- 조건이 거짓일 때 실행할 코드 ENDIF
예시:
!X = 10
!Y = 20
IF (!X LT !Y) THEN
$P 'X는 Y보다 작습니다.'
ELSE
$P 'X는 Y보다 작지 않습니다.'
ENDIF이 예시에서는:
!X가!Y보다 작으면"X는 Y보다 작습니다."메시지가 출력됩니다.- 그렇지 않으면
"X는 Y보다 작지 않습니다."메시지가 출력됩니다.
3. IF...ELSE IF...ELSE 구조
PML에서는 여러 조건을 순차적으로 평가하기 위해 ELSE IF 구문을 사용할 수 있습니다. 이는 여러 조건을 처리할 때 유용하며, 첫 번째 참 조건에 해당하는 코드 블록만 실행됩니다.
기본 구조:
IF (조건1) THEN -- 조건1이 참일 때 실행할 코드 ELSE IF (조건2) THEN -- 조건1이 거짓이고 조건2가 참일 때 실행할 코드 ELSE -- 모든 조건이 거짓일 때 실행할 코드 ENDIF
예시:
!X = 10
!Y = 20
IF (!X GT !Y) THEN
$P 'X는 Y보다 큽니다.'
ELSE IF (!X EQ !Y) THEN
$P 'X는 Y와 같습니다.'
ELSE
$P 'X는 Y보다 작습니다.'
ENDIF이 예시에서:
!X가!Y보다 크면"X는 Y보다 큽니다."메시지가 출력됩니다.- 그렇지 않고
!X가!Y와 같으면"X는 Y와 같습니다."메시지가 출력됩니다. - 두 조건 모두 거짓이면
"X는 Y보다 작습니다."메시지가 출력됩니다.
4. 중첩된 IF 문
복잡한 조건을 처리하기 위해 IF 문을 중첩하여 사용할 수 있습니다. 중첩된 IF 문은 여러 단계의 조건을 처리할 때 유용합니다.
예시:
!X = 10
!Y = 20
IF (!X LT !Y) THEN
IF (!X EQ 10) THEN
$P 'X는 Y보다 작고 10입니다.'
ELSE
$P 'X는 Y보다 작지만 10은 아닙니다.'
ENDIF
ELSE
$P 'X는 Y보다 크거나 같습니다.'
ENDIF이 예시에서:
- 첫 번째 조건에서
!X가!Y보다 작으면 내부 IF 문이 실행됩니다. - 내부 IF 문은
!X가 10과 같은지 확인하고, 그에 따라 다른 메시지를 출력합니다.
5. 논리 연산자와 함께 사용하는 IF 문
PML에서 IF 문은 논리 연산자(AND, OR, NOT)를 사용하여 복합 조건을 평가할 수 있습니다.
예시:
!A = 10
!B = 20
IF (!A GT 5 AND !B LT 30) THEN
$P 'A는 5보다 크고 B는 30보다 작습니다.'
ENDIF이 예시에서는:
!A가 5보다 크고 !B가 30보다 작으면
"A는 5보다 크고 B는 30보다 작습니다." 메시지가 출력됩니다.
6. IFTRUE
IFTRUE는 삼향 연산자로 주어진 조건이 참이면 특정 값을 반환하고, 거짓이면 다른값을 반환합니다.
기본구문:
!변수 = IFTRUE(조건, 참일 때 반환 값, 거짓일 때 반환 값)
- 조건: 참 또는 거짓으로 평가되는 논리식 (예: !X LT 10).
- 참일 때 반환 값: 조건이 참일 경우 할당되는 값.
- 거짓일 때 반환 값: 조건이 거짓일 경우 할당되는 값.
예시:
!X = 10
!Result = IFTRUE(!X LT 20, 'X는 20보다 작다', 'X는 20보다 크거나 같다')
q var !Result결과:
<string> 'X는 20보다 작다'3. 반복문
PML을 사용하려는 가장큰 이유중 하나가 반복 작업을 단순화하는것인만큼 DO 반복문은 특정 값들이나, 범위를 순차적으로 반복하여 처리해줍니다.
1. DO 반복문 (FROM과 TO 사용)
*FROM ... TO**구조는 주어진 범위 내에서 변수를 반복시키는 방식입니다. 일반적으로 숫자 범위에서 값을 증가시키며, 각 반복마다 변수가 새로운 값을 가집니다.
기본구조:
DO !변수 FROM 시작값 TO 종료값 -- 반복 작업을 수행할 코드 ENDDO
예시:
DO !I FROM 1 TO 5
Q VAR !I
ENDDO결과:
<string> 1
<string> 2
<string> 3
<string> 4
<string> 5설명:
이 구조에서는 !I가 1에서 5까지 1씩 증가하면서 반복됩니다.
각 반복마다 !I의 값이 출력됩니다.
2. DO 반복문 (INDEX 사용)
INDEX사용시 특정 Array를 순차적으로 반복하며 !변수에 INDEX값을 할당합니다.
기본구조:
DO !변수 INDEX !배열 -- 배열의 각 요소에 대해 반복 작업을 수행할 코드 ENDDO
예시:
!Array = object array()
!Array.append(10)
!Array.append(20)
!Array.append(30)
!Array.append(40)
DO !I INDEX !Array
q var !I
ENDDO
$P ----------
DO !I INDEX !Array
q var !Array[$!I]
ENDDO결과:
<Real> 1
<Real> 2
<Real> 3
<Real> 4
----------
<Real> 10
<Real> 20
<Real> 30
<Real> 40
설명:
!Array에는 10,20,30,40이 들어있으며 !I에는 1,2,3,4, 가 반복됩니다
그렇기에 !Array[1] 과같이 반복할떄마다 !Array[$!I] 와 같이 사용햐어
!Array의 배열의 각 요소에 접근 할 수 있습니다.
3. DO 반복문 (VALUES 사용)
VALUES는 INDEX 와는 다르게 변수에 값이 할당됩니다.
기본구조:
DO !변수 VALUES !배열 -- 각 값에 대해 반복 작업을 수행할 코드 ENDDO
예시:
!Array = object array()
!Array.append(5)
!Array.append(10)
!Array.append(15)
!Array.append(20)
DO !value VALUES !Array
q var !value
ENDD결과:
<string> 5
<string> 10
<string> 15
<string> 20설명:
- 이 구조에서는
!Array배열에 미리 정의된 값들을 순차적으로!Value변수에 할당합니다. - 각 반복마다 지정된 값이 출력됩니다.
4. BREAK와 SKIP을 사용한 반복문 제어
PML의 DO 반복문은 중간에 반복을 중단하거나 특정 조건에 따라 반복을 건너뛸 수 있는 제어 기능도 제공합니다.
- BREAK: 특정 조건이 만족되면 반복문을 중단하고 빠져나옵니다.
- SKIP: 특정 조건이 만족되면 현재 반복을 건너뛰고, 다음 반복을 계속 진행합니다.
예시: BREAK
DO !I FROM 1 TO 5
IF (!I EQ 3) THEN
BREAK $* !I가 3일 때 반복문을 종료합니다.
ENDIF
q var !I
ENDDO결과:
<string>: 1
<string>: 2예시: SKIP
DO !I FROM 1 TO 5
SKIP IF (!I EQ 3) $* !I가 3일 때 해당 반복을 건너뜁니다.
q var !I
ENDDO결과:
<string>: 1
<string>: 2
<string>: 4
<string>: 5