“조건”의 자리에는 결과가 참 또는 거짓이 나와야함
if "조건" {
"조건"이 참일때 실행할 문장
} else {
"조건"이 참이 아닐때 실행할 문장
}
if number <= 10 {
print("참입니다)
}
아래 코드는 잘못된 문장이다, 만약에 8을 넣으면 결과가 "0또는 양수입니다."가 출력된다. 즉, 첫번째 조건이 만족하는 순간 문장을 실행하고 조건문을 빠져나가기때문에 아래문장을 거치지 않는다
var num = -7
if num >= 0 {
print("0 또는 양수입니다.")
} else if num % 2 == 0 {
print("양의 짝수입니다.")
} else if num % 2 == 1 {
print("양의 홀수입니다.")
} else {
print("음수입니다.")
}
//결과 : "음수입니다."
//-7을 2로 나눈 나머지는 -1이 나오는데 나머지가 음수면 짝수나 홀수를 판단 할 수가 없게된다
올바르게 수정해본다면 아래처럼 수정할 수 있다.
if num >= 0 {
print("0 또는 양수입니다.")
if num % 2 == 0 {
print("짝수입니다.")
} else if num % 2 == 1 {
print("홀수입니다.")
}
} else {
print("음수입니다.")
}
아래코드는 잘못된 문자이다. 범위가 큰 문장이 먼저 왔기때문에 조건이 잘 적용되지 않는다
70점 이상은 범위가 넓기때문에 70점 이상인 점수들중에 80점이상인지 90점이상인지를 판별하지 못한다
var score = 100
if score >= 70 {
print("70점이상입니다.")
} else if score >= 80 {
print("80점이상입니다.")
} else if score >= 90 {
print("90점이상입니다.")
} else {
print("70점미만입니다.")
}
올바르게 수정해본다면 아래처럼 수정할 수 있다
if score >= 90 { // 범위가 작은 조건이 먼저 와야함
print("90점이상입니다.")
} else if score >= 80 {
print("80점이상입니다.")
} else if score >= 70 {
print("70점이상입니다.")
} else {
print("70점미만입니다.")
}
var email = "a@gmail.com"
var password = "1234"
if email == "a@gmail.com" && password == "1234" {
print("메인페이지로 이동")
}
if email != "a@gmail.com" || password != "1234" {
print("경고메세지 띄우기")
print("이메일주소 또는 패스워드가 올바르지 않습니다.")
}
// 사용자의 아이디가 일치하고, 비밀번호도 일치 한다면
// 입력된 아이디의 글자수가 6자리 이상이라면
if id.count >= 6 {
print("아이디가 6글자 이상이네요. 다음 화면으로 넘어가겠습니다.")
}
// 가위 / 바위 / 보
var choice = 1 // 0: 가위, 1: 바위, 2: 보
if choice == 0 {
print("가위입니다.")
} else if choice == 1 {
print("바위입니다")
} else if choice == 2 {
print("보입니다.")
}
switch choice { // 변수(표현식)
case "가위", "바위": // "가위" == "가위", ","의 경우엔 ||(or)연산자
print("가위 또는 바위 입니다.")
case "안녕": // if "안녕" == choice
print("안녕 입니다.")
case "보": // if "보" == chice
print("보 입니다.")
default:
break
}
[스위치문의 특징]
var num1 = 10
switch num1 {
case ..<10:
print("1") // 매칭된 값에 대한 고려없이 무조건 다음블럭을 실행함
fallthrough
case 10:
print("2")
fallthrough
default:
print("3")
}
//결과값 : 1 2 3
⭐️ 범위연산자, 패턴매칭 연산자 (참과 거짓의 결과가 나옴)
0...50 ~= num //num이 0이상 50이하 인지아닌지
51...100 ~= num //num이 51이상 100이하 인지아닌지
switch문은 비교연산자를 사용할 수 없다, 아래와 같은 코드는 오류를 발생시킴
switch temperature {
case < 0 : //이런식으로 작성하면 안된다. ==> ..<0
print("영하 - 0미만")
case >= 0 && <= 18 : //이런식으로 작성하면 안된다. ==> 0...
print("0이상 무덥지 않은 날씨")
default :
break
}
올바른 케이스
var num = 30
switch num {
case 0...50: // 0...50 ~= 30
print("숫자의 범위: 0 ~ 50")
case 51...100: // 51...100 ~= 30
print("숫자의 범위: 51 ~ 100")
default:
print("그 외의 범위")
}
var temperature = -100
switch temperature {
case ..<0:
print("영하 - 0도 미만")
case 0...18:
print("0도 이상 무덥지 않은 날씨")
case 19...:
print("여름 날씨")
default:
break
}
바인딩 : 다른 새로운 변수/상수 식별자로 할당
// 바인딩의 일반적인 의미
var a = 7
let b = a // 바인딩을 한다. (다른 변수/상수의 새로운 식별자로 할당한다.)
스위치문에서의 바인딩
var num = 6
switch num {
case let a: // ⭐️let a = num
print("숫자: \(a)")
default:
break
}
스위치문과 where절 (스위치문에서 조건을 확인하는 방식)
// 일단 다른 상수 값에 바인딩한(넣은) 후, 조건절(참/거짓 문장)을 통해 다시 한번 더 조건 확인
// (바인딩 된 상수는 케이스블럭 내부에서만 사용가능하고, 상수 바인딩은 주로 where절하고 같이 사용됨)
num = 7
switch num {
case let x where x % 2 == 0: // let x = num, 만약 x를 2로나눈 나머지가 0(짝수)라면
print("짝수 숫자: \(x)")
case let x where x % 2 != 0:
print("홀수 숫자: \(x)")
default:
break
}
switch num {
case let n where n <= 7: // let n = num
print("7이하의 숫자: \(n)")
default:
print("그 이외의 숫자")
}
switch num {
case var x where x > 5: // 변수로 바인딩도 가능 var x = num
x = 7
print(x)
default:
print(num)
}
**switch문에서 특정 값을 비교할때**
switch num {
case 1 : // 1 == num 인지를 물어봄
print("안녕")
}
**switch문에서 특정 범위를 비교할때**
switch num {
case 0.. : // 0..(0이상) ~= num 인지를 물어봄
print("안녕")
}
**switch문에서 특정 조건을 비교할때**
switch num {
case let a where a % 2 == 0 : //let a = num을 하고 a를 2로 나눈 나머지가 0인지를 물어봄
print("안녕")
}
👍