모두를 위한 컴퓨터 과학(CS50) 1. Computational Thinking, Scratch

이민정·2021년 7월 10일
0

CS(컴퓨터과학)

목록 보기
2/3
post-thumbnail

시작하기 전,

컴퓨터의 기본 프로세서, 표현의 단위 등 컴퓨터 과학의 기본 개념들을 알아본다.


1. 컴퓨팅 사고

1)2진법

KEYWORD - 컴퓨터과학/2진법/비트/바이트

컴퓨터과학이란?
문제를 해결하는것.

  • 문제해결 :
    일력을 받아 출력을 만들어내는 과정,
    그 중간에 있는 과정이 컴퓨터과학
    (중간과정을 아는 건 함수를 아는 것과 비슷한가?)

    입력(INPUT)과 출력(OUTPUT)을 표현하기 위해서는 표준(모두가 동의 할 약속)이 필요.

    위의 조건에 충족하는 정보자체의 표현 방법은

  • 2진법(컴퓨터가 말하는 언어)

2진법

0과 1만 존재하는 2진법, 2의 거듭제곱으로 표현.

bit

이진 숫자-0,1 두가지 값만 가질 수 있음.
조합으로 많은 양의 정보를 저장 할 수 있음.

  • 컴퓨터는 많은 수의 비트를 활용하여 정보를 표현 >물리적으로 수행

byte

8비트. 0과 1으로 구성하는 더 효율적인 단위.

트랜지스터

컴퓨터 속에 있는 아주 작은 스위치 컴퓨터내에 수백 수천개가 있음. 물리적으로 이용해서 정보를 표현하고 값을 저장.

tip
데이터단위

2)정보의 표현

KEYWORD - ASC11/유니코드/RGB
앞은 숫자를 표현하는 방법에 대해 배웠음

어떻게 문자와 메일을 문서를 작성 ?
문자와 글자를 나타내는 방법.

Q) 숫자가 아닌 문자는 어떻게 표현하는가?
A) 숫자(2진법,10진법)으로 표현하기로 약속함.
수많은 트렌지스터로 표현

즉, 문자를 숫자로 표현하기로 한 약속(표준)이 있음.

ASC11

정보 교환을 위한 미국 표준 코드.
총 128개의 부호가 있음.

알파벳 A > 10진수 65 > 2진수 1000001

  • 미국중심적인 규칙.

  • ASC11는 바이트만 사용.

  • 문자를 표현하는데는 적합하지 않음.

  • 그러나 세상에는 수많은 다른 언어가 존재 (이모티콘도 마찬가지)를 나타내기에는 부족함.

    이를 해결하기 나온것인 유니코드. 위의 것보다 상위집합

    Unicode

    유니코드는 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들의 표현.

3)알고리즘

KEYWORD- 알로리즘/의사코드
이때까지는 입력을 나타내는 법을 알아봤음.
이제는 출력에 대해서

알고리즘의 정의

문제해결의 관점(컴퓨터의 관점)에서 보면 알고리즘이란, 문제를 해결하는 단계적 방법

길게 풀면,

  • 입력에서 받은 자료를 출력형태로 만드는 처리 과정
    입력값을 출력값의 형태로 바꾸기 위해 어떤 명령들이 수행되어야 하는 지에 대한 규칙들의 순서적 나열

알고리즘의 평가 기준

  • 정확성
  • 효율성 : 작업을 완료하기까지 얼나마 시간과 노력을 덜 들일 수 있는 지에 대한 것


x축은 문제를 푸는 데 걸린 시간
y축은 문제의 크기
기울기가 낮아진다 - 더 효율적인 알고리즘 효율성에 아주 큰 차이를 보임

의사코드

  • 알고리즘을 명료하게 정리하는 방식
  • 컴퓨터가 수행할 작업을 프로그램 언어가 아니라 사람이 사용하는 언어로 알고리즘의 논리적 절차를 작성한 코드
  • 필요한 행동이나 조건을 잘 설정하여 컴퓨터가 수행해야 하는 일을 절차적으로 파악할 수 있게 도와줌

함수

코드에 강조된 부분은 함수

  • 함수는 컴퓨터에게 이 경우 사람에게 뭘 할 지 알려주는 동사.

조건

  • 선택지중 하나를 선택하는 것.

선택하기 위해서는 스스로 에게 던질 질문이 필요함

불리언

이 질문을 불리언 표현이라고 한다.

  • 에스 노/ 참,거짓 나옴 즉 0,1이 나오는 질문

루프

  • 뭔가를 계속해서 반복하는 순환

4) 스크래치: 기초

KEYWORD - 스크래치/블록

스크래치 : 퍼즐 조각처럼 보이는 블럭들을 끌어 놓은 방식으로 연결시켜 컴퓨터가 무엇을 할지 단계적으로 프로그램언어
스크래치

  • 입력값과 변수, 알고리즘, 출력값에 대한 개념을 쉽게 이해할 수 가 있음.

5) 스크래치: 심화

변수 : 컴퓨터에서는 X,Y,Z보다 더 구체적인 이름을 붙임
변수를 다루면 프로그램을 더 상호호환적임.

조건문

각요소의 역활과 자리

문제해결에 있어 더 좋은 코드를 만들기 위한 방식으로 더 좋은 방법들이 있다는 걸 알 수 있음

좋은 코드를 디자인하는 방법
좋은코드란, 어느입장이든 관리하리 하기 용이한 코드
여러곳은 바꾸기 보단 한 군데만 수정하면 됨.

추상화의 개념(?)


부족한 부분

  • 의사코드의 함수,조건,불리언,루프의 구분이 필요
  • 추상화의 개념에 대한 이해도가 떨어짐
  • 의사코드 구성하는 연습이 필요

복습때 집중할 부분

  • 제시된 스크래치 링크를 통해 코드를 짜는 개념을 익히기.

학습소감

컴퓨터의 사고와 알고리즘의 정확한 개념을 알게 되어 좋았다. 파이썬이나 C언어등 문법 이해에 많은 도움이 되었다!!! 스크래치로 코드 구조를 쉽게 이해할 수 있는 연습을 할 수 있어 좋음! 확실히 기본개념을 탑재하는 냐...아니냐...는 많은 차이가 있는 것 같다.

profile
잘하고, 잘하고 싶고, 잘해야되는 사람

0개의 댓글

관련 채용 정보