제어문Control Statements 반복문Iteration statements 반복문은 지정된 조건식에 만족하는 동안 계속해서 반복을 수행 반복문의 종류로는 for문, while문, 그리고 do~while문 등이 있다 도서출판 한산
제어문Control Statements for문 for문은 조건식의 값이 참인 경우 계속해서 반복을 수행하다가 거짓이 되면 for{ }를 빠져 나오게 된다 for문은 반복문 중에서도 많은 프로그래머들이 자주 사용하는 형식이기 때문에 반드시 활용 방법에 익숙해질 필요성이 있다 for문의 형식은: 형 식 설 명 for(초기값; 조건식; 증감식) { 실행문 1; 실행문 2; ••• } - for문은 먼저 초기값이 실행된다. - 초기값은 반복문을 실행하기 전에 단 한번만 사용 하게 되며 조건식의 값과 비교하여 그 평가 값이 참인지 거짓인지를 판별하게 된다. - 만약 조건식에 의한 판별 평가 값이 참이면 for{ } 내의 실행문들을 수행하게 되며 거짓이면 for{ }를 빠져 나오게 된다. - 증감식은 판별에 의한 평가 값을 증가 또는 감소시 키는 역할을 한다. - 참고로, for문의 조건 뒤에는 세미콜론( ; )을 붙 이지 않는다. [예시] for(초기값; 조건식; 증감식); 도서출판 한산
제어문Control Statements 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로 증가하게 된다. 도서출판 한산
제어문Control Statements for문 for문의 실행 순서: [STEP 4] 증가된 1의 값은 ②에서 다시 한 번 비교 판단을 하게 된다. 증가된 값 1은 2보다 작기 때문에 판별 결과가 참이므로 또 다시 for{ } 내의 ③의 실행문 1을 실행하게 된다. [STEP 5] [STEP 3]의 방법에 따르면 변수 i의 값은 1에서 2로 증가하게 된다. [STEP 6] 증가된 2의 값은 ②의 조건식인 i<2에 거짓이기 때문에 for{ }를 빠져 나가게 된다. 도서출판 한산
제어문Control Statements for문 for문의 흐름도: 도서출판 한산
제어문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: } [ 흐름도 ] 도서출판 한산
제어문Control Statements 예제 "초기값 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: } [ 흐름도 ] 도서출판 한산
제어문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:} [ 흐름도 ] 도서출판 한산
제어문Control Statements 예제 양의 정수 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을 입력한 경우] [ 흐름도 ] 도서출판 한산
제어문Control Statements 예제 알파벳 a부터 입력된 알파벳까지 출력 가능한 프로그램 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: } [알파벳 f를 을 입력한 경우] [알파벳 m을 입력한 경우] [ 흐름도 ] 도서출판 한산
제어문Control Statements ❏ 그 밖의 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++; 도서출판 한산
제어문Control Statements 중첩 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문에서 완전히 빠 져 나가 순차적 처리에 의해서 그 다음 단계의 실행을 하게 된다. 도서출판 한산
제어문Control Statements 중첩 for문의 흐름도 도서출판 한산
제어문Control Statements 예제 "1단부터 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: } [구구단 3단까지 실행결과] [ 흐름도 ] 도서출판 한산
제어문Control Statements while문 while문도 for문과 마찬가지로 조건식의 평가 결과 값이 참인 경우 계속해서 반복을 수행하다가 거짓이 되면 while{ }를 빠져 나오게 된다 중첩 for문의 형식은: 형 식 설 명 while(조건식) { 실행문 1; 실행문 2; } 실행문 3; while문의 조건식이 참인 경우 while문의 실행 내 용인 실행문 1과 실행문 2를 수행 하게 된다. 만약 조건식의 판단 결과가 거짓이 되면 중괄호 { }를 건너뛰고 실행문 3을 수행하 게 된다. 도서출판 한산
제어문Control Statements while문의 흐름도 도서출판 한산
제어문Control Statements 예제 "알파벳 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: } [실행결과] [ 흐름도 ] 도서출판 한산
제어문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: } [실행결과] [ 흐름도 ] 도서출판 한산
제어문Control Statements 예제 "한 문자씩 입력하다가 엔터키를 누르면 입력한 모든 문자들을 모니터에 출력" 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: } [실행결과] [ 흐름도 ] 도서출판 한산
제어문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: } [실행결과] [ 흐름도 ] 도서출판 한산
제어문Control Statements do~while문 do~while문은 while문과 매우 유사하지만 순차적 처리에 의해서 먼저 실행문을 수행 그 후에 while문의 조건식을 판별하여 그 결과에 따라서 재차 실행문을 수행할 것인가를 결정 do~while 문의 형식은: 형 식 설 명 do { 실행문 1; 실행문 2; } while(조건식); 실행문 3; 순차적 처리에 의해서 do{ } 내의 실행문 1과 실행 문 2를 수행한다. 그리고 while문의 조건식을 판별 하여 그 결과가 참인 경우 do{ } 내의 실행문 1과 실행문 2를 재차 수행하 게 된다. 만약 while문의 조건식을 판별하여 결과가 거짓이 면 while문을 빠져나와서 실행문 3을 실행하게 된 다. do~while문의 경우는 while(조건문) 다음에 반드시 세미콜론(;)을 붙여서 while(조건문); 과 같이 표현 한다. 도서출판 한산
제어문Control Statements do~while문의 흐름도 도서출판 한산
제어문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: do 11: { 12: add+=x; 13: x++; 14: } while(x <= y); 15: printf("총합은 %d이다.∖n", add); 16: } [변수 y에 10을 입력한 경우] [ 흐름도 ] 도서출판 한산
제어문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: } [실행결과] [ 흐름도 ] 도서출판 한산
제어문Control Statements 분기문branching statements 분기문은 제어의 흐름을 지정된 조건에 따라서 여러 방향으로 이동시켜 처리하는 구문으로 break, continue, 그리고 goto문으로 나누어 살펴 볼 수 있다 break문 break문은 switch~case문에서도 학습한 적이 있듯이 주로 반복문에서 반복 실행 도중에 강제적으로 반복을 멈추고 해당문을 빠져 나올 때 사용 중첩된 반복문에 강제적으로 빠져나올 경우는 중첩된 반복문의 수만큼 break문이 필요하게 된다 형 식 설 명 // 반복문 for, while, do~while, 그리고 // switch문에서 주로 사용된다. 반복문(조건식) { 실행문 1; 실행문 2; break; } 실행문 3; - 반복문(for, while 등)에서 실행문 1과 실행문 2를 반복 실행하다가 break문을 만나게 되면 프로그램의 흐름이 강제적으 로 종료되면서 순차적 처리에 의해서 다 음 단계인 실행문 3으로 이동하여 처리하 게 된다. 도서출판 한산
제어문Control Statements break문의 실행과정 흐름도 도서출판 한산
제어문Control Statements 예제 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: } [실행결과] [ 흐름도 ] 도서출판 한산
제어문Control Statements continue문 continue문은 반복문에서만 사용되며 switch~case문에서는 사용하지 않는다 반복문에서 반복 실행을 하다가 continue문을 만나게 되면 이후의 실행문를 수행하지 않고 반복문의 조건식으로 이동하게 된다 형 식 설 명 반복문(조건식) { 실행문 1; continue; 실행문 2; } 반복문(for, while 등)을 실행하면서 continue를 만나게 되면 continue 이후의 실행문 2를 수행하지 않고 반복문의 조건식으로 이동하게 된다. 도서출판 한산
제어문Control Statements continue문의 실행과정 흐름도 도서출판 한산
제어문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: } [실행결과] [ 흐름도 ] 도서출판 한산
Q&A Thank you. 도서출판 한산