컴퓨터의 기본 프로세서, 표현의 단위 등 컴퓨터 과학의 기본 개념들을 알아본다.
KEYWORD - 컴퓨터과학/2진법/비트/바이트
컴퓨터과학이란?
문제를 해결하는것.
문제해결 :
일력을 받아 출력을 만들어내는 과정,
그 중간에 있는 과정이 컴퓨터과학
(중간과정을 아는 건 함수를 아는 것과 비슷한가?)
입력(INPUT)과 출력(OUTPUT)을 표현하기 위해서는 표준(모두가 동의 할 약속)이 필요.
위의 조건에 충족하는 정보자체의 표현 방법은
2진법(컴퓨터가 말하는 언어)
0과 1만 존재하는 2진법, 2의 거듭제곱으로 표현.
이진 숫자-0,1 두가지 값만 가질 수 있음.
조합으로 많은 양의 정보를 저장 할 수 있음.
8비트. 0과 1으로 구성하는 더 효율적인 단위.
컴퓨터 속에 있는 아주 작은 스위치 컴퓨터내에 수백 수천개가 있음. 물리적으로 이용해서 정보를 표현하고 값을 저장.
tip
데이터단위
KEYWORD - ASC11/유니코드/RGB
앞은 숫자를 표현하는 방법에 대해 배웠음
어떻게 문자와 메일을 문서를 작성 ?
문자와 글자를 나타내는 방법.
Q) 숫자가 아닌 문자는 어떻게 표현하는가?
A) 숫자(2진법,10진법)으로 표현하기로 약속함.
수많은 트렌지스터로 표현
즉, 문자를 숫자로 표현하기로 한 약속(표준)이 있음.
정보 교환을 위한 미국 표준 코드.
총 128개의 부호가 있음.
알파벳 A > 10진수 65 > 2진수 1000001
미국중심적인 규칙.
ASC11는 바이트만 사용.
문자를 표현하는데는 적합하지 않음.
그러나 세상에는 수많은 다른 언어가 존재 (이모티콘도 마찬가지)를 나타내기에는 부족함.
이를 해결하기 나온것인 유니코드. 위의 것보다 상위집합
유니코드는 4,16,32,64 비트등 더 많은 0,1의 패턴을 나타낼 수 이있음.
100만개이상의 문자들을 나타낼 수 있는 문자 인코딩 표준.
ASC11와 호환이 가능함.
'기쁨의 눈물' 이모티콘의 10진수 값은 128514. 2진수는 11111011000000010 .
이모티콘을 주고 받는 것은 2진수의 패턴을 주고 받는 것과 같은 개념이라고 보면 됨.
사진은 수 많은 점으로 표현되어 있다.
Q) 컴퓨터는 각 점들을 어떻게 표현?
A ) RGB
RGB(Red, Green, Blue), 3가지 색을 적절히 조합하면 무지개의 어느 색이든 만들 수 있음.
하나의 점, 하나의 픽셀을 저장할려면 3개의 값의 저장되어야 함 그리고 이 3개의 는 결국 0,1
모든 사진은 0,1로 표현되는 3개의 값으로 이루어진 하나의 점들로 구성된 것.
컴퓨터로 정보를 표현하는 것의 모든 방법.
0과 1을 사용해서 2진수를 나타내고, 이를 다시 10진수로 나타낸다.
이 결과물로 나운 10진수를 사용하여 화면상의 글자나 색깔를 표현 더 나아가서 영상까지 만듬.( 영상은 수 많은 사진들의 집합이기 때문)
음악도 동일한 방법. 위의 경우는 숫자로 이미지를 구현했다면. 음악은 숫자로 음을 표현하는 데 약속한 것이기 때문.
결국 어떤 방법을 사용해서 정보를 나타내는 것은 결국 0과 1들의 표현.
KEYWORD- 알로리즘/의사코드
이때까지는 입력을 나타내는 법을 알아봤음.
이제는 출력에 대해서
문제해결의 관점(컴퓨터의 관점)에서 보면 알고리즘이란, 문제를 해결하는 단계적 방법
길게 풀면,
x축은 문제를 푸는 데 걸린 시간
y축은 문제의 크기
기울기가 낮아진다 - 더 효율적인 알고리즘 효율성에 아주 큰 차이를 보임
코드에 강조된 부분은 함수
선택하기 위해서는 스스로 에게 던질 질문이 필요함
이 질문을 불리언 표현이라고 한다.
KEYWORD - 스크래치/블록
스크래치 : 퍼즐 조각처럼 보이는 블럭들을 끌어 놓은 방식으로 연결시켜 컴퓨터가 무엇을 할지 단계적으로 프로그램언어
스크래치
변수 : 컴퓨터에서는 X,Y,Z보다 더 구체적인 이름을 붙임
변수를 다루면 프로그램을 더 상호호환적임.
조건문
각요소의 역활과 자리
문제해결에 있어 더 좋은 코드를 만들기 위한 방식으로 더 좋은 방법들이 있다는 걸 알 수 있음
좋은 코드를 디자인하는 방법
좋은코드란, 어느입장이든 관리하리 하기 용이한 코드
여러곳은 바꾸기 보단 한 군데만 수정하면 됨.
추상화의 개념(?)
컴퓨터의 사고와 알고리즘의 정확한 개념을 알게 되어 좋았다. 파이썬이나 C언어등 문법 이해에 많은 도움이 되었다!!! 스크래치로 코드 구조를 쉽게 이해할 수 있는 연습을 할 수 있어 좋음! 확실히 기본개념을 탑재하는 냐...아니냐...는 많은 차이가 있는 것 같다.