EP.2-3: 반복문
Phase 2: Operations & Control Logic
EP.2-3 반복문 — 제어 엔진의 스캔 사이클
멈추지 않는 감시와 정밀한 카운팅을 위한 루프 설계
반복문: 제어의 '스캔 사이클'
산업용 제어기(PLC, Robot Controller)는 한 번 실행되고 종료되는 것이 아니라, END를 만날 때마다 다시 처음으로 돌아가는 무한 스캔 사이클을 가집니다. C언어의 반복문은 이러한 장비의 생명력을 구현하는 핵심 도구입니다.
- for문: "제품 10개를 카운트하고 멈춰라" (정해진 횟수 제어)
- while문: "비상 정지가 눌리기 전까지 무한 감시하라" (조건 유지 제어)
for문: 정밀 수량 카운팅
목표 수량에 도달할 때까지 변수를 하나씩 증가시키며 특정 로직을 반복합니다. 인덱스(i)를 통해 현재 작업의 진행 상황을 실시간으로 파악할 수 있습니다.
#include <stdio.h>
int main() {
int target = 10; // 목표 수량
int i; // 카운트 변수 사전 선언 (안전성 확보)
printf("[생산 시작] 목표 수량: %d개\n", target);
// i가 1부터 시작하여 target(10)이 될 때까지 반복
for (i = 1; i <= target; i++) {
printf(">>> [COUNT: %d] 제품 통과... 포장 완료\n", i);
}
printf("[REPORT] 목표 수량 달성. 라인을 정지합니다.\n");
return 0;
}
int main() {
int target = 10; // 목표 수량
int i; // 카운트 변수 사전 선언 (안전성 확보)
printf("[생산 시작] 목표 수량: %d개\n", target);
// i가 1부터 시작하여 target(10)이 될 때까지 반복
for (i = 1; i <= target; i++) {
printf(">>> [COUNT: %d] 제품 통과... 포장 완료\n", i);
}
printf("[REPORT] 목표 수량 달성. 라인을 정지합니다.\n");
return 0;
}
3. while(1)문: 무한 스캔 사이클
실제 로봇 비전이나 센서 감시 프로그램의 '메인 엔진'입니다. 조건이 항상 참(1)이므로 전원이 차단되거나 break를 만나기 전까지 멈추지 않고 입력을 감시합니다.
#include <stdio.h>
int main() {
int signal;
printf("=== [SYSTEM ONLINE] 실시간 감시 모드 ===\n");
while (1) {
printf("\n센서 신호를 입력하세요 (0:정상, 1:비상, 999:종료): ");
scanf_s("%d", &signal);
if (signal == 999) {
printf("[SHUTDOWN] 마스터 권한으로 시스템을 종료합니다.\n");
break; // 루프를 탈출하는 비상 차단기
}
if (signal == 1) {
printf("!!! [WARNING] 비상 상황 발생! 사이렌 작동 중 !!!\n");
} else if (signal == 0) {
printf("... [SAFE] 시스템 안정화 상태 ...\n");
} else {
printf("? [UNKNOWN] 노이즈 신호 감지. 재검사 중.\n");
}
}
return 0;
}
int main() {
int signal;
printf("=== [SYSTEM ONLINE] 실시간 감시 모드 ===\n");
while (1) {
printf("\n센서 신호를 입력하세요 (0:정상, 1:비상, 999:종료): ");
scanf_s("%d", &signal);
if (signal == 999) {
printf("[SHUTDOWN] 마스터 권한으로 시스템을 종료합니다.\n");
break; // 루프를 탈출하는 비상 차단기
}
if (signal == 1) {
printf("!!! [WARNING] 비상 상황 발생! 사이렌 작동 중 !!!\n");
} else if (signal == 0) {
printf("... [SAFE] 시스템 안정화 상태 ...\n");
} else {
printf("? [UNKNOWN] 노이즈 신호 감지. 재검사 중.\n");
}
}
return 0;
}
시운전 도중 발생할 수 있는 결함을 사전에 방지하기 위한 핵심 체크리스트입니다.
- 변수 선언 위치: 산업용 구형 컴파일러와의 호환성을 위해 반복 변수(
i)는 루프 밖에서 미리 선언하는 습관이 안전합니다. - 기호 오타 주의:
printf의 출력 소켓은%d입니다.&d와 같은 오타는 변수의 주소를 문자로 인식하게 만들어 출력을 방해합니다. - 강제 탈출구 설계:
while(1)을 사용할 때는 반드시break를 포함한 종료 로직을 설계하여 시스템 프리징(Freezing)을 방지해야 합니다.
댓글
댓글 쓰기