2020/09/08 - [Learn/자료구조와 알고리즘] - 자료구조와 알고리즘 학습 #3 소프트웨어 생명주기
자료구조
추상 자료형
1) 뇌의 추상화 기능 : 기억할 대상의 구별되는 특징만을 단순화하여 기억하는 기능
2) 컴퓨터를 이용한 문제 해결에서의 추상화
가) 자료 추상화(Data Abstarction)
- 크고 복잡한 문제를 단순화시켜 쉽게 해결하기 위한 방법
- 처리할 자료, 연산, 자료형에 대한 추상화 표현
나) 자료(Data)
- 프로그램의 처리 대상이 되는 모든 것을 의미
다) 연산(Operation)
- 어떤 일을 처리하는 과정으로 연산자에 의해 수행
라) 자료형(Data Type)
- 처리할 자료의 집합과 자료에 대해 수행할 연산자의 집합
3) 추상 자료형(ADT, Abstact Data Type)
- 자료형의 종류
= 시스템의 정의 자료형
= 사용자 정의 자료형 : 사용자가 필요에 따라 시스템 정의 자료형이나 기존에 정의해 놓은 다른 사용자 정의 자료형을 이용하여 정의
- 추상화
-> 자료형을 정의하기 위해서는 구체적인 구현에 앞서 자료형에 대한 자료와 연산자의 특성과 연산자는 무엇을 수행해야하는지를 정의 해야한다.
- 추상화의 장점
-> 구체적인 구현을 포함하지 않기에 알고리즘을 개발하기가 단순해지며, 실제 프로그래밍 언어를 사용하여 프로그램으로 구체화하기 쉬움
-추상화와 구체화
= 추상화 : '무엇인가?"를 논리적으로 정의
= 구체화 : '어떻게 할 것인가'를 실제적으로 표현
알고리즘
정의
주어진 문제를 해결하기 위한 방법을 추상화하여 단계적 절차를 논리적으로 기술해놓은 명세서
조건
1. 입력(Input) : 알고리즘 수행에 필요한 자료가 외부에서 입력으로 제공될 수 있어야 한다.
2. 출력(Output) : 알고리즘 수행 후 하나 이상의 결과를 출력해야 한다.
3. 명확성(Definiteness) : 수행할 작업의 내용과 순서를 나타내는 알고리즘의 명령어들은 명확하게 명세 되어야 한다.
4. 유한성(Finiteness) : 알고리즘은 수행 뒤에 반드시 종료되어야 한다.
5. 효과성(Effectiveness) : 알고리즘의 모든 명령어들은 기본적이며 실행이 가능해야 한다.
표현
1) 자연어를 이용한 서술적 표현 방법
- 사람이 사용하는 자연어(언어)를 이용하여 표현
- 자연어는 서술적이고 사용하는 사람에 따라 일관성과 명확성을 윶지하기가 어려워 누구나 이해하고 사용해야 하는 알고리즘을 표현하는 방법으로 한계가 있다.
2) 순서도(Flow Chart)를 이용한 도식화 표현 방법
- 알고리즘을 그림으로 도식화하여 표현
- 순서도의 작성 규칙에 따라 도식화하여 명령의 흐름을 쉽게 파악할 수 있지만, 복잡한 알고리즘을 표현하기에 효과적이진 못하다.
3) 프로그래밍 언어
- 프로그래밍 언어를 이용하여 표현
- 알고리즘 자체가 실제로 구체화된 구현으로 추가적인 구체화 작업 필요 없음
- 특정 프로그래밍 언어로 작성된 알고리즘의 경우 그 언어를 모르는 사람의 경우 이해가 어려움
- 다른 언어로 개발해야 하는 경우 알고리즘을 번역하고 다른 프로그래밍 언어로 변환해야 하는 작업이 추가로 필요
4) 의사 코드(Pseudo-code)를 이용한 추상화 방법
- 특정 프로그래밍 언어가 아니면서 프로그래밍 언어의 형태를 가진 의사 코드를 사용하여 표현
- 프로그래밍 언어가 아니기에 실행할 수 없지만 일반적인 프로그래밍 언어의 형태를 가지고 있기 때문에, 나중에 특정 프로그래밍 언어로 변환하기 용이함
'Learn > 자료구조와 알고리즘' 카테고리의 다른 글
자료구조와 알고리즘 #5 의사 코드의 표현과 성능 분석 (0) | 2020.09.08 |
---|---|
자료구조와 알고리즘 학습 #3 소프트웨어 생명주기 (0) | 2020.09.08 |
자료구조와 알고리즘 학습 #2 자료 표현 (0) | 2020.08.29 |
자료구조와 알고리즘 학습 #1 자료구조 간단히 알아보기 (0) | 2020.08.29 |