제 6 장 중복순환

Download Report

Transcript 제 6 장 중복순환

6. 중복순환
주요 내용
6.1 중복순환이란?
6.2 구구단 구하기
6.3 소수 판별하기
6.4 1-100사이의 소수와 그 개수 구하기
6.5 삼각형 모양 만들기
6.6 알파벳 출력하기- I
6.7 알파벳 출력하기-II
6.8 공백을 이용한 문자 출력하기
6.9 2-10까지 factorial 계산하기
6.10 피타고라스 정리
새내기 C 프로그래머를 위한 순서도 작성
2
1. 중복순환이란?
 중복 순환은 순환구조 속에서 다시 순환하는 구조를 의미
 그림6.1에서 첫 번째 순환은 LOOP1이다. 이 안에 LOOP2가 있다.
 따라서 I가 1일 때 LOOP2를 수행하고 즉 안녕하세요!를 10번 출력,
다시 I가 2일 때 LOOP2를 다시 만나서 안녕하세요!를 10번 출력
결국은 안녕하세요!를 100번 출력함
 즉 I가 1씩 증가할 때마다 J가 10번씩 반복한다. 이처럼 중복 순환은 상
위의 순환을 기준으로 하위의 순환을 계속 반복하면서 수행하는 구조
이다. 중복순환은 그 내부에 1개 이상의 순환 구조가 존재할 수도 있다.
① LOOP1 I=1,10,1
②
LOOP2 J=1,10,1
③
출력: 안녕하세요!
새내기 C 프로그래머를 위한 순서도 작성
3
ST ART
중복순환
T itle 인쇄
I= 1, 10, 1
J= 1, 10, 1
안녕하세요!
ST OP
그림6.1 중복순환 구조
새내기 C 프로그래머를 위한 순서도 작성
4
2. 구구단 구하기
 구구단 출력 결과를 살펴보면 1단은 1일 때 1에서 9까지, 2단은 2일
때 1에서 9까지 3단은 3일 때 1에서 9까지 ... 9단은 9일 때 1에서 9까
지의 과정을 반복 즉, 중복순환 구조를 갖는다.
구구단
1x1=1
1 x2 = 2
1 x3 = 3
...
2 x1 = 2
2 x2 = 4
2 x3 = 6
...
9 x1 = 9
9 x2 = 18
9 x3 = 27
...
9 x9 = 81
① 타이틀 출력
② I가 1-9까지 즉 1-9단까지의 값을 갖음
I=1,9,1
③ J는 각 I의 값 즉, 1,2,3..9단에 따라 1-9까지 변환
J=1,9,1
④ I, J 값과 I 와 J를 곱한 결과를 출력
⑤ 종료
새내기 C 프로그래머를 위한 순서도 작성
5
순서도 6.1 구구단을 출력하는 순서도
ST ART
구구단
타이틀 출력
I= 1, 9, 1
J= 1, 9, 1
I x J = I*J
I가 1씩 증가할때마다
J가 10번씩 순환한다.
각각의 I, J의 값과
IxJ의 결과 값을 출력한다.
ST OP
새내기 C 프로그래머를 위한 순서도 작성
6
3. 소수 판별하기
 소수라는 정의는 임의의 수 N에 대하여 1과 자기 자신으로만 나누어지는 수
 예를들면 7은 1과 자신만으로 나누어지기 때문에 소수
 1부터 자신(N)까지 N을 나누어 나머지가 0인 경우가 2개(1과 자신)이면 소수
2는 1에서 2까지 나머지 연산하여 나머지가 0인 경우가 2개일 때
3은 1에서 3까지 나머지 연산하여 나머지가 0인 경우가 2개일 때
4는 1에서 4까지 나머지 연산하여 나머지가 0인 경우가 2개일 때
5는 1에서 5까지 나머지 연산하여 나머지가 0인 경우가 2개일 때
..............................
① 잉여 계산을 위한 카운터를 초기화
② 임의의 수 N을 입력
③ “소수 판별” 타이틀 출력
④ 1에서 N까지 반복 루프
⑤ N을 각각의 I값으로 잉여 계산
⑥ MODE=0이면 카운트 증가
⑦ 루프를 모두 수행한 후에 COUNT가 2인지 판별
⑧ 카운트가 2이면 소수이고 그렇지 않으면 소수가 아니다.
새내기 C 프로그래머를 위한 순서도 작성
7
순서도 6.2 임의의 수 N이 소수인지 판별하는 순서도
ST A RT
①
카운트를 초기화 한다.
COUNT = 0
②
데이터를 입력한다.
입력 N
③
소수 판별
타이틀을 출력한다.
I = 1, N, 1
④
MODE = N%I
나머지 계산
⑤
MODE= 0
⑥
나머지가 0이면
카운트 증가
Yes
COUNT + +
⑦
No
COUNT = 2
⑧
Yes
N은 소수이다
N은 소수가 아니다.
ST OP
새내기 C 프로그래머를 위한 순서도 작성
8
4. 1-100 사이의 소수와 그 개수 구하기
 1-100사이의 소수와 그 개수까지 구하는 순서도
① 먼저 1에서 100까지의 소수를 구하기 위한 루프 설정
② 1부터 소수인지를 판별하기 위한 루프 설정
③ 1부터 자신까지 나머지 연산
④ 잉여연산결과 나머지가 0이면 COUNT 증가
⑤ COUNT가 2이면 소수
⑥ 소수를 출력하고 소수개수(NUMBER) 1 증가
⑦ 다시 반복루프 ①로 돌아감
⑧ 1에서 100까지의 반복 순환 후 소수의 개수 출력
⑨ 종료
소수 구하기
2
19
47
79
3
23
53
83
5
29
59
89
7 11 13 17
31 37 41 43
61 67 71 73
97
소수의 개수 = 25 개
새내기 C 프로그래머를 위한 순서도 작성
9
순서도 6.3 1에서 100까지 소수와 개수 구하는 순서도
ST A RT
카운트와개수( NUMBER) 를
초기화한다.
COUNT = 0
NUMBER= 0
소수구하기
타이틀을 출력한다.
N= 1, 100, 1
P= 1, N, 1
1- 100까지
반복루프 설정
N에 대하여
1에서 N까지
소수인지를 판별하기
위한 루프 설정
MODE = N%P
MODE= 0
나머지가 0인지 판별
Yes
COUNT + +
COUNT = 2
나머지가 0이면
카운트 증가
카운트가 2이면 소수
Yes
N은 소수이다
NUMBER+ +
COUNT = 0
소수이면
NUMBER 증가
COUNT 는 초기화
소수개수 출력
NUMBER
ST OP
새내기 C 프로그래머를 위한 순서도 작성
10
5. 삼각형 모양 만들기
 “ * ” 기호를 이용하여 첫줄에는 1개, 다음 줄은 2개,
그 다음 줄은 3개로 하나씩 출력되는 순서도 작성
*
**
***
****
*****
새내기 C 프로그래머를 위한 순서도 작성
11
순서도 6.4 삼각형 모양의 순서도
ST A RT
P= 1, 5, 1
K = 1, P, 1
*
줄바꾸기
1- 5까지 반복 설정
1에서 P까지 반복 설정
“ *” 출력
한줄 반복해서 출력 후
줄바꾸기
ST OP
새내기 C 프로그래머를 위한 순서도 작성
12
6.6 알파벳 출력하기- I
 알파벳의 출력은 숫자 65=A, 66=B, 67=C, 68=D, 69=E를 의미
즉, 65를 문자로 표현하면 문자 A가 출력
 따라서 루프를 이용하여 65~69까지 반복하면된다.
A
AB
ABC
ABCD
ABCDE
새내기 C 프로그래머를 위한 순서도 작성
13
순서도 6.5 위 그림과 같이 알파벳 출력 순서도
ST A RT
P= 65, 69, 1
K = 65, P, 1
WRIT E “ K ”
WRIT E 줄바꾸기
65- 69까지 반복 설정
65에서 P까지 반복 설정
“ K ” 의 수를 문자로 출력
출력 후 줄바꾸기
ST OP
새내기 C 프로그래머를 위한 순서도 작성
14
7. 알파벳 출력하기-II
 알파벳을 아래처럼 출력하기 위해서는 65에서 85까지 루
프를 이용하여 출력하면 된다.
A
BC
DEF
GHIJ
KLMNO
PQRSTU
새내기 C 프로그래머를 위한 순서도 작성
15
순서도 6.6 알파벳이 위의 결과로 출력하는 순서도
ST A RT
COUNT = 65
COUNT 를 65로 초기화 한다.
P= 1, 6, 1,
K = 1, P, 1
1에서 6까지 반복 설정
1에서 P까지 반복 설정
WRIT E“ COUNT ”
“ COUNT ” 의 수를
문자로 출력
COUNT + +
“ COUNT ” 증가
줄바꾸기
출력 후 줄바꾸기
ST OP
새내기 C 프로그래머를 위한 순서도 작성
16
8. 공백을 이용한 문자 출력하기
 다음의 결과를 위해 문자 “*”를 출력하기 전에 공백을 출력
 즉, 한 줄씩 내려갈 때마다 공백이 같이 증가하면서 출력
두 번째 줄은 한 칸, 세 번째는 두 칸을 띄우면서 문자 출력
 이는 하나의 반복문 안에 두개의 반복문이 존재하는 경우
**********
**********
**********
**********
**********
새내기 C 프로그래머를 위한 순서도 작성
17
순서도 6.7 공백을 이용한 “*”를 출력하는 순서도
ST ART
P= 1, 5, 1
1- 5까지 반복 설정
K = 1, 10, 1
1에서 10까지 반복 설정
WRIT E *
줄바꾸기
“ *” 출력
한줄 반복해서 출력 후 줄바꾸기
M= 1, P, 1
WRIT E 공백
공백문자를 반복해서 출력
ST OP
새내기 C 프로그래머를 위한 순서도 작성
18
9. 2-10까지 factorial 계산하기
 5!을 예로 들면 순서도 작성과정은 다음과 같다.
① P= 2,10, 1 루프 설정//여기서는 P=5일 때를 가정하여 설명함
② "5! ="를 출력
③ K=1에서 4(P-1)까지 반복 루프 설정
④ 1에서 5-1까지 “1*2*3*4*”를 출력 //현재 5!=1*2*3*4* 까지 출력됨
⑤ 1에서 4까지 곱셈 결과를 Fact에 저장 //Fact = 1*2*3*4
⑥ "5"의 출력과 Fact=Fact*5 //현재 5!=1*2*3*4*5 까지 출력,
//Fact = 1*2*3*4*5의 계산 결과 출력
// 5!=1*2*3*4*5 = 120 출력됨
⑦ 줄바꾸기
2! = 1*2 = 2
3! = 1*2*3 = 6
4! = 1*2*3*4 = 24
5! = 1*2*3*4*5= 120
6! = 1*2*3*4*5*6 = 720
………
새내기 C 프로그래머를 위한 순서도 작성
19
순서도 6.8 1에서 10까지의 factorial 계산 순서도
ST ART
P= 2, 10, 1
2- 10까지 반복 설정
Fact= 1
Fact 초기화
“ P!= ”
“ P!= ” 출력
K = 1, P- 1, 1
Fact= Fact*K
K *
Fact= Fact*K
P- 1까지 루프 설정
P- 1까지 Factor ial 계산
1*2*3*… 의 과정 출력
마지막 N값 곱하기
K = Fact
줄바꾸기
마지막 N 출력하고
결과 출력하기
줄바꾸기
ST OP
새내기 C 프로그래머를 위한 순서도 작성
20
10. 피타고라스 정리
 직각 삼각형의 세변의 길이를 구하는 순서도 작성
단 세변의 길이는 정수이며 20 cm 이하
 이는 x=1~20, y=1~20, z=1~20까지 반복 루프를 이용
 Z2 = X2 + Y2 이 성립하는 X, Y, Z(X<Y<Z)를 구하면 됨
 3중 루프가 필요 또한 X<Y<Z의 경우를 만족는 식
if(Y<X) continue;
if(Z<X) continue;
새내기 C 프로그래머를 위한 순서도 작성
21
순서도 6.9 직각삼각형의 세변을 구하는 순서도
ST A RT
X= 1, 20, 1
Y= 1, 20, 1
Y값 범위 설정
Y<X비교
Y <X
no
yes
Continue
Z= 1, 20, 1
no
X값 범위 설정
Z< X
yes
Continue
d= x*x + y*y
d= = ( z*z)
X, Y, Z
x, y값이 ( 3,4) 와 ( 4,3) 의 경우
즉 ( 3,4) 하나로 하기 위한 과정
Z값 범위 선정
x, z값이 ( 3,4) 와 ( 4,3) 의 경우
하나로 하기위한 과정
이 과정은 x<y<z의 값으로
그 결과가 나온다
a*a = b*b + c*c를 비교한다
위식이 참이면 직각 삼각형이다.
ST OP
새내기 C 프로그래머를 위한 순서도 작성
22