본문 바로가기
IT 이야기

알고리즘과 순서도

by 준샤인 2022. 7. 19.
반응형

   오늘은 알고리즘과 순서도에 대해서 짚어 보겠습니다.~

우리가 컴퓨터를 사용하는 목적은 주어진 문제를 사람의 힘을 빌리지 않고 컴퓨터를 이용하여 해결하는 것입니다. 이렇게 컴퓨터를 이용해 문제 해결을 하려면 다음의 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 - 특정한 플랫폼 환경에서 주어진 어떤 문제를 효율적으로 해결할 수 있도록 제작된 소프트웨어
- 이를 간단히 어플리케이션, 어플, 앱이라고도 부름
- 애플리케이션을 제작하는 전문가가 프로그래머인데 요즘에는 어플리케이션 프로그래머, 앱 프로그래머, 앱 개발자라는 명칭도 사용. 특히 플랫폼 명칭까지 결합하여 "모바일 앱 개발자"와 같이 사용되기도 함

▶ 어플리케이션 설계 및 개발의 핵심

  : 주어진 문제를 효율적으로 해결할 수 있는 방안을 구상해내는 과정 ==> 이 과정의 결과물이 바로 "알고리즘

 

∴ 어플리케이션이 특정한 플랫폼 혹은 다양한 플랫폼에서 실행될 수 있도록 플랫폼을 감안하여 설계하고 개발하는 과정도 필요하지만, 이것은 지엽적이며 핵심은 아님. 어플리케이션이 실행되는 플랫폼은 앞으로도 다양하게 변화하겠지만, 그 위에서 주어진 문제를 효율적으로 해결하기 위한 알고리즘은 어플리케이션의 설계 및 개발에 있어서 여전히 중요한 핵심임.

 

 

728x90

'IT 이야기' 카테고리의 다른 글

자료구조란?  (0) 2022.07.21
코딩 고수가 되려면  (0) 2022.07.20
좋은 프로그래머와 알고리즘  (0) 2022.07.18
소프트웨어 3R과 CASE  (0) 2022.07.16
소프트웨어 유지 보수(Maintenance)  (0) 2022.07.14

댓글