아니, 내가 만든 조건문 명제면 당연히
컴퓨터도 이게 참이라고 믿어줘야 되는거 아닌가?
왜 육안으로 보면 조건에 알맞는 데이터가 입력되었는데
else 예외처리되는거지?
의문의 발단은 여기서 시작된다. yes라는 데이터가 왜 if문에 안걸리고 else에 걸려서 출력되는건가
내가 디버깅을 어디서부터 잘못한걸까?
내가 생각한 디버깅은 아래와같이
System.out.println("[여기에 여러분이 출력하길 원하는 변수를 넣어주면됨]"); 이라고 처음엔 생각했다. 근데 이건 디버깅이 아니다 ㅋㅋㅋㅋㅋㅋ
# 그럼 디버깅이 뭐지? debugging은 de는 '삭제,제거'의 접두어이고, bugging은 한국말로는 도청이라고 하는데 영어 원어 그대로의 의미는 '사람들의 대화를 관찰하고 기록하기 위해서 도청기를 몰래숨긴다'는 의미임 그럼 합치면 도청기몰래숨기지 않고 역으로 도청기를 드러낸다?의 의미가 되겠군
#그럼 개발자한테 디버깅이란 뭐지? 개발자한테 도청기란 뭐야? debugger프로그램이 되겠군. bebugger 프로그램을 돌려서 개발자가 입력한 명령문을 컴퓨터가 어떻게 이해하고 실행시켰는지 관찰하는게 디버깅이겠군.
#그럼 도대체 이 디버깅을 java eclipse에선 어떻게 하는걸까?
위에처럼 코드옆 파란막대바에 우클릭을 하거나 좌더블클릭하면 나오는 탭에서 toggle breakpoint로 걸은다음상단 네비게이터바에서 run을 클릭하고 Debug를 클릭해주면 F5, F6, F8키를 이용해서 디버깅해줘야한다.
디버깅 정의 okay,그럼 왜 우리 사랑스러운 java엔진은 내가만든 명제를 참이라고 못읽구 내가 입력한 데이터를 else처리한거니?
#우선 명제란 무엇인가? 논리학적으로 뜻이 분명한 문장을 말한다. 문장에 대한 진리값은 참과 거짓으로 나뉜다.
#컴퓨터한테 참 또는 거짓 명제는 무엇인가? 여기서 필요한게 컴퓨터의 사고방식을 알아야한다. 컴퓨터는 이진수, 즉 0과 1로 생각한다. 이를 이진법이라 명한다.
#왜 컴퓨터는 이진법으로 생각하는가? 컴퓨터는 전자계산기이다. 컴퓨터의 모든계산은 전기신호로 이루어진다. 계산명령문은 전기 신호를 거쳐 cpu에 전달되는데 이때 이 전기신호의 HIGH와 LOW 상태를 각각 1과 0으로 표현 가능하다.
이 방식은 컴퓨터 입장에서는 가장 효율적인 계산방법이기 때문에 이진법을 사용한다. 참고로 0,1과 같은 하나의 값은 1비트(bit)로 메모리를 차지한다. ]
다시돌아와서 컴퓨터는 참/거짓인 명제를 어떻게 표현하는걸까?
컴퓨터는 참인명제는 1 거짓인 명제는 0으로 표현한다.
# 컴퓨터의 진릿값 판단 근거는 뭐지? 수학시간에 배웠던 명제의 기본연산자 "그리고(AND)" "또는(OR)" "~아니다(NOT)"을 가지고 판단한다. 이 세가지 표현이 컴퓨터한테 의미하는 바는 무엇인가? 진리표를 의미한다.
#진리표란 무엇인가? 진리표는 가정의 경우의 수에 따라 결론이 어떻게 변하는지, 즉 진리값을 표로 나타낸 것이다. 보통 수학에서는 참(T)과 거짓(F)으로 작성하지만 컴퓨터 회로에서는 1과 0으로 표시한다. 1은 T에, 0은 F에 해당한다.
그럼 각각의 논리적표현을
살펴보자
# AND 논리란? 두가정이 모두 참일때에만 참이다. 컴퓨터회로에선 두입력이 모두 1일때에만 출력이 1이다.
# OR논리란? 두 가정중 한쪽만 참일때에도 참이고, 한쪽만 거짓일때도 참이된다. 즉 두입력이 0 1 하나씩 되면 출력은 1이된다.
결국, 양쪽다 거짓일때만 거짓이된다. 0 0 이 입력되어야만 출력이 0이되는것이다. (합집합과 비슷한개념)
# NOT논리란? 입력에 반대로 출력된다. 0 1 이 입력하면 1 0으로 출력되는거다. 그럼 결과는 ? 결과도 부정해줘야돼. 두입력을 OR연산자로 또는 AND로 묶을지가 이때 필요한거다.
댓글