Download presentation
Presentation is loading. Please wait.
1
제 5장 제어문 Hello!! C 언어 강성호 김학배 최우영
2
순서 제 5장 제어문 제어문의 개념 제어문의 종류 조건 연산 선택문 반복문 기타 제어문 요약
3
제어문의 개념 프로그램 실행 제어흐름의 판단 복합문 순차적 흐름 (sequential flow of control)
제 5장 제어문 프로그램 실행 순차적 흐름 (sequential flow of control) 특수한 실행구조 선택구조 (selection) : if, if-else, switch 반복동작 (repetition of action) : while, for, do 기타구조 : goto, break, continue 제어흐름의 판단 관계, 등가, 논리 연산자 (relational,equal,logical operators) 수식결과의 논리적 참, 거짓에 좌우 복합문 여러문들이 함께 그룹지어 한 단위로 사용 { } 으로 구분
4
선택문 if 문 형식 if (수식) 문1; (또는 복합문) /* 수식이 `참'일 때 문1 (또는 복합문) 실행,
제 5장 제어문 if 문 형식 if (수식) 문1; (또는 복합문) /* 수식이 `참'일 때 문1 (또는 복합문) 실행, 수식이 `거짓'일 때는 문1을 무시 */
5
선택문 [예제 5-1] #include<stdio.h> main() { int number;
제 5장 제어문 [예제 5-1] #include<stdio.h> main() { int number; puts("Input negative number\n"); scanf("%d",&number); if ( number < 0 ) printf ("That's a negative integer\n"); } [실행결과] Input negative number -1 [enter] That's a negative integer
6
선택문 [예제 5-2] #include<stdio.h> main(){ int i,j;
제 5장 제어문 [예제 5-2] #include<stdio.h> main(){ int i,j; printf("Input two numbers (i,j)\n"); scanf("%d%d",&i,&j); if ( i > 0 ){ i = i - 1 ; j = j - 1 ; printf("Input-1 : "); printf("i=%d,j=%d\n",i,j) ; } [실행결과] } Input two numbers (i,j) 1 [enter] 2 [enter] Input-1 : i=0,j=1
7
선택문 if-else 문 형식 if (수식) 문1; (또는 복합문) else 문2; (또는 복합문)
제 5장 제어문 if-else 문 형식 if (수식) 문1; (또는 복합문) else 문2; (또는 복합문) /* 수식 : `참' 문1 실행, `거짓' 문2 실행 */
8
선택문 [예제 5-3] #include<stdio.h> main(){ int count;
제 5장 제어문 [예제 5-3] #include<stdio.h> main(){ int count; printf("Input number : "); scanf("%d",&count); if ( (count % 2) == 0 ) printf ("That is an even number.\n"); else printf ("That is an odd number.\n"); } [실행결과] Input number : 3 That is an odd number.
9
선택문 [예제 5-4] #include<stdio.h> main(){ int count;
제 5장 제어문 [예제 5-4] #include<stdio.h> main(){ int count; printf(" Input number :"); scanf("%d",&count); if ( (count % 2) == 0 ) printf (" That is even number. \n"); else printf (" That is odd number. \n"); }
10
선택문 if-elseif-else 문 여러 조건 및 문(또는 복합문)들로 구성 형식 if (수식1) 문 1; (또는 복합문)
제 5장 제어문 if-elseif-else 문 여러 조건 및 문(또는 복합문)들로 구성 형식 if (수식1) 문 1; (또는 복합문) elseif (수식2) 문 2; (또는 복합문) elseif (수식n-1) 문 n-1; (또는 복합문) else 문 n
11
선택문 switch 문 if-elseif-else 문을 일반화한 다중 조건문 형식 switch (수식) {
제 5장 제어문 switch 문 if-elseif-else 문을 일반화한 다중 조건문 형식 switch (수식) { case 상수(또는 수식) : 문장 1; (또는 복합문) break; 문장 n-1; (또는 복합문) default : 문장 n; (또는 복합문) } 수식 및 상수(case label)은 정수적형 많은 경우의 수 취급시 유용
12
선택문 [예제 5-5] #include<stdio.h> main(){ char alph;
제 5장 제어문 [예제 5-5] #include<stdio.h> main(){ char alph; puts("Choose a alphabet of a~c : "); scanf("%c",&alph); switch(alph){ case 'a': { puts("You entered a.\n"); break; } case 'b': { puts("You entered b.\n"); break; } case 'c': { puts("You entered c.\n"); break; } default: puts("Out of range! Retry."); } } 계속
13
선택문 [예제 5-5] 계속 [실행결과] Choose a alphabet of a~c : a You entered a.
제 5장 제어문 [예제 5-5] 계속 [실행결과] Choose a alphabet of a~c : a You entered a.
14
반복문 for 문 형식 for (수식1; 수식2; 수식3) 문 1; (또는 복합문) /* 수식1 : 반복루프의 초기조건 설정
제 5장 제어문 for 문 형식 for (수식1; 수식2; 수식3) 문 1; (또는 복합문) /* 수식1 : 반복루프의 초기조건 설정 수식2 : 반복동작 제어를 위한 논리식, `거짓'일 때까지 계속 반복 수식3 : 조건식의 (초기조건으로부터) 변경 */
15
반복문 [예제 5-6] #include<stdio.h> main(){ int number;
제 5장 제어문 [예제 5-6] #include<stdio.h> main(){ int number; for ( number = 1 ; number <= 100 ; number++ ) printf( "%d\n", number ); } [실행결과] 1 2 3 : 100
16
반복문 중첩된 for 문 형식 for (①초기식; ②조건식; ⑧증감식) { for (③초기식; ④조건식; ⑥증감식) ⑤실행문
제 5장 제어문 중첩된 for 문 형식 for (①초기식; ②조건식; ⑧증감식) { for (③초기식; ④조건식; ⑥증감식) ⑤실행문 } ⑦실행문
17
반복문 [예제 5-7] #include<stdio.h> main(){ int i, j;
제 5장 제어문 [예제 5-7] #include<stdio.h> main(){ int i, j; for ( i = 0 ; i <= 10 ; i++){ for ( j = 1 ; j <= i ; j++ ){ [실행결과] putchar('*'); * } ** putchar('*'); *** putchar('\n'); **** } ***** } ****** ******* ******** ********* ********** ***********
18
반복문 [예제 5-8] #include<stdio.h> main(){ for ( ; ; ){
제 5장 제어문 [예제 5-8] #include<stdio.h> main(){ for ( ; ; ){ printf("*\n"); } [실행결과] * :
19
반복문 while 문 do 문 의미(기능)상의 동격 수식1; while (수식2){ 문 1 (또는 복합문) 수식 3 }
제 5장 제어문 while 문 의미(기능)상의 동격 수식1; while (수식2){ 문 1 (또는 복합문) 수식 3 } if, if-else, while, 또는 다른 for 문 (중첩구조)의 일부로 사용가능 파악하기 쉬운 제어와 indexing의 위치 do 문 while 문의 변형 : 루프의 하단에서 test 형식 do 문1; (또는 복합문) while (수식1); do 문의 몸체(문1)는 적어도 한 번 실행
20
반복문 [예제 5-9] #include<stdio.h> main(){ int a; a = 1;
제 5장 제어문 [예제 5-9] #include<stdio.h> main(){ int a; a = 1; while(a < 11){ printf("%d\n", a); a++; } [실행결과] 1 2 3 : 10
21
반복문 [예제 5-10] #include<stdio.h> main(){ int a;
제 5장 제어문 [예제 5-10] #include<stdio.h> main(){ int a; for (a = 1 ; a <= 10 ; a++ ){ printf("%d\n", a); } [실행결과] 1 2 3 : 10
22
반복문 do 문의 바람직한 사용 방법 do-while 문 do{ 문 1 (또는 복합문) } while (수식1);
제 5장 제어문 do 문의 바람직한 사용 방법 do-while 문 do{ 문 1 (또는 복합문) } while (수식1); 공백문이 뒤따르는 while 문이 아닌 do 문의 일부임이 쉽게 판별됨
23
반복문 [예제 5-11] #include <stdio.h> main(){ int k, sum; k = 1;
제 5장 제어문 [예제 5-11] #include <stdio.h> main(){ int k, sum; k = 1; sum = 0; do { sum = sum + k; k = k + 1; } while (k <= 100); printf("SUM = %d\n", sum); } [실행결과] SUM = 5050
24
기타 제어문 break 문 정상적인 제어의 흐름을 중단 내부루프나 switch 문으로부터 이탈 즉, 루프종료
제 5장 제어문 break 문 정상적인 제어의 흐름을 중단 내부루프나 switch 문으로부터 이탈 즉, 루프종료 Braek문을 반복문 뒤에서 만나면 반복문을 멈추고 반복문 뒤에 오는 문장을 수행 형식 break ;
25
기타 제어문 [예제 5-12] #include <stdio.h> main(){ int box ;
제 5장 제어문 [예제 5-12] #include <stdio.h> main(){ int box ; for ( box = 1 ; box <= 20 ; ++box ){ if (box == 4 ) break; else printf("box = %d\n", box); } [실행결과] box = 1 box = 2 box = 3
26
기타 제어문 continue 문 정상적인 제어의 흐름을 중단
제 5장 제어문 continue 문 정상적인 제어의 흐름을 중단 루프의 현재 반복동작을 멈추고 다음 반복동작 수행, 즉, 현재 반복 동작의 끝 지점으로 제어를 전달 형식 continue ;
27
기타 제어문 [예제 5-13] #include<stdio.h> main(){ int a, sum; sum = 0;
제 5장 제어문 [예제 5-13] #include<stdio.h> main(){ int a, sum; sum = 0; for( a = 1 ; a <= 50 ; a++ ){ if ( (a / 2) * 2 == a ) continue; else sum += a; } printf("SUM = %d \n", sum); [실행결과] SUM = 625
28
기타 제어문 goto 문 현대 프로그래밍에서 방법론상 유해한 구조 형식 goto label : 문 1 ; (또는 복합문)
제 5장 제어문 goto 문 현대 프로그래밍에서 방법론상 유해한 구조 형식 goto label : 문 1 ; (또는 복합문) 같은 함수내에서 라벨문으로 분기(jump) 다른 제어문(for, while, do, if, switch)의 유용한 구조 파괴
29
기타 제어문 [예제 5-14] #include<stdio.h> main(){ int k, sum; k = 0;
제 5장 제어문 [예제 5-14] #include<stdio.h> main(){ int k, sum; k = 0; sum = 0; loop : k++; sum += k; if (k < 100) goto loop ; printf(" = %d\n", sum); } [실행결과] = 5050
30
기타 제어문 [예제 5-15] #include<stdio.h> main(){ int k,sum;
제 5장 제어문 [예제 5-15] #include<stdio.h> main(){ int k,sum; for (k = 1, sum = 0 ; k <= 100 ; k++ ) sum += k; printf(" = %d \n", sum); } [실행결과] = 5050
Similar presentations