컴퓨터개요
1 - 1 문제해결(problem solving)
목차
- 문제해결
- 컴퓨터공학 사고력
- 컴퓨터 공학적 문제 해결 방법
< 문제해결 >
문제가 있을때 그 문제를 우리는 어떻게 해결해야할지 고민하게 된다.
그래서 문제가 있을때 문제를 분석하고 그 순서에 따라서 절차를 만들게 된다. 그 절차에 따라서 문제가 해결이 되면 해결 방법을 출력하게 된다.
그런 내용을 문제해결 방법과 절차라하며, 문제해결과정에 있어서 문제가 입력되면 이 문제를 해결할 수 있는 해결방법과 절차를 알고리즘(Algorithm)이라 한다. 그 후에 해결 방법을 만들게 된다.
what is Computational Thinking?
CT는 읽기, 쓰기, 셈하기와 더불어 누구나 갖춰야하는 기본 역량
CT는 컴퓨터과학의 이론, 기술, 도구를 활용하여 현실의 복잡한 문제를 해결하는 사고 방식이다. 의학, 법, 경제, 정치, 예술 등 사회 모든 분야에서 보편적으로 필요한 핵심 능력이다. (Jeannette M. Wing)
=> CT라 하는 이 사고력은 꼭 컴퓨터과학에서만 이용되는 것이 아니라 모든 분야에서 다 사용될 수 있으므로 우리는 이 컴퓨터과학에서 하는 이론과 기술을 활용해야 한다는 것.
(이 수업에서 정의하는) 컴퓨터공학 사고력
주어진 문제를 분석, 이해하고 문제의 해결 방법을 컴퓨터 공학의 원리를 적용하여 알고리즘을 도출하고 컴퓨터가 이해하는 프로그래밍 언어로 제시하는 사고능력
=> 우리가 문제 해결방법을 위해 일상생활에서 사용되는 것은 일반적으로 컴퓨터를 사용하지 않고도 활용할 수 있는 부분들이 많다. 이 수업에서는 컴퓨터공학의 원리를 적용해서 프로그래밍 언어로 제시할 수 있는 능력을 향상시키기 위해 C프로그래밍 언어를 활용할 예정이다.
일반적으로 우리는 문제가 있으면 이 문제를 이해하고 분석하는 단계는 일반 문제 해결과정과 컴퓨터 공학적 문제해결과정과 동일하다.
그런데, 이 문제를 이해하고 분석한 다음에 일반적 이해과정에서는 문제 해결방안을 탐색한 후 해결방법을 만들게 되고 그후에 실행 후 평가한다.
그렇다면 컴퓨터공학적 문제해결과정은 어떤 차이가 있을까?
컴퓨터공학적 문제해결과정에서는 컴퓨터공학원리를 적용한다는 부분과 그것을 알고리즘 설계와 프로그래밍 언어로 구현한다는 부분이 다르게 된다. 그리고 결과를 검토하게 된다.
컴퓨터공학적 문제 해결과정
-
컴퓨터공학적 문제해결
- 컴퓨터 공학 사고력은 정보를 처리하는 과정과 방식을 이해하고, 다시 알고리즘을 도출하여 컴퓨터에게 프로그래밍 언어로 명령할 수 있는 사고력
- 컴퓨터 공학적 문제 해결 과정은 '문제 이해 및 분석' -> '컴퓨터 공학적 원리 적용' -> '문제 해결 방법의 설계(알고리즘 설계)' -> '문제 해결 방법의 프로그래밍(알고리즘 구현)' -> '결과 검토' 의 5단계의 과정으로 이루어진다. 1단계인 '문제 이해와 분석' 단계는 일반적인 문제 해결 과정과 동일
-
컴퓨터공학의 원리 적용
- 데이터 수집 : 문제 이해와 분석을 토대로 문제를 해결하기 위한 자료를 모으는 단계
- 자료 분석 : 수집된 자료와 문제에 주어진 자료를 세심히 분류하고 분석하는 단계*
- 데이터 표현 : 문제의 자료 내용을 그래프, 차트, 단어, 이미지 등으로 표현하는 단계
- 문제 분석 : 문제를 해결해나가기 위해 문제를 모듈로 나누어 분석하는 단계
- 추상화 : 문제의 복잡도를 줄이기 위해 기본 주요 개념의 일반화 정의를 설정하는 단계
- 알고리즘과 절차 : 지금까지의 문제를 해결하기 위한 과정을 순서적 단계로 표현한느 단계
- 자동화 : 분석한 문제 중 컴퓨터가 수행할 수 있도록 해결과정을 알고리즘화하는 단계
- 시뮬레이션 : 문제 해결을 위한 실험모델을 만드는 단계
컴퓨터 공학적 문제 해결과정(정리)
- 문제 이해 및 분석
- 이 문제를 컴퓨터 공학적 원리 적용한다
- 문제 해결 방법의 설계(이를 알고리즘 설계라 한다)
- 문제 해결 방법의 프로그래밍(알고리즘 구현, 코딩)
- 결과 검토
문제 해결 방법의 설계(알고리즘 설계)
분할정복(divide and conquer) 알고리즘
- 가장 많이 쓰이는 알고리즘 중 하나
- 어떤 문제를 해결하는 알고리즘에서 원래 문제를 성질이 똑같은 여러개의 부분 문제로 나누어 해결하여 원래의 문제의 해를 구하는 방식
- 보통 프로그래밍 언어에서 이 알고리즘을 이용해서 다양한 문제를 해결하고 있다.
의사 코드(pseudo code)와 순서도(flow chart)를 이용하여 코딩하기 전에 설계도를 만들게 된다.
의사코드는 일반적인 언어로 코드를 흉내 내어 알고리즘을 써놓은 코드. 하지만 의사코드는 그대로 코드에 집어넣을 수는 없다. 하지만 프로그래밍으로 문제해결과정에서는 의사코드로 순서를 정해서 표현할 수 있는 능력이 중요하다. 그리고 이 의사코드를 잘 만들었다면 이 순서대로 순서도를 만들 수도 있다.
순서도는 여러 종류의 상자와 화살표를 이용해 명령의 순서(알고리즘)를 보여주는 도형이다.
이 설계도가 완성이 되면 쉽게 코드화가 가능하다.
요약
- 문제해결 방법으로 컴퓨터공학 사고력을 말했다
- 일반적 문제 해결방법과 컴퓨터 공학적 문제해결방법의 차이를 말했다
- 컴퓨터공학적 문제 해결방법을 살펴보았다
- 거기서 많이 사용되는 분할정복 알고리즘을 보았다
- 의사코드, 순서도를 보았다
출처 (포스텍mooc)
'컴퓨터공학입문' 카테고리의 다른 글
2 - 2 변수와 상수 (0) | 2019.08.25 |
---|---|
2 - 1 C언어 구조 (0) | 2019.08.25 |
1 - 4 프로그래밍 개발 환경 (0) | 2019.08.25 |
1 - 3 컴퓨터개요_프로그래밍 언어 종류 (0) | 2019.08.23 |
1 - 2 컴퓨터개요_컴퓨터와 자료표현 (0) | 2019.08.23 |