논리연산자 5

[Swift] 연산자 (Operator)

연산 - 주어진 식을 계산하여 결과를 얻어내는 과정 연산자 (operator) - 연산을 수행하는 기호 피연산자 (operand) - 연산의 대상 a + b a, b // 피연산자 + // 연산자 연산자 종류 연산자의 위치에 따라 피연산자 수에 따라 역할과 기능에 따라 1. 연산자의 위치에 따라 - 전치 연산자 (Prefix Operator) + a - 후치연산자 (Postfix Operator) a + - 중위연산자 (Infix Operator) a + b 2. 피연산자의 개수로 나눌때 - 단항연산자(Unary Operator) - 이항연산자(Binary Operator) - 삼항연산자(Ternary Operator) 단항연산자(Unary Operator) + a 이항연산자(Binary Operator..

[Swift] 단락평가 (Short-circuit Evaluation)

논리연산자에서 &&(Logical AND Operators)을 살펴보면 첫번째 연산자가 False이면 뒤 연산은 볼 필요 없이 False ||(Logical OR Operators)의 경우도 첫번째 연산자가 True면 뒤 연산을 안봐도 True임 이렇게 두번째 연산자를 평가하지 않는 식을 단락평가라고 함 스위프트는 논리식을 평가할 때 결과를 얻는데 최소한의 코드만 실행하며 이미 결과를 얻었다면 결과를 실행하지 않음 aPlus와 bPlus함수에 각각 a,b에 +1 하도록 함 if 문에서 문제가 일어남 aPlus 함수가 먼저 실행이 되고 연산자를 확인하였을때 두번째 연산자를 평가하지 않고 true를 반환하기 때문에 a값은 증가하지만 b 값이 증가하지 않는 것을 확인 할 수 있음 aPlus 함수가 거짓이므로 ..

루프내포시키기

while문 !을 이용한 코드 while !isBlocked{ // 앞이 막혀있지 않는동안 while !isOnGem{ // 보석이 없는동안 moveForward() // 앞으로 한칸이동 } collectGem() // 보석을 수집 turnLeft() // 왼쪽으로 회전 } OR 논리연산자를 이용한 코드 while isBlockedLeft || isOnGem{ // 왼쪽이 막혀있거나 보석이 있는동안 while isOnGem{ // 보석있는 동안 collectGem() // 보석을 수집 turnLeft() // 왼쪽으로 회전 } moveForward() // 앞으로 한칸이동 } 루프 내포시키기 - 코딩 배우기1 Swift playground 스위프트 플레이그라운드

논리연산자 - 논리의 미로

for i in 1 ... 8 { // 8번동안 반복 moveForward() // 앞으로 한칸이동 if isOnClosedSwitch && isOnGem { // 만약 스위치가 닫혀있고 보석이 있다면 collectGem() // 보석을 수집하고 toggleSwitch() // 스위치를 켜라 turnRight() // 오른쪽으로 회전 moveForward() moveForward() // 두칸 앞으로 이동 collectGem() // 보석을 수집해라 if isBlocked && isBlockedLeft { // 만약 앞과 왼쪽이 막혀있다면 turnLeft() turnLeft() // 왼쪽으로 뒤돌아라 moveForward() moveForward() // 두칸 앞으로 이동 turnRight() // 오른..

논리연산자OR - 이것 또는(OR) 저것 확인하기

첫번째로 만들어 본 코드 이렇게 실행하게 되면 마지막에 굳이 한번 오른쪽으로 더 회전하고 보석을 수집하게 된다. for i in 1 ... 12 { // 12번동안 반복해라 moveForward() // 앞으로 한칸이동 if isBlocked || isBlockedLeft { // 만약에 앞이 막혀있거나 왼쪽이 막혀있으면 turnRight() // 오른쪽으로 돌아라 } } collectGem() // 반복문 구문이 끝나면 보석을 수집해라 불편해서 만들어 본 코드 for i in 1 ... 12 { // 12번 반복해라 moveForward() // 앞으로 한칸 이동 if isBlocked && isBlockedLeft{ // 만약 앞과 왼쪽 벽이 막혀있다면 collectGem() // 보석을 수집해라 }..