04 제어문
제어문(Control Statement)
제어문(Control Statement)은 프로그램의 실행 흐름을 제어하는 구조입니다. 기본적으로 프로그램은 위에서 아래로 순차적으로 실행되지만, 제어문을 사용하면 조건에 따라 실행 흐름을 변경하거나 특정 코드를 반복 실행할 수 있습니다. 제어문은 프로그램의 논리를 결정하는 핵심 요소입니다.
제어문의 주요 개념
조건 제어(Conditional Control): 조건에 따라 실행 흐름을 결정.
예:
if-else
,switch
반복 제어(Iterative Control): 특정 작업을 반복해서 수행.
예:
for
,while
,do-while
분기 제어(Jump Control): 프로그램의 실행 흐름을 조기에 종료하거나, 특정 지점으로 이동.
예:
break
,continue
,return
제어문의 역할
유연성: 조건에 따라 프로그램의 흐름을 유동적으로 제어할 수 있습니다.
재사용성: 반복문을 통해 같은 코드를 여러 번 실행하여 코드 중복을 줄이고 효율성을 높일 수 있습니다.
복잡한 로직 처리: 여러 조건이나 상태에 따라 다르게 동작하는 복잡한 로직을 처리할 수 있습니다.
조건문
조건에 따라 코드를 실행할 수 있게 해주는 기본적인 제어문입니다. 이 제어문들은 프로그램의 흐름을 제어하는 데 매우 중요한 역할을 하며, 특정 조건이 참인지 여부에 따라 실행할 코드 블록을 결정합니다.
if 문
if
문은 조건이 참(true
)일 때 특정 코드 블록을 실행합니다. 조건이 거짓(false
)이면 해당 코드 블록을 건너뜁니다.
예를 들어:
위 코드에서 num
이 5보다 크므로 조건식이 참(true
)이고, "num은 5보다 큽니다."가 출력됩니다.
else 문
if
문과 함께 else
문을 사용하면 조건이 거짓일 때 실행할 코드 블록을 정의할 수 있습니다. 즉, if
조건이 만족되지 않을 경우 else
블록이 실행됩니다.
예를 들어:
여기서는 num
이 5보다 크지 않기 때문에 "num은 5보다 작거나 같습니다."가 출력됩니다.
else if 문
else if
문은 추가적인 조건을 검사할 때 사용됩니다. 즉, 여러 조건을 단계적으로 검사할 수 있습니다. if
문 다음에 원하는 만큼의 else if
문을 사용할 수 있으며, 해당 조건이 참일 경우 그에 맞는 코드 블록이 실행됩니다.
예를 들어:
IfElseExample.java
여기서 score
가 85이므로 "B 등급입니다."가 출력됩니다.
요약
if
: 조건이 참일 때만 해당 코드 블록을 실행.else
:if
조건이 거짓일 때 실행.else if
: 추가적인 조건을 검사하며, 원하는 만큼 여러 번 사용할 수 있음.
이러한 제어문을 통해 프로그램의 논리적 흐름을 제어할 수 있으며, 다양한 조건에 따라 다르게 동작하는 프로그램을 만들 수 있습니다.
Switch문
switch
문은 여러 개의 if-else if
문을 사용하는 것보다 가독성이 좋고, 관리가 용이할 때 많이 사용됩니다. 특히 값이 명확하게 나뉠 때 유용합니다.
switch 문의 기본 구조
변수:
switch
에서 비교할 값입니다. 이 값은 정수형, 문자형, 문자열 등의 타입을 가질 수 있습니다.case 값:
switch
문에서 비교할 값입니다. 각case
는변수
의 값과 일치할 경우 실행됩니다.break:
break
문은 해당case
블록을 실행한 후switch
문을 빠져나가도록 합니다.break
를 사용하지 않으면 다음case
블록도 연속으로 실행됩니다(이를 fall-through라고 합니다).default: 어떤
case
에도 해당되지 않는 경우 실행될 블록입니다.default
는 선택 사항이며, 반드시 사용할 필요는 없습니다.
switch 문의 동작 방식
switch
에 주어진 변수의 값이 각case
의 값과 비교됩니다.일치하는
case
블록이 있으면 그 블록의 코드가 실행됩니다.각
case
블록이 끝날 때break
문이 있으면,switch
블록을 빠져나갑니다.break
가 없으면 다음case
블록으로 넘어가고, 그 안의 코드도 실행됩니다.일치하는
case
가 없으면,default
블록이 실행됩니다.
switch 문 예시
SwitchExample.java
위 코드에서
day
가 3이므로 "수요일"이 출력되고,break
문에 의해switch
블록을 빠져나갑니다.
fall-through (연속 실행)
FallThroughExample.java
break
문을 사용하지 않으면 다음 case
로 넘어가서 실행됩니다. 이를 fall-through라고 합니다. 예를 들어:
위 코드에서 day
가 2라면, "화요일", "수요일", "주말"이 모두 출력됩니다. 이는 case 2
블록 안에 break
문이 없어서 발생한 fall-through입니다. 일반적으로 의도된 경우가 아니라면 break
문을 꼭 사용하는 것이 좋습니다.
switch 문에서 허용되는 값 타입
Java의 switch
문에서는 다음과 같은 타입의 값을 사용할 수 있습니다:
정수형:
byte
,short
,int
,char
문자열:
String
(Java 7부터 지원)열거형:
enum
예를 들어, 문자열을 사용하는 switch
문:
StringSwitchExample.java
위 예시에서는 fruit
변수가 "apple"
이므로 "사과입니다."가 출력됩니다.
switch 문과 if-else 문 비교
사용 상황
명확한 값 비교(정수, 문자, 문자열)
복잡한 조건 비교
가독성
여러 값에 대한 비교가 명확하고 간결함
다양한 조건을 처리 가능
성능
많은 경우에 비교 시 더 빠를 수 있음
단순하거나 복잡한 조건에 유리
유연성
범위 비교나 복합 조건 사용 불가
범위, 논리 조건 등을 사용 가능
for문
for
문은 특정 코드를 반복 실행할 때 사용되는 제어문입니다. for
문은 주로 반복 횟수가 명확할 때 사용되며, 반복 조건과 증감식을 간결하게 작성할 수 있다는 장점이 있습니다. for
문을 사용하면 코드가 깔끔하고 읽기 쉬워지며, 반복 작업을 처리할 때 유용합니다.
기본 구조
초기화: 반복문이 시작되기 전에 한 번만 실행되는 구문입니다. 주로 반복 횟수를 제어하는 변수를 선언하고 초기화합니다.
조건식: 반복문이 실행될 조건을 정의합니다. 이 조건이
true
인 동안for
문의 코드 블록이 실행되며, 조건이false
가 되면 반복문이 종료됩니다.증감식: 매 반복이 끝날 때마다 실행되는 구문으로, 보통 반복 제어 변수를 증가하거나 감소시키는 역할을 합니다.
동작 방식
초기화
구문이 먼저 실행됩니다. (반복 제어 변수가 설정됨)조건식
이 평가되어true
인 경우 반복문을 실행합니다. 조건식이false
이면 반복문을 종료합니다.반복문 블록이 실행된 후
증감식
이 실행됩니다.다시
조건식
이 평가되고,true
이면 다시 반복됩니다.false
이면 반복이 종료됩니다.
예시 1: 기본적인 for문
ForExample.java
초기화:
int i = 0
(반복 변수를i
로 선언하고 0으로 초기화)조건식:
i < 5
(i가 5보다 작을 때만 반복)증감식:
i++
(반복이 끝날 때마다i
를 1씩 증가)
위 코드는 i
의 값이 0부터 4까지 출력되며, 총 5번 반복됩니다.
예시 2: for문을 이용한 배열 순회
ForExample.java
초기화:
i = 0
(배열의 첫 번째 요소부터 시작)조건식:
i < numbers.length
(배열의 길이보다 작을 때만 반복)증감식:
i++
(다음 인덱스로 이동)
위 코드는 배열 numbers
의 각 요소를 출력합니다.
for-each 문 (향상된 for문)
Java에서는 배열이나 컬렉션을 순회할 때 더 간결한 방식으로 사용할 수 있는 향상된 for
문이 있습니다. 이를 for-each
문이라고 부르며, 요소를 하나씩 자동으로 가져와서 반복하는 방식입니다.
구조
예시: for-each 문
ForExample.java
위 코드는 배열 numbers
의 각 요소를 순서대로 가져와 출력합니다. 결과는 위의 일반 for
문과 동일합니다.
for-each
문은 배열이나 컬렉션의 모든 요소를 순회할 때 특히 유용하며, 코드가 더 간결해집니다. 그러나 인덱스에 접근해야 하거나 반복 제어가 필요한 경우에는 일반 for
문을 사용하는 것이 더 적합합니다.
중첩된 for문 (Nested for Loop)
for
문은 중첩하여 사용할 수 있습니다. 이 경우, 외부 반복문이 한 번 실행될 때마다 내부 반복문은 전체를 반복합니다.
예시: 중첩된 for문
ForExample.java
위 코드에서는 i
가 1일 때 j
는 1부터 2까지 반복되고, i
가 2일 때도 마찬가지로 j
는 1부터 2까지 반복됩니다. 결과는 다음과 같습니다.
break와 continue
for
문에서 반복을 제어하기 위해 break
와 continue
같은 분기문을 사용할 수 있습니다.
ForExample.java
break:
for
문을 즉시 종료하고 빠져나옵니다.continue: 현재 반복을 건너뛰고 다음 반복으로 넘어갑니다.
무한 루프
for
문에서 종료 조건을 설정하지 않으면 무한히 반복될 수 있습니다. 이는 주로 조건이 잘못 설정되었거나, 명시적으로 무한 루프가 필요할 때 발생합니다.
위 예시는 종료 조건이 없으므로 무한 루프가 됩니다.
while
while
문은 주어진 조건이 참(true
)인 동안 계속해서 코드를 반복 실행하는 제어문입니다. while
문은 반복 횟수가 명확하지 않거나, 조건이 동적으로 변할 때 주로 사용됩니다.
기본 구조
조건식: 반복이 계속될 조건을 정의합니다. 조건식이
true
이면 반복문 내부의 코드가 실행되고,false
이면 반복문이 종료됩니다.조건식은 반복할 때마다 평가되며, 조건이 만족되는 동안 반복이 계속됩니다.
동작 방식
먼저
조건식
이 평가됩니다.조건식
이 참(true
)이면 코드 블록을 실행합니다.코드 블록을 실행한 후 다시
조건식
이 평가됩니다.조건이 거짓(
false
)이면 반복문을 종료하고 다음 코드로 넘어갑니다.
예시 1: 기본적인 while문
WhileExample.java
이 코드는 i
가 5보다 작을 동안 반복됩니다. i
는 각 반복에서 1씩 증가하므로 0부터 4까지 출력됩니다.
초기화:
i
가 0으로 시작합니다.조건식:
i < 5
(i가 5보다 작을 때만 반복)증감식:
i++
(i를 1씩 증가)
예시 2: 무한 루프 (Infinite Loop)
WhileExample.java
while
문의 조건식이 항상 참(true
)일 경우 반복문은 무한히 실행됩니다. 이는 의도적으로 사용될 수 있으나, 보통은 종료 조건을 잘못 설정할 때 발생할 수 있습니다.
WhileExample.java
위 코드는 true
조건 때문에 무한히 반복되므로, 강제 종료되지 않는 한 프로그램은 계속해서 "무한 루프"를 출력합니다. 실제로 무한 루프를 사용할 때는 break
문과 같은 제어문을 통해 적절한 시점에 반복문을 종료해야 합니다.
while문과 break
break
문을 사용하면 조건이 만족되지 않더라도 반복문을 즉시 종료할 수 있습니다.
예시: break를 이용한 반복 종료
WhileExample.java
이 코드는 i
가 5일 때 반복문을 종료합니다. 따라서 0부터 5까지만 출력됩니다.
while문과 continue
continue
문을 사용하면 현재 반복을 건너뛰고, 다음 반복을 진행할 수 있습니다.
예시: continue를 이용한 반복 건너뛰기
WhileExample.java
이 코드는 i
가 짝수일 때 출력하지 않고, 홀수일 때만 출력합니다.
do-while 문과 비교
while
문과 비슷한 구조를 가진 반복문 중 하나가 do-while 문입니다. 두 반복문의 차이는 조건식 평가 시점입니다.
while 문: 조건식을 먼저 평가한 후, 참일 때만 코드를 실행합니다. 따라서 조건이 거짓이면 반복문이 한 번도 실행되지 않을 수 있습니다.
do-while 문: 먼저 코드를 실행한 후 조건식을 평가합니다. 따라서 조건이 거짓이더라도 한 번은 반드시 실행됩니다.
do-while 문 기본 구조
예시: do-while 문
WhileExample.java
위 코드는 i
가 5보다 작을 때까지 실행됩니다. do-while
문에서는 코드가 먼저 실행되기 때문에, while
문과는 달리 조건이 거짓이어도 한 번은 실행됩니다.
while문과 for문 비교
주요 용도
반복 횟수가 명확하지 않을 때 사용
반복 횟수가 명확할 때 사용
조건식 위치
반복문이 시작되기 전에 조건을 평가
초기화, 조건식, 증감식을 한 줄로 작성
구조
조건식만으로 반복 제어
초기화, 조건, 증감식을 포함한 명시적 구조
가독성
조건만 평가하면 되기 때문에 간결할 수 있음
여러 요소를 한 줄로 표현해 명확하고 간결
Last updated