공부 시작(정수·실수연산/우선순위/등호의 사용법)

Alex·2023년 10월 4일
0

자바 공부

목록 보기
1/8
post-custom-banner

📌JAVA 공부 시작

공부를 시작해보니 익숙하지 않은 내용들이 많았다.

앞으로 공부하면서 갖게 된 의문들을 정리하고, 그에 대한 답을 적어보려고 한다.


🔎정수연산과 실수연산

프로그래밍을 할 때 5/2라고 입력하면 2라는 답이 나온다.
앞에 있는 5와 뒤에 있는 2를 각각 정수로 인식을 하기 때문이다. 프로그래밍 관점에서 정수를 정수로 나눌 때 답은 정수여야 한다.

2.5가 아니라 2라는 답이 나와야 하는 것.

2.5라는 답을 얻고 싶다면 부동소수점을 이용하면 된다.

ex)5.0/2.0 or 5.0/2

왜 그럴까?

그 이유는 '프로그래머가 원하는 결과를 명확하게 표현하기 위해서'이다.
만약, 프로그래머가 정수 나눗셈을 의도하고 5/2를 작성했는데 컴퓨터가 이를 실수 나눗셈으로 변환해 답이 2.5가 나온다고 하자. 프로그래머의 본 의도와는 다른 결과가 나온 것이다.

1)정수 나눗셈을 할 것인지 2)실수 나눗셈을 할 것인지 구별을 해놓으면 이런 문제를 피할 수 있다.

개발을 배우면서 느낀 점은 '코드는 예측 가능한 것이 좋다'라는 점이다.

무슨 소리냐 하면, 5/2를 계산할 때 2가 나오든 2.5가 나오든 한 가지 방향으로 정해져 있어야 한다는 뜻이다. 즉, 일관성이 있어야 한다.

일관성이 없으면 코드를 작성할 때마다 결과(어떤 동작이 나올지) 예측하기 어려워진다. 일관성이 있으면 코드에서 문제를 빠르게 찾을 수 있다. 5/2가 항상 2라는 결과를 내놓는 것을 아는 덕분에 이 연산이 다른 값을 만들어내면 '문제'가 있다는 것을 알게 된다.

그러니 문제를 찾아서 수정할 수 있는 것이다. 코드가 일반적인 예상대로 작동한다면, 다른 개발자들이 쉽게 이해할 수 있게 된다. 누구나 다 아는 공식으로 쓰여졌다면 필요할 때 쉽게 유지보수할 수 있다.

🔎 연산의 우선순위

수학에서 연산할 때 우선 순위를 따른다. 프로그래밍도 마찬가지다.

5+56=35
를 계산하면 1)5
6➡ 2)5+30=35 이렇게 계산을 하게 된다.(일반적으로 수학에서는 곱셈/나눗셈/모듈러스 연산자가 플러스/마이너스보다 상위순서다)

결국, 여기서 중요한 것도 예측가능성과 일관성이다.

내가 이해한 바로는 우리가 수학에 익숙하기 때문에 프로그래밍도 우선순위를 따르는 것 같다.

이를 통해 얻을 수 있는 이점은
1)프로그램이 여러 수식 가운데 어떤 것을 먼저 계산해야 할지 명확하게 이해할 수 있다.
2)괄호를 더 적게 사용해서 코드를 간결하게 작성할 수 있다.

우선순위를 따르지 않았다고 해보자. 그러면, a+bc라는 코드에서 bc를 먼저 계산하라고 괄호를 쳐줘야 한다. a+(b*c)처럼 말이다. 우선순위 법칙을 따르면 이러한 괄호를 남발하지 않아도 된다.

🔎(5*2=10)은 인식할 수 없다

수학적인 의미에서는 52=10이 맞다. 하지만, 프로그래밍에서 '='표시는 어떤 값을 대입한다는 것을 뜻한다. 52에는 특정 값을 대입할 수 없다. 왜? 상수라서다. 10은 변하지 않은 상수값이다. 원래 의미의 =(같음)를 쓰고 싶었다면 ==를 써야 한다. 5*2==10 이런식으로!

어떤 것을 대입하려면 비어있어야 하는데, 그게 바로 a같은 변수다. 즉, a=10은 성립하지만 5*2=10은 성립하지 않는다.

✔참고로, 프로그램에서 변수는 '특별한 저장공간'을 의미한다. 이 공간에 특정 값을 저장할 수 있다.

💭느낀 점

프로그래밍은 굉장히 예민한 과학자같다. 실험을 할 때마다 같은 값이 나오는 것을 극도로 중요하게 여긴다. 예측가능한 것, 일관적인 것이 프로그래밍을 효율적으로 만들어준다는 것이 재밌다.

profile
답을 찾기 위해서 노력하는 사람
post-custom-banner

0개의 댓글