04 반복문

Estimated reading: 1 minute 20 views

반복문(Loop Statement)이란 특정 조건이 참일 때 같은 코드를 반복해서 실행하는 문법입니다. 쉽게 말해, "같은 작업을 여러 번 반복할 때 사용하는 코드 구조"라고 할 수 있습니다.

예를 들어, 1부터 10까지의 숫자를 출력하는 프로그램을 작성한다고 가정해 봅시다. 이 작업을 위해 10번의 MsgBox를 작성하는 대신 반복문을 사용하면, 1줄의 코드로 10번의 작업을 수행할 수 있습니다.

오토핫키 v2의 반복문에는 Loop, While, For 3가지 주요 형태가 있습니다.

  • Loop: 일정 횟수만큼 작업을 반복합니다. (주로 반복 횟수가 명확할 때 사용)
  • While: 특정 조건이 참일 때까지 반복합니다. (조건을 만족할 때까지 반복)
  • For: 컬렉션(배열, 객체 등)의 모든 요소를 하나씩 처리할 때 사용합니다.

1. Loop 반복문

Loop 반복문정해진 횟수만큼 코드를 반복합니다. 반복 횟수가 고정된 경우에 가장 많이 사용됩니다.

구문

Loop (횟수) {
    ; 반복할 코드
}

예제 1: Loop로 5번 반복하기

Loop (5) {
    MsgBox("반복 중입니다.")
}

예제 2: 현재 반복 회차 출력하기

Loop (5) {
    MsgBox("현재 반복 회차: " A_Index)
}

예제 3: break와 continue 사용하기

Loop (10) {
    if (A_Index = 5) {
        MsgBox("반복을 종료합니다.")
        break ; 반복문 종료
    }
    MsgBox("현재 회차: " A_Index)
}

2. While 반복문

While 반복문조건이 참일 때 반복합니다. 반복 횟수가 정해지지 않았거나 조건이 동적으로 바뀌는 경우에 자주 사용됩니다.

구문

While (조건) {
    ; 조건이 참일 때 실행할 코드
}

예제 1: 1부터 10까지 출력하기

i := 1

While (i <= 10) {
    MsgBox("숫자: " i)
    i := i + 1 ; i에 1씩 더하기
}

예제 2: 무한 반복 만들기 (주의 사항)

While (true) {
    MsgBox("무한 반복 중입니다.")
}

주의: 위 예제는 무한 반복이 발생하여, 프로그램을 강제 종료해야만 멈춥니다.
프로그램이 멈추는 상황을 방지하기 위해 반드시 break 조건을 추가해야 합니다.

예제 3: break 조건을 추가한 무한 반복

counter := 0

While (true) {
    counter := counter + 1
    MsgBox("현재 반복 회차: " counter)

    if (counter = 5) {
        MsgBox("5번째 반복이므로 종료합니다.")
        break ; 반복문 종료
    }
}

예제 4: 사용자 입력을 통한 종료 조건

While (true) {
    input := InputBox("종료하려면 'exit'를 입력하세요:", "무한 반복 제어")
    if (input = "exit") {
        MsgBox("프로그램을 종료합니다.")
        break ; 반복문 종료
    }
    MsgBox("당신이 입력한 값: " input)
}

예제 5: 키보드 입력으로 무한 반복 종료하기

While (true) {
    if (GetKeyState("Esc", "P")) {
        MsgBox("ESC 키가 눌려서 반복을 종료합니다.")
        break ; 반복문 종료
    }

    MsgBox("무한 반복 중입니다.")
}

3. For 반복문

For 반복문컬렉션(배열, 객체)의 모든 요소를 하나씩 반복 처리합니다.

구문

For 변수 in 컬렉션 {
    ; 컬렉션의 각 요소에 대해 실행할 코드
}

예제 1: 배열의 모든 요소 출력하기

fruits := ["사과", "바나나", "딸기"]

For fruit in fruits {
    MsgBox("과일 이름: " fruit)
}

예제 2: 객체의 키-값 쌍 출력하기

person := {name: "홍길동", age: 25, city: "서울"}

For key, value in person {
    MsgBox("키: " key ", 값: " value)
}

예제 3: 문자열의 각 문자 출력하기

text := "Hello"

For char in StrSplit(text) {
    MsgBox("문자: " char)
}

무한 반복에서 break 조건이 필요한 이유

무한 반복에서 break 조건을 반드시 추가해야 하는 이유프로그램의 무한 실행으로 인한 시스템 리소스 고갈과 강제 종료의 불편함을 방지하기 위해서입니다.

1. 무한 반복의 위험성

  • CPU와 메모리 자원 낭비
    무한 반복문이 종료되지 않으면, 프로그램은 계속해서 코드를 반복 실행합니다.

  • 프로그램 강제 종료 필요
    강제 종료를 해야 하므로 작업 중인 데이터가 손실될 가능성이 높습니다.

  • 디버깅의 어려움
    실수로 무한 반복을 작성하면, 디버깅 도구가 중단되지 않는 상황이 발생할 수 있습니다.

2. break 조건의 필요성

  • 예기치 않은 무한 반복 방지
    개발자가 실수로 종료 조건을 빠뜨리는 경우가 많기 때문에 명확한 break 조건을 추가하면 버그를 방지할 수 있습니다.

  • 안정성과 예측 가능성 보장
    특정 조건이 만족되었을 때 반복을 종료하는 것은, 예측 가능한 프로그램 흐름을 보장합니다.

반복문 요약

반복문 사용 목적 구문
Loop 고정된 횟수만큼 반복 Loop(횟수) { 코드 }
While 조건이 참일 때만 반복 While (조건) { 코드 }
For 컬렉션(배열, 객체)의 모든 요소 반복 For 변수 in 컬렉션 { 코드 }

정리

  1. 반복문은 프로그램의 효율성을 높이는 도구로, 코드의 중복을 줄이고 작업을 자동화할 수 있습니다.
  2. Loop정해진 횟수만큼 반복하며, A_Index로 현재 반복 회차를 추적할 수 있습니다.
  3. While조건이 true일 때만 반복되며, 조건이 false가 되면 자동으로 종료됩니다.
  4. For배열, 객체, 문자열의 각 요소에 대해 하나씩 접근하는 반복문입니다.
  5. break는 반복문을 즉시 종료하고, continue는 현재 반복을 건너뛰고 다음 반복을 실행합니다.
  6. 무한 반복에서는 반드시 break 조건을 추가해야 하며, 그렇지 않으면 프로그램이 멈추는 상황이 발생할 수 있습니다.
  7. break 조건으로는 카운트 기반 종료, 사용자 입력, 키보드 입력(ESC 키) 등의 다양한 방식이 사용됩니다.
Subscribe
Notify of
guest
0 댓글
Inline Feedbacks
View all comments