• 검색 결과가 없습니다.

LOGO Control Statements

N/A
N/A
Protected

Academic year: 2021

Share "LOGO Control Statements"

Copied!
31
0
0

로드 중.... (전체 텍스트 보기)

전체 글

(1)

제어문 Control Statements LOGO

반복문

Iteration statements

반복문은 지정된 조건식에 만족하는 동안 계속해서 반복을 수행 반복문의 종류로는 for 문 , while 문 , 그리고 do~while 문 등이 있다

(2)

LOGO

도서출판 한산

제어문 Control Statements

for문은 조건식의 값이 참인 경우 계속해서 반복을 수행하다가 거짓이 되면 for{ } 를 빠져 나오게 된다 for문은 반복문 중에서도 많은 프로그래머들이 자주 사용하는 형식이기 때문에 반드시 활용 방법에 익숙해질 필요성이 있다

for문의 형식은 :

for 문

형 식 설 명

for(초기값 ; 조건식 ; 증감식) {

실행문 1;

실행문 2;

•••

•••

}

- for문은 먼저 초기값이 실행된다 .

- 초기값은 반복문을 실행하기 전에 단 한번만 사용 하게 되며 조건식의 값과 비교하여 그 평가 값이

참인지 거짓인지를 판별하게 된다 .

- 만약 조건식에 의한 판별 평가 값이 참이면 for{ } 내의 실행문들을 수행하게 되며 거짓이면 for{

}를 빠져 나오게 된다 .

- 증감식은 판별에 의한 평가 값을 증가 또는 감소시 키는 역할을 한다 . - 참고로 , for 문의 조건 뒤에는 세미콜론 ( ; )을 붙 이지 않는다 . [예시 ] for( 초기값 ; 조건식 ; 증감식 );

(3)

제어문 Control Statements LOGO

for문의 실행 순서 :

for 문

소스코드 실행 순서

① ② ④

for(i=0; i<2; i++) {

실행문 1; ③ }

[STEP 1] ①은 초기값으로 변수 i 에 0 을 대입하고 있으며 단 한 번만 실행하게 된다 .

[STEP 2] 초기값 0 을 조건식

에서 비교 판단하게 된다 . 이때 , 초기값 0 은 3 보다 작기 때 문에

판별 결과가 참이므로 for{ } 내의

의 실행문 1 을 수행하게 된다 .

[STEP 3] ③의 실행문 1 을 수행하고

로 이동하여 변수 i 의 값을 1증가 시킨다 . 즉 , i++ 는 i=i+1과

같은 의미이기 때문이다 . 따라서 i 의 값은 0에서 1 로 증가하게 된다 .

(4)

LOGO

도서출판 한산

제어문 Control Statements

for문의 실행 순서 :

for 문

[STEP 4] 증가된 1 의 값은

에서 다시 한 번 비교 판단을 하게 된다 . 증가된 값 1 은 2보다 작기

때문에 판별 결과가 참이므로 또 다시 for{ } 내의

의 실행문 1 을 실행하게 된 다 .

[STEP 5] [STEP 3]의 방법에 따르면 변수 i 의 값은 1에서 2 로 증가하게 된다 .

[STEP 6] 증가된 2 의 값은

의 조건식인 i<2 에 거짓이기 때문에 for{ } 를 빠져 나가게 된다 .

(5)

제어문 Control Statements LOGO

for문의 흐름도 :

for 문

(6)

LOGO

도서출판 한산

제어문 Control Statements

예제 " 초기값 1부터 5까지의 값을 출력 "하는 프로그램

[ 흐름도 ] 1: #include <stdio.h>

2:

3: mian() 4: {

5: int x;

6:

7: for(x=1; x<=5; x++) 8: {

9: printf("PRT1: %d, n", x); ∖ 10: }

11: }

(7)

제어문 Control Statements LOGO

예제 " 초기값 5부터 1까지의 값을 출력 "하는 프로그램

[ 흐름도 ] 1: #include <stdio.h>

2:

3: mian() 4: {

5: int x;

6:

7: for(x=5; x>=1; x--) 8: {

9: printf("PRT1: %d, n", x); ∖ 10: }

11: }

(8)

LOGO

도서출판 한산

제어문 Control Statements

예제 "1부터 10까지 중에 홀수만의 누적 합을 구하여 출력 "하는 프로그램

[ 흐름도 ] 1: #include <stdio.h>

2:

3: mian() 4: {

5: int x, add;

6:

7: add=0;

8:

9: for(x=1; x<=10; x+=2) 10: {

11: add+=x;

12: }

13: printf("PRT1:홀수총합 :%d 이다 . n", add); ∖ 14:}

(9)

제어문 Control Statements LOGO

예제 양의 정수 1에서 n까지의 총 합을 구하는 프로그램

[ 흐름도 ]

1: #include <stdio.h>

2:

3: mian() 4: {

5: int x, n, add=0;

6:

7: printf("n의 정수 값을 입력하시오∖ n");

8: scanf("%d", &n);

9:

10: for(x=1; x<=n; x++) 11: {

12: add+=x; // add=add+x;와 같다 . 13: }

14: printf("PRT1: %d까지의 총합은 %d 이다 . n", n, add);∖ 15: }

[변수 n 에 10 을 입력한 경우 ]

[변수 n 에 100 을 입력한 경우 ]

(10)

LOGO

도서출판 한산

제어문 Control Statements

예제 알파벳 a부터 입력된 알파벳까지 출력 가능한 프로그램

[ 흐름도 ]

[알파벳 f 를 을 입력한 경 우 ]

[알파벳 m 을 입력한 경우 ]

1: #include <stdio.h>

2:

3: mian() 4: {

5: char n, x;

6:

7: printf("알파벳을 입력하시오∖ n");

8: scanf("%c", &n);

9:

10: for(x='a'; x<=n; x++) 11: {

12: printf("%c ", x);

13: }

14: printf(" n"); ∖ 15: }

(11)

제어문 Control Statements LOGO

for문 형식의 구성을 변형시켜도 문제가 되지 않는 몇 가지 유형에 대해서 알아보자

❏ 그 밖의 for 문의 유형

for문을 이용한 무한 루프의 경우

for문의 형식에서 조건식을 생략 for문의 형식에서 모든 조건을 생략

for( x=0; ;x++ ) {

실행문 ; }

for( ; ; ) {

실행문 ; }

초기값과 증감식이 생략된 경우

초기값을 for{ } 이전에 초기화 for문의 실행 블록에 증감식을 기입

int x=0;

for( ; x<=50; x++ ) {

실행문 ; }

for( x=0; x<=50; ) {

실행문 ; x++;

}

(12)

LOGO

도서출판 한산

제어문 Control Statements

중첩 for 문이란 for{ } 의 중괄호인 실행 블록 내에 또 다른 for 문들을 사용하는 것 중첩 for 문의 형식은 :

중첩 for 문

형 식 설 명

// 바깥쪽 for 문

for(초기값 ; 조건식 ; 증감식) {

// 안쪽 for 문

for(초기값 ; 조건식 ; 증감식) {

실행문 1;

실행문 2;

} }

[STEP1] 바깥쪽 for 문에서 초기값부터 실행한다 .

[STEP2] 조건식의 값과 비교하여 그 평가 값이 참이 면 안쪽 for 문의 초기값을 실행한 다 .

[STEP3] 안쪽 for 문의 조건식이 참이면 안쪽 for 문의 실행 블록 내의 실행문 1 과 실 행문

2를 수행 한다 .

[STEP4] 안쪽 for 문의 증감식에 의한 값을 [STEP3] 과 같이 수행한다 .

[STEP5] 안쪽 for 문의 조건식 판별 결과가 거짓이 될 때까지 [STEP3] 과 [STEP4] 를 반복

수행한 다 .

[STEP6] 안쪽 for 문의 조건식에 따른 판별 결과가 거 짓이면 바깥쪽 for 문의 증감식으 로

이동하여 얻은 값을 조건식에서 참 또는 거짓의 판별 을 하게 된다 .

[STEP7] 만약 , 바깥쪽 for 문의 조건식이 참이면 [STEP2] 부터 [STEP6] 까지를 재차 수행

하게 되며 , 거짓이면 바깥쪽 for 문에서 완전히 빠 져 나가 순차적 처리에 의 해서

그 다음 단계의 실행을 하게 된다 .

(13)

제어문 Control Statements LOGO

중첩 for 문의 흐름도

(14)

LOGO

도서출판 한산

제어문 Control Statements

예제 "1 단부터 3단까지의 구구단을 출력할 수 있는 프로그램 "

[ 흐름도 ]

[구구단 3단까지 실행결 과 ]

1: #include <stdio.h>

2:

3: mian() 4: {

5: int x, y;

6:

7: for(x=1; x<=3; x++) 8: {

9: for(y=1; y<=9; y++) 10: {

11: printf("%4d", x*y);

12: }

13: printf("∖n");

14: } 15: }

(15)

제어문 Control Statements LOGO

while문도 for 문과 마찬가지로 조건식의 평가 결과 값이 참인 경우 계속해서 반복을 수행하다가 거짓이 되면 while{ } 를 빠져 나오게 된다

중첩 for 문의 형식은 :

while 문

형 식 설 명

while(조건식) {

실행문 1;

실행문 2;

}

실행문 3;

- while문의 조건식이 참인 경우 while 문의 실행 내 용인 실행문 1 과 실행문 2 를 수행

하게 된다 .

만약 조건식의 판단 결과가 거짓이 되면 중괄호 { } 를 건너뛰고 실행문 3 을 수 행하

게 된다 .

(16)

LOGO

도서출판 한산

제어문 Control Statements

while 문의 흐름도

(17)

제어문 Control Statements LOGO

예제 "알파벳 A부터 K까지 출력 가능한 프로그램 "

[ 흐름도 ]

[실행결과 ] 1: #include <stdio.h>

2:

3: mian() 4: {

5: char x='A', y='K';

6:

7: while(x<=y) 8: {

9: printf("%3c", x);

10: x++;

11: }

12: printf(" n");∖ 13: }

(18)

LOGO

도서출판 한산

제어문 Control Statements

예제 "정수 1부터 키보드를 통해 입력된 값까지 총 합 "

[ 흐름도 ]

[실행결과 ] 1: #include <stdio.h>

2:

3: mian() 4: {

5: int x=1, y, add=0;

6:

7: printf("정수를 입력하시오∖ n");

8: scanf("%d", &y);

9:

10: while(x <= y) 11: {

12: add+=x;

13: x++;

14: }

15: printf("총합은 %d 이다 . n", add);∖ 16: }

(19)

제어문 Control Statements LOGO

예제 "한 문자씩 입력하다가 엔터키를 누르면 입력한 모든 문자들을 모니터에 출력 "

[ 흐름도 ]

[실행결과 ] 1: #include <stdio.h>

2:

3: mian() 4: {

5: char munja;

6:

7: printf("한 문자씩 입력하세요∖ n");

8: while((munja=getchar()) != ' n') 9: {

10: putchar(munja);

11: }

12: printf(" n");∖ 13: }

(20)

LOGO

도서출판 한산

제어문 Control Statements

예제

while

문의 경우에 있어서 무한 반복으로 실행

[ 흐름도 ]

[실행결과 ] 1: #include <stdio.h>

2:

3: mian() 4: {

5: int x=0;

6:

7: while(1) 8: {

9: printf("현재 %d 번째 반복 중 . n",x+∖ +);

10: } 11: }

(21)

제어문 Control Statements LOGO

do~while문은 while문과 매우 유사하지만 순차적 처리에 의해서 먼저 실행문을 수행

그 후에 while문의 조건식을 판별하여 그 결과에 따라서 재차 실행문을 수행할 것인가를 결정 do~while 문의 형식은 :

do~while 문

형 식 설 명

do {

실행문 1;

실행문 2;

} while(조건식);

실행문 3;

- 순차적 처리에 의해서 do{ } 내의 실행문 1 과 실행 문 2 를 수행한다 . 그리고 while 문의

조건식을 판별 하여 그 결과가 참인 경우 do{ } 내의 실행문 1 과 실행문 2 를 재차 수행하

게 된다 .

- 만약 while 문의 조건식을 판별하여 결과가 거짓이 면 while 문을 빠져나와서 실행문 3을

실행하게 된 다 .

- do~while문의 경우는 while( 조건문 ) 다음에 반드시 세미콜론 (;)을 붙여서 while( 조 건문 );

과 같이 표현 한다 .

(22)

LOGO

도서출판 한산

제어문 Control Statements

do~while 문의 흐름도

(23)

제어문 Control Statements LOGO

예제 " 정수 1부터 키보드를 통해 입력된 값까지 총 합 "

을 구하는 프로그램

[ 흐름도 ]

[변수 y 에 10 을 입력한 경 우 ]

1: #include <stdio.h>

2:

3: mian() 4: {

5: int x=1, y, add=0;

6:

7: printf("정수를 입력하시오∖ n");

8: scanf("%d", &y);

9:

10: do 11: {

12: add+=x;

13: x++;

14: } while(x <= y);

15: printf("총합은 %d 이다 . n", ∖ add);

16: }

(24)

LOGO

도서출판 한산

제어문 Control Statements

예제 "알파벳 A부터 K까지 출력 가능한 프로그램 "

[ 흐름도 ]

[실행결과 ] 1: #include <stdio.h>

2:

3: mian() 4: {

5: char x='A', y='K';

6:

7: do 8: {

9: printf("%3c", x);

10: x++;

11: } while(x <= y);

12: printf(" n");∖ 13: }

(25)

제어문 Control Statements LOGO

분기문

branching statements

분기문은 제어의 흐름을 지정된 조건에 따라서 여러 방향으로 이동시켜 처리하는 구문으로 break, continue, 그리고 goto문으로 나누어 살펴 볼 수 있다

break문은 switch~case문에서도 학습한 적이 있듯이 주로 반복문에서 반복 실행 도중에 강제적으로 반복을 멈추고 해당문을 빠져 나올 때 사용

중첩된 반복문에 강제적으로 빠져나올 경우는 중첩된 반복문의 수만큼 break문이 필요하게 된다

break 문

형 식 설 명

// 반복문 for, while, do~while, 그리고

// switch문에서 주로 사용된다 .

반복문 (조건식) { 실행문 1;

실행문 2;

break;

}

실행문 3;

- 반복문 (for, while 등 ) 에서 실행문 1 과 실행문 2 를 반복 실행하 다가 break 문을 만나게 되면 프로그램의 흐름이 강제적으 로 종료 되면서 순차적 처리에 의해서 다 음 단계인 실행문 3 으로 이동하여 처리하 게 된다 .

(26)

LOGO

도서출판 한산

제어문 Control Statements

break 문의 실행과정 흐름도

(27)

제어문 Control Statements LOGO

예제 break문

[ 흐름도 ]

[실행결과 ] 1: #include <stdio.h>

2:

3: mian() 4: {

5: char x;

6:

7: for(x='A'; x<'Z'; x++) 8: {

9: printf("%c n", x);∖ 10: if(x=='D')

11: {

12: break;

13: } 14: } 15: }

(28)

LOGO

도서출판 한산

제어문 Control Statements

continue문은 반복문에서만 사용되며 switch~case 문에서는 사용하지 않는다

반복문에서 반복 실행을 하다가 continue문을 만나게 되면 이후의 실행문를 수행하지 않고 반복문의 조건식으로 이동하게 된다

continue 문

형 식 설 명

반복문 (조건식) { 실행문 1;

continue;

실행문 2;

}

- 반복문 (for, while 등 ) 을 실행하면서 continue 를 만나게 되면 continue 이후의 실행문 2 를 수행하지 않고 반복문의 조건식으 로

이동하게 된다 .

(29)

제어문 Control Statements LOGO

continue 문의 실행과정 흐름도

(30)

LOGO

도서출판 한산

제어문 Control Statements

예제 continue의 예제

[ 흐름도 ]

[실행결과 ] 1: #include <stdio.h>

2:

3: mian() 4: {

5: int x;

6:

7: for(x=1; x<10; x+=2) 8: {

9: if(x==7) 10: {

11: continue;

12: } 13: else 14: {

15: printf("x=%d n", x); ∖ 16: }

17: } 18: }

(31)

Q&A LOGO

Thank you.

참조

관련 문서

산업현장친화형 교수인력을 채용하고 평가할 수 있는 인사제도를 연구하여 한국 대학의 문화에 산학협력 풍토가 자리 잡을 수 있도록 변 , 화시키는

As a result of making the regression analysis to find out which variables affected marital satisfaction, the most predictable variable was communication scores, followed

지식경영 활동과 지식경영 성과의 관계에 대한 분석결과 개인업무 효과성을 제고하기 위해서는 지식획득과 지식이전이 효과적임을 알 수 있다 따라서 새로운

물체를 감지 데이터화 하여 서버로 전송하고 이 데이터를 , 이용하여 보안영역에 변화가 발생하였을 경우 , IP 네트워크를 통해 연결된 팬틸터를 제어해 무선

표에서 알 수 있듯이 부부간 갈등과 역할수행에 따른 결혼 안정성은 부부간 갈등이 높은 집단이 낮은 집단보다 높았다.. 따라서 부부간 갈등과 결혼안정성은 관련성이 있다는

다음은 고등학교에 근무하는 박 교사가 예비 교사와 나눈 대화의 일부이다... 밑줄 친 ㉠이 가리키는 것을

동료들에게 자신의 성공을 보여주기 위한 수단으로 제품을 구매하는 성향이 있다... 추구하는 가치는 성취추구자와 비슷하지만

여기 번역문은 그대로 두어둠으로써 옛 것을 그대로 살린 것은 사실상 초판 당시 이미 ‘새로운 번역 태도’에 의하여 글자 그대로 현대문화 하였고 그것이 또한