[R] 프로그램 흐름제어 (1) - 조건문

[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학점"
호쌤(이광호)'s Picture

About 호쌤(이광호)

메가스터디IT아카데미에서 Java, Spring, Python, Frontend 등을 강의하는 IT 전문 강사이자 프리렌서 개발자 입니다.
https://www.youtube.com/@hossam-codingclub

Seoul, Korea http://www.hossam.kr