N-S 차트
IT위키
더 많은 작업
N-S 차트(Nassi-Shneiderman Chart, NS 차트)는 프로그램의 처리 흐름을 화살표 없이 순차·선택·반복 세 가지 구조의 상자만을 겹쳐 쌓아 나타내는 구조적 프로그래밍용 설계 도표이다.
N-S 차트는 1973년 아이작 나시(Isaac Nassi)와 벤 슈나이더만(Ben Shneiderman)이 구조적 프로그래밍에 맞춰 고안했다. 전체 프로그램을 큰 직사각형 하나로 놓고, 그 안을 순차·선택·반복 구조를 뜻하는 작은 상자로 나누어 채운다. 상자 안에 상자를 넣는 방식이라 상자 도표(Box Diagram)라고도 하고, 구조적 흐름도(Structured Flowchart)라고도 부른다.
순서도는 기호를 화살표(흐름선)로 이어 흐름을 그리므로 어디로든 건너뛰는 흐름(GOTO)을 그릴 수 있다. N-S 차트에는 화살표가 없다. 흐름은 언제나 위에서 아래로 내려가며, 상자는 정해진 세 구조로만 그릴 수 있다. 그래서 임의로 제어를 옮기는 GOTO 를 표현할 수 없고, 그려진 도표는 그대로 구조적 프로그램이 된다.
| 구조 | 그리는 법 | 프로그램 구문 |
|---|---|---|
| 순차(Sequence) | 처리 상자를 위에서 아래로 차례로 쌓는다 | 대입문, 함수 호출의 나열 |
| 선택(Selection) | 상자 위쪽에 조건을 적은 역삼각형을 두고 아래를 참·거짓 두 칸으로 나눈다 | if ~ else |
| 다중 선택(Case) | 조건 아래를 값마다 여러 칸으로 나눈다 | switch ~ case |
| 반복(Iteration) | 반복 조건을 적은 테두리가 안쪽 상자를 ㄱ자·ㄴ자로 감싼다. 조건이 위에 있으면 선조건(while), 아래에 있으면 후조건(do-while, until) 반복이다 | while, for, do-while |
예를 들어 "n 을 입력받아 n 이 0 보다 크면 1 부터 n 까지 더해 출력하고, 아니면 오류를 출력" 하는 처리는 다음처럼 나뉜다.
| n 입력 | |
| n > 0 ? (선택) | |
| 참 | 거짓 |
|---|---|
| sum ← 0, i ← 1 | "오류" 출력 |
| i ≤ n 인 동안 반복: sum ← sum + i, i ← i + 1 | |
| sum 출력 | |
- 논리의 기술에 중점을 두고 도형(상자)으로 표현한다
- 순차·선택·다중 선택·반복 같은 제어 논리 구조만으로 흐름을 나타낸다
- 화살표나 GOTO 를 쓰지 않는다. 임의의 위치로 제어를 옮기는 것은 표현할 수 없다
- 모든 구조가 입구 하나, 출구 하나(single entry, single exit)를 가진다
- 흐름이 한눈에 보여 이해하기 쉽고, 상자가 그대로 if·while 같은 구문에 대응해 코드로 옮기기 쉽다
- 선택 구조가 표처럼 나뉘어 조건이 겹친 곳의 처리를 명확히 알아볼 수 있다
- 단점: 그리기가 번거롭고, 일부를 고치면 도표를 다시 그려야 하는 경우가 많다. 상자 하나가 처리 하나라 큰 프로그램 전체 구조나 모듈 사이의 인터페이스를 나타내기에는 알맞지 않다