Swift랑 친해지기/Swift 책보면서 정리해보기

if조건문 - 스위프트

데브킹덕 2022. 1. 17. 15:34

조건문 = 분기문(Branch Statement)

프로그램 내에서 하나 또는 그 이상의 조건값에 따라

특정 구문을 실행하도록 프로그램의 흐름을 분기하는 역할을 함

 

실행방식에 따라 크게 세가지로 나눴음

 

1. if

2. gaurd

3. switch

 

이중에 if문에 대해서 알아볼거임

스타또

 

가장 기본적인 형태의 if문 

if<조건식>{
	<실행할 구문>
}

조건식에는 반드시 Bool타입의 참, 거짓을 판단할 수 있는 구문이어야 함

*스위프트는 참, 거짓을 0,1로 사용할 수 없음

if구문 예제

 

그러면 미성년자를 표현하는 방법은 알았는데 

성년을 표현하고 싶으면 어떻게 표현을 해야할까??

아래와 같이 if문을 연달아 사용해 보았다.

if문을 두번 사용해서 범위를 합쳤을 경우에 서로 겹치는 부분이 있을 수 있고, 

합쳐서 전체 범위를 뜻할 수 없어 완벽한 여집합을 만들 수 없다.

 

var adult = 19 
var age = 21

if age < adult{
	print("삐빅 미성년자입니다")
}

if age >= adult{
	print("성인입니다")
}

 

이러한 문제점을 만족시키기 위해  스위프트에서 if ~ else문을 제공해준다.

 

if ~ else 

조건식이 참일때에는 A구문을, 참이 아니라면 B구문을 실행하고 싶을때

if 조건식이 참이면 if를 실행하고 참이 아니면 else구문 실행 

결론은 무조건 하나는 실행하겠다는 뜻이다.

if<조건식>{
	<조건이 참일때 실행할 구문>
}else{
	<조건이 거짓일 때 실행할 구문>
}

 

따라서 if ~ else 구문을 이용하여 다음과 같이 미성년자 구분하는 코드를 만들 수 있음

var adult = 19 
var age = 21

if age < adult{
	print("삐빅 미성년자입니다")
}else{
	print("성인입니다")
}

 

자 그럼 이번에는 남자미성년자, 여자 성년자, 여자 미성년자, 남자 성년자를 구분하고 싶다.

그러면 if문 안에 if문을 사용하게 되면 되지 않을까 싶다.

그래서 if구문은 중첩을 사용할 수 있다. 

 

if구문 중첩

var adult = 19 
var age = 21
var gender = "M"

if age < adult{
	if gender == "M"{
    	print("삐빅!! 남자인 미성년자입니다")
    }else{
	print("삐빅!! 여자인 미성년자입니다")
    }
}

if age >= adult{
	if gender == "M"{
    	print("남자성인입니다")
    }else{
	print("여자성인입니다")
    }
}

*하지만 3번 이상의 중첩 구문은 사용하지 않는게 좋음 

(가독성을 해치고 코드사이 의존관계를 심화시킴)

 

 

만약에 해외에서 보장해주는 제3의 성을 가지신 분들은 어떻게 코드를 짜야할까??

else if 구문을 이용하여 해결가능

- 비교할 값이 많을때 사용하면 좋음

- 일치하는 조건식이 있으면 조건문을 종료함

but. if ~ if 구문은 조건식을 찾아도 모든 조건식 비교후 종료

(불필요한 리소스 낭비)

if<조건1>{
	<조건1이 참일때 실행하는 구문>
}else if<조건2>{
	<조건2이 참일때 실행하는 구문>
}else
	<조건 1,2가 전부 만족하지 않았을 경우 실행하는 구문>

else if 문은 if조건절을 만족하지 못한 경우에 호출이 됨

때문에 자신의 조건식을 만족하는지 먼저 봐야 됨

 

if gender == "M"{
	print("남자입니다")
}else if gender == "F{
	print("여자입니다")
}else{
	print("남자와 여자에 속하지 않습니다")
}

gender가 "M"이 아닌경우에만 else if 구문이 실행이 되고 F가 맞으면 코드블록이 실행되고

아니면 else구문이 실행됨

 

다음시간은 guard 구문....