(9) 제어문 - 분기문
※ 제어문 : 주어진 상황에 따라 명령문들의 수행 경로를
달리하거나 반복해야 하는 경우에 사용.
*제어문의 종류!
분기문과 반복문으로 나뉨
1) 분기문 : If문과 Select-case 문, Goto 문이 있다.
2) 반복문 : For-Next 문과 For Each-Next 문,
Do Loop 문이 있으며
Do Loop 문에는 Do {While | Until} - Loop 문과
Do - Loop {While | Until} 문이 있음
※ 분기문 : 다양한 수행 경로 중
조건에 따라 수행 경로를 변경
혹은 분기하기 위한 명령문
(If문, Select Case문, Goto문)
휴대폰 판매점에서 사은품 행사가
진행중이라고 하자.
분기의 예시.
분기문은
ⅰ) 조건이 하나일 때
=> 단일 If 문
ⅱ) 조건이 둘 이상일 때
=> 다중 If 문, 중첩 If 문 Select-case 문
ⅲ) 무조건 분기할 때
=> Goto 문
이렇게 세 가지로 나뉜다.
ㆍIf 문
① 단일 If 문 : 하나의 조건에 따라 수행할
명령을 결정하는 분기문으로 사용
<사용 형식>
If 조건식 Then
문자1
문장2
...
End If
<설명>
만약(If)애 조건식이 참이면 명령문(문장1,문장2,...)을
수행하고, 거짓이면 If문을 종료하여 End If문 다음 문장 수행
<표현 형식>
If 조건 Then 문장1 : 문장2
ㆍIF-THEN-ELSE 문
: C언어의 If-Else문
<사용 형식>
if 조건식 then
문장1
문장2
...
else
문장a
문장b
...
end if
<설명>
조건식이 참이면 명령문 if의
[문장1, 문장2, ...]을 수행하고
빠져나가고,
거짓이면 else 이하의 문장들을
수행하고 end if를 만나 빠져나간다.
<표현 형식>
If 조건 Then 문장1 Else 문장2
'참'일 때 Then이하의 문장을 실행!
'거짓'일 때 Else이하의 문장을 실행!
ㆍ다중 If 문
: C언어의 ElseIf문
<사용 형식>
if 조건1 then
문장1
...
elseif 조건2 then
문장a
...
[else
문장A
...]
end if
<설명>
조건1이 참이면 명령문1
[문장1, ...]을 수행하고,
조건2가 참이면 명령문2
[문장a, ...]을 수행한다.
모든 조건이 거짓이면
명령문3 [문장A,...]를 수행한다.
C언어 공부할 때 배웠던 부분이다.
빨간색 If문이 처음 실행되고
'참'이면 문장1을 실행하지만
'거짓'이면 빨간Else이하의 문장 실행!
= 파란 If문 실행 후 '참'이면 문장a 실행하지만
'거짓'이면 파란 Else이하의 문장 실행!
= 보라 If문 실행 후 '참'이면 문장A 실행하지만
'거짓'이면 Else이하의 문장α 실행 후
end if를 만나 빠져나옴.
즉! elseif는
else와 if를 따로 떼어 보자!
ㆍSelect-Case 문
: C언어의 Case문
<사용 형식>
Select Case 변수
Case 상수1
문장1
...
Case 상수2
문장a
...
[Case Else
문장A
...]
End Select
<설명>
변수 값이 상수1이면
명령문1 [문장1, ...]을 수행하고,
변수 값이 상수2이면
명령문2 [문장2, ...]을 수행한다.
변수 값이 어떤 상수 값과도
같지 않으면 명령문3 [문장A, ...]를 수행한다.
<표현 형식>
Select Case 변수
Case 상수
문장
...
[Case Else
문장
...]
End Select
상수 값에는 숫자, 문자, 문자열도 가능.
Case 상수1 [, 상수2, 상수3, ...]
ex) Case 100,99,98,97,96,95,94,93,92,91,90
Case 상수1 To 상수n
ex) Case 90 To 100
Case Is op 상수
ex) Case Is >= 90
Case Is op 상수1 and/or 변수 op 상수2
ex) Case Is >= 90 And score <= 100
※ OP = Operation (관계연산자)
ㆍGoTo문
: 컴파일의 흐름을 거스르기 때문에
많이 사용하지 않음
(거의 사용 안한다고 함.
= 프로그램 꼬일 수 있음)
<사용 형식>
레이블 명 : 현재 위치를 레이블 명으로 지정.
Goto 레이블 명 : 레이블 명 위치로 무조건 이동.
GoTo 레이블
On 변수 GoTo 레이블, ...
On Error GoTo 레이블
<표현 형식>
On 변수 GoTo 상수1, 상수2
상수1 :
문장
GoTo 상수3
상수2 :
문장
상수3 :
문장
<설명>
변수의 값이 상수1이면
상수1 레이블로 이동 후 문장을 수행하고
상수3 레이블로 이동 후
상수3 레이블의 문장 수행.
변수의 값이 상수2이면
상수2 레이블로 이동해서 문장 수행.
※ 상수 = 레이블 명