[인생 프로그래밍] 연산자 (Operator)

Rex·2022년 1월 12일
0

인생 프로그래밍

목록 보기
19/33

연산자 (Operator)

'연산자' 라고 하면 우리는 흔히 덧셈, 뺄셈 등의 사칙연산을 떠올리지만, 프로그래밍의 연산은 그것보다 다양한 종류가 있다. 그리고 프로그래밍 언어마다 연산자를 사용하는 방식이 조금씩 다른 경우도 있어서 헷갈릴 수는 있지만 금방 익숙해질 것이고 어렵지 않을 것이다.

연산자를 활용하여 우리가 방금 배운 변수(Variable)들끼리 계산을 하거나, 어떤 조건을 검사하거나, 크기를 비교하거나 할 수 있다. 이번 장에서는 대표적인 연산자 몇 가지만 알아보겠다.


1. 산술 연산자 (Arithmetic Operators)

  1. 산술 연산자 (Arithmetic Operators)
  • 더하기: +
    • 1 + 2 == 3
  • 빼기: -
    • 1 - 2 == -1
  • 곱하기: *
    • 2 * 2 == 4
  • 제곱: **
    • 2 ** 3 == 8
  • 나누기: /
    • 10 / 3 == 3.333333
  • 정수 나누기(몫): //
    • 10 // 3 == 3
    • Python 에서 사용 가능
    • JavaScript 는 이 연산자를 지원하지 않음
  • 나머지 구하기 : %
    • 10 % 3 == 1

더하기, 빼기, 곱하기, 제곱, 나누기까지는 간단하니 설명을 생략하고, 정수 나누기 연산자(//)와 나머지 연산자(%)는 처음 봤을 것이다. 정수 나누기(//)는 나눗셈한 값에서 나머지를 제거하고 몫만 정수형으로 남기는 연산이고, 나머지 구하기(%)는 나눗셈한 값에서 나머지만 구하는 연산이다.

  • 예를 들면, 7 / 2 의 몫은 3, 나머지는 1 이다.
  • 7 // 2 == 3
  • 7 % 2 == 1

우리는 나머지 연산자(%) 를 응용해서 홀수와 짝수 를 구분해 낼 수 있다. 어떤 수를 2로 나누었을 때 나머지가 0 이면 짝수, 1 이면 홀수가 되는 것이다.

그리고 더하기 연산자(+)는 문자형(char, string)에도 사용할 수 있다.

  • "안녕" + "하세요" == "안녕하세요"
  • "Hello" + " World" + "!" == "Hello World!"
# 산술연산자 테스트

변수 = 7
print(변수 + 2)  # 9
print(변수 - 2)  # 5
print(변수 * 2)  # 14
print(변수 ** 3)  # 343
print(변수 / 2)  # 3.5
print(변수 // 2)  # 3
print(변수 % 2)  # 1

print("Hello" + " World" + "!")  # "Hello World!"

2. 할당 연산자 (Assignment Operators)

우리들이 수학 시간에 덧셈을 할 때는 1 + 1 = 2 의 순서대로 작성했을 것이다. 왼쪽의 결과값이 오른쪽으로 가게 되는데, 프로그래밍에서는 반대이다.

  • 이름 = '홍길동'
  • 출생연도 = 2003

이런 식으로 왼쪽에 변수를 두고, 오른쪽에 식을 사용한다. 변수에 값을 넣는 것을 '대입(代入)' 또는 '할당(Assignment)' 또는 '초기화(Initialization)' 라고 말한다. 대입, 할당, 초기화 모두 동일한 의미이다.

'할당한다(Assign)' 라는 표현이 익숙하지 않을 텐데, 그냥 "변수에 값을 넣는다" 라고 말해도 같은 의미가 된다. 어떤 분야의 '용어' 라는 것은 쓸데없이 어렵게 만들어놓은 것이다. 알고 나면 별거 없다. 아직 익숙하지 않을 뿐이다.

만약 출생연도 변수에 1을 더해주고 싶으면 어떻게 할까?
출생연도 = 출생연도 + 1 이라고 사용하면 되는데, 프로그래밍에서는 이런 경우가 꽤 많아서 간편하게 쓸 수 있도록 연산자를 축약형으로 만들어놨다.
출생연도 += 1 이라고 사용하면 위의 결과와 동일한 결과를 얻을 수 있다. 위의 산술연산자의 바로 오른쪽에 = 만 붙여주면 된다.

# 할당 연산자 테스트

변수1 = 7  # 숫자 7로 초기화
변수1 += 2
print(변수1)  # 9

변수2 = 7  # 숫자 7로 초기화
변수2 -= 2
print(변수2)  # 5

변수3 = 7  # 숫자 7로 초기화
변수3 *= 2
print(변수3)  # 14

변수5 = 7  # 숫자 7로 초기화
변수5 **= 3
print(변수5)  # 343

변수6 = 7  # 숫자 7로 초기화
변수6 /= 2
print(변수6)  # 3.5

변수7 = 7  # 숫자 7로 초기화
변수7 //= 2
print(변수7)  # 3

변수8 = 7  # 숫자 7로 초기화
변수8 %= 2
print(변수8)  # 1

변수9 = "안녕?"
변수9 += "Hello" + " World" + "!"
print(변수9)  # "안녕Hello World!"

정수 나누기(몫) 연산자는 Python 에서만 사용 가능하다.


3. 비교 연산자 (Comparison Operators)

  • == 같다면
  • != 같지 않다면
  • > 왼쪽 값이 더 크다면
  • >= 왼쪽 값이 크거나 같다면
  • < 오른쪽 값이 더 크다면
  • <= 오른쪽 값이 크거나 같다면

비교연산자를 사용할 경우, 그 결과로 boolean 값을 얻을 수 있다.

# 비교연산자 테스트

print(3 == 3)  # True
print(3 != 3)  # False
print('안녕' == '안녕')  # True
print('안녕' != '안뇽')  # True
print(3 < 1)  # False
print(3 >= 1)  # True

Python 의 독특한 점

파이썬에서는 == 대신 is 를 사용할 수도 있고, != 대신 is not 을 사용할 수도 있다. 이 책의 초반부에 파이썬을 소개하면서 실행할 수 있는 의사 코드(Executable pseudocode) 라는 말을 한 적이 있는데, 그 별명에 걸맞게 우리가 평상시 쓰는 말로 프로그래밍을 친숙하게 하기 위한 노력이 담겨있는 것이다.
사실 ==, !=is, is not 은 용도가 조금 다르다. ==, != 는 값 자체를 비교하고, is, is not 은 객체(Object)를 비교하는 데 사용하는 편인데, 이 차이를 잘 모르고 그냥 사용하면 실행 결과가 다를 수 있으니까 주의가 필요하다. 이 책에서는 특별한 경우가 아니라면 ==, != 만 사용할 것이다.


4. 논리 연산자(Logical Operators)

논리 연산자는 참/거짓을 판별하는 데 사용하는 연산자를 말한다. 예를 들면 1 < 3 은 참(true)이고, 1 > 3 은 거짓(false)이다.

  • and : 양쪽의 값이 모두 참이면 참으로 인정, 하나라도 거짓이면 거짓으로 인정
  • or : 양쪽의 값 중 하나라도 참이면 참으로 인정, 모두 거짓이면 거짓으로 인정
  • not : 참은 거짓으로, 거짓을 참으로 (반대로) 변경
# 논리연산자 테스트
print(True and True)  # True
print(True and False)  # False
print(False and False)  # False
print(True or True)  # True
print(True or False)  # True
print(False or False)  # False

# A and B : A 그리고 B 모두 True 여야 True
# A or B : A 또는 B 하나만 True 여도 True

print(not True and False)  # False
print(not(True and False))  # True
print(not False or True)  # True
print(not(False or True))  # False

print(3 == 3 and '안녕' == '안뇽')  # False
print(3 < 1 or 3 >= 1)  # True

예를 들어 나이가 10살 이상 이면서, 다니고 있는 학교가 "중학교" 가 아닌 사람 을 검사하려고 한다면 다음과 같이 작성할 수 있다.

age = 12
school = "초등학교"

if (age >= 10 and school is not "중학교"):
    print("초등학생 입니다.")

if (age >= 10 and school != "중학교"):
    print("초등학생 입니다.")

위에서 설명했던 것처럼 파이썬에서는 is not 으로 사용할 수도 있고, != 방식으로 사용할 수도 있다. 위 코드에서 is not 을 사용한 이유는 not 연산자가 사용되는 모습을 보여주기 위함이고, 실제로는 != 방식의 사용을 더 권장해요.

우리는 아직 프로그래밍의 if문(if statement) 를 배우지 않았지만 워낙 간단한 문법이라서 미리 한번 적용해 보았다. if 문의 자세한 내용은 곧 보게 될 것이다.

프로그래밍을 함에 있어서 필수적인 연산자들을 알아보았다.


JavaScript 전체 코드

  • && : 파이썬의 and 와 동일
  • || : 파이썬의 or 와 동일
  • ! : 파이썬의 not 과 동일

위의 파이썬의 예시와 동일하게 나이가 10살 이상 이면서, 다니고 있는 학교가 "중학교" 가 아닌 사람 을 검사하려고 한다면 다음과 같이 작성할 수 있다.

let age = 12;
let school = "초등학교";

if (age >= 10 && school !== "중학교") {
    console.log("초등학생 입니다.");
}

정리하기

  1. 연산자의 종류
    • 산술, 할당, 비교, 논리

생각 해보기

내가 주로 사용하는 연산이 있는지 생각해 보자. 만약 있다면 그 연산을 코드로 작성해 보자. 그리고 햄버거 가게에서 주문할 때 패티나 치즈 등을 추가하며 연산을 하는 것 처럼, 인생에서 일어나는 다양한 연산들을 생각나는 대로 코드로 작성해 보자.

"인생에서 일어나는 다양한 연산을 프로그래밍으로 해결해 보자. 당신의 프로그래밍 실력이 한층 성장할 것이다."


연습 문제

다음 과정을 시작하기 전에 풀어보길 권장하는 문제이다. 이 문제를 해결하지 못하더라도 다음 과정으로 넘어갈 수 있지만, 풀어낸다면 정말 큰 학습이 될 것이다. 어렵지 않으니까 천천히 읽고 구현해 보자.

  1. 당신의 태어난 연도를 출생연도 라는 변수로 선언하고, 당신의 현재 나이를 나이 라는 변수로 선언하라.
  2. 출생연도나이 를 더한 결과값을 결과1 이라는 변수에 할당하라.
  3. 결과1 와 올해의 연도(2023 등)를 비교연산자를 사용하여 boolean 값을 얻어내고, 그 결과값을 결과2 라는 변수에 할당하라.
  4. 그리고 결과1결과2 를 각각 print() 함수로 출력하라.
  5. 모든 실행 결과를 코드 옆에 주석으로 달아보자.
  • 지금 Python 과정을 하고 있다면, Python 으로 풀어야 한다.
  • Python 과정을 모두 마치고 JavaScript 를 시작했다면, JavaScript 로 풀어야 한다.
  • JavaScript 과정을 모두 마치고 Java 를 시작했다면, Java 로 풀어야 한다.
  • 너무 어려우면 ChatGPT 에게 도움을 요청하자.

궁금증 / 질문 / 개선점이 있다면 꼭 댓글을 달아주세요. 제가 최선을 다해 도와드리겠습니다. 여러분들의 최고의 학습 친구가 되어드리겠습니다.

#인생프로그래밍 #개발자렉스 #프로그래밍 #프로그래머 #개발자 #개발입문 #프로그래밍입문서적 #코딩교육 #코딩무료교육 #파이썬 #자바스크립트 #자바 #파이썬기초 #파이썬독학 #파이썬책 #혼자공부하는파이썬 #혼공파 #자바스크립트책 #앱개발 #어플개발 #ProgrammingOfLife #programming #programmer #coding #software #developer #python #javascript #java

profile
🔥 from Abstraction to Realization

0개의 댓글