flowchart 작성법 - skkulab.icc.skku.ac.kr/~vlsitest/pro_lab/report/flowchart.pdf ·...

24
전자전기 프로그래밍 실습 Flowchart 작성법

Upload: others

Post on 31-May-2020

25 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Flowchart 작성법 - SKKUlab.icc.skku.ac.kr/~vlsitest/pro_lab/report/Flowchart.pdf · 2010-03-05 · Flowchart 란? Program Flowchart 프로그램의작성단계를표현하여그것에대한이론을나타냄

전자전기 프로그래밍 실습

Flowchart 작성법

Page 2: Flowchart 작성법 - SKKUlab.icc.skku.ac.kr/~vlsitest/pro_lab/report/Flowchart.pdf · 2010-03-05 · Flowchart 란? Program Flowchart 프로그램의작성단계를표현하여그것에대한이론을나타냄

전자전기 프로그래밍 실습

2

Flowchart 란?

Algorithm

어떤 문제를 해결하기 위해 수행할 작업을 순서대로 파악해서, 그순서에 따라 해결 방법을 결정하는 방법

수학의 문제 해결 방법으로 사용할 뿐만이 아니라 일상 생활과 일의경우에도 무의식적으로 사용

Flowchart

Algorithm을 정해진 기호를 이용한 그림으로 표시하여 시각적으로표현한 것

Page 3: Flowchart 작성법 - SKKUlab.icc.skku.ac.kr/~vlsitest/pro_lab/report/Flowchart.pdf · 2010-03-05 · Flowchart 란? Program Flowchart 프로그램의작성단계를표현하여그것에대한이론을나타냄

전자전기 프로그래밍 실습

3

Flowchart 란?

Program Flowchart

프로그램의 작성 단계를 표현하여 그것에 대한 이론을 나타냄

프로그램의 기능과 처리 순서를 검토하는데 사용

Program Flowchart 사용 목적

문제 해결을 위한 논리적인 순서의 검토와 구성

프로그램의 서류형태로 기록 및 전달

( 사양 변경 등에서 보조 수단으로 사용 )

Page 4: Flowchart 작성법 - SKKUlab.icc.skku.ac.kr/~vlsitest/pro_lab/report/Flowchart.pdf · 2010-03-05 · Flowchart 란? Program Flowchart 프로그램의작성단계를표현하여그것에대한이론을나타냄

전자전기 프로그래밍 실습

4

Flowchart 기호

Data 기호

데이터 ( data )

데이터는 매체를 지정하지 않는 데이터를나타낸다.

모든 기억 매체의 입출력 기능을 나타냄

라인 프린터 ( line printer)

출력을 나타내는 기호

문서를 화면에 출력시키는 것을 의미

Page 5: Flowchart 작성법 - SKKUlab.icc.skku.ac.kr/~vlsitest/pro_lab/report/Flowchart.pdf · 2010-03-05 · Flowchart 란? Program Flowchart 프로그램의작성단계를표현하여그것에대한이론을나타냄

전자전기 프로그래밍 실습

5

Flowchart 기호

처리기호

처리 ( process )

판단 ( decision )

임의 종류의 처리기 등을 나타냄

정의된 연산의실행을 표현

연속하는 몇 개의 흐름 방향 중 1개를결정하는

연산을 표현

주어진 조건에 따라 비교하여 해당 되는 조건에

따라흐름을결정

기호 내의 판단 또는 스위치 형의 기능을 나타냄

판정된 평과 결과는 경로를 나타내는 선 가까이에

기술

Page 6: Flowchart 작성법 - SKKUlab.icc.skku.ac.kr/~vlsitest/pro_lab/report/Flowchart.pdf · 2010-03-05 · Flowchart 란? Program Flowchart 프로그램의작성단계를표현하여그것에대한이론을나타냄

전자전기 프로그래밍 실습

6

Flowchart 기호

특수기호

연결자 ( connector )

예 시

같은 Flowchart 내에서 다른 부분으로의 입구 또는 출구를

표현

선을 끊어서 다른 장소에서 계속하기 위해 사용하기도 함

대응하는 연결자에는 같은 이름을 붙여야 함

2

1

21

Page 7: Flowchart 작성법 - SKKUlab.icc.skku.ac.kr/~vlsitest/pro_lab/report/Flowchart.pdf · 2010-03-05 · Flowchart 란? Program Flowchart 프로그램의작성단계를표현하여그것에대한이론을나타냄

전자전기 프로그래밍 실습

7

Flowchart 기호

특수기호

단자 ( terminator )

주석 ( annotation )

외부 환경으로부터의 입,출구

프로그램 흐름의 시작 또는종료를표현

외부 참조 또는 데이터의 전이를 나타내기도함

작업 내용을 명확하게 하기 위한 도구

주석의 연결선은 관련기호에 붙임

평균 점수를

계산 평균점수 = 총합계 / 인원수

Page 8: Flowchart 작성법 - SKKUlab.icc.skku.ac.kr/~vlsitest/pro_lab/report/Flowchart.pdf · 2010-03-05 · Flowchart 란? Program Flowchart 프로그램의작성단계를표현하여그것에대한이론을나타냄

전자전기 프로그래밍 실습

8

Flowchart 기호의사용법

자주사용되는기본적인기호

: 흐름선

Flowchart 기호 연결, 실행 순서표시

: 판단기호

조건 판단 후 흐름을 바꿈

: 처리기호

모든 종류의 처리와 행동 표시

: 단자기호

Flowchart의 시작과 종료 표시

Page 9: Flowchart 작성법 - SKKUlab.icc.skku.ac.kr/~vlsitest/pro_lab/report/Flowchart.pdf · 2010-03-05 · Flowchart 란? Program Flowchart 프로그램의작성단계를표현하여그것에대한이론을나타냄

전자전기 프로그래밍 실습

9

Flowchart 기호의사용법

Flowchart 흐름의방향

처리의 흐름 방향

위 => 아래

왼쪽 => 오른쪽

원칙에 맞추지 않을 때

흐름의 방향에 따라 화살표를 붙여야 함

원칙에 따르는 경우

화살표를 붙이지 않아도 된다.

화살표를 붙인 것이 알기 쉬우면 화살표를 붙여도 좋음

Page 10: Flowchart 작성법 - SKKUlab.icc.skku.ac.kr/~vlsitest/pro_lab/report/Flowchart.pdf · 2010-03-05 · Flowchart 란? Program Flowchart 프로그램의작성단계를표현하여그것에대한이론을나타냄

전자전기 프로그래밍 실습

10

Flowchart 기호의사용법

흐름의방향 예시

Ex 1 Ex 2

Page 11: Flowchart 작성법 - SKKUlab.icc.skku.ac.kr/~vlsitest/pro_lab/report/Flowchart.pdf · 2010-03-05 · Flowchart 란? Program Flowchart 프로그램의작성단계를표현하여그것에대한이론을나타냄

전자전기 프로그래밍 실습

11

Flowchart 기호의사용법

Flowchart의교차 흐름선( flow line)의 교차는 보기 쉽게 하기 위해 피하는 편이 좋음

흐름선의 교차 해결흐름선의 교차

Page 12: Flowchart 작성법 - SKKUlab.icc.skku.ac.kr/~vlsitest/pro_lab/report/Flowchart.pdf · 2010-03-05 · Flowchart 란? Program Flowchart 프로그램의작성단계를표현하여그것에대한이론을나타냄

전자전기 프로그래밍 실습

12

Flowchart 기호의사용법

두 개 이상의출구 한 개의 Flowchart 기호에 두 개 이상의 출구를 나타내는 경우

A, B를 비교조건식

1 2 3 4 5

A > B

A < B

A = B

Page 13: Flowchart 작성법 - SKKUlab.icc.skku.ac.kr/~vlsitest/pro_lab/report/Flowchart.pdf · 2010-03-05 · Flowchart 란? Program Flowchart 프로그램의작성단계를표현하여그것에대한이론을나타냄

전자전기 프로그래밍 실습

13

Flowchart 기호의표현

설명 ( statement )

기호 내에서는 처리에 나타내는 최소한의 Statement 사용

기술 방법은 무조건 [왼쪽 => 오른쪽], [위 => 아래] 방향

기호 내에 글을 써 넣지 못할 때는 주석에 의해 기술

합계 점수를 인원수로

나누어 평균 점수를

구한다.

계산식

평균 = 합계 ?인원수

Ex .

Page 14: Flowchart 작성법 - SKKUlab.icc.skku.ac.kr/~vlsitest/pro_lab/report/Flowchart.pdf · 2010-03-05 · Flowchart 란? Program Flowchart 프로그램의작성단계를표현하여그것에대한이론을나타냄

전자전기 프로그래밍 실습

14

Flowchart의구조단위

직선형

몇 개의 명령 또는 처리를 위에서부터 순서대로 실행하는 형식

처리 2

처리 1

처리 3

Page 15: Flowchart 작성법 - SKKUlab.icc.skku.ac.kr/~vlsitest/pro_lab/report/Flowchart.pdf · 2010-03-05 · Flowchart 란? Program Flowchart 프로그램의작성단계를표현하여그것에대한이론을나타냄

전자전기 프로그래밍 실습

15

Flowchart의구조단위

선택형 ( 분기형 )

조건의 판단에 따라서 실행하는 처리가 달라지는 형식

조건 판단의 뒤에 두 가지 방향으로 흐름을 분기

각각의 흐름에 별개의 처리를 수행

조건

처리 A 처리 B

조건

처리 A

조건

처리 Ayes

no

yes

no

yes

no

Page 16: Flowchart 작성법 - SKKUlab.icc.skku.ac.kr/~vlsitest/pro_lab/report/Flowchart.pdf · 2010-03-05 · Flowchart 란? Program Flowchart 프로그램의작성단계를표현하여그것에대한이론을나타냄

전자전기 프로그래밍 실습

16

Flowchart의구조단위

루프형 ( 반복형 )

일련의 처리를 반복하여실행하는 형태

판단 기호에서 반복의 실행 유무를 결정

종료 조건

처리처리 종료 조건

처리

yes

no

yes

no

Page 17: Flowchart 작성법 - SKKUlab.icc.skku.ac.kr/~vlsitest/pro_lab/report/Flowchart.pdf · 2010-03-05 · Flowchart 란? Program Flowchart 프로그램의작성단계를표현하여그것에대한이론을나타냄

전자전기 프로그래밍 실습

17

Flowchart의구조단위

선택형

If 문을 여러 개 조합하면 세 종류 이상의 방향으로 분기 가능

Case 형식 을 사용하면 편리

조건

처리 처리 처리

Page 18: Flowchart 작성법 - SKKUlab.icc.skku.ac.kr/~vlsitest/pro_lab/report/Flowchart.pdf · 2010-03-05 · Flowchart 란? Program Flowchart 프로그램의작성단계를표현하여그것에대한이론을나타냄

전자전기 프로그래밍 실습

18

Program Flowchart

좋은 Program Flowchart의조건

논리의전개가바르다

요구된 처리를 오류 없이 실행할 수 있는 것

보기쉽고, 알기 쉽고, 간결하다.

기술이 통일되어 있어야 함

논리가 정리되어 있어야 함

조건이 명확하게 되어 있어야 함

Flowchart가 복잡하지 않아야 함

Flowchart의추적과

개선필요

Page 19: Flowchart 작성법 - SKKUlab.icc.skku.ac.kr/~vlsitest/pro_lab/report/Flowchart.pdf · 2010-03-05 · Flowchart 란? Program Flowchart 프로그램의작성단계를표현하여그것에대한이론을나타냄

전자전기 프로그래밍 실습

19

Program Flowchart의추적

Program Flowchart의추적

추적 ( trace )

실제로 값을 적용시켜서 Flowchart의 옳고 그름을 판단하는 것

추적의 방법

추적 결과 = 계산 결과 : 프로그램의 논리가 바르다는 것을 입증

추적 결과 ≠ 계산 결과 : 논리가 바르지 않기 때문에 한 번 더 처리의 흐

름을 확인

Page 20: Flowchart 작성법 - SKKUlab.icc.skku.ac.kr/~vlsitest/pro_lab/report/Flowchart.pdf · 2010-03-05 · Flowchart 란? Program Flowchart 프로그램의작성단계를표현하여그것에대한이론을나타냄

전자전기 프로그래밍 실습

20

Program Flowchart의개선

보통논리가존재 하는 경우의개선

흐름선의 합류점 직전의 처리와 판단 기호에 의한 분기 직후의 처리에 중복된 것이 없는지 조사

중복된 장소를 없애는 것이 모도 좋은 프로그램이 된다고 할 수는없으므로 주의

A > B

C = A - B

F = C X D

C = B - A

F = C X D

A > B

C = A - B

F = C X D

C = B - A

yes ye

s

nono

Page 21: Flowchart 작성법 - SKKUlab.icc.skku.ac.kr/~vlsitest/pro_lab/report/Flowchart.pdf · 2010-03-05 · Flowchart 란? Program Flowchart 프로그램의작성단계를표현하여그것에대한이론을나타냄

전자전기 프로그래밍 실습

21

Program Flowchart의개선

연결자를사용한개선 (1) 예시

흐름선이교차된경우

=> 연결자 ( O ) 를 사용

Page 22: Flowchart 작성법 - SKKUlab.icc.skku.ac.kr/~vlsitest/pro_lab/report/Flowchart.pdf · 2010-03-05 · Flowchart 란? Program Flowchart 프로그램의작성단계를표현하여그것에대한이론을나타냄

전자전기 프로그래밍 실습

22

Program Flowchart의개선

연결자를이용한개선 (2)

1

1

연결자 내의 기호의 대응에 따라 처리 수행

Flowchart가 다른 페이지에계속하는 경우

주석 기호 사용하여 페이지를참조

Page 23: Flowchart 작성법 - SKKUlab.icc.skku.ac.kr/~vlsitest/pro_lab/report/Flowchart.pdf · 2010-03-05 · Flowchart 란? Program Flowchart 프로그램의작성단계를표현하여그것에대한이론을나타냄

전자전기 프로그래밍 실습

23

Flowchart 작성예제

#include <stdio.h>

void CalculateSum(int n, int *sum_array);

void main(void){

int n, i;int sum_array[10];

for(n=1; n <= 10; n++){CalculateSum(n, sum_array);

}

for(i=1; i <= 10; i++){printf("Sum(1 ~ %d): %d\n", i,

sum_array[i-1]);}

}

void CalculateSum(int n, int *sum_array)

{int j=1, sum=0;

while(j <= n){sum = sum + j;j++;

}*(sum_array+n-1) = sum;

}

C code

Page 24: Flowchart 작성법 - SKKUlab.icc.skku.ac.kr/~vlsitest/pro_lab/report/Flowchart.pdf · 2010-03-05 · Flowchart 란? Program Flowchart 프로그램의작성단계를표현하여그것에대한이론을나타냄

전자전기 프로그래밍 실습

24

Flowchart 작성예제

시 작

n = 1

j = 1

sum = 0

n ≤ 10

sum_array[n-1]

<= sum

sum

<= sum + j

j ≤ n

i = 1

i ≤ 10

Sum(1 ~ i) :

sum_array[i-1]

i <= i + 1

n <= n + 1

j <= j + 1

Flowchart

yes

no

yes

no

yes

no