yngmanie 블로그

컴퓨터과학개론

해당 포스트는 방송통신대학교 교제인 컴퓨터과학개론을 찹고하여 작성하였습니다. 잘못된 부분이 있다면 댓글 부탁드립니다.

1. 컴퓨터

1.1 컴퓨터

컴퓨터란 무엇인가?

  • 컴퓨터란 프로그램이 가능한 자료처리기 입니다. 여기서 프로그램은 일련의 명령집합을 뜻합니다.

1.2 컴퓨터과학

컴퓨터과학이란 무엇인가?

  • 컴퓨터와 소프트웨어를 언제, 어떻게 효율적으로 활용할지를 고민하는 학문입니다. 즉, 컴퓨터가 전자적인 장치를 의미한다면 컴퓨터과학은 자료의 표현, 저장, 조작, 검색과 밀접한 관계가 있는 학문입니다.

컴퓨터공학이란 무엇인가?

  • 최적의 하드웨어와 소프트웨어의 조합을 통해 가성비 좋은 컴퓨팅엔진을 만드는데 초점을 맞춘것이 컴퓨터공학입니다.

1.3 컴퓨터 시스템

시스템이란?

  • 목적을 달성하기위해 상호작용하고 유기적으로 관련된 구성요소의 모임을 뜻합니다.

컴퓨터 시스템의 4대 구성요소

  • 하드웨어: 눈으로 보고 만질 수 있는 기계적인 모든 부분을 뜻하고, 기억장치, 산술논리연산장치, 제어장치, 입출력장치로 구성되며 흔히 익숙하게 들어봤던 CPU(Central Processing Unit)는 산술논치연산장치와 제어장치를 어울러서 이르는 용어입니다.

  • 소프트웨어: 모든 프로그램을 총체적으로 표현하는 용어가 소프트웨어입니다. 크게 시스템 소프트웨어와 응용 소프트웨어로 구분할 수 있으며 시스템 소프트웨어는 컴퓨터의 전체적인 운영을 담당하는 것으로 운영체제, 컴파일러, 각종 유틸리티가 이에 해당하며, 응용 소프트웨어는 사용자가 요구하는 작업을 직접 수행하는 프로그램으로 사용자가 주로 사용하는 것이 이에 해당합니다.

  • 자료

  • 사용자

1.4 자료의 표현

  • 자료를 처리한다는 것은 평가되지 않은 값이나 사실에 대해서 가농 또는 변환 등의 과정을 거쳐 정보를 생성하는 과정입니다. 자료를 정보로 변환하는 과정이 자료처리이고 현재는 정보처리라는 표현을 일반적으로 사용하고 있습니다.

  • 하나의 컴퓨터에서 다양한 자료(텍스트, 이미지, 영상 등)를 처리하기위해서는 자료의 형태과 무관하게 자료를 표현할 방식이 필요했으면 그것이 바로 비트패턴입니다. 비트패턴으로 자료를 저장된 자료가 어떤 형태인지 표현하지 않기때문에 입출력장치나 특정 프로그램으로 자료를 해석하고 처리해야 합니다.

2. 자료구조

데이터를 효율적으로 구조화하고 처리하는 방법을 연구하는 분야입니다.

2.1 기본개념

  • 자료구조: 추상화를 통해 자료의 관계를 구조한 것입니다.
  • 추상화: 다양한 객체의 공통적인 개념을 추출하여 그룹화하는 것입니다.
  • 자료구조의 형태
    • 미리 정의된 자료구조
      • 기본 자료구조: 정수, 실수, 문자
      • 파생된 자료구조: 배열, 구조체, 포인터
    • 사용자 정의 자료구조: 리스트, 스택, 큐, 트리 등…

2.2 배열

  • 똑같이 생긴 방을 연속해서 만들고, 그 방 안에 같은 종류의 자료를 저장하는 것입니다.
  • 동일한 변수의 안에 공간을 나눠 일렬로 저장하는 자료의 집합체입니다.

2.3 리스트

linear list(선형 리스트)

  • 하나 이상의 원소들이 순서를 가지로 구성된 것이 linear list(선형 리스트)입니다.
  • linear list에는 삽입, 삭제, 호출, 갱신, 검색, 정렬 등의 다양한 연산을 적용할 수 있습니다.

linear list 구현

  • 배열을 이용하는 방법

    • 삽입과 삭제를 수행할 때 원소들의 자리이동이 발생합니다.
    • linear list의 논리적인 순서와 배열의 물리적인 저장 순서가 동일하다.
  • 포인터 변수를 이용하는 방법 (linked list를 이용하는 방법)

    • 원소값을 저장하는 노드와 노드 연결에 필요한 링크필드를 가집니다.
    • linked listsms linear list와 논리적인 순서만 지원합니다.

2.4 스택과 큐

스택

  • 데이터의 삽입과 삭제가 한쪽 끝에서만 이루어지는 자료구조를 의미합니다.

  • 선형리스트의 한쪽 끝에서는 데이터 삭제만 이루어지고 다른 한쪽 끝에서는 삽입만 이루어지는 자료구조입니다.
  • 할당된 저장공간이 꽉 차 데이터를 삽입할 수 없는 현상을 overflow라고 합니다.
  • 삭제할 데이터가 존재하지 않아 삭제가 되지 않는 현상을 underflow라고 합니다.

3. 알고리즘

3.1 알고리즘의 기본 개념

  • 주어진 문제를 해결하기위한 단계적인 풀이 과정의 집합입니다.

알고리즘의 정의와 조건

  • 입출력: 0개 이상의 입력과 1개 이상의 출력이 있어야 합니다.
  • 명확성: 명령은 단순 명료해야 합니다.
  • 유한성: 한정된 수의 단계를 거치고 반드시 종료되어야 합니다.
  • 유효성: 모든 명령은 실행 가능한 것이어야 합니다.

알고리즘 표현 방법

  • 자연어: 사람이 사용하는 언어로 인간의 입장에서 이해하기는 쉽지만 명령을 명확하게 기술하기는 어렵기때문에 알고리즘을 표현하기에는 부적합합니다.
  • 순서도: 도식으로 표현하기때문에 명령의 흐름을 명확하게 나타낼 수 있지만 복잡한 알고리즘에서 사용하기에는 한계가 있습니다.
  • 의사코드: 일상 언어와 프로그래밍 언어를 혼합해서 사용해서 알고리즘을 표현합니다.