프로그래밍 단계는 다음과 같이 이루어 진다.
문제의 이해 -> 논리의 설계 -> 코딩 -> 번역 -> 테스트 -> 활용
다음과 같은 단계들이 있는데 이중 순서도는 프로그램 논리 설계 과정에서 쓰인다. 순서도란 문제 해결에 쓰인 논리를 단계적으로 그림으로 표현한 것을 말한다. 또한 순서도를 이용하면 명령문들의 관계를 시각적으로 보여줄 수 있다.
순서도 작성하는데 있어 방법은 다음과 같다.
1) 명령문의 기능에 해당하는 의미를 지닌 도형을 그림.
2) 명령문의 정확한 순서를 파악하기 위해 화살표를 이용해서 흐름을 그림
대부분의 프로그램은 입력, 처리, 출력 기본적인 이 세가지 단계를 모두 지니고 있다.
이제 순서도의 기호들에는 어떤것들이 있는지 살펴보자.
1) 단말(terminator)
이 기호는 단말(terminator)이라는 기호이다. 외부환경으로 나가거나 외부 환경으로 들어오는것을 나타낸다. 주로 프로그램의 시작과 종료를 나타낼 때 사용된다. 일반적으로 쓸때는 시작할때는 기호 안에 start를, 프로그램이 종료되는 부분에는 기호 안에 stop를 넣어준다.
2) 처리(Process)
기호라는 기능을 가진 이 기호는, 여러 종류의 처리 기능을 수행할 수 있다. 연산의 실행, 자료형, 데이터의 값, 위치 등을 바꾸는 등을 처리해야할 작업이 있으면 해당 내용을 기호 안에 적어준다.
ex) a += 1;
3) 입력 및 출력 기호(Input/Output)
입력 및 출력 기호는 입력연산 및 출력연산을 나타낼 때 사용한다.
ex)printf / scanf 등
4) 판단(decision symbol)
판단(decision symbol)기호는 if문과 같이 어떤 조건에 대한 판단에 따라 출구가 갈리도록 흐름을 변경해 주는 기능(스위치 기능)을 의미하는 기호이다.
답은 주로 참 혹은 거짓에 따라 흐름이 달라진다.
5)미리 정의한 처리(Predefined)
미리 정의한 처리 기호에서는 서브루틴 및 모듈 등 해당 프로그램 외부로부터 이미 정의한 연산 또는 명령어들에 대한 처리를 나타낸다.
예시를 들자면 한 코드 안에서의 함수에서 함수간의 이동을 예시로 들 수 있다.
6)주석(Comment)
주석 기호는 말 그대로 주석이다. 코드에서 주석을 쓰듯이 순서도의 주석 또한 해당 순서도에 부가적인 설명을 덧붙이기 위해 사용된다.
7)선(line)
해당 프로그램의 논리 순서를 나타내기위해 사용한다. 주로 화살표를 붙여서 진행 방향을 표시해준다
8)루프(loop)
루프 범위는 두 범위로 나누어진다. 루프의 시작, 루프의 끝. 루프의 기호는 사다리꼴 닮은 육각형으로 표시한다. 루프의 기호의 시작과 끝의 기호 안에는 동일한 루프의 이름을 사용해야한다.
우선적으로 그림에 봤듯이 시작기호 혹은 종료 기호에는 꼭 초기값, 증가값, 종료값, 변수명(필수 x)이 표기되어있어야한다. 여기서 보면 두가지의 루프 형태가 그려져 있다. 이 루프문 두개의 차이점을 보기 전, 우선 while문 반복부터 보자. while문 반복은 어떤 조건이 성립하는 동안 처리를 반복한다. 그리고 만약 while문의 조건문의 값이 0이 된다면(이는 Boolean이 True -> False로 된다는 의미.)while문을 나가게된다. 일반적인 while문 구조를 '사전 판단 반복 구조' 라고 한다.(왼쪽) 반면 오른쪽 같은 경우는 do~ while문과 같이 우선적인 처리를 하고 while문 조건을 보는것과 동일한데, 이러한 형태를 '사후 판단 반복' 이라고 한다.
이제 이러한 기호로 나타낼 수 있는 순서도의 기본 구조들에 대해 살펴보자.
우선 구조라는 것은 기본적인 논리단위이며, 세가지의 구조로 모든 논리를 표현할 수 있다.
1)순서
2)선택
3)루프
순서도의 특징을 생각하면, 우선 순서도에서는 한 구조를 다른 구조의 입구 또는 출구로 연결하는것이 가능하며, 한 구조를 다른 구조 안에 중첩시킬 수 있다.
1)순서 구조
흐름이 순차적으로 수행되는것을 말한다. 순차구조에서는 흐름이 여러개여도 상관이 없다. 단 중간부터 시작하는 과정을 구현해서는 안된다. 즉 처음 시작했으면 정해진 순서대로만 끝까지 가야한다는 소리이다.
2)선택 구조
단일 if문 혹은 이중 if문과 같이 조건의 참과 거짓에 대해서 흐름이 바뀌는 구조를 의미한다.
3)루프 구조
일정 수행문을 수행한 후 종료 조건에 대해 완전히 만족하기 전까지 동일한 수행을 다시 수행하는 구조이다.
'CS 지식 > Algorithm-이론 및 PS스킬 정리' 카테고리의 다른 글
파이썬 Extended Slices (0) | 2019.09.09 |
---|---|
O 표기법(Big - O Notation), 쎄타 표기법(Theta Notation), 오메가 표기법(Omega Notation) (0) | 2019.03.18 |
Base Algorithm with Python #3 (0) | 2019.01.23 |
Base Algorithm with Python #2 (0) | 2019.01.13 |
Base Algorithm with Python #1 (0) | 2019.01.13 |