====== 루프 반복 수행 명령문 ====== 때때로 특정 횟수만큼 작업을 수행해야하는 경우가 있습니다. ST언어에서는 세 가지 유형의 루프문 사용이 가능합니다. * WHILE 루프 * FOR 루프 * REPEAT 루프 ===== WHILE...DO...END_WHILE ===== 이 명령어는 조건이 충족되는 루프안 명령어를 계속 반복수행합니다. 처음부터 조건이 FALSE이면 명령이 수행되지 않습니다. 구문은 다음과 같습니다. WHILE 조건 DO 명령문; END_WHILE; 다음은 사용예입니다. k := 1; WHILE Area[k] < 1000 DO Area[k] := 3.14*radius[k]*radius[k] + 2*3.14*radius[k]*height; k := k + 1; END_WHILE; ===== FOR...END_FOR ===== 반복 횟수를 미리 결정할 수있을 때 유용합니다. 루프는 특정 횟수만큼 명령을 수행하며, 인덱스 변수에 의해 제어됩니다. 인덱스 변수의 증가치를 특별히 지정하지 않았다면 루프마다 1씩 증가됩니다. FOR index := 초기값 TO 종료값 DO 명령문; END_FOR; 키워드 BY를 추가 하면 1보다 큰 증가치를 사용할 수 있습니다. FOR k := 1 TO 20 BY 2 DO Num := Num*2; END_FOR; ===== REPEAT ... END_REPEAT ===== 이 루프는 얼마나 반복할지 모르는 상황에서 쓸수 있는 반복문입니다. WHILE문과 동일한데, 조건판단을 뒤에서 하기때문에 내부명령문이 최소 1번은 수행됩니다. REPEAT 명령문; UNTIL 조건 END_REPEAT; 사용예) REPEAT Values[x] := New_value; x := x + 1; UNTIL New_value > 1000 END_REPEAT; ===== EXIT 명령문 ===== EXIT는 WHILE, FOR 또는 REPEAT 루프의 실행을 중지하고 루프를 탈출하는 명령입니다. REPEAT Area[k] := 3.14*radius[k]*radius[k] + 2*3.14*radius[k]*height; k := k + 1; IF k >= 200 THEN EXIT; (* 이 조건이 만족되면 루프 탈출 *) END_IF; UNTIL Area[k] > 1000 END_REPEAT; [[codesysmanual:index|CODESYS]]