[ICDL Computing(PYTHON)] 2장. 컴퓨팅 사고

2023. 4. 1. 16:31자격증/ICDL Computing PYTHON

2.1 컴퓨팅 사고 개념

컴퓨팅 사고computational thinking: 컴퓨터가 효과적으로 수행할 수 있도록 문제를 정의하고 그에 대한 답을 기술하는 것이 포함된 사고 과정 일체. 시모어페퍼트, 지넷 윙.

문제정의>문제분석>최적의 답을 위한 요건 찾기>최적의 해결책 찾기>제안된 최적의 해결책들이 요건에 맞는지>실행전략

*컴퓨터를 포함할 수 있지만 그렇지 않을 수도 있다.

컴퓨팅 사고는 컴퓨터가 해야 할 일을 정확하게 얘기할 수 있도록 한다.

 

  2.1.1 문제 분해, 패턴 인식, 추상화, 알고리즘

최초 문제의 다양한 변종 문제를 해결하는데 사용될 수 있는 기법이 일반화와 추상화.

 

  2.1.2 문제분해 Decomposition

: 문제를 다룰 수 있는 작은 소문제로 나누는 작업. 문제를 분해하면 문제가 쉽게 해결된다.

분석analysis을 통하여 문제를 작게 나누고, 합성synthesis과정에서 해결된 문제의 정답을 합하며, 분해된 문제는 때에 따라서는 병렬화parallelization를 통하여 동시에 해결을 시도하며, 혹은 순차화sequential를 통하여 순서대로 해결. 

  2.1.3 패턴 인식 Pattern Recognition

: 문제 안, 혹은 문제 간에 있는 패턴을 찾는 작업

패턴: 문제에서 유사성을 찾아내는 것.

 

#Recognizing patterns is critical for using a computer to aid in solving problem(X)패턴은 모델링. 컴퓨터 사용하기 전 단계

#Patterns are opportunities for efficiency in solving problems.(O)

#Patterns help determine which operations can and need to be done in solving a problem.(O)

#Patterns allow operations to be repeated, saving time.(O)

 

  2.1.4 추상화 Abstraction/Pattern Generalization

추상화: 일반적인 모델을 생성하도록 도움. 패턴의 인식을 통하여 관련된 변수를 찾아내고 그룹화하여 일반화.

패턴 일반화: 관찰된 패턴에 대한 모델과 규칙 생성.

 

#추상화는 문제 패턴을 찾아서 일반화하는 과정.

 

  2.1.5 알고리즘 Algorithm Design/자동화 Automation

:문제를 해결하는 단계적인 명령을 개발하는 작업.

알고리즘: 어떤 일을 진행하는 명령들의 나열 혹은 어떤 일이 진행되는 규칙의 집합.

모델링 단계를 연산단계로 바꾸는 과정! 

명령어들은 순차적이며, 정확하여 어느 끝에 도달할 수 있도록 한다.

 

알고리즘 디자인 - 컴퓨터 프로그래머는 사람의 아이디어로 코딩이라는 과정을 통하여 명령어를 만들고, 컴퓨터가 이해하는 언어로 번역. 

WYSIWYG; What You See Is What You Get.

1. 명령어가 모호하지 않아야 함. unambiguous.

2. 입출력 정의.

3. 종료하는 때 정의.

4. 컴퓨터의 결과는 해석가능해야함.

 

순서도 Flowcharts.

 

 

2.2 알고리즘

  2.2.1 순차sequence와 반복interation, loop

순차: 명령어를 순서대로 나열하는 것 ==순서화, 순차화, 시퀀싱

반복: 반복을 끝내는 조건condition이 필요하게 됨.  

 

  2.2.2 순서도flowchart, 의사코드pseudocode

순서도: 알고리즘을 나타내는 방법으로 기호를 사용.

의사코드: 프로그램을 작성할 때 각 모듈이 작동하는 논리를 표현하기 위한 언어. 자연어로 코드를 흉내 내어 알고리즘을 써놓은 코드.

 

  2.2.3 순서도 기호

  2.2.4 연산의 순서

  2.2.5 알고리즘 작성 및 수정

정렬sort - 오름차순ascending/내림차순descending

 

# 컴퓨터 프로그램이나 알고리즘이 수행해야할 내용을 우리가 사용하는 자연어를 이용해 간략히 서술하는 것: 의사코드