Fear is a habit. I'm not afraid.
This is CS 50 (1) Computational Thinking, Scratch 본문
목차
1. 컴퓨팅 사고 What is computer science?
2. 2진법 Binary
3. 정보의 표현 Representing data
4. 알고리즘 Algorithms
5. 의사코드 Pseudocode
6. 스크래치 Scratch
1. 컴퓨팅 사고 Computational Thinking, Scratch
- 컴퓨터 과학이란 무엇일까?
단지 문제를 해결하는 과정 Computer science is fundamentally problem-solving.
- 컴퓨터 과학의 첫번째 개념: 정보 자체의 표현방법 How you represent information itself
- 문제 해결은 입력(문제에 대한 세부 정보)을 가지고 출력(문제에 대한 솔루션)을 생성하는 프로세스로 생각할 수 있으며, 가운데 있는 '블랙박스'가 컴퓨터공학이다.
1) 2진법 Binary
- 컴퓨터는 2진법으로 표현한다 - 2진법은 오직 오직 0과 1로 이루어짐
- 원하는 숫자를 표현하기 위해 더 많은 0과 1이 필요하기 때문에 비트bit 를 이용하게 됨
- 컴퓨터는 많은 수의 비트를 활용하여 정보를 표현합니다. 그리고 이를 물리적으로 수행하죠.
- 1byte = 8bit
- 컴퓨터에는 수백만개의 전기를 담을 수 있고 on/off가 됨으로써 비트를 표현할 수 있는 트랜지스터라는 스위치가 있음.
트랜지스터 Transistor
전송하다는 뜻의 Transfer, 저항 소자라는 뜻의 Varistor의 합성어로, 전기전도성을 가지면서 동시에 저항의 역할도 한다는 의미
- 구성
이미터 emitter - 베이스 base - 렉터 collector
- 기능
1. 스위칭 기능
회로에서 전류가 흐를 때를 1, 전류가 흐르지 않을 때를 0으로 하여 스위치처럼 이용할 수 있다.
2. 증폭 기능
트랜지스터의 베이스는 매우 얇아서 pnp형이든 npn형이든 베이스에 흐르는 전류는 약한 전류가 흐르게 된다. 이에 비해 컬렉터에 흐르는 전류는 베이스 전류보다 매우 센 전류가 흐르게 되는데 컬렉터 전류 Ic는 베이스 전류 Ib에 비례하는 성질이 있어서 다음과 같이 표현할 수 있다.
컬렉터 전류 = 전류증폭률 / 베이스 전류
2) 정보의 표현 Representing data
- 지금까지 숫자를 표현하는 방법만 배웠습니다.
- 어떻게 컴퓨터가 많은 일들을 할 수 있는가?
- A = 65 = 01000001
- 알파벳 전체에 더해 문장 부호도 있음 = ASCII
ASCII American Standard Code for Information Interchange
- 영문 알파벳을 사용하는 대표적인 문자 인코딩
* 문자 인코딩 character encoding 또는 텍스트 인코딩 text encoding 또는 줄여서 인코딩
: 사용자가 입력한 문자나 기호들을 컴퓨터가 이용할 수 있는 신호로 만드는 것을 말한다
- 아스키는 7비트 인코딩으로, 33개의 출력 불가능한 제어 문자들과 공백을 비롯한 95개의 출력 가능한 문자들로 총128개로 이루어진다.
=> 아스키코드는 7비트 인코딩인 이유는 나머지 1비트를 통신 에러 검출을 위해 사용이 되기 때문이다.
- 유니코드 Unicode: ASCII의 상위 집합과 같다.
유니코드 Unicode, The Unicode Standard
전 세계의 모든 문자를 컴퓨터에서 일관되게 표현하고 다룰 수 있도록 설계된 산업 표준
유니코드는 유니코드 협회(Unicode Consortium)가 제정한다. 또한 이 표준에는 ISO 10646 문자 집합, 문자 인코딩, 문자 정보 데이터베이스, 문자들을 다루기 위한 알고리즘 등을 포함하고 있다.
유니코드에서 한국어 발음을 나타날 때는 예일 로마자 표기법의 변형인 ISO/TR 11941을 사용하고 있다.
- 목적
현존하는 문자 인코딩 방법들을 모두 유니코드로 교체하려는 것
- 매핑 방식
1) 유니코드 변환 형식(Unicode Transformation Format, UTF) 인코딩
2) 국제 문자 세트(Universal Coded Character Set, UCS) 인코딩
- 이모티콘은 사진으로 되어있다. 즉, 이모티콘과 같은 얼굴은 수많은 노란색 점들로 이루어져 있다.
=> RGB: 어떤 숫자가 어떤 색깔을 나타낼 지 정했다.
- 사진 속의 하나의 점, 하나의 픽셀을 저장하려면 3개의 값을 저장해야 함.
그래픽을 사용하는 프로그램에서 컴퓨터는 RGB 형태의 숫자로 표현하게 된다.
=> R:G:B = 72:73:33 => 노란색이 만들어짐!
- GIF 파일은 같은 파일에 저장되어 있는 여러 장의 사진들이 계속 반복됨.
- 동영상 또한 단지 우리의 눈을 매우 빠르게 지나치는 여러 장의 사진들로 실제 움직이는 것으로 인식할 뿐이다.
=> 컴퓨터에서 정보를 표현하는 거의 모든 방법이 이러한 방식으로 진행됨.
0과 1을 사용하여 2진수를 나타냄 -> 10진수를 나타냄 -> 10진수를 사용하여 화면 상의 글자나 색깔을 나타냄 -> 나아가 영상
- 음악, 우리가 연주하는 음들 역시 숫자로 양자화 할 수 있다.
=> 어떤 방법을 사용해서 정보를 나타내든 결국 0과 1들로 표현된다.
- 컴퓨터 프로그램은 코드의 맥락에 따라 이진수가 숫자, 문자, 픽셀로 해석되어야 하는지 여부를 알고 있다.
3) 알고리즘 Algorithms
- 그저 문제를 해결하는 단계적 방법 step-by-step instructions for solving a problem
- 의사코드 Pseudo code : 컴퓨터가 수행할 작업을 프로그램 언어가 아니라 사람이 사용하는 언어로 알고리즘의 논리적 절차를 작성한 코드
- 의사코드의 4가지 표현방법
1. 함수 functions: 컴퓨터에게 이 경우에는 사람에게 뭘 할지 알려주는 동사와 같다.
2. 조건 conditions
3. 불리언 표현 Boolean expressions
- 답이 예 또는 아니오로 나오는, 혹은 참 또는 거짓으로 나오는, 0 또는 1로 나오는 질문
4. 루프 loops
- 뭔가를 계속해서 반복하는 순환
4) 스크래치: 기초
- 스크래치 Scratch : 그래픽 프로그래밍 언어
- 함수들을 중첩시키고 있다는 사실에 주목하세요.
hello, [answer] -> join -> hello, David
5) 스크래치: 심화
- 대수학과 달리 프로그래밍에서는 변수에 어떠한 값을 저장할 때 더욱 구체적인 이름을 붙인다.
- 우리의 프로그램을 좀 더 상호작용적이고 정보를 기억할 수 있도록 만들면 어떨까요?
- 만약 작성한 코드를 다른 프로그램에서도 사용하기 위해 기능을 분리: 추상화의 개념과 같음
추상화 Abstraction
복잡한 소프트웨어 시스템을 효율적으로 설계하고 구현할 수 있는 방법
- 사용자가 낮은 수준의 코드를 작성하지 않도록 도움
- 코드 중복 방지 및 재사용성 향상
- 사용자에게 영향을 끼치지 않은 채로 독립적으로 클래스의 내부 구현 변경 가능
- 중요한 세부 정보만 사용자에게 제공하므로 응용 프로그램 또는 프로그램의 보안 향상에 도움
- 재활용 reusability 방식을 통해 우리의 코드를 훨씬 덜 복잡하고 더 짧게 만들 수 있으며 실수도 줄일 수 있다.
- 정확성 뿐만 아니라 속도와 효율성까지 다룰 수 있다.
- 좋은 코드를 디자인하는 방법..
・ 강의
https://youtu.be/jjqgP9dpD1k?si=kOGSrowor_9otBsd
・ 출처
'basic' 카테고리의 다른 글
This is CS50 (4) Algorithms (0) | 2024.06.06 |
---|---|
This is CS50 (3) Arrays (0) | 2024.06.03 |
This is CS50 (2) C (0) | 2024.05.30 |
심화-캐리와 오버플로우의 차이점 (1) | 2024.05.30 |
OAuth 2.0 에 관하여 (0) | 2024.05.20 |