• 검색 결과가 없습니다.

제05장-제어명령

N/A
N/A
Protected

Academic year: 2021

Share "제05장-제어명령"

Copied!
52
0
0

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

전체 글

(1)

5

5

장 제어명령

장 제어명령

(2)

 C 에서 제공하는 제어명령의 종류와 사용법에 대해 설명할 수 있다 .  C 로 카운터기 프로그램을 개발 ( 작성 ) 할 수 있다 .

 C 로 타이머기 프로그램을 개발 ( 작성 ) 할 수 있다 .

(3)

5.1 선택문

5.2 반복문

5.3 분기문

(4)

구분 제어명령 선택문 if if ∼ else if ∼ else if ∼ else switch ∼case 반복문 for while do ∼ while 분기문 break continue goto

(5)

if 문

if∼else 문

if∼else if∼else 문

switch∼case 문

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

(6)

6 / 52

(1) if 문

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

(7)

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

(8)

◀5-2.C▶ if 문에 포함된 문장이 단문일 경우 실행결과 정수 값을 입력해 주세요 ? 22 <Enter> 입력한 22 는 짝수입니다 . 프로그램 실행을 종료합니다 . #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 값 짝수일 때만 수행한 다 . 이 문장은 변수 a 값 홀수일 때만 수행한 다 . 조건식 if 문블록 if 문블록

(9)

◀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(" 입력한 %d 는 \n", a); printf(" 홀수입니다 . \n"); } printf(" 프로그램 실행을 종료합니다 . \n"); } 실행결과 정수 값을 입력해 주세요? 33 <Enter> 입력한 33 는 홀수입니다. 블록에 포함된 이 2 개의 문장은 변수 a 값이 짝수일 때만 수행한다. 블록에 포함된 이 2 개의 문장은 변수 a 값이 홀수일 때만 수행한다. if 문블록 if 문블록

(10)

10 / 52 ◀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)

(2) if∼else 문

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

(12)

◀5-5.C▶ 실행결과 정수 값을 입력해 주세요? 33 <Enter> 입력한 33 는 홀수입니다 . 프로그램 실행을 종료합니다 . #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"); } 이 문장은 변수 a 값이 짝수일 때만 수행한 다 . 이 문장은 변수 a 값이 홀수일 때만 수행한다. 조건식 if 문 블록 else 문 블록

(13)

◀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"); 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"); }

} } }

(14)

(3) if∼else if 문

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

(15)

◀5-7.C▶ 실행결과 정수 값을 입력해 주세요 ? 77 <Enter> 입력한 77 는 홀수입니다 . 프로그램 실행을 종료합니다 .  #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 문블록

(16)

◀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"); } 실행결과 점수는 ? 95 <Enter> A 학점 입니다 . 프로그램 실행을 종료합니다 . 조건식 각 else if 문의 조건식이 만족하면 수행하는 문장이 다 .

(17)

(4) switch∼case 문

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

(18)

◀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); break; } printf(" 프로그램 실행을 종료합니다 . \n"); } 실행결과 정수 값을 입력해 주세요 ? 33 <Enter> 입력한 33 는 홀수입니다 . 프로그램 실행을 종료합니다 . switch 문에서 식이라고 한다. switch 문 블록

(19)

◀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"); break; case 7 : printf("C 학점입니다 . \n"); break; case 6 : printf("D 학점입니다 . \n"); break; case 5 : case 4 : case 3 : case 2 : case 1 : case 0 : printf("F 입니다 . \n"); } printf(" 프로그램 실행을 종료합니다 . \n"); } switch 문 블록 break 명령은 자기 자신을 감싸고 있는 맨 안쪽의 블록을 탈출하게 한다.

(20)

◀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"); break; case 7 : printf("C 학점입니다 . \n"); break; case 6 : printf("D 학점입니다 . \n"); break; default : printf("F 입니다 . \n"); } printf(" 프로그램 실행을 종료합니다 . \n"); } switch 문 블록

(21)

퀴즈 풀어보기

교제

140 쪽 ( 1 번 ~ 10

)

(22)

for 문

while 문

do ∼ while 문

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

(23)

(1) for 문

[ 사용형식 ]

for(

식 1 ; 식 2 ; 식 3

)

문장 ;

( 초기값) 시작 값 지정 식 ( 최종값) 마지막 값 지정 식 ( 증감식) 증가, 감소 값 지정 식

(24)

#include <stdio.h> void main()

{

int a;

for( a=1; a<=10; a++ ) printf("%d ", a); } 실행결과 1 2 3 4 5 6 7 8 9 10 ◀5-12.C▶ for 문의 사용 예 이 printf() 문장을 for 명령에 의해 10 회 반복 수행하여 변수 a 값을 출력 한다. 식 1( 초기 값 ) 식 2( 최종 값 ) 식 3( 증감 값 ) a 변수 for 블록

(25)

#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"); } } ◀5-13.C▶ for 문의 중첩사용 예 실행결과 1 2 3 4 5 6 7 8 9 10 1 2 3 4 5 6 7 8 9 10 1 2 3 4 5 6 7 8 9 10 이 printf() 문장은 a 변수 for 문 블록과 b 변수 for 문 블록에 모두에 공통으로 포함된 문장이기 때문에 30회 (=10 회 *3 회 ) 반복 수행한다. 이 printf() 문장은 b 변수 for 문 블록에 포함되는 때문에 3 회만 반복 수행한다. 이 for 문은 포함된 문장 3 회 반복 수행시킨다. 이 for 문은 포함된 문장 10 회 반복 수행시킨다 . b 변수 for 블록 a 변수 for 블록

(26)

실행결과 2*1=5 2*2=4 3*3=6 이하 2 단부터 9 단까지 출력합니다 . #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"); } } ◀5-14.C▶ for 문을 사용한 구구단 출력 이 printf() 문장 72회 (=8 회 *9 회 ) 반복 수행한다. b 변수 for 블록 a 변수 for 블록 이 printf() 문장은 b 변수 for 문 블록에 포함되 때문에 9 회만 반복 수행한 다 .

(27)

(2) while 문

[ 사용형식]

while(

조건식

) {

문장 ;

(28)

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

(29)

◀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++; } } 실행결과 1 2 3 4 5 6 7 8 9 10 1 2 3 4 5 6 7 8 9 10 1 2 3 4 5 6 7 8 9 10 b 변수 while 문 블록 a 변수 while 문 블록 b 변수 while 블록의 식 1( 초 기값) b 변수 while 블록의 식 2( 최 종값) a 변수 while 블록의 식 1( 초 기값) a 변수 while 블록의 식 2( 최 종값) b 변수 while 블록의 식 3( 증 가값) a 변수 while 블록의 식 3( 증 가값)

(30)

◀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++;

}

}

실행결과 2*1=5 2*2=4 3*3=6 이하 2 단부터 9 단까지 출력한다 . b 변수 while 문 블록 a 변수 while 문 블록 구구단의 단을 나타내는 while 문 블록 각 단의 곱을 지정하는 while 문 블록

(31)

(3) do∼while 문

[ 사용형식 ]

do {

문장 ;

(32)

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

(33)

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

(34)

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

(35)

퀴즈 풀어보기

교 제

150 쪽 ( 11 번 ~

25 번 )

(36)

break 문

continue 문

goto 문

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

(37)

(1) break 문

- 강제로 반복문을 탈출 시킬 때 사용한다 .

- 이때 하나의 break 문에 의해 벗어나는 블록은 자신을 포함시키는 맨 안쪽의 블록만 탈출시킨다 .

(38)

#include <stdio.h> void main()

{

int a;

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

(39)

(2) continue 문

- 반복문에 사용한다 .

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

(40)

#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 문으로 실행지점이 이동하여 계속 수행하게 된다. ◀5-22.C▶ 실행결과 1 3 5 7 9 a 변수 for 블록

(41)

(3) goto 문

- 무조건 원하는 문장으로 분기시켜 주는 명령이다 . [ 사용형식 ]

goto

레이블명

;

레이블명

:

문장

;

(42)

#include <stdio.h> void main()

{

int a=1;

KING : printf("%d ", a); if(a<10){ a++; goto KING; } } 변수 a 값을 평가하여 10 보다 작거나 같으면 레이블명이 KING 이라고 붙여진 문장으로 이동하여 계속 수행한다. 실행결과 1 2 3 4 5 6 7 8 9 10 ◀5-23.C▶ if 문블록

(43)

퀴즈 풀어보기

교 제

156 쪽 ( 26 번 ~

30 번 )

(44)
(45)

응용실습

(1)

for 문을 이용하여

일정시간간격으로 1 씩 증가하면서

(46)

파일명

: 카운터 .C

#include <stdio.h> void main()

{

int a;

for( a=1; a<=10; a++ ) { printf(“%d “, a); } } (1) 먼저 , 1 부터 10 까지 출력하는 프로그램을 작성한다 . 먼저, 이 문장을 수정하 숫자가 고정된 위치에 출력되게 한다.

(47)

#include <stdio.h> void main()

{

int a; int b;

for( a=1; a<=10; a++ ) { printf( “%d \r“, a ); for( b=1; b<=200000000; b++ ) ; } } (2) 고정된 위치에서 숫자가 표시되는 시간을 원하는 대로 조정해 보자 . \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<=200000000; 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<=200000000; b++ ) ;

} }

(52)

참조

관련 문서

민법 이나 상법의 적용을 받는 독립사업자 사이의 경계 선상에 위치하고 있는 독립노동 내지 자영노동의 거래에서 교섭력의 불균형이라는

출처 : 보드게임몰(https://smartstore.naver.com/pst).. 우수한 집중력과 수업 참여도 3.. 4)게이밍케이션 활용 STEAM 프로그램 활동.. 4)게이밍케이션 활용

1 융합인재교육(STEAM) 프로그램 현장 적용성 제고 및 내실화 도모. 2 융합인재교육(STEAM)교육 프로그램 일반화 기여 3 창의적

[r]

STEAM 프로그램 소개... 마이크로비트에

[r]

붙임 STEAM 프로그램 초3 동물의 한 살이

- 자료제출 프로그램 설치가 되지 않거나, 자료 제출이 되지 않을 경우 구버전의 프로그램을 직접 설치하여 전자신고파일