(4주차) 9월30일
if, if ~ else, 중첩 if ~ else
-
(1/1) if문
-
(2/4) if - else 문
-
(3/4) 중첩 (1)
-
(4/4) 중첩 (2), 과제설명
-
아래와 같이 if (조건문) 표현식
의 형태로 사용한다. (표현식은 컴퓨터에게 내가 내리는 명령어이다)
a= 2
if (a>0) print('a는 양수')
-
space를 임의로 넣어도 상관없다.
a=10
if (a>0) print('a는 양수')
a=10
if (a>0) print('a는 양수')
-
enter를 넣어도 상관없긴하다.
a=10
if (a>0)
print('a는양수')
a=10
if (a>0)
print('a는양수')
a=10
if
(a>0)
print('a는양수')
-
컴퓨터에게 내릴 명령이 2개이상일 경우? $\to$ {}
을 이용한다.
a=10
if (a>0)
print('a는양수')
print('양수인 a의 값은 아래와 같다.')
print(a)
a=-10
if (a>0)
print('a는양수') ##
print('양수인 a의 값은 아래와 같다.')
print(a)
- 에러메시지가 뜨지는 않았지만 잘못된 코드이다.
a=10
if (a>0){
print('a는양수')
print('양수인 a의 값은 아래와 같다.')
print(a)
}
a=-10
if (a>0){
print('a는양수') ##
print('양수인 a의 값은 아래와 같다.')
print(a)
}
-
아래와 같이 중괄호를 묶어도 상관없다.
a=10
if (a>0)
{
print('a는양수')
print('양수인 a의 값은 아래와 같다.')
print(a)
}
a=10
if (a>0)
{
print('a는양수')
print('양수인 a의 값은 아래와 같다.')
print(a)}
a=10
if (a>0){
print('a는양수')
print('양수인 a의 값은 아래와 같다.')
print(a)
}
- 위와같이 코드를 작성하면 안된다.
-
if (조건문) 표현식
a=c(10,-10)
a
a>0
- 이 문장이 참일까 거짓일까? $\to$ R은 첫번째 원소가 참이면 참이라고 판단한다.
a=c(10,-10)
if (a>0){
print('a는 양수이다')
print('양수인 a의 값은 아래와 같다.')
print(a)
}
- 이러한 코드를 작성하지 말자.
-
아래와 같이 if (조건문) 표현식1 else 표현식2
의 형태로 실행한다.
x=2
if (x>0) log(x) else print('x는양수이어야함')
x=1
if (x>0) log(x) else print('x는양수이어야함')
x=0
if (x>0) log(x) else print('x는양수이어야함')
x=-1
if (x>0) log(x) else print('x는양수이어야함')
-
if
문과 if~else
문은 다른기능이다.
x=10
if (x>0)
log(x)
else
print('x는 양수이어야함')
- ?? 왜 에러가 나는가?
-
아래는 잘 실행된다.
if (x>0) log(x) else print('x는양수이어야함')
if (x>0) log(x) else
print('x는양수이어야함')
-
보통은 아래와 같이 사용한다.
x=0
if(x>0){
log(x)
}else{
print('x는 양수이어야함')
}
-
결국 한줄에 다 말하거나, {}
를 적절하게 활용하면 된다.
-
아래와 같은것들도 가능
x=0
if (x>0){
log(x)
}else{
print('x는 양수이어야함')
}
-
아래는 불가능 (무조건 중괄호를 친다고 해결되는것이 아님)
x=0
if (x>0){
log(x)
}
else{
print('x는 양수이어야함')
}
-
결국 아래와 같은 코드를 권장함. (주피터보다 Rstudio가 더 쓰기편하다)
x=0
if(x>0){
log(x)
}else{
print('x는 양수이어야함')
}
-
예제시작
x=10
if (x>0){
print(log(x))
}else{
if(x==0){
x=1e-100
print('x=0에서는 log(x)가 정의되지 않으므로 x=1e-100의 값으로 바꾸어 계산하겠습니다.')
log(x)
}else{
print('x가음수입니다.')
}
}
x=0
if (x>0){
print(log(x))
}else{
if(x==0){
x=1e-100
print('x=0에서는 log(x)가 정의되지 않으므로 x=1e-100의 값으로 바꾸어 계산하겠습니다.')
log(x)
}else{
print('x가음수입니다.')
}
}
x=-1
if (x>0){
print(log(x))
}else{
if(x==0){
x=1e-100
print('x=0에서는 log(x)가 정의되지 않으므로 x=1e-100의 값으로 바꾸어 계산하겠습니다.')
log(x)
}else{
print('x가음수입니다.')
}
}
-
보통은 아래와 같이 함수 형태로 사용한다. (중괄호지옥 $\to$ Rstudio가 좀더 편리함)
mylogfun<-function(x){
if (x>0){
print(log(x))
}else{
if(x==0){
x=1e-100
print('x=0에서는 log(x)가 정의되지 않으므로 x=1e-100의 값으로 바꾸어 계산하겠습니다.')
log(x)
}else{
print('x가음수입니다.')
}
}
}
mylogfun(0)
mysqrtfun()를 만들고
(1) x>=0 --> sqrt(x)
(2) x<0 --> 'x는 양수이어야합니다'
mysqrtfun(-2), mysqrtfun(2) 의 출력결과를 스크린샷으로 제출