Notice
Recent Posts
Recent Comments
Link
«   2025/06   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30
Archives
Today
Total
관리 메뉴

Fear is a habit. I'm not afraid.

This is CS 50 (1) Computational Thinking, Scratch 본문

basic

This is CS 50 (1) Computational Thinking, Scratch

sylviaisthebest 2024. 5. 28. 10:49

목차

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

・ 출처

https://youtu.be/jjqgP9dpD1k?si=kOGSrowor_9otBsd

https://cs50.harvard.edu/college/2019/fall/notes/0/

'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