본문 바로가기
IT 이야기

알고리즘 표현 방법

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

   오늘은 알고리즘 기초에 대해 한번정리해 보려고 합니다. 

그리고 자료구조와 알고리즘에 대해서는 앞으로 조금씩 더 다뤄보겠습니다.

 

 

◎ 효과적인 알고리즘과 표현 방법

 

   알고리즘은 주어진 문제를 해결하기 위한 방법을 추상화하여 일련의 단계적 절차를 논리적으로 기술해 놓은 일종의 명세서입니다. 

 

그리고 효과적인 알고리즘이 되기 위해서는 다음의 조건을 만족해야 합니다. 

1 입력(Input) - 알고리즘 수행에 필요한 자료가 외부에서 입력되어야 함
2 출력(Output) - 알고리즘 수행 후 하나 이상의 결과를 출력해야 함
3 명확성(Definiteness) - 수행할 작업의 내용과 순서를 나타내는 알고리즘의 명령어들은 명확하게 명세되어야 함
4 유한성(Finiteness) - 알고리즘은 수행 뒤에 반드시 종료되어야 함
5 효과성(Effectiveness) - 알고리즘의 모든 명령어들은 기본적이며 실행이 가능해야 함

 

◎ 알고리즘 표현 방법

1 자연어를 이용한
서술적 방법
- 사람이 사용하는 자연어(언어)를 이용하여 표현함.
- 그러나 자연어는 서술적이고 사용하는 사람에 따라 일관성과 명확성을 유지하기 어려워 누구나이해하고 사용해야 하는 알고리즘을 표현하는 방법으로는 한계가 있음
2 순서도를 이용한
도식화 표현 방법
- 알고리즘을 그림으로 도식화하여 표현하는 방법
- 순서도(Flow Chart)의 작성 규칙에 따라 도식화
- 순서도는 명령의 흐름을 쉽게 파악할 수 있는 장점이 있지만, 복잡한 알고리즘을 표현하기에는 효과적이지 못함
3 프로그래밍 언어
이용한 구체화 표현 방법
- 프로그래밍 언어를 사용하여 알고리즘을 표현함
- 이 방법으로 표현할 경우 알고리즘 자체가 실제로 구체화된 구현이므로 추가적인 구체화 작업이 필요없음
- 그러나 특정 프로그래밍언어로 작성된 알고리즘은 그 언어를 모르는 사람은 이해하기 어려움
- 다른 프로그래밍 언어로 개발해야 하는 상황에서는 알고리즘을 번역하고 필요한 다른 프로그래밍 언어로 변환해야 하는 작업이 필요하게 되어 오히려 비효율적임
4 가상코드를 이용한
추상화 표현 방법
- 알고리즘을 프로그래밍 언어로 표현했을 때의 장단점을 감안하여 특정 프로그래밍 언어가 아니면서 프로그래밍 언어의 형태를 갖춘 가상코드(Pseudo-code)를 사용하여 알고리즘을 표현하는 방법
- 가상코드는 특정 프로그래밍 언어가 아니기 때문에 직접 실행할 수는 없지만, 일반적인 프로그래밍 언어의 형태를 가지기 때문에 원하는 특정 프로그래밍 언어로 변환(구체화 작업)하기가 쉬움

 

  ▶ 순서도

    : 다음과 같은기호를 사용하여 알고리즘의 실행 단계를 표현함

 

  ▶ 가상코드(ADL : Algorithm Description Language)

    : 가상코드는 '고리즘의 기술 언어'라고도 르며, 가상코드의 형식은 다음과 같습니다. 

 

    ■ 기본 요소

     - 가상코드에서 알아두어야 할 기본 요소는 기호와 자료형, 연산자로 기호는 문자나 숫자의 조합으로 첫글자는 반드시 영문자여야 함.  

기호 - 변수, 자료형 이름, 프로그램 이름, 레코드의 필드 이름, 문장의 레이블 이름 등을 나타낼 때 사용
- 문장의 레이블 다음에는 콜론(:)을 두어서 수행할 문장과 구분되게 함
자료형 - 정수형과 실수형의 수치 자료형, 문자형, 논리형, 포인터, 문자열 등의 모든 자료형을 사용할 수 있음
연산자 - 산술 연산자, 관계 연산자, 논리 연산자가 있음

 

    ■ 지정문

     - 변수에 값을 지정하는 지정문은 다음의 형식을 취함

변수 ← 값;

     - 지정문의 의미는 지정 연산자(←)의 오른쪽에 있는 값(또는 식의 계산 결과값이나 변수값)을 지정 연산자(←)의 왼쪽에 있는 변수에 저장하라는 의미

     - 명령문은 세미콜론(;)을 사용하여 한 문장의 끝을 표시하고, 한 줄에 여러 개의 명령문을 쓸 수 있음

     - 지정문에 사용할 수 있는 식은 산술식, 부울식, 문자식 등으로 모든 연산식을 사용할 수 있음

 

    ■ 조건문

     - 조건문은 조건에 따라 실행할 명령문이 결정되는 선택적 제어구조를 만들며, if 문과 case 문이 있음

 

      ① if 문

       : 조건식의 결과에 따라서 명령문이 선택되며, 하나 이상의 명령문을 중괄호({ })로 묶으면 하나의 명령문으로 취급함

 

        ● if-then-else형

if (조건식) then 명령문 1;
else 명령문 2;

         조건식이 참이면 then 다음의 명령문 1이 수행되고, 조건식이 거짓이면 else 다음의 명령문 2가 수행됨

 

        ● if-then형

if(조건식) then 명령문 1;

          조건식이 참이면 then 다음의 명령문 1이 수행되고, 조건식이 거짓이며 명령문 1을 수행하지 않음

if (조건식 1) then 명령문 1;
else if (조건식 2) then 명령문 2;
        else 명령문 3;

          또한 복잡한 조건식을 표현하기 위해 if 문을 여러 개 중첩하여 사용할 수 있음

 

      ② case 문

        : 여러 조건식 중에서 해당하는 조건식을 찾아서 그에 대해 정해진 명령을 수행하는 조건문으로 하나의 case 문은 중첩 if 문과 같은 의미를 나타냄

case {
      조건식 1 : 명령문 1;
      조건식 2 : 명령문 2;
      ...
      조건식 n : 명령문 n;
      else : 명령문 n+1;

         

    ■ 반복문

     - 반복문의 제어 구조는 일정한 명령을 반복 수행하는 루프(loop)형태가 해당되며, for 문, while-do 문, do-while 문이 있음

      ① for 문

        : 가장 많이 사용하는 반복문

for (초기값 ; 조건식 ; 증감값) do 명령문;

        '초기값'은 반복문을 시작하는 시작값이고, 한 번 수행할 때마다 '증감값'에 따라 증가 또는 감소하면서 '조건식'을 검사하여 참이면 '명령문'을 반복 수행. 명령문은 하나일 수도 있고 여러 개의 명령문을 묶어서 만든 명령문의 그룹일 수도 있음

 

      ② while-do 문

while (조건식) do 명령문;

         조건식을 검사하여 조건식이 참인 동안 명령문을 반복 수행

 

      ③ do-while 문

do 명령문;
while (조건식);

          일단 명령문을 수행하고, 그 다음에 조건식을 검사하여 조건식이 참이면 반복 수행을 시작함,

           do-while 문은 whil-do 문과 달리 조건식이 참이 아니더라도 일단 명령문이 반드시 한 번은 수행

 

 

     함수문

     - 어떤 문제를 처리하는 프로그램을 만들 때, 한 개의 프로그램으로 구성하는 것보다 처리할 작업별로 모듈화하여 작은 단위 프로그램 여러 개로 나누어 구성하는 것이 좋음

     - 전체 프로그램 중 같은 작업은 하나의 단위 프로그램에서 독립적으로 수행하게 되어 프로그램의 크기가 줄어들고, 수정과 관리가 쉬울 뿐만 아니라 다른 프로그램도 단위 프로그램을 재사용할 수 있음

     - 이러한 단위 프로그램을 함수(Function)라고 하며, 함수 호출을 통해서 독립적으로 실행되며, 매개변수를 사용하여 다른 함수 및 프로그램과 서로 연결

함수 이름 (매개 변수)
            명령문;
             ...
             return 결과값;
end

 

 

∴ 위 설명에서 각 문의 순서도는 제외하고 형식만을 기술했는데, 이를 잘 보시고 각자 순서도도 그려보시면서 확실히 이해 하고 숙지하시기 바랍니다! 무엇이든 기본이 튼튼해야 그 위에 성공의 탑을 세울 수 있으니까요!~~ ^^

 

 

 

728x90

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

취업관련 IT자격증_국제공인  (1) 2022.07.25
취업관련 IT자격증_국가공인  (0) 2022.07.23
자료구조란?  (0) 2022.07.21
코딩 고수가 되려면  (0) 2022.07.20
알고리즘과 순서도  (0) 2022.07.19

댓글