[0928] 객체지향적사고와프로그래밍
Keyboard input
ASCII -> integer
Monitor Output
integer -> ASCII
Keyboard Buffer(Memory)-> Program(input) -> Monitor Buffer -> Monitor
10 | 13 | 97 |
(키보드 버퍼가 일어났기에)
enter: Keyboard Buffer에 집어넣어라.
그대로 모니터에 97 13 10 이 들어간다.
Integer 97은 다시 아스키코드 9 7로 바뀐다.
97은 어떻게 되나면 정수 97이야 이걸 나누기를 해서 아스키코드 9와 7로 바꾼다.
모니터가 그래픽스 메모리가 컴퓨터에 있어 그래픽 메모리는 화면과 똑같이 생겼다. 그러면
50분의 1초씩 메모리를 보고서 계속 반복해서 그리는거야 모니터에 쓰는건 아니야 그래픽스 카드에 쓰는거야
그래픽 카드에 메모리에 쓰는거야 메모리가 두개가 있어
이쪽에 한 번쓰면 다른쪽에 쓰고 속도를 올리는게 있는데
아주 빠른건 128이래 우리가 보통 ㅆ느ㅡㄴ건 50~60 써
속도가 빠를수록 정교하게 움직이겠지
자릿수를 정리하려면 글자수를 10을 곱하고
정수를 아스키코드로 바꿔서 프린트를 시키려고 하는거야
그게과제야
수학에서 0이라는 경우는 오래 걸렸다. 0이 나오니까 자릿수가 생긴다 0이 있어서 없으면 그냥 아무것도 안 쓰면 된다.
장치와 장치사이에 뭐가 돌아다니면 언어가 있다. 언어가 있어야 한다. 언어중에서 언어가 시작되기 위해서는 알파벳이 있어야하고 알파벳으로 단어를 만들어야한다. 그런데 초기에 컴퓨터 디바이스에서 돌아다니는 언어는 별로 할게 없다. 아주 초기에 컴퓨터를 보면 깜빡깜빡 가다가 줄 넘어가서 다음줄으로 쓰고 그 외에는 할 일이 없다
프린터도 마찬가지다 옛날에는 한줄씩 찍어야돼 한줄씩
이렇게 한줄씩 찍게 되어있다. 그러면 요새 같으면 그림이 나오는 프린터는 비싸다.
언어를 만들 때 코드로 만든다. 글자 하나로 명령어를 만든다.
그래서 아스키 코드를 보게 되면
엔터를 땅 치면 보이는 글자가 아니고 커서를 어떻게 하는거야? 우리가 눈에 보이는 커서를
엔터라는건 의미 두개
엔터는 라인이 있으면 홈으로 땡기는 것이다. 그래서 라인 피드는 다른 것이다.
cr이라고 써있지 그게 캐리지 리턴이라는 것이다. 캐리지는 우리가 얘기하는 커서다.
캐리지가 어디로 돌아가 리턴한다고 원래 위치로. 위치는 제일 앞
그래서 모니터나 프린터 같은 경우는 옛날 스타일의 모니터같은 경우는 글자가 한 라인이 20자인가 40자가 있다. 내 모니터도 다르고 그래서 쭊쭊 가다가 몇자가 가면 뒤로 갈 수 없잖아. 끝도없이 간다고. 끝도 없이 한줄로 되는 경우가 있지? 텍스트 에디터 같은 경우는 잘못된 파일을 잘못 읽으면 500글자가 한줄로 생기는 경우가 있다고
그런게 라인이 끊어지지 않아서 생긴거야
자 그러면 두가지 캐릭터를 알아야되는데
라인 피드
lf라는게 있어 10번 a
엔터를 치면 캐리지 엔터까지 간다.
엔터를 하면 모두가 두가지가 있어 그래픽 모드가 있고 글자 모드가 있는데 옛날 콘솔이라고 하는 것들은 라인 에디터라고 해가지고 글자만 찍게 되어있는 그런 모니터이다. 옛날 스타일의
그림을 그리거나 그럴 수가 없다 자유자재로 지나간 것을 돌아갈 수 없다.
옛날 모니터는 그랬다. 아주 오래된 영화를 보면 컴퓨터가 계쏙 밑으로 내려간다 프린터도 그렇고
이러한 형태의 모니터를 콘솔이라고 한다. 콘솔은 글자가 라인 단위로 쭉 찍히는 거를 콘솔이라고 한다. 지금 우리가 프린트 하려는 것은 콘솔에 프린트 하는 것이다.
콘솔에 모니터에다가 프린터하는거다 우리가 프린터할 때 글자가 한자한자 쭉 간다. 그러면 라인 필드를 하면 캐리지가 다음으로 떨어진다. 그러니까 15 컬럼까지 찍었으면 그대로 밑으로 내려간다. 그런데 우리가 엔터를 치면 실제로 그냥 떨어지는게 아니라 제일 앞으로 간다. 이걸 cr (캐리지 리턴이라고 한다)
모니터에다가 라인 피드와 캐리지 피드를 동시에 보내면 그러면 얘가 찍다가 다음라인의 젤 앞으로 떨어진다. 이렇게 0번부터 핵사로 29번까지 있는 캐릭터들은 통신이나 모니터나 키보드 같은 디바이스와 디바이스에서 무언가를 제어하기 위해 만든 캐릭터들이다. 옛날에는 언어가 많이 필요 없었다.
그런데 지금은 다른게 예를 들어 그림도 그리고 폰트도 바꾸고 이런거지. 옛날에는 폰트도 못 바꿨어 콘솔이 해당 폰트를 자기가 가지고 있는걸 찍는거야
그러니까 굉장히 제한된 형태의 언어를 가지고 있었고 그 이후가 다 비서블 캐릭터야 이거는 보인다. 20번부터 126번까지는 보인다고.
아스키 캐릭터는 지금은 잘 안써 그래도 여전히 쓰는 부분이 있다.
앞에 0에서 19까지는 컨츄럴 캐릭터야 뭔가를 제어하는거야
캐리지를 폼으로 보낸다거나 백스페이스를 한다던가 그러면 실제로 눈에 보이는 데이터가 아니지
모니터에서 눈에 보이는 뭔가가 아니다. 컨츄럴 캐릭터가 데이터 비 ㅅ ㅓ블 눈에 보이는 데이터야 그 두가지가 혼재해있어 원래 이건 좋지 않다.
00을 늘어나면 뭐해 폰트를 바꿔라 이러한 명령을 어떻게 바꿔
그거는 글자 하나에 다가 정의를 할 수 있는게 아니라 언어의 체계를 만들어서 문법 만들고 일반화 시키고 이거를 만들기 시작한거는 html이나
html은 완전히 일반화 시킨거 언어의 문법 구조 만들어서 정의할 수 있도록. 만들어 낼 수 있게 만들어 냈다. 명령어와 데이터를 마음대로 편집하고 만들어낼 수 있게 했다. 진화를 하면
그래가지고 html은 화면에 하나의 페이지를 어떻게 나타낼 것인가가
다음 어떤 화면까지 연결까지 가는거야. 그러면 링크가 걸려서 연결이 될거아니야. 이걸 하이퍼 텍스트라고 해
하이퍼 텍스트는 텍스트가 다음에 연결되는거
그안에 문법적 구조를 가지고 있는거야. 나는 집에 간다. 나는은 폰트 20 색깔 빨강 내가 보이는 데이터를 거기다가 뭐라고 집어넣냐면 그것을 설명하는 데이터를 같이 집어넣는거야. 어떤 데이터를 설명하는 데이터를 같이 집어넣는다. html의 문서를 보면 화면이 있으면 좌표가 0의 얼마얼마의 아스키 이건 데이터지.
그러면 이건 폰트는 이미지는 사이즈가 얼만데 여 위치는 0의 40의 아스키 구글검색이라고 얘는 지금 폰트가 10이고 색깔은 파란이고 알았어?
이게 그러한 두개를 섞어쓸 수 있께 만든 것이 html이다. 이걸 일반화시켰다고.
여기서 이거가지고 컨츄얼 캐릭터로는 모르지. 아주 간략한 여기선 뭐만 가지고 있냐? 장치와 장치 제어
여기서 제일 많이 쓰는게 벨도 쓰고 텐 백스페이스 벨 벡스페이스 텝 라인 피드 캐리지리턴 스타트오브 이러한 몇개를 쓴다 우리가 현재 쓰고 있다.
그래서 키보드도 마찬가지다 여기서 우리가 키보드를 보면 우리가 보이는 글자가 있꼬 백스페이스 테 엔터 이런거들은 실제로 눈에 나타나지 않는다. 얘는 제어를 하는 것이다. 얘는 캐리지를 제어한다.
캐리지를 제어
그래서 그게 아스키 캐릭터로 들어온다. 키보드에 f1 f2 f3 이런거 프로그램을 시켜놓으면 딴짓을 하지
키보드는 보여지는 캐릭터와 제어용 캐릭터가 섞여있다. 거의 아스키코드 플러스로 추가한다.
그래서 우리가 프로그램을 짜면 실제로는 키코드라는게 들어오는데 자판을 0번1번2번3번 이렇게 걸려있찌 그게 아스키코드로 바껴 아스키코드에 유니코드나 아스키코드로 바꾼다 유니코드가 아스키코드를 포함하고 있다
아스키코드 + 외국어 = 유니코드
아스키코드 넘버는 똑같다. 유니코드라할지라도 아스키코드는 그대로 쓴다.
그래서 거기에다가 외국어까지 같이 쓸 수 있도록 만든 것이다.
기본적으로 캐릭터가 변한다. 캐릭터가 문자열이 되는 것은 뭐야 코드표를 준거야. 코드의 값을 준다고 A를 주면 A가 핵사로 4고 소문자가 60
표준화된 문자 코드를 줘야한다. 약속을 해야할거아니야.
lg,삼성,화웨이 엄청 많잖아. 코드가 표준화되어있으면 코드가 돌아가? 안 돌아가.
여기는 이렇게 되어있어 이 프로그램을 짤거야.
여기서 지난번에 설명한 거처럼
모니터에 값을 보냈어
그러면 당연히 너무쉬운프로그램이겠지
컴퓨터는 확정적 결과가 나타난다.
확정적 결과를 낸다.
프린트가 숫자로 찍지 그걸 문자로 봐야하는거아니야
키보드가 input이 되면 여기 buffer가 있다.
write와 print의 차이점을 찾아라