Presentation is loading. Please wait.

Presentation is loading. Please wait.

제5장 제어명령 khlee@dsc.ac.kr.

Similar presentations


Presentation on theme: "제5장 제어명령 khlee@dsc.ac.kr."— Presentation transcript:

1 제5장 제어명령

2 제5장의 수행 준거 이 장의 학습목표는?  C에서 제공하는 제어명령의 종류와 사용법에 대해 설명할 수 있다.

3 제5장에서 설명은? 5.1 선택문 5.2 반복문 5.3 분기문

4 제어명령의 종류(표5-1) 구분 제어명령 선택문 if if ∼ else if ∼ else if ∼ else
switch ∼case 반복문 for while do ∼ while 분기문 break continue goto

5 5.1 선택문 if 문 if∼else 문 if∼else if∼else 문 switch∼case 문 주어진 조건에 따라
5.1 선택문 if 문 if∼else 문 if∼else if∼else 문 switch∼case 문 주어진 조건에 따라 원하는 문장을 선택하여 수행시킬 때 사용하는 명령이다. 여기에는 4가지 명령이 제공되고 있다.

6 5.1 선택문 (1) if 문 if( 조건식 ) 문장; if( 조건식 ) { 문장1; 문장2; … } [사용형식 1]
5.1 선택문 (1) if 문 [사용형식 1] if( 조건식 ) 문장; [사용형식 2] if( 조건식 ) { 문장1; 문장2; } if 명령은 괄호()속에 조건식을 만족하면 포함된 문장을 수행하고, 조건식을 만족하지 않으면 포함된 문장을 수행하지 않는다.

7 5.1 선택문 #include <stdio.h> void main() { int a;
5.1 선택문 ◀5-1.C▶  #include <stdio.h> void main() { int a; printf("정수 값을 입력해 주세요? "); scanf("%d", &a); if( (a%2)==0 ) printf("입력한 %d 는 짝수입니다. \n", a); printf("프로그램 실행을 종료합니다. \n"); } 이 문장은 if 문에 포함된 문장이다. 따라서 이 문장은 변수 a값이 짝수일 때 수행한다. 조건식 if문블록 이 문장은 if 문에 포함된 문장이 아니다. 따라서 변수 a값이 짝수이거나 홀수일 때 모두 수행한다. 실행결과                                                 정수 값을 입력해 주세요? 22 <Enter> 입력한 22 는 짝수입니다. 프로그램 실행을 종료합니다.

8 5.1 선택문 #include <stdio.h> void main() { int a;
5.1 선택문 ◀5-2.C▶ if 문에 포함된 문장이 단문일 경우 #include <stdio.h> void main() { int a; printf("정수 값을 입력해 주세요? "); scanf("%d", &a); if( (a%2)==0 ) printf("입력한 %d 는 짝수입니다. \n", a); if( (a%2)==1 ) printf("입력한 %d 는 홀수입니다. \n", a); printf("프로그램 실행을 종료합니다. \n"); } 조건식 이 문장은 변수 a값이 짝수일 때만 수행한다. if문블록 if문블록 이 문장은 변수 a값이 홀수일 때만 수행한다. 실행결과                                                        정수 값을 입력해 주세요? 22 <Enter> 입력한 22 는 짝수입니다. 프로그램 실행을 종료합니다.

9 5.1 선택문 제5장 연산자 #include <stdio.h> void main() { int a;
5.1 선택문 ◀5-3.C▶ if 문에 포함된 문장이 복문일 경우(블록화가 필요) #include <stdio.h> void main() { int a; printf("정수 값을 입력해 주세요? "); scanf("%d", &a); if( (a%2)==0 ){ printf("입력한 %d 는 \n", a); printf("짝수입니다. \n"); } if( (a%2)==1 ){ printf("홀수입니다. \n"); printf("프로그램 실행을 종료합니다. \n"); 블록에 포함된 이 2개의 문장은 변수 a값이 짝수일 때만 수행한다. if문블록 블록에 포함된 이 2개의 문장은 변수 a값이 홀수일 때만 수행한다. if문블록 실행결과                                                     정수 값을 입력해 주세요? 33 <Enter> 입력한 33 는 홀수입니다. 프로그램 실행을 종료합니다.

10 5.1 선택문 #include <stdio.h> void main() { int jumsu;
5.1 선택문 ◀5-4.C▶ #include <stdio.h> void main() { int jumsu; printf("점수는? "); scanf("%d", &jumsu); if( jumsu>=90 && jumsu<=100 ) printf("A 입니다. \n"); if( jumsu>=80 && jumsu<=89 ) printf("B 입니다. \n"); if( jumsu>=70 && jumsu<=79 ) printf(“C 입니다. \n"); if( jumsu>=60 && jumsu<=69 ) printf("D 입니다. \n"); if( jumsu>=0 && jumsu<=59 ) printf("F 입니다. \n"); printf("프로그램 실행을 종료합니다. \n"); } 각 if 문의 조건식이 만족하면 수행하는 문장이다. 조건식 실행결과                                   점수는? 85 <Enter> B 입니다. 프로그램 실행을 종료합니다.

11 5.1 선택문 (2) if∼else문 if( 조건식 ) 문장1; else 문장2; [사용형식]
5.1 선택문 (2) if∼else문 [사용형식] if( 조건식 ) 문장1; else 문장2; 이 명령은 if 문의 조건식이 만족하면 포함된 문장1을 수행하고, 조건식이 만족되지 않으면 else 에 포함된 문장2을 수행한다.

12 5.1 선택문 #include <stdio.h> void main() { int a;
5.1 선택문 ◀5-5.C▶ #include <stdio.h> void main() { int a; printf("정수 값을 입력해 주세요? "); scanf("%d", &a); if( (a%2)==0 ) printf("입력한 %d 는 짝수입니다. \n", a); else printf("입력한 %d 는 홀수입니다. \n", a); printf("프로그램 실행을 종료합니다. \n"); } 조건식 if문 블록 이 문장은 변수 a값이 짝수일 때만 수행한다. else문 블록 이 문장은 변수 a값이 홀수일 때만 수행한다. 실행결과                                                      정수 값을 입력해 주세요? 33 <Enter> 입력한 33는 홀수입니다. 프로그램 실행을 종료합니다.

13 5.1 선택문 ◀5-6.C▶ #include <stdio.h> void main() { int jumsu;
5.1 선택문 ◀5-6.C▶ #include <stdio.h> void main() { int jumsu; printf("점수는? "); scanf("%d", &jumsu); if( jumsu>=90 && jumsu<=100 ) printf("A입니다. \n"); else{ if( jumsu>=80 && jumsu<=89 ) printf("B입니다. \n"); if( jumsu>=70 && jumsu<=79 ) printf("C입니다. \n"); if( jumsu>=60 && jumsu<=69 ) printf("D입니다. \n"); if( jumsu>=0 && jumsu<=59 ) printf("F입니다. \n"); } printf("프로그램 실행을 종료합니다. \n"); }

14 5.1 선택문 (3) if∼else if 문 if( 조건식1 ) 문장1; else if( 조건식2 ) 문장2;
5.1 선택문 (3) if∼else if 문 [사용형식] if( 조건식1 ) 문장1; else if( 조건식2 ) 문장2; else if( 조건식3 ) 문장3; else 문장n; 이 명령은 if 문의 조건식을 계속 검사하여 만족하는 if 문의 문장을 선택하여 수행한다. 만약 어떤 if 조건식도 만족하지 않는 경우에는 else 에 포함된 문장을 수행시킨다.

15 5.1 선택문 #include <stdio.h> void main() { int a;
5.1 선택문 ◀5-7.C▶  #include <stdio.h> void main() { int a; printf("정수 값을 입력해 주세요? "); scanf("%d", &a); if( (a%2)==0 ) printf("입력한 %d 는 짝수입니다. \n", a); else if( (a%2)==1 ) printf("입력한 %d 는 홀수입니다. \n", a); printf("프로그램 실행을 종료합니다. \n"); } 조건식 if문블록 else if문블록 실행결과                                                     정수 값을 입력해 주세요? 77 <Enter> 입력한 77는 홀수입니다. 프로그램 실행을 종료합니다.

16 5.1 선택문 #include <stdio.h> void main() { int jumsu;
5.1 선택문 ◀5-8.C▶ #include <stdio.h> void main() { int jumsu; printf("점수는? "); scanf("%d", &jumsu); if( jumsu>=90 && jumsu<=100 ) printf("A학점입니다. \n"); else if( jumsu>=80 && jumsu<=89 ) printf("B학점입니다. \n"); else if( jumsu>=70 && jumsu<=79 ) printf("C학점입니다. \n"); else if( jumsu>=60 && jumsu<=69 ) printf("D학점입니다. \n"); else if( jumsu>=0 && jumsu<=59 ) printf("F입니다. \n"); printf("프로그램 실행을 종료합니다. \n"); } 각 else if 문의 조건식이 만족하면 수행하는 문장이다. 조건식 실행결과                                     점수는? 95 <Enter> A학점 입니다. 프로그램 실행을 종료합니다.

17 (4) switch∼case 문 5.1 선택문 switch( 식 ) { case 식결과1 : 문장1; break;
5.1 선택문 (4) switch∼case 문 [사용형식] switch( 식 ) { case 식결과1 : 문장1; break; case 식결과2 : 문장2; case 식결과3 : 문장3; default : 문장n; } 이 명령은 switch의 괄호()속에 식의 결과에 따라 해당 case 로 이동하여 지정된 문장을 수행한다.

18 5.1 선택문 #include <stdio.h> void main() { int a;
5.1 선택문 ◀5-9.C▶ #include <stdio.h> void main() { int a; printf("정수 값을 입력해 주세요? "); scanf("%d", &a); switch( a%2 ){ case 0 : printf("입력한 %d 는 짝수입니다. \n", a); break; case 1 : printf("입력한 %d 는 홀수입니다. \n", a); } printf("프로그램 실행을 종료합니다. \n"); switch 문에서는 식이라고 한다. switch문 블록 실행결과                                                      정수 값을 입력해 주세요? 33 <Enter> 입력한 33는 홀수입니다. 프로그램 실행을 종료합니다.

19 5.1 선택문 #include <stdio.h> void main() { int jumsu;
5.1 선택문 ◀5-10.C▶ #include <stdio.h> void main() { int jumsu; printf("점수는? "); scanf("%d", &jumsu); switch( jumsu/10 ){ case 10 : case 9 : printf("A학점입니다. \n"); break; case 8 : printf("B학점입니다. \n"); case 7 : printf("C학점입니다. \n"); case 6 : printf("D학점입니다. \n"); case 5 : case 4 : case 3 : case 2 : case 1 : case 0 : printf("F입니다. \n"); } printf("프로그램 실행을 종료합니다. \n"); switch문 블록 break 명령은 자기 자신을 감싸고 있는 맨 안쪽의 블록을 탈출하게 한다.

20 5.1 선택문 #include <stdio.h> void main() { int jumsu;
5.1 선택문 ◀5-11.C▶ #include <stdio.h> void main() { int jumsu; printf("점수는? "); scanf("%d", &jumsu); switch( jumsu/10 ){ case 10 : case 9 : printf("A학점입니다. \n"); break; case 8 : printf("B학점입니다. \n"); case 7 : printf("C학점입니다. \n"); case 6 : printf("D학점입니다. \n"); default : printf("F입니다. \n"); } printf("프로그램 실행을 종료합니다. \n"); switch문 블록

21 5.1 선택문 퀴즈 풀어보기 교제 140 쪽 ( 1번 ~ 10번 )

22 5.2 반복문 for 문 while 문 do ∼ while 문 주어진 조건에 따라 원하는 문장을 반복 수행시킬 때
5.2 반복문 for 문 while 문 do ∼ while 문 주어진 조건에 따라 원하는 문장을 반복 수행시킬 때 사용하는 명령이다. 여기에는 3개의 명령이 제공되고 있다.

23 5.2 반복문 (1) for 문 for( 식1 ; 식2 ; 식3 ) 문장; [사용형식] (최종값) 마지막 값 지정 식
5.2 반복문 (1) for 문 (최종값) 마지막 값 지정 식 [사용형식] for( 식1 ; 식2 ; 식3 ) 문장; (초기값) 시작 값 지정 식 (증감식) 증가, 감소 값 지정 식

24 5.2 반복문 #include <stdio.h> void main() { int a;
5.2 반복문 ◀5-12.C▶ for 문의 사용 예 #include <stdio.h> void main() { int a; for( a=1; a<=10; a++ ) printf("%d ", a); } 식2(최종값) 식1(초기값) a변수 for블록 식3(증감값) 실행결과                                 이 printf() 문장을 for 명령에 의해 10회 반복 수행하여 변수 a 값을 출력한다.

25 5.2 반복문 #include <stdio.h> void main() { int a, b;
5.2 반복문 ◀5-13.C▶ for 문의 중첩사용 예 #include <stdio.h> void main() { int a, b; for( b=1; b<=3; b++ ){ for( a=1; a<=10; a++ ) printf("%d ", a); printf("\n"); } 이 for문은 포함된 문장을 3회 반복 수행시킨다. 이 for문은 포함된 문장을 10회 반복 수행시킨다. a변수 for블록 b변수 for블록 이 printf() 문장은 a변수 for문 블록과 b변수 for문 블록에 모두에 공통으로 포함된 문장이기 때문에 30회(=10회*3회) 반복 수행한다. 실행결과                                  이 printf() 문장은 b변수 for문 블록에 포함되는 때문에 3회만 반복 수행한다.

26 5.2 반복문 #include <stdio.h> void main() { int a, b;
5.2 반복문 ◀5-14.C▶ for 문을 사용한 구구단 출력 #include <stdio.h> void main() { int a, b; for( b=2; b<=9; b++ ){ for( a=1; a<=9; a++ ) printf("%d*%d=%d \n", b, a, b*a); printf("\n"); } a변수 for블록 b변수 for블록 이 printf() 문장은 72회(=8회*9회) 반복 수행한다. 이 printf() 문장은 b변수 for문 블록에 포함되는 때문에 9회만 반복 수행한다. 실행결과                                            2*1=5 2*2=4 3*3=6 이하 2단부터 9단까지 출력합니다.

27 5.2 반복문 (2) while 문 [사용형식] while( 조건식 ) { 문장; }

28 5.2 반복문 #include <stdio.h> void main() { int a; a=1;
5.2 반복문 ◀5-15.C▶ #include <stdio.h> void main() { int a; a=1; while( a<=10 ){ printf("%d ", a); a++; } 식2(최종값) 식1(초기값) 이 문장은 10회 반복 수행된다. while문블록 식3(증감값) 실행결과                                    

29 5.2 반복문 #include <stdio.h> void main() { int a, b; b=1;
5.2 반복문 ◀5-16.C▶ #include <stdio.h> void main() { int a, b; b=1; while( b<=3 ){ a=1; while( a<=10 ){ printf("%d ", a); a++; } printf("\n"); b++; b변수 while블록의 식1(초기값) b변수 while블록의 식2(최종값) a변수 while블록의 식1(초기값) a변수 while블록의 식2(최종값) a변수 while문 블록 b변수 while문 블록 a변수 while블록의 식3(증가값) b변수 while블록의 식3(증가값) 실행결과                                    

30 5.2 반복문 #include <stdio.h> void main() { int a, b; b=2;
5.2 반복문 ◀5-17.C▶ 구구단을 출력하는 프로그램 #include <stdio.h> void main() { int a, b; b=2; while( b<=9 ){ a=1; while( a<=9 ){ printf(“%d*%d=%d \n", b, a, b*a); a++; } printf("\n"); b++; 구구단의 단을 나타내는 while문 블록 각 단의 곱을 지정하는 while문 블록 b변수 while문 블록 a변수 while문 블록 실행결과                                            2*1=5 2*2=4 3*3=6 이하 2단부터 9단까지 출력한다.

31 5.2 반복문 (3) do∼while 문 [사용형식] do { 문장; } while( 조건식 );

32 5.2 반복문 #include <stdio.h> void main() { int a; a=1; do{
5.2 반복문 ◀5-18.C▶ #include <stdio.h> void main() { int a; a=1; do{ printf("%d ", a); a++; } while( a<=10 ); } 식1(초기값) 이 문장은 10회 반복 수행된다. do~while문 블록 식3(증감값) 실행결과                                     식2(최종값)

33 5.2 반복문 #include <stdio.h> void main() { int a, b; b=1; do{ a=1;
5.2 반복문 ◀5-19.C▶ #include <stdio.h> void main() { int a, b; b=1; do{ a=1; printf("%d ", a); a++; } while( a<=10 ); printf("\n"); b++; } while( b<=3 ); } a변수 do~while문 블록 b변수 do~while문 블록 실행결과                                      

34 5.2 반복문 #include <stdio.h> void main() { int a, b; b=2; do{ a=1;
5.2 반복문 ◀5-20.C▶  #include <stdio.h> void main() { int a, b; b=2; do{ a=1; printf(“%d*%d=%d \n", b, a, b*a); a++; }while( a<=9 ); printf("\n"); b++; }while( b<=9 ); } b변수 do~while문 블록 a변수 do~while문 블록 실행결과                                         2*1=5 2*2=4 3*3=6 이하 2단부터 9단까지 출력한다.

35 5.2 반복문 퀴즈 풀어보기 교제 150 쪽 ( 11번 ~ 25번 )

36 5.3 분기문 break 문 continue 문 goto 문 원하는 문장으로 분기시킬 때 사용하는 명령이다.
5.3 분기문 break 문 continue 문 goto 문 원하는 문장으로 분기시킬 때 사용하는 명령이다. 여기에는 3개의 명령이 제공되고 있다.

37 5.3 분기문 (1) break 문 - 강제로 반복문을 탈출 시킬 때 사용한다.
5.3 분기문 (1) break 문 - 강제로 반복문을 탈출 시킬 때 사용한다. - 이때 하나의 break문에 의해 벗어나는 블록은 자신을 포함시키는 맨 안쪽의 블록만 탈출시킨다.

38 5.3 분기문 #include <stdio.h> void main() { int a;
5.3 분기문 ◀5-21.C▶ for 문에서 식2가 생략되었다. 즉, 최종값을 설정하지 않고 있다. #include <stdio.h> void main() { int a; for( a=1; ; a++ ){ if( a>10 ) break; else printf("%d ", a); } 변수 a 값을 평가하여 10보다 크면 if 문의 조건이 거짓이 되어 이 break 문장을 수행하게 되어 for 문 블록을 벗어나게 된다. a변수 for블록 실행결과                                

39 5.3 분기문 (2) continue 문 - 반복문에 사용한다.
5.3 분기문 (2) continue 문 - 반복문에 사용한다. 반복 수행하는 과정에서 continue문을 만나게 되면 그 이하의 문장은 건너 띄고, 다음 반복 조건에 의해 계속 수행하게 한다.

40 5.3 분기문 #include <stdio.h> void main() { int a;
5.3 분기문 ◀5-22.C▶ #include <stdio.h> void main() { int a; for(a=1; a<=10; a++){ if( a%2==0 ) continue; else printf("%d ", a); } if 문에서 변수 a 값을 평가하여 0이면 즉, 짝수이면 이 continue 문장에 의해 다시 for 문으로 실행지점이 이동하여 계속 수행하게 된다. a변수 for블록 실행결과             

41 5.3 분기문 (3) goto 문 goto 레이블명; … 레이블명 : 문장;
5.3 분기문 (3) goto 문 - 무조건 원하는 문장으로 분기시켜 주는 명령이다. [사용형식] goto 레이블명; 레이블명 : 문장;

42 5.3 분기문 #include <stdio.h> void main() { int a=1;
5.3 분기문 ◀5-23.C▶ #include <stdio.h> void main() { int a=1; KING : printf("%d ", a); if(a<10){ a++; goto KING; } 변수 a 값을 평가하여 10보다 작거나 같으면 레이블명이 KING 이라고 붙여진 문장으로 이동하여 계속 수행한다. if문블록 실행결과                              

43 5.3 분기문 퀴즈 풀어보기 교제 156 쪽 ( 26번 ~ 30번 )

44 심화실습 제어명령을 이용한 응용 실습

45 심화실습 응용실습(1) for 문을 이용하여 일정시간간격으로 1씩 증가하면서 카운트하는 카운트 프로그램을 작성해 보라.

46 심화실습 파일명: 카운터.C (1) 먼저, 1부터 10까지 출력하는 프로그램을 작성한다.
#include <stdio.h> void main() { int a; for( a=1; a<=10; a++ ) { printf(“%d “, a); } 먼저, 이 문장을 수정하여 숫자가 고정된 위치에 출력되게 한다.

47 심화실습 (2) 고정된 위치에서 숫자가 표시되는 시간을 원하는 대로 조정해 보자. #include <stdio.h>
void main() { int a; int b; for( a=1; a<=10; a++ ) { printf( “%d \r“, a ); for( b=1; b<= ; b++ ) ; } \r 에 의해 1부터 10까지의 숫자가 고정된 위치에서 출력된다. 이 for 문에 의해 1부터 10까지의 숫자가 1씩 카운터 할 때마다 공 문장을 일정횟수만큼 반복 수행시켜 다음숫자의 표시를 지연시킨다.

48 심화실습 응용실습(2) 이번에는 앞의 “카운터.c” 프로그램을 수정하여 1씩 감소하면서 카운트(디스카운트)하는
타이머 프로그램이 되도록 하라.

49 심화실습 파일명: 타이머.C #include <stdio.h> void main() { int a; int b;
for( a=10; a>=1; a-- ) { printf( “%d \r“, a ); for( b=1; b<= ; b++ ) ; }

50 심화실습 응용실습(3) 이번에는 앞의 “타이머.c” 프로그램을 수정하여 프로그램 사용자가 셋팅하는 시간만큼 디스카운트한 후에
프로그램 실행을 종료시키는 타이머 프로그램이 되도록 해보라. 이때 원하는 시간단위는 초(sec) 단위라고 가정한다.

51 심화실습 파일명: 타이머셋.C #include <stdio.h> void main() { int a; int b:
printf(“타이머 시간(초)을 셋팅해 주세요? “); scanf(“%d”, &time); for( a=time; a>=1; a-- ) { printf( “%d \r“, a ); for( b=1; b<= ; b++ ) ; }

52 Question and Answer


Download ppt "제5장 제어명령 khlee@dsc.ac.kr."

Similar presentations


Ads by Google