02. 프로그래밍에 필요한 전산지식 3탄 - 연산자
안녕하세요.
콤퓨타 학원에 원장을 하고 있는 이프로입니다. 헤헴 ^^
프로그래밍을 시작하면 무조건 나오는 것중에 하나가 있는데요.
바로 연산자 입니다.
연산자는 변수와 상수를 사용하여 계산하고 비교하는 방법을 말하는 것입니다.
(GPT한테 물어봤습니다. ^^)
연산자에는 4가지정도의 종류가 있습니다.
(따지고 들면 더 있을수도 있겠지요)
1. 대입 연산자
2. 산술 연산자
3. 비교 연산자
4. 논리 연산자
프로그래밍을 조금이라도 해보신분이라면 연산자를 안써보신분이 없을 것입니다.
하지만 쓰고는지도 어떤 연산자인지도 모르는 경우가 흔합니다.
이번 글에서 연산자에 대한 개념을 집고 넘어가 보겠습니다.
그럼 이번 글에서 이 연산자에 대해서 자세히 파보도록 하겠습니다.
(알고보면 정말 별거 아니지만 알고 있냐 모르고 있냐가 중요하니 한번 집고 넘어가겠습니다.)
대입 연산자
사과가 5개 일때 5라는 정수형(일반자료형)을 변수에 담아야 하는 경우를 생각해보겠습니다.
일반적인 프로그래밍 방식으로 적어보겠습니다.
a = 5
a는 변수라고 할 수 있습니다.
5는 기록하고자 하는 데이터 입니다.
중간에 =는 대입 연산자가 됩니다.
하는 역할은 오른쪽에는 데이터를 왼쪽의 변수에 담는 역할을 담당합니다.
지난 글을 읽어보신분이라면 위 그림을 대략적으로 이해가 가실 겁니다.
a라는 변수가 생성되면 메모리에 저장할 공간이 생성되는데 =(대입 연산자)를 이용해서 데이터를 메모리에 기록하게 됩니다.
그럼 a변수에는 5라는 데이터가 들어가 있고 언제든 a변수에 값을 가져와 사용 할 수 있게 됩니다.
(변수를 생성하는 방식은 프로그래밍 언어에 따라 다르니 이곳에서는 설명하지 않겠습니다.)
※ 참고 : 대입 연산자는 연산자중 가장 우선 순위가 낮습니다. 가장 마지막에 처리해야하는 연산자 입니다.
산술 연산자
산술이라고 하면 계산을 하는 것이라 말씀드릴수 있는데요.
+(더하기), -(빼기), *(곱하기), /(나누기)
위 5가지 정도가 대표적인 산술 연산자입니다.
저희가 흔히 계산할때 사용하는 사칙연산인데요.
그 이외에도
^(제곱), %(나머지) 등등 여러가지가 있습니다.
물론 언어마다 표기하는 방식이 다르기도하고 함수(추후 글에서 설명드리겠습니다.)로 만들어져 있는 경우도 있습니다.
지난 글에서 사과를 세는 내용이 있었는데요.
사과의 수를 정수형 자료형 변수에 담아 두고 + 연산자를 이용해서 사과의 수를 증가 시킬수 있습니다.
일단적인 언어로 표현해보겠습니다.
a = a + 1
=(대입 연산자)는 가장 나중에 처리해야 합니다.
그래서 a + 1부분을 처리해야 합니다.
우선 a변수에는 5 값이 있다고 했을때 5 값을 가져와 + 1 부분을 처리해줍니다.
+연산자는 더하기를 하는 역할을 합니다
(5 + 1) 를 처리해서 6이라는 데이터가 됩니다.
이 후 =(대입 연산자)를 이용해서 a변수의 메모리 위치에 6을 다시 기록합니다.
그래서 최종적으로 a변수에는 6이 되게 됩니다.
이런 방법으로 +,-,*,/등등 계산을 해서 다시 변수에 담을수 있게 됩니다.
(,) 이런 소괄호도 있는데요.
수학에서 배운것처럼 괄호로 감싸져 있다면 우선 계산을 하게 됩니다.
a = (a + 1) * 5
a값이 최초에 5가 있다고 했을때 (5 + 1) * 5 처리 되므로 a변수에 기록될 값은 30이 됩니다.
비교 연산자
비교 연산자의 경우 변수,상수,데이터들 같에 비교를 하여 참, 거짓을 판별하는 연산자입니다.
사람들은 생각을 하고 이거이 올다 그르다를 결정하는데요.
비교 연산자를 이용해서 컴퓨터에게도 이런 일을 시킬 있게 되는거조,
1. 동등 비교(==)
설명: 두 피연산자가 동일하면 참(true)을 반환합니다.
예시: 5 == 5 는 참입니다.
2. 부등 비교(!=)
설명: 두 피연산자가 다르면 참(true)을 반환합니다.
예시: 5 != 4 는 참입니다.
3. 크기 비교(>, <)
설명: 두 값을 크기로 비교합니다. >는 왼쪽이 더 크면 참을 반환, <는 오른쪽이 더 크면 참을 반환합니다.
예시: 10 > 5 는 참입니다. 반면, 5 < 10 도 참입니다.
4.크거나 같음(>=)
설명: 왼쪽 피연산자가 오른쪽 피연산자보다 크거나 같으면 참을 반환합니다.
예시: 5 >= 5 는 참입니다.
5. 작거나 같음(<=)
설명: 왼쪽 피연산자가 오른쪽 피연산자보다 작거나 같으면 참을 반환합니다.
예시: 5 <= 5 는 참입니다.
(GPT에게 정리된 자료로 받았습니다. ^^ 역시 AI최고)
a = 5 == 5
이 코드를 한번 이야기 해보자면 =는 대입 연산자 이므로 가장 우선 순위가 낮기 때문에 == 비교 연산자 부터 처리르 합니다.
그럼 5 == 5는 참입니다. 컴퓨터는 참이라고 표현하지 않고 true라고 표현합니다.
true, false값은 이전 글에서 블리언(boolean)이라는 자료형이 있다고 말씀드린 적이 있습니다.
true값을 반환하니 이걸 a변수에 담을 건데요.
그럼 a변수는 블리언(boolean) 자료형인 데이터를 담고 있게 되는 것입니다.
논리 연산자
현실 세계는 정말 복잡합니다.
물건을 구입할때 통신사 멤버쉬을 이용하면 5%할인, 쿠폰이 있다면 1%할인, 지인 추천하면 1%할일 이런식의 할인 조건이 있다고 할때를 예로 들어보겠습니다.
1. 멤버쉬 5%
2. 쿠폼 1%
3. 지인 추천 1%
인데 이걸 1~3에 모두 중첩으로 할인을 받을수도 있고
혹은 1,2,3중 하나만 할인을 받을수도 있고
다양한 방식들이 존재합니다.
프로그래밍에서도 조건이 다양하게 존재 할때 이 조건들은 연결지어줘야 할 것입니다.
이럴때 프로그래밍에서는 논리 연산자라는 친구를 이용합니다.
(1) and
우리말로 표현하면 '그리고'라고 표현 할 수 있을 건데요.
예를 들어 보겠습니다.
a = (1 == 1) and (2==1)
이런 연산자들이 있다고 보았을때
a = (true) and (false)
이렇게 될건데요. and는 모든 연산자의 결과과 true일 경우만 true가 되는 형태입니다.
결국 a변수에는 false가 등록 됩니다.
하나만 더 해볼까요.
a = (2 == 2) and (5 > 1) and (4 < 5)
a = (true) and (true) and (true)
a = true
이렇게 풀이되서 a는 결국 true 데이터가 등록 됩니다.
이해가 가시나요? 모든 결과가 true로 연결될 경우에만 true 하나라도 false가 있다면 결국 false가 되는 조건이 됩니다.
※ 프로그래밍 언어마다 and라는 걸 다양한 형태로 표현하니 참고하세요.
(2) or
우리말로 표현하면 '또는'이라고 표현 할 수 있을 건데요.
예를 들어 보겠습니다.
a = (1==1) or (2==1)
이런 연산자들이 있다고 보았을때
a = (true) or (false)
이렇게 될겁데요. or는 하나의 결과 만이라도 true가 있다면 무조건 true가 되는 형태입니다.
결국 a변수에는 true가 등록 됩니다.
※ 프로그래밍 언어마다 or라는 걸 다양한 형태로 표현하니 참고하세요.
(3) not(!)
우리말로 표현하면 '부정', '반대로?' 정도로 표현 할 수 있을 건데요.
예를 들어 보겠습니다.
a = not (1==1)
a = not (true)
a = false
true 데이터를 false데이터로 false데이터를 true로 결과를 반대로 뒤집는 결과를 만드는 역할을 합니다.
※ 프로그래밍 언어마다 not라는 걸 다양한 형태로 표현하니 참고하세요.
조건 문이라는 것이 있는데 이 것은 어떤 길로 갈지 판단하는 것이 있는데 이 때 사용되는 조건문으로 비교 연산자와 논리 연산자를 조합 하여 사용하게 되는데 이때 두 연산자가 빛을 발하게 됩니다.
이렇게 4가지 연산자를 알아 보았는데요.
대입 연산자가 우선순위가 가장 아래라고 하였는데요.
그렇듯 다른 연산자에도 우선순위가 있습니다.
아래 표는 연산자의 우선 순위를 표현하고 있습니다. 참고하세요.
우선순위 | 연산자 유형 | 대표 연산자 |
1 | 산술 연산자 | (), **[제곱], *[곱하기], /[나누기], %[나머지], +, - |
2 | 비교 연산자 | ==, !=, >, <, >=, <= |
3 | 논리 연산자 | not, and, or |
4 | 대입 연산자 | =, +=, -=, *=, /= |
(대입 연산자에 모르는 연산자들이 좀 있는데 이런건 추후에 다루도록 하겠습니다.)
연산자는 있는듯 없는듯 사용되어지지만 자세히 모르고 사용하시는 분들이 많은데요.
비교 연산자니 논리 연산자니 명칭이 중요한 것이 아닙니다.
어떻게 사용되어 지는지가 중요합니다.
왜우지 마세요~ 이해하세요~
이글은 여기까지 입니다.
여러분들의 관심과 사랑이 있다면 좀 더 좀은 컨텐츠를 제공해줄 수 있을거 같습니다.
많은 관심과 사랑 부탁드립니다.
감사합니다.
그럼 콤빠~