DAY - 6
오늘은 어제에 이어서 연산자를 마저 배우는 날이다.
수업에 앞서 좋은 사이트 하나를 소개해주셨다.
w3schools.com이라는 사이트인데.. 여기엔 우리가 배우고 있는 java에 관해 영어 원문으로 설명이 되어 있다.
영어 원문으로 복습을 한번 더 하는것의 장점은 프로그래밍을 하다 보면 자연히 느끼게 될 것이다.
연산자를 마저 수업하기 전에 교재 6page로 돌아갔다.
6page에는 자바 컴파일러와 자바 인터프리터라는 개념이 있다.
이 부분에 대한 설명을 놓치면 상당히 큰 부분을 놓치는 것이기에 수강생 수가 확정된 지금 설명을 하신다.
우선 자바는 C드라이브에 program files에 설치되어 있다.
이 안에 jda(Java Development Kit : 자바 개발 도구)와 jre(Java Runtime Envirenment : 자바개발환경)이 설치되어 있다.
우선 문서 안에 새 텍스트 문서를 만든다. 새로 생긴 텍스트문서의 확장자를 txt에서 java로 변경한다.
이 파일을 연결프로그램에 메모장으로 열면 여기서 직접 코딩을 할 수 있다.
물론 eclipse처럼 헬퍼 프로그램이 없어서 보다 정확한 코딩을 필요로 한다.
간단한 코딩을 해보자.(ex Hello World) 그래도 한번에 오류없이 성공하기는 힘들것이다.... (필자도 역시나..)
다음은 명령 프롬프트를 실행해 directory의 약자인 dir을 쳐 보면 현재 위치에 있는 모든 파일을 확인할 수 있다.
cd(Change Directories)를 이용해 위치를 변경하는데, cd Documents로 내 문서로 이동한다.
이때 어느정도 쓰고 tab키를 활용하면 자동완성기능을 사용할 수 있다.
내문서로 이동한 후 다시 dir을 쳐 보면 방금 만든 새 텍스트문서가 목록에 나올 것이다.
만약 나오지 않는다면 새 텍스트문서의 속성에서 위치를 확인해 볼 필요가 있다.
여기서 텍스트문서의 코드를 javac를 이용해 컴파일하려면, javac의 실행이 우선이다.
javac를 실행하려면 javac가 설치되어있는 위치로 이동을 해야하는데, 명령프롬프트에 "javac폴더위치\javac"을 입력하면 된다.
여기까지 하면 javac에 대한 사용옵션들이 나온다.
여기서 아까 한대로 "javac폴더위치\javac" 메모장이름.java 를 입력했을 때, 아무것도 나오지 않는다면 오류없이 잘 컴파일된 것이고 오류가 있다면 그 오류에 대한 내용이 출력될것이다.
또한 여기서 오류가 발생하지 않는다면 같은 폴더에 같은 이름이지만 확장자가 class로 된 파일이 생성될 것이다.
이 파일은 열어봐도 해석이 힘든데 이는 컴퓨터가 이해할 수 있는 기계어이기 때문이다.
이제 명령 프롬프트에서 class파일이 있는 위치로 가서 java 메모장이름 을 타이핑하면 return값이 출력된다.
여기까지에서 전체적으로 이 과정을 살펴보면.. 우리가 메모장에 쓴 것은 source code이고 이것이 javac에 의해 컴파일되어 byte code가 된 것이 class파일이다. 그리고 이 class파일을 interpreter가 실행을 하게 되는 것이다.
프로그래밍 언어에는 종류가 있는데
1. 기계어 - 컴퓨터가 이해하는 언어로, 전부 2진수로 되어있다.
2. 어셈블러 - 기계어와 1:1 매칭이 되는데 LDA(불러오기), STO(저장하기) 등이 해당된다.
3. 절차형 언어 - C언어가 여기에 해당된다.
4. 객체지향 언어 - 우리가 현재 배우고있는 Java가 여기에 해당된다.
오류에도 종류가 있다.
1. 문법오류
- 컴파일 도중 걸러지는 오류로 컴파일러가 발견하는 오류이다.
2. 실행 중 오류
- 논리 : 프로그래머의 의도대로 프로그램이 실행되지 않을 떄.
- 물리 : 프로그램이 실행하는 도중에 생긴 에러로 인해 오류발생지점 뒷부분이 실행되지않고 종료된다.
다시 연산자를 마무리하러..
비교연산자
비교연산자는 두 피연산자를 비교하는데 사용하는데, 피연산자간의 타입이 서로 다를 경우 타입을 일치시킨 후 비교한다.
또한 return이 오직 true와 false 중 하나로만 나오게 된다.
대소비교 연산자
<, >, <=, >= 가 이에 해당하며, boolean형을 제외한 나머지 자료형에 다 사용할 수 있지만 참조형에는 사용할 수 없다.
주의할 점으로, 수학에서 배울때 처럼 10 < x < 20 이렇게 표기하면 무조건 오류가 발생한다.
같은 비교연산자이기 때문에 좌측부터 계산하는데, 10 < x 에서 이미 boolean형으로 계산결과가 나오므로
위의 식은 boolean형의 결과값 < 20 이 되어 오류가 발생하게 된다.
위의 식은 잠시 뒤에 배울 논리연산자와 섞어서 표기해주어야 한다.
등가비교 연산자
==, != 가 이에 해당하며, 모든 자료형에 사용할 수 있다.
여기서 중요한것은 참조형의 경우 객체의 주소값을 저장하기 때문에 두개의 피연산자(참조변수)가 같은 객체를 가리키고 있는지를 알 수 있다.

위의 예제에서 '0'과 0을 비교한 결과가 false가 나온 것은 유니코드와 연결지으면 금새 알아차릴 수 있다. 이 이유를 밑에 세개의 예시를 통해 알려주고 있으니 유니코드와 연결지어 해석해보면 그리 어렵지 않은 예제이다.

이 예제가 어렵다.. 주석으로 설명을 메모해놓기는 했지만 필자도 이해하는데 한참 걸린것같다..
앞서 진법파트에서 우리는 실수형의 2진화를 배운적이 있다. 중요도는 높지 않았지만 거기서 근사값이 나오는 이유를 알게 되었다.
위의 예제에서 역시 0.1은 정확한 값으로 2진화를 하기 어렵다.
즉 2진수만을 사용하는 컴퓨터는 0.1을 근사값으로 저장하고 있는 것이다. 그렇기 때문에 0.1과 0.1f는 다르다.
주석에서 메모해놓았지만 0.25같은 경우는 true로 결과가 나오는 것을 확인해볼수있다.

위의 예제 역시 그리 어려운 예제는 아니다. 단지 중요한 포인트를 짚자면..
참조자료형에서의 비교연산자는 그 주소를 비교하는것이지 문자열 자체를 비교하는것이 아니다.
논리연산자
논리연산자에는 &&, ||, ! 이 있다.
여기서 &는 ampersand이며 프로그래밍에서는 &&로 사용해 and를 의미하며 한글로는 논리곱이라고 한다.
|는 vertical bar라고 하며 프로그래밍에서는 ||로 사용해 or를 의미하며 한글로는 논리합이라고 한다.
한글로 논리합, 논리곱이라고 되어있으니 눈치를 챘을수도 있지만.. 우선순위는 논리곱이다.
논리연산자는 피연산자로 boolean형값을 결과롤 하는 조건식만을 허용한다.
말로 풀어서 식을 보면 쉬울수도 있지만, 복잡하게 여러 논리연산자가 섞여있으면 매우 혼잡하니 논리연산자의 연산결과가 한눈에 표기된 진리표는 외워두자.
오늘은 여기까지 수업을 했다.
이어서.. 오늘은 HTML을 만든다.
목표는 도메인을 검색했을 때 nginx화면이 아니라 글귀와 지금 이 블로그 링크를 남겨보는 것이다.
eclipse에서 src밑 package에 Ctrl + n 누르고 wizard에서 html을 검색 후 file name은 index로 만들자.
이렇게 생성된 곳에 작업하면 되는데 이는 html이라는 별개의 언어이므로 후에 다시 배우게 될 것이다.
선생님의 타이핑대로 따라서 한 후 저장을 누르고 나면 workspace에 이 index가 저장되어있다.
서버컴퓨터에 devtools에 nginx폴더 안 html에 보면 index라는 파일이 이미 있는데, 이를 index-first정도로 이름을 변경해 주고 우리가 만든 index 파일을 옮겨 놓으면 끝이다.
여기서 주의할점. 기존의 index파일을 지우지 말자. 프로그래밍을 할 때에는 뭐든 지우는 버릇을 고칠 필요가 있다.
오늘도 역시나 새롭다.. 단기간에 너무 많은것들을 하고 있다.
생각지도 못했던 나만의 도메인, 생각지도 않았던 나만의 블로그
이 두가지의 연결고리까지...
앞으로의 수업이 기대가 안될 이유가 전혀 없다.
컴맹에 가까웠던 필자가 이젠 컴퓨터에 대한 이해를 조금씩 하기 시작한 것만으로도 장족의 발전이 아닐수가 없다..
오늘은 여기까지!!!!!!