배꼽파지 않도록 잘 개발해요

방송대 파이썬 프로그래밍 기초 - 1강. 컴퓨터의 이해 본문

방송대 컴퓨터과학과/파이썬 프로그래밍 기초

방송대 파이썬 프로그래밍 기초 - 1강. 컴퓨터의 이해

꼽파 2023. 4. 1. 16:06


  • 1. 데이터와 정보

  • 2. 컴퓨터의 개념

  • 3. 컴퓨터와 프로그램


  • 1. 데이터와 정보

    데이터의 정의와 개념

    데이터 (data) 

    - 어떤 현상이나 사실에 대한 설명 또는 설명의 집합
    - 관찰이나 측정을 통해 얻은 수치, 문자 형태의 표현할 수 있는 질적(quality) 또는 양적(quantity)

     

    • 질적 데이터 (Qualitative, Categorical)

    - 설명적이고 주관적인 특성을 나타내는 데이터

    - 범주로 나누어지며, 보통 숫자나 통계로 측정하기 어려운 현상이나 개념을 포함함.

    - 주로 텍스트, 이미지, 음성 등의 비정량적인 형태로 표현됨.

    ex.  성별, 고객만족도 조사에서 개인적인 경험 등

     

    • 양적 데이터 (Quantitative, Numeric)

    - 정량적이고 객관적인 특성을 나타내는 데이터

    - 수학적 연산(사칙연산 등)이 가능한 수치 값으로, 수치나 통계로 쉽게 측정될 수 있음.

    ex. 고객만족도 조사에서 1부터 5까지 점수로 평가한 리커트 척도, 나이, BMI(체질량지수) 등

     

    ex. 타오르는 불

    붉다,  밝다,  뜨겁다 ---> 질적 데이터
    3500도(연속) ---> 양적 데이터 


    정보의 정의와 개념

    • 정보 (information)  

    - 문제 또는 질문을 해결하기 위해 사용할 수 있는 데이터와 데이터의 집합
    - 관찰과 측정을 통해 얻은 데이터를 처리(정렬, 합산, 군집화 등)하여 실제 문제 해결에 도움이 되는 데이터 또는 결과물

    ex. 
    파란색 불
    - 저 파란색은 무엇일까?
    - 붉고 뜨거운 것과는 무엇이 다를까?


    정보처리 과정

    정보처리 과정 

    현상 ---(관찰,측정)---> 데이터 ---(처리,가공)---> 정보


    • 데이터는 현상에 대한 관찰과 측정으로 생성
    • 데이터는 기록된 사실이지만, 직접적으로 문제를 해결하는데 도움이 되지 않음.
    데이터는 처리와 가공을 통해 정보로 변환됨.


    관찰과 측정

    관찰 : 사물 또는 현상을 파악하는 행위
    • 측정 : 절대적인 기준에 맞춰 현상을 수치로 나타내는 과정 

     

    출처 : http://www.ktword.co.kr/test/view/view.php?m_temp1=5123

     

    • 데이터의 분류 : 질적(범주형)데이터 / 양적(수치형)데이터 [수업X]

    - 질적(범주형) :  명목형 / 순서형

    - 양적(수치형) :

       구간형 / 비율형 (수치 부여 유형에 따른 구분 )

       연속형 / 이산형  (셀 수 있음 여부에 따라 구분)

     

    질적(Qualitative), 범주형(Catergorical) 데이터

    - 명목형(Nominal) : 어떤 속성을 분류하기 위해 수치 부여

      ex. 성별(남, 여), 혈액형(A, B, AB, O), 지역(서울, 대전, 부산), 인종(한국인, 중국인, 일본인 등), 전공(컴퓨터과학, 간호학 등)

    - 서열형(Ordinal) : 상대적인 크기 비교

      ex. 만족도(매우 만족, 불만족, 보통, 만족, 매우 만족), 직급(사원, 대리, 과장, 부장) 등

     

    양적(Quantitative), 수치형(Numerical) 데이터

     

    · 수치 부여 유형에 따른 구분

      - 구간형, 등간형(Interval) : 간격이 균등한 수치 부여

      ex. 온도(섭씨, 화씨), 시간(시, 분, 초), 날짜(월, 일) 등

      - 비율형(Ratio) : 절대 영점이 있는 균등 간격이 있는 자료, 비율 표현 및 비교가 자연스러움.

      ex. 길이(cm, inch), 무게(kg), 빈도(횟수), 속도(km/h), 온도(절대온도) 등

     

    · 셀 수 있음 여부에 따른 구분

      - 이산적, 계수치 (Discrete) : 셀 수 있는 정수 값을 가지는 데이터

      ex. 도시의 인구 수, 사과의 개수 등

      - 연속적, 계량치 (Continuous) : 측정 단위가 연속적인 값을 가지는 데이터

      ex. 온도, 시간, 길이, 무게, 속도, 키, 수익 등


    처리와 가공

    처리와 가공 

    수집된 데이터의 집합을 정렬, 군집화, 계산 또는 표현방법 변경 등의 데이터를 변환하여 정보를 생산하는 과정
    ex. 불의 온도에 따라 나타내는 색상을 나열하여 '빛 온도 스펙트럼(℃)'을 제작함

           → 궁금증을 해결할 수 있는 데이터가 됨.


    2. 컴퓨터의 개념

    컴퓨터의 정의

     컴퓨터 

    - 정의된 방법에 따라 입력된 데이터를 자동으로 처리하여 정보를 생산하는 기계

    - 데이터 처리 과정을 순서화하여 전체 과정을 자동화할 수 있는 장치


    데이터의 기본 단위 

    비트(bit, binary digit

    - 0 또는 1의 두 가지 값 중 하나를 나타내는 이진수(binary digit)의 최소 단위

    - 두 가지 상태값을 표현하는 기본 단위(비트)를 여러 개 중첩시켜 데이터를 표현 또는 처리함.

    - 8bit는 0과 1의 조합으로 256개의 다른 값을 나타냄.

    ex. 불이 켜져 있거나(1), 꺼져 있는 상태(0)

     

    바이트(byte) 

    - 8비트(bit)를 모아서 이루어진 단위 (1byte=8bit)

    - 1byte는 8bit의 조합으로 256개의 다른 값을 나타냄.

    ex. 텍스트 문자 하나, 그림 파일에서 한 픽셀의 색상


    컴퓨터와 2진법

    • 컴퓨터는 트랜지스터를 통해 2진법 숫자로 데이터를 표현하여 저장 및 처리

     

    트랜지스터의 구조

    - 베이스(Base) : 트랜지스터의 중심 부분으로, 전기 신호가 주입되는 곳
    - 컬렉터(Collector) : 트랜지스터에서 전기 신호가 나오는 부분으로, 전기 신호를 출력함.
    - 에미터(Emitter) : 트랜지스터에서 전기 신호가 흐르는 부분으로, 전기 신호의 흐름을 제어함.

     

    트랜지스터의 작동

    - 베이스에 특정 전압 이상의 전류를 흘려주면, 컬렉터와 에미터 사이의 전류가 증폭됨.

    - 트랜지스터에 전류가 흘러간 상태를 1, 차단하여 전류가 흘러 나오지 않는 상태를 0이라고 볼 수 있음.

     

    트랜지스터를 컴퓨터에 사용하는 이유

    - 우리가 사용하는 일반적인 구형 CPU에는 트랜지스터가 50억개, 애플의 M1칩에는 160억개의 트랜지스터가 들어가 있다고 함.

    - 두 가지 상태의 트랜지스터는 축적이 가능하나, 세 네 가지 상태를 갖는 트랜지스터는 축소시켜서 가볍게 들고 다닐 수 있는 휴대용 컴퓨터를 만들기 어려움.
    - 트랜지스터는 컴퓨터를 가장 소형화시키기 좋은 상태로, 이진법이라고 하는 숫자의 형태로만 모든 데이터를 처리함.


    아날로그와 디지털

     아날로그(analog) 

    - 사물이나 개념을 연속적인 물리량 값으로 표현
    - 질적 데이터 또는 양적 데이터로 표현

     

     디지털(digital) 

    - 사물이나 개념을 이산적인 값으로 근사하여 표현

    - 0과 1로 이루어진 비트로 표현됨.

    - 양적 데이터로 표현 

    - 중간과정, 중간값을 표현하기 어려움.

    → 컴퓨터의 디지털 데이터로는 현실의 아날로그 데이터를 그대로 반영할 수 없고 근사하여 표현함.


    숫자 데이터와 문자데이터의 표현

    • 진법 변환 (Number conversion)

    - 숫자를 한 진법에서 다른 진법으로 변환하는 것

    - 컴퓨터가 숫자 데이터를 처리하기 위해 진법 변환이 필요함.

    ex.  10진수, 14진수 ---> 2진법

     

    • 문자 인코딩(character encoding), 텍스트 인코딩(text encoding)

    - 사용자가 입력한 한글, 알파벳 등 문자를 컴퓨터가 이용할 수 있는 신호로 만드는 것.

    - 각각의 비트열이 어떤 문자에 대응되는지 매칭해놓은 표

    - 문자데이터는 숫자와 같이 진법 변환이 불가능하여 고안된 방법임.

    - 가장 처음에 만들어진 인코딩 체계 : ASCII(아스키) 코드표


    ASCII 코드표

     ASCII 코드표

    - 미국정보교환표준부호(American Standard Code for Information)

    - 7비트 인코딩으로, 0부터 127까지 총 128개의 문자에 대한 아스키 코드 값을 표시하고 있음.  

    -  0000000부터 1111111까지의 7자리 수가 나오며, 이 수를 10진수로 변환한 것이 각 문자에 대응하는 아스키 코드 값

    - 52개의 영문 알파벳 대소문자와, 10개의 숫자, 32개의 특수 문자, 하나의 공백 문자로 이루어짐.

     

    패리티 비트(parit bit)

    - 정보 전달 과정에서의 오류 검출을 위해 무결성 검사를 위해 추가된 비트

    - 전송할 데이터의 비트 중에서 1의 개수를 짝수 또는 홀수로 맞추는 방식으로 패리티 비트를 추가함.

    ex. 짝수 패리티 방식 

    - 데이터 비트 중에서 1의 개수가 짝수가 되도록 패리티 비트를 추가함.

    - 전송된 데이터의 1의 개수가 홀수가 되면, 전송된 데이터에 오류가 있음을 나타내게 됨.

     

    아스키 코드표

     자료형(data type)

    - 저장되는 데이터의 종류에 따른 분류

    - 컴퓨터는 입력받은 데이터가 어떤 유형인지 구별해야하므로 숫자, 문자의 구별 정보를 별도 공간 속에 저장함.


    3. 컴퓨터와 프로그램

    프로그램의 이해

     프로그램 (program)

    - 컴퓨터는 정보를 처리하기 위한 방법과 과정을 자의적으로 결정 불가능하여 처리 방법과 과정이 정의된 프로그램을 사용함.

    - 컴퓨터가 어떠한 작업을 자동으로 처리할 수 있도록 처리 방법 및 순서를 컴퓨터가 이해할 수 있는 언어로 기술한 것

    - 유사한 유형의 여러 문제를 추상화시킨 알고리즘(algorithm)을 구현한 결과물


    알고리즘

     알고리즘(algorithm)

    - 문제를 풀기 위한 단계별 절차를 체계적 명령의 형태로 기술한 것

    - 주어진 명령어를 처리하는 컴퓨터에게 문제를 해결하도록 만드는 정형화된 절차

    - 알고리즘에는 입력과 출력이 있어야 하며, 명확성과 유한성, 효율성이 보장되어야 함.

     

    위 알고리즘은 1부터 n(사용자가 입력한 수)의 합을 나타냄을 알 수 있음. 

     

     정렬 알고리즘

    - 모든 카드를 오름차순으로 정렬하는 문제에서 선택정렬 알고리즘을 활용하여 문제를 해결할 수 있음.

    - 선택정렬 알고리즘(selection sort) : 리스트에서 최소값을 찾아 맨 앞으로 이동시키고, 그 다음 최소값을 찾아 두 번째 자리로 이동시키는 과정을 반복하여 리스트 전체를 정렬하는 알고리즘

    선택정렬 알고리즘


    프로그래밍 언어

     프로그래밍 언어

    - 사람과 컴퓨터 사이의 의사소통 도구

    - 프로그래머는 컴퓨터가 이해할 수 있는 언어를 사용하여 프로그램을 작성함.

     

     프로그래밍 언어의 분류

    저급언어
    (기계와 유사)
    1세대 - 기계어, 데이터를 0과 1로 표현함.
    - 컴퓨터가 곧바로 실행하기 쉽지만 사람이 사용하기 어려움.
    2세대 - 어셈블리어
    - 명령어, 영어 대체 (MOV, ad)
    고급언어
    (사람과 유사)
    3세대 - Python, C, Java, Rust
    - 표현의 모호성을 제거하고 자연어와 유사한 형태의 문법을 갖는 프로그래밍 언어
    4세대 - Visual Basic
    - 자동화가 되어서 빨리 만들 수 있으나, 프로그램 효율성이 현저하게 떨어짐.
    - 대부분 3세대 언어를 그대로 사용하고 있음.

     

     프로그램의 실행

    - 고급 언어로 작성된 프로그램은 기계어 밖에 인식할 수 없는 컴퓨터에 의해 실행 불가능

    - 프로그램 언어를 이해하고 해석하는 방법으로 컴파일러(compiler) 또는 인터프리터(interpreter)를 사용

    컴파일러
    (compiler)
    - 프로그램 전체를 목적 프로그램으로 번역한 후 실행 가능한 실행 프로그램을 생성함.
    - 목적 프로그램을 생성함.
    - 객체 코드 생성 때문에 많은 메모리를 필요로 함.
    - 실행 속도는 빠르고, 번역 속도는 느림.
    - C언어, Java 등
    인터프리터
    (interpreter)
    - 소스 코드를 한 줄씩 읽어들여 즉시 실행함.
    - 실행 시간이 길어질 수 있으나, 개발자가 쉽게 디버깅할 수 있음.
    - 실행 속도는 느리고, 번역 속도는 빠름.
    - Python, BASIC, SNOBOL, LISP, APL 등

    참고문헌

    http://www.ktword.co.kr/test/view/view.php?m_temp1=5123

    https://ko.wikipedia.org/wiki/%ED%8A%B8%EB%9E%9C%EC%A7%80%EC%8A%A4%ED%84%B0

    https://ko.wikipedia.org/wiki/ASCII

    728x90