오늘은 알고리즘과 순서도에 대해서 짚어 보겠습니다.~
우리가 컴퓨터를 사용하는 목적은 주어진 문제를 사람의 힘을 빌리지 않고 컴퓨터를 이용하여 해결하는 것입니다. 이렇게 컴퓨터를 이용해 문제 해결을 하려면 다음의 4단계를 거쳐야만 합니다.
◎ 컴퓨터를 이용한 문제 해결 4단계
▶ 1단계 : 주어진 문제를 정확하게 이해하고 이를 분석함
▶ 2단계 : 분석한 문제를 해결하기 위한 가장 좋은 방안을 구상, 이 문제 해결 과정과 결과물이 알고리즘(Algorithm)임
▶ 3단계 : 알고리즘을 컴퓨터가 알아들을 수 있는 방법으로 표현하여 컴퓨터가 이를 수행하도록 지시함
이러한 작업이 프로그래밍(Programming) 또는 코딩(Coding)으로 C언어나 Java 같은 프래그래밍 언어를 알아야 함
▶ 4단계 : 작성한 프로그램을 컴퓨터 상에서 실행하여 출력을 얻음
이 때 얻은 출력이 처음 기대한 바와 다르면 프로그램이 잘못 작성된 경우이므로 3단계 프로그래밍 과정을 다시 거침
이러한 검증 과정이 *디버깅(Debugging)임
컴퓨터를 이용한 문제 해결 4단계 | |||
1단계 | 주어진 문제 이해와 분석 | ||
↓ | |||
2단계 | 문제 해결 방안 구상 | → | 문제 해결 방안 = 알고리즘 |
↓ | |||
3단계 | 컴퓨터 프로그램 작성 | → | 프로그래밍 = 코딩 |
↓ | |||
4단계 | 프로그램 실행 및 검증 | → | 검증 = 디버깅 |
* [참고] 디버깅(Debugging)
; 작성한 프로그램 안에 존재하는 벌레(Bug), 즉 오류를 찾아 없애는(de=away, from)과정이란 뜻으로 원래는 프로그램을 대상으로 실시하지만, 2단계 알고리즘의 오류를 검증할 때도 같은 용어를 사용함. 이 디버깅 작업을 할 때 표(Table)를 사용하는데, 이를 디버깅표(Debugging Table)라고 함.
◎ 알고리즘과 순서도
▶ 알고리즘을 표현하는 여러 방식 중에 순서도(Flowchart)를 가장 많이 사용함
● 순서도 : 미리 약속한 기호 그림을 사용하여 논리적 절차, 흐름, 처리방법 등을 표현한 것을 말함
● 순서도의 장점 : 그림을 사용하므로 알고리즘의 구조나 특성을 한 눈에 파악하기 쉽고, 서로 오해하지 않으면서 객관적인 의사소통이 가능함
● 가장 좋은 알고리즘
- 주어진 문제를 해결하기 위한 알고리즘이 한 개만 존재하는 것이 아님
(ex) 여러 숫자를 크기 순서대로 정렬(Sorting) 알고리즘으로는 선택 정렬, 버블 정렬, 삽입 정렬, 병합 정렬, 퀵 정렬, 쉘 정렬, 히프 정렬, 계수 정렬, 기수 정렬 등이 있음
- 좋은 알고리즘은 우선 그 출력 결과가 100% 정확해야 할 뿐만 아니라, 이를 프로그램으로 옮겨 컴퓨터에서 실행했을 때 그 성능이 좋아야 함
- 알고리즘의 성능은 시간과 공간을 기준으로 측정함
알고리즘을 실행할 때 걸리는 시간이 짧고, 데이터 처리에 필요로 하는 저장 공간이 작을수록 성능이 좋은 알고리즘임
◎ 어플리케이션과 알고리즘
▶ 소프트웨어는 시스템 소프트웨어와 어플리케이션 소프트웨어로 구분함
어플리케이션과 알고리즘 | |
시스템 S/W | - 컴퓨터 시스템을 사용자가 편리하면서도 효율적으로 사용할 수 있도록 해주는 소프트웨어로서 운영체제가 가장 대표적 - 특정한 하드웨어 환경과 이를 지원하는 시스템 소프트웨어를 통합하여 "플랫폼" 이라고 부름 - 이전에는 플랫폼이라 하면 독립적인 컴퓨터 시스템에 한정해 생각했지만, 지금은 클라이언트/서버 환경을 추가한 "C/S 플랫폼", 인터넷 환경까지 확대된 "웹 플랫폼", 스마트폰 환경까지 고려한 "모바일 플랫폼"과 같은 특정 플랫폼이 등장했음 |
어플리케이션 S/W | - 특정한 플랫폼 환경에서 주어진 어떤 문제를 효율적으로 해결할 수 있도록 제작된 소프트웨어 - 이를 간단히 어플리케이션, 어플, 앱이라고도 부름 - 애플리케이션을 제작하는 전문가가 프로그래머인데 요즘에는 어플리케이션 프로그래머, 앱 프로그래머, 앱 개발자라는 명칭도 사용. 특히 플랫폼 명칭까지 결합하여 "모바일 앱 개발자"와 같이 사용되기도 함 |
▶ 어플리케이션 설계 및 개발의 핵심
: 주어진 문제를 효율적으로 해결할 수 있는 방안을 구상해내는 과정 ==> 이 과정의 결과물이 바로 "알고리즘"
∴ 어플리케이션이 특정한 플랫폼 혹은 다양한 플랫폼에서 실행될 수 있도록 플랫폼을 감안하여 설계하고 개발하는 과정도 필요하지만, 이것은 지엽적이며 핵심은 아님. 어플리케이션이 실행되는 플랫폼은 앞으로도 다양하게 변화하겠지만, 그 위에서 주어진 문제를 효율적으로 해결하기 위한 알고리즘은 어플리케이션의 설계 및 개발에 있어서 여전히 중요한 핵심임.
'IT 이야기' 카테고리의 다른 글
자료구조란? (0) | 2022.07.21 |
---|---|
코딩 고수가 되려면 (0) | 2022.07.20 |
좋은 프로그래머와 알고리즘 (0) | 2022.07.18 |
소프트웨어 3R과 CASE (0) | 2022.07.16 |
소프트웨어 유지 보수(Maintenance) (0) | 2022.07.14 |
댓글