[R] 프로그램 흐름제어 (1) - 조건문
조건문은 주어진 조건이 참인 경우에만 프로그램 구문을 실행하도록 설정하는 문법 구조를 말합니다. 조건문을 사용하면 프로그램이 선택적으로 실행되도록 할 수 있습니다.
#01.if 문
주어진 조건이 참인 경우에만 수행되는 문법적 표현.
1) 기본 구문 형식
if (조건식) {
... 조건이 참인 경우에 수행될 명령들 ...
}
2) 논리값을 사용한 경우
조건이 TRUE
인 경우 {...}
안이 실행된다.
논리값을 조건으로 갖는 if문
# 일반 구문
print("배고픈데")
# 조건문에서 사용할 조건값 생성
have_money <- TRUE
#have_money <- FALSE
if (have_money) {
print("식당에서")
}
# 일반 구문
print("밥을 먹자")
💻 출력결과
[1] "배고픈데"
[1] "식당에서"
[1] "밥을 먹자"
2) 숫자형 값을 사용한 경우
숫자형인 경우 0은 거짓, 0이 아닌 모든 수는 참
숫자형 변수에 대한 조건 처리
money <- 10000L
#money <- 0
if (money) {
print("택시를 타고")
}
print("집에가자")
💻 출력결과
[1] "택시를 타고"
[1] "집에가자"
3) 비교식을 사용한 조건문
비교식의 결과가 참인 경우 {...}
안을 실행한다.
비교식을 사용한 if문
money <- 12000
# -> money가 5000 이상인 경우
if (money >= 5000) {
k <- money-5000
sprintf("선물을 사고 %d원 남는다.", k)
}
💻 출력결과
'선물을 사고 7000원 남는다.'
4) 논리식을 사용한 조건문
AND(&&
) 연산
- AND 연산은 모든 값이 참인 경우만 결과가 참이고, 그 이외의 경우는 거짓으로 판별한다.
AND 연산의 결과가 참인 경우
x <- TRUE
y <- TRUE
# AND(&&) 연산은 모든 값이 TRUE인 경우에만 결과가 TRUE
if (x && y) {
print("주어진 조건은 참 입니다.")
}
💻 출력결과
[1] "주어진 조건은 참 입니다."
AND 연산의 결과가 거짓인 경우
x <- TRUE
y <- FALSE
# AND(&&) 연산은 하나라도 거짓이 포함되어 있다면 결과가 거짓이므로
# 아래의 조건문은 실행되지 않는다.
if (x && y) {
print("주어진 조건은 참 입니다.")
}
💻 출력결과
출력결과 없음
OR (||) 연산
- OR 연산은 하나라도 참이면 전체 결과가 참이다.
- 모든 값이 거짓인 경우만 전체 결과가 거짓이다.
OR 연산의 결과가 참인 경우에 대한 if문
x <- TRUE
y <- FALSE
# OR(||) 연산은 하나라도 참이 포함되어 있다면 결과가 참이므로
# 아래의 조건문은 실행된다.
if (x || y) {
print("주어진 조건은 참 입니다.")
}
💻 출력결과
[1] "주어진 조건은 참 입니다."
OR 연산의 결과가 거짓인 경우에 대한 if문
x <- FALSE
y <- FALSE
# OR(||) 연산은 모든 값이 거짓인 경우에만 결과가 거짓이 되므로 아래의 조건문은 실행되지 않는다.
if (x || y) {
print("주어진 조건은 참 입니다.")
}
💻 출력결과
출력결과 없음
NOT(!) 연산
!
연산자는 참이나 거짓을 부정하여 반대의 결과로 만든다.
참을 부정하는 조건에 대한 if문
a <- TRUE
if (!a) {
print("Hello World")
}
💻 출력결과
출력결과 없음
거짓을 부정하는 조건에 대한 if문
b <- FALSE
if (!b) {
print("헬로월드")
}
💻 출력결과
[1] "헬로월드"
AND 논리식에 대한 부정
x <- TRUE
y <- FALSE
# TRUE && FALSE 는 거짓이지만 그 결과를 부정했으므로 결과는 참이된다.
if ( !(x && y) ) {
print("주어진 조건은 참 입니다.")
}
💻 출력결과
[1] "주어진 조건은 참 입니다."
OR 논리식에 대한 부정
x <- TRUE
y <- FALSE
# TRUE || FALSE 는 참이지만 그 결과를 부정했으므로 결과는 거짓이된다.
if ( !(x || y) ) {
print("주어진 조건은 참 입니다.")
}
💻 출력결과
출력결과 없음
#02.if ~ else 문
- if문은 조건이 참인 경우에만 수행되고 조건이 거짓인 경우는 수행되지 않는다.
- if문 뒤에 else문을 덧붙여 조건이 거짓인 경우에 수행되는 구문을 추가할 수 있다.
- else문은 if문 뒤에만 위치할 수 있고 독립적으로는 존재할 수 없다.
그렇지 않으면
age <- 19
if (age > 19) {
print("성인입니다.")
} else {
print("성인이 아닙니다.")
}
💻 출력결과
[1] "성인이 아닙니다."
#03.if ~ else if ~ else 문
- 여러가지 경우의 수를 나열함
- 순차적으로 조건을 판별하면서 가장 처음 만나는
참
인 조건의 블록을 수행하고 빠져나감 else if
블록은 필요한 만큼 나열 가능else
블록은 필요하지 않다면 생략 가능
경우의 수를 나열한 학점 판별 조건문
point <- 72
if (point > 90) {
print("A학점")
} else if (point > 80) {
print("B학점")
} else if (point > 70) {
print("C학점")
} else if (point > 60) {
print("D학점")
} else {
print("F학점")
}
💻 출력결과
[1] "C학점"