알고리즘, ADL

bgy·2021년 9월 7일
0

알고리즘

목록 보기
1/3

알고리즘(algorithm)

  • 특정문제를 해결하기 위해 기술한 일련의 명령문

프로그램(program)

  • 알고리즘을 컴퓨터가 이해하고 실행할 수 있는 특정 프로그래밍 언어로 표현한 것

알고리즘의 요건

완전성과 명확성

  • 수행결과와 순서가 완전하고 명확하게 명세되어야 함
  • 순수하게 알고리즘이 지시하는대로 실행하기만 하면 의도한 결과가
    얻어져야 함

입력과 출력

  • 입력 : 알고리즘이 처리대야 할 대상으로 제공되는 데이터
  • 출력 : 입력 데이터를 처리하여 얻은 결과

유한성

  • 유한한 단계 뒤에는 반드시 종료

ADL (Algorithm Description Language)

  • 알고리즘 기술을 위해 정의한 언어
  • 사람이 이해하기 쉽고, 프로그래밍 언어로의 변환이 용이
  • 의사 코드 (pseudo-code) : ADL과 약간의 자연어로 기술한 것
  • ADL 데이터 : 숫자, 부울(Boolean) 값, 문자
  • ADL의 명령문 :
    • 종류 : 지정문, 조건문, 반복문, 함수문, 입력문, 출력문
    • 명령문 끝에는 세미콜론(;)을 사용

지정문

  • 형식 : 변수 ← 식;
  • 식 (expression)
    • 산술식
    • 부울식
      – 결과 : 참(true) 또는 거짓 (false)
      – 표현
      • 논리 연산자(and, or, not)
      • 관계 연산자(<, ≤, =, ≠, ≥, >)
    • 문자식
  • 제어 구조 : 순차적

조건문

  • 제어 구조 : 선택적
  • 종류 : if문과 case문

if문

if (cond) then S1
else S2

case문

case {
cond1 : S1
cond2 : S2
. . .
condn : Sn
else : Sn+1
}

반복문

  • 제어 구조 : 일정한 명령문 그룹을 반복해서 수행하는 루프(loop) 형태
  • 종류 : while문, for문, do-while문

while문

  • 형식
    while cond do
    S
  • 무한 루프
    while true do
    S

for문

  • 형식
    for (initialization; cond; increment) do
    S
  • 동등한 while문
    initialization
    while cond do {
    S
    increment;
    }
  • 무한 루프
    for ( ; ; ) do
    S
    (cond의 기정값이 true이므로)

do-while문

  • 형식
    do
    S
    while cond;
  • S가 최소한 한 번은 실행됨

루프 명령문

  • goto 명령문 : 루프에서 바로 빠져나갈 때 사용
  • exit문 : 자신을 둘러싸고 있는 가장 가까운 루프 밖의 명령문으로 제어를 이동시킴

함수문

  • 형식
    function-name(parameter_list)
    S
    end
  • 호출 함수로의 복귀
    return expr;
    여기서 expr은 함수의 실행 결과
  • 함수 호출
    function-name(argument-list)
    인자 리스트(argument-list)는 타입과 수에 있어서 함수의 형식 매개 변수와 대응되어야 함
  • 인자와 매개변수와의 연관
    값 호출 (call by value) 규칙
    각 인자의 실제 값이 호출된 함수로 전달
    인자의 값이 주소(참조)가 되면 매개 변수에 주소 값이 전달되어 값은 데이터 지시

입력 함수

read (argument_list);

출력 함수

print (argument_list);

인자

변수나 인용 부호가 있는 문자열

기타 명령문

  • 주석문 : //는 그 행 끝까지, //은 주석문의 시작과 끝 표시
  • 다차원 배열 : a[n1, n2, … , nn]

ADL 기술 규칙

  • 함수의 입·출력 변수를 명확히 명세
  • 변수의 의미를 알 수 있게 정의
  • 알고리즘의 제어 흐름은 되도록 순차적
  • 시각적 구분을 위해 들여쓰기 이용
  • 코멘트는 짧으면서 의미는 명확히
  • 함수를 적절히 사용

0개의 댓글