본문 바로가기

KNU Freshman/컴퓨터학개론

(1) 컴퓨팅 사고

컴퓨터란?
-데이터를 저장하고, 검색하고 처리할 수 있는 프로그래밍 가능한 전자적 기계 장치
 
컴퓨팅적 사고란?
두뇌에서 이루어지는 문제 해결과정을 컴퓨터가 수행할 수 있도록 하는 것
문제해결과정 -> 알고리즘으로 표현하고, 자동화할 수 있는 시스템 만드는 것 
 
컴퓨팅 사고력(Computational Thinking)
-1980, 미국 시모어 페퍼트 교수가 처음 사용
-문제 해결할 때, 필요한 자료 추출하고 분석하고 자료의 일정한 경향을 파악하는 알고리즘 구성 포함
-카네기 멜론 대학의 지넷 윙이 모든 사람이 갖추어야 할 기능이라고 주장함 
 
* 컴퓨팅은 추상화한 것을 자동화하여 컴퓨터로 처리하는 것 
 
컴퓨팅 사고를 이용한 문제 해결 단계
 

컴퓨팅 사고를 이용한 문제 해결 단계

<원칙 및 기술>
-데이터 수집
-분해
-패턴인식
-추상화
-알고리즘 설계
-테스트와 디버깅
-반복
 
<사례>
-경로 계획
-정렬
-검색
-프로그램 작성
 
 
[컴퓨팅 사고를 위한 주요 도구]
 
문제 분석(Problem Analysis)
<문제 분석을 위한 기준>
1. 분할 가능한가? -> 도형의 넓이 구하기 vs 피보나치 수열
2. 행동의 수정이 가능한가? -> 수식 풀이 vs 게임
3. 행동의 결과가 예측 가능한가? -> 사칙연산 vs 비가 올 확률
4. 요구되는 해의 종류는 무엇인가? -> 정답 vs 근사해
5. 어느 정도의 지식이 필요한가? -> 덧셈/곱셈 vs 일기 예보
6. 사용자와의 상호작용이 필요한가? -> 정렬 vs MBTI
 
분해(Decomposition)
-복잡한 문제를 나누어서 해결 가능한 크기의 작은 문제들의 집합으로 바꾸는 기술
 
1. 분석: 주어진 문제를 작은 부분으로 어떻게 분해할지에 대한 과정
2. 합성: 부분을 모아서 주어진 문제에 대한 해답 만드는 과정
3. 병렬처리: 작은 문제들을 해결하는 데 다중작업을 사용하는 것 
 
패턴 인식(Pattern Recognition)
-데이터나 문제 안에서 경향성, 규칙성을 찾는 기술
 
<패턴 발견의 중요성>
- 어떤 문제를 해결할 때 문제 안에서 내재된 패턴을 발견한다면 문제를 쉽게 해결할 수 있음, 나중에 같은 문제 발생 경우, 같은 해결책 사용 가능
-문제해결 과정에서 분해와 패턴인식은 함께 사용됨
 
추상화(Abstraction)
- 복잡한 문제를 구조화하고, 해결 가능한 상태로 만드는 사고과정
 
자동화(Automation)
- 추상화 과정에서 만들어진 해결 모델을 프로그래밍 언어로 표현하는 과정
*인간이 처리하기 어려운 많은 양의 반복된 작업이나 시뮬레이션을 실시하는 과정
 
알고리즘(Algorithm)
- 입력 값을 받아서 원하는 출력 값을 만드는 데 필요한 컴퓨터 연산이나 동작들의 순서적인 모음
-알고리즘을 프로그래밍 언어로 표현하면 프로그램이 됨
 
<알고리즘의 표현 방법>
순서도

순서도

 
의사코드

의사코드

! 알고리즘의 조건 !

  • 입력 : 외부에서 제공되는 자료가 0개 이상 존재한다.
  • 출력 : 적어도 2개 이상의 서로 다른 결과를 내어야 한다.(즉 모든 입력에 하나의 출력이 나오면 안됨)
  • 명확성 : 수행 과정은 명확하고 모호하지 않은 명령어로 구성되어야 한다.
  • 유한성(종결성) : 유한 번의 명령어를 수행 후(유한 시간 내)에 종료한다.
  • 효율성 : 모든 과정은 명백하게 실행 가능(검증 가능) 한 것이어야 한다.

문제의 표현
- 컴퓨터가 이해하고, 실행할 수 있는 형식으로 변환하는 것
 
문제는 상태공간으로 표현, 탐색을 통해 해를 찾을 수 있음(트리, 그래프, 수학적 모델등으로 문제 표현 가능)

 
데이터의 표현
- 디지털로 표현되어 내부에 저장되는 방식
-컴퓨터에서는 데이터를 저장하기 위하여 전기신호를 이용(on, off-> 1,0)
-2진수, 10진수, 16진수, ASCII 코드 등 사용하여 문자, 소리, 그림 등의 데이터 저장
 
아날로그 -> 디지털로 변환, 이산(discrete) 데이터로 변환함
 
데이터의 분류
데이터의 가공 및 분류
- 활용 목적에 따라 분류하고, 편리한 사용을 위하여 정제함
-정형, 반정형 비정형으로 분류
 
<데이터 구조화의 종류>

 
 
컴퓨터 프로그래밍(Computer Program)
-하나 이상의 관련된 추상 알고리즘을 특정한 프로그래밍 언어를 이용해 구체적인 컴퓨터 프로그램으로 구현하는 기술
 
컴퓨터 구조와 동작 방식 
-데이터 표현: 이진법
-명령어의 실행: Fetch-Decode-Execution
-컴퓨터의 구조: CPU, 메모리, 입출력 장치
 
프로그램 내장형 구조

프로그램 내장형 구조

'KNU Freshman > 컴퓨터학개론' 카테고리의 다른 글

(6)-1 컴퓨터 구조와 운영체제  (0) 2024.04.15
(5) 프로그램의 번역  (0) 2024.04.11
(4) 프로그램 구조  (0) 2024.04.11
(3) 프로그래밍 언어의 역사  (0) 2024.04.11
(2) 컴퓨터의 역사 & 알고리즘  (0) 2024.04.10