d라이브러리









정확한 알고리즘을 개발하는 일은 문제해결을 위한 핵심이다. 흐름도를 이용하여 반복해서. 알고리즘의 중요성을 이해하자.
 

지난 호에서 판단문 구조(dieision structure)와 FOR LOOP문에 대하여 공부하였다. 이번 호에서는 일반적인 제어문 구조(control structure)가 어떻게 실행되는지 사용예를 들면서 설명하겠다.

 

제어이동 명령(transfer instructions)
 

컴퓨터의 중앙처리장치(CPU)가 프로그램에서 정한 경로에 따라 프로그램을 처리해 나가는 순서를 제어흐름(control flow)이라고 한다. 이러한 제어흐름을 원하는 방향으로 옮길 수가 있는데 GOTO문(무조건 이동문) 또는 IF-THEN문 (조건 이동문)을 사용하면 된다.
 

예를들면
 

GOTO 320
 

은 즉시 제어의 흐름을 문번호 320으로 옮기고 문번호 320에서부터 다시 순서대로 처리를 계속하게 된다. 그러나 IF-THEN 문은 주어진 조건이 참일 경우에만 제어의 흐름이 이동한다. 즉,
 

IF X>M THEN 540


은 X의 값이 M보다 큰 경우에만 540으로 제어흐름이 이동하며 그렇지 않은 경우에는 IF-THEN문의 바로 다음문이 수행된다. 이때 ELSE로 지정한 문번호가 있을 때는 ELSE 다음의 문번호(또는 처리내용)를 처리한다.

 

무조건 이동문(GOTO문)

 

조건이동문(IF-THEN문)


판단문 구조
 

□ 단일선택 판단문 구조(single-alternative decision structrue)
 

주어진 조건이 허위일 경우에는 아무것도 처리하지 않고 흐름도의 맨 밑에 표시된 화살표의 진행방향대로 처리를 계속해 가며 참일 경우에만 해당되는 내용을 처리한 후에 화살표의 진행방향대로 처리를 계속해 나간다. if로 시작되는 문을 판단문 구조의 시작문(header statement)이라고 하며 IFEND문을 종료문(rerminator statement)이라고 한다. THEN 다음에 표시된 문번호 (또는 처리내용)는 참인 경우에 수행해야 할 내용이 ELSE 다음에 표시된 문번호(또는 처리내용)는 허위일 경우에 계속할 내용이다. 그러나 참일 경우 수행할 내용이 한 문장으로 표시되는 경우에는 ELSE없이 쓸 수도 있다.
 

IF X> 10000 THEN PRINT "DATA ITEM TOO LARGE"

IF X> 10000 THEN CI=CI+I:SI=SI+X:GOTO 220

 

단일선택 판단문

 

 

(그림1)단일선택 판단문 구조의 예

 

□ 이중선택 판단문 구조(Double-alternative decision structure)
 

주어진 조건이 참인 경우와 허위일 경우에 따라서 한가지의 처리경로가 결정된다. 해당하는 처리를 끝낸후에야 흐름도의 맨밑에 표시된 화살표의 진행방향에 따라 처리를 계속한다.

 

이중선택 판단문

 

(그림2) 이중선택 판단문 구조의 예

 

(표 1) BASIC의 관계연산자(relational operators)와 보완자(complements)

 

(문제 1)

두 수를 변수 X, Y에 읽어 들여서 비교한 후 큰 수를 Y에 넣는 프로그램을 작성하라.
 

(설 명)

두 수를 읽고 비교한 후 Y가 X보다 클 때에만 X와 Y를 바꾼다. 이 때 일시적으로 사용할 변수가 필요한데 T를 사용하기로 하며 이 변수가 필요한 두 수 3 ,5 ,7 ,2에 대해 설명하면 아래와 같다

 

프로그램문

 

(문제1)의 자료표(data table)

 

(그림3) 문제1의 처리도

 


(그림 4) 문제 1의 프로그램

 

110 REM 두 수 중 큰 수 구하기

110 CLS

120 PRINT : PRINT : PRINT

130 PRINT TAB(20) "두 수 X,Y을 입력하시오" ;

140 INPUT X, Y

150 PRINT TAB(20) "X="; X, "Y="Y

160 PRINT : PRINT

170 IF Y < =X THEN 220

180 T=X

190 X=Y

200 Y=T

210 PRINT : PRINT : PRINT

220 PRINT TAB(20) "큰 수="X

230 PRINT TAB(20) "작은 수="Y

240 PRINT : PRINT : PRINT

250 PRINT TAB(20) "계속=1, 끝=2"

260 INPUT

270 IF C=1 THEN 110

280 END

 

(문제 2)

각 행과 열, 그리고 대각선으로 이어진 숫자의 합이 모두 같은 요술 모눈표(magic square)를 만드는 프로그램을 작성하라. 단 행과 열의 칸 수(N)는 같으며 홀수일 때이다.
 

(설명)

가) 맨 윗 열의 가운데 칸에 1을 채운다.

나) 위로 1칸, 좌로 1칸을 이동하여 다음의 번호로 채운다.

다) 만약 모눈표의 밖으로 나가면 반대편의 모눈표가 계속 연결되어 있는 것과 같이 계속한다.

라) 만약 해당하는 칸이 이미 채워져 있으면 대신 아래로 1칸을 이동하여 채우고 계속한다

 

(그림 5)의 프로그램을 실행하여 N의 값을 5로 입력할 경우 아래와 같은 결과를 얻는다.

(그림5)프로그램결과

 

(그림 5) 문제 2의 프로그램
 

100  REM MAGIC SQUARE GENERATION

110  INPUT N

120  IF FIX(N/2) <> N/2 THEN 170

130  CLS

140  PRINT : PRINT : PRINT : PRINT

150  PRINT TAB(20) "입력오류"

160  GOTO 110

170  I=N : J=N

180  DIM SQ(I,J)

190  SQ(O,(N-1/2)=1

200  KY 2

210  I= 0

220  J=(N-1)/2

230  IF KY>(N>2) THEN 360

240  K=I-1

250  IF K<O THEN K=N+K

260  L=J-1

270  IF L<O THEN L=N+L

280  IF SQ(K,L)=0 THEN GOTO 310

290  I=I+1

300  GOTO 330

310  I=K

320  J=L

330  SQ(I,J)=KY

340  KY=KY+1

350  GOTO 230

360  CLS

370  PRINT : PRINT : PRINT : PRINT : PRINT

380  FOR 1=0 TO N-1

390  FOR J1=0 TO N-1

400  PRINT TAB(20+5*J) SQ(I,J);

410  NEXT J

420  NEXT I

430  END

 

FOR LOOP문
 

FOR LOOP문의 일반적인 형식과 성질을 정리하면 아래와 같다.

 

FOR LOOP문 형식과 설명

 

FOR LOOP문의 성질

 

 

(문제 4)

양의 정수 N의 팩도리얼(factorial)을 계산하는 프로그램을 작성하여라.
 

(설 명)

양의 정수 N의 팩토리얼(N!)=(N-1)×(N-2)×……2×1

즉, 6!=6×5×4×3×2×1=720

 

(문제4)의 자료표(data table)

 

(그림 7) 문제 4의 프로그램


100   REM 양의 정수 N의 팩토리얼 구하기

110   CLS

120   PRINT : PRINT : PRINT

130   PRINT TAB(20) "**양의 정수 N의 팩토리얼 구하기**"

140   PRINT : PRINT : PRINT

150   PRINT TAB(13) "양의 정수를 입력하시오";

160   INPUT N

170   F=N

180   PRINT : PRINT : PRINT

190   PRINT TAB(13) N"의 팩토리얼=";N

200   FOR I=N-1 TO STEP -1

210   F=F*1

220   PRINT "*"I

230   NEXT I

240   PRINT "="I

250   PRINT : PRINT : PRINT

260   PRINT TAB(13) "계속=1, 끝=2"

270   INPUT C

280   IF C=1 THEN 110

290   END

 

(문제 5)

임의의 자연수를 입력하였을 때 이 수까지의 모든 홀수와 홀수의 합, 그리고 이 수까지의 모든 홀수와 홀수의 합, 그리고 이수까지의 모든 짝수와 짝수의 곱을 계산하여 출력하는 프로그램을 작성해 보자.

 

(설 명)

1) 임의의 자연수 N을 입력한다.

2) N까자의 홀수의 합을 계산하도록 변수 S를 정하고 초기값을 0으로 한다.

3) 홀수는 1부터 시작하여 2씩 증가시켜서 구한다.

4) N까지의 짝수의 곱을 계산하도록 변수 P를 정하고 처음 값을 1로 한다.

5) 짝수는 2부터 시작하여 2씩 증가시켜 구한다.

(그림 8) 에보인 프로그램을 실행(RUN)시키면 (그림 9)와 같은 화면이 나타난다. 원하는 자연수를 10으로 입력시키면 (그림 10)과 같은 결과가 화면에 나타난다. 이 화면에서 다른 자연수를 입력하고 싶으면 1, 끝내고 싶으면 2를 입력하면 된다. 1을 입력할 경우 (그림 9)와 같은 화면이 계속해서 나타나게 되는 것이다.

 

(그림8) 문제5의 프로그램

 

(그림9)

 

(그림 10)

(문제 6)

여러분은 은행의 예금업무담당 직원이라고 가정하자. 고객에게 각종 예금의 장점을 알리고 고객과 상담하는 일은 중요한 업

1986년 10월 과학동아 정보

  • 전문철

🎓️ 진로 추천

  • 컴퓨터공학
  • 소프트웨어공학
  • 정보·통신공학
이 기사를 읽은 분이 본
다른 인기기사는?