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