• Tidak ada hasil yang ditemukan

5장. 제어문

N/A
N/A
Protected

Academic year: 2023

Membagikan "5장. 제어문"

Copied!
40
0
0

Teks penuh

(1)

5. 제어문

#include <stdio.h>

int main(void) {

int num;

printf(“Please enter an integer: ");

scanf("%d", &num);

if ( num < 0 )

printf("Is negative.\n");

printf("num = %d\n", num);

return 0;

}

(2)

■ 제어문인 조건문, 반복문, 분기문에 대해 알아본다.

■ 조건문인 if와 switch의 사용 방법과 사용시 주의사항에 대해 알아본다.

■ 반복문인 for, while, do while의 사용 방법과 사용시 주의사항에 대해 알아본다.

■ 분기문인 break, continue, goto, return에 대해 알아본다.

5장. 제어문

학습목표

2

(3)

조건문

• if

• switch

반복문

• for

• while

• do while

분기문

• break

• continue

• goto

• return

5장. 제어문

목차

3

(4)

제어문 : 특정 문장을 수행하거나 수행하지 않도록 선택하거나, 특정 문장을 여러 번 반복 수행하게 만드는 것

제어문의 종류

조건문 : if, switch

반복문 : for, while, do while

분기문 : break, continue, goto, return

5장. 제어문

제어문

4

(5)

기본적인 if

5장. 제어문

if

조건문

5

(6)

if의 사용 예

5장. 제어문

if

조건문

6

01: /* Ex05_01.c */

02: #include <stdio.h>

03: 04: int main(void) 05: {

06: int score;

07: 08: printf("점수를 입력하세요 : ");

09: scanf("%d", &score);

10: 11: if( score < 60 )

12: printf("%d점은 불합격입니다.\n", score);

13: 14: if( score >= 60 )

15: printf("%d점은 합격입니다.\n", score);

16: 17: return 0;

18: }

If 사용

If 사용

(7)

복합문(compound statement)

if의 조건식이 참일 때 수행할 문장이 여러 개면, 수행할 문장들을 { }로 묶어 주어

야 한다.

5장. 제어문

if

조건문

7

(8)

if else

5장. 제어문

if

조건문

8

(9)

if else의 사용 예

5장. 제어문

if

조건문

9

01: /* Ex05_02.c */

02: #include <stdio.h>

03: 04: int main(void) 05: {

06: int score;

07: 08: printf("점수를 입력하세요 : ");

09: scanf("%d", &score);

10: 11:

if( score < 60 )

12: printf("%d점은 불합격입니다.\n", score);

13:

else

14: printf("%d점은 합격입니다.\n", score);

15: 16: return 0;

17: }

If else 사용

(10)

입력한 숫자가 짝수이면 ‘짝수’를 출력하고 홀수이면 ‘홀수’로 출 력하는 프로그램을 구현하세요

실습

10

(11)

실습

{

int i;

printf("정수를 입력하세요 : ");

scanf("%d", &i);

if( i%2== 0 )

printf(“짝수입니다.\n");

else

printf(“홀수입니다.\n");

return 0;

}

(12)

다중 if(1/2)

if else문에서 else 다음에 다시 if를 사용

5장. 제어문

if

조건문

12

(13)

입력한 숫자를 3으로 나누었을 때의 나머지에 대해 출력하세요 예) 40을 입력한 경우 : 3으로 나눠 나머지가 1입니다

23을 입력한 경우 : 3으로 나눠 나머지가 2입니다.

실습

(14)

실습

14

{

int i;

printf("정수를 입력하세요 : ");

scanf("%d", &i);

if( i%3== 1 )

printf(“ 3으로 나눠 나머지가 1입니다.\n");

else if( i%3== 2)

printf(“3으로 나눠 나머지가 2입니다.\n");

else

printf(“3의 배수입니다.\n");

return 0;

}

(15)

{ int num1,num2,num3;

int max;

printf("세 정수를 입력하세요 : ");

scanf("%d %d %d",&num1,&num2,&num3);

if(num1>num2) {

max=num1>num3?num1:num3;

printf("세 정수 중 가장 큰 수는 %d입니다.\n",max);

}

else if(num1<num2) {

max=num2>num3?num2:num3;

printf("세 정수 중 가장 큰 수는 %d입니다.\n",max);

}

else if(num1<num3) {

max=num3>num2?num3:num2;

printf("세 정수 중 가장 큰 수는 %d입니다.\n",max);

} }

실습 ( 세 정수를 입력 받아 가장 큰 수)-다중 if문

(16)

int i, j, k;

printf(“

세 정수를 입력하세요

. ");

scanf("%d %d %d", &i, &j, &k);

if( (i > j) && (i > k) )

printf("%d\n", i);

else if(j > k)

printf("%d\n", j);

else

printf("%d\n", k);

i

j

i>j && i>k

J >k

k

거짓

거짓

실습 ( 세 정수를 입력 받아 가장 큰 수)-다중 if문

(17)

{ int a,b,c;

int max;

printf("세 정수를 입력하세요 : ");

scanf("%d %d %d",&a, &b ,&c);

if(a>b && a>c) max=a;

else if(b>c) max=b;

else

max=c;

printf("%d, %d, %d 중 큰 값은 %d입니다.\n", a,b,c,max);

return 0;

}

실습 ( 세 정수를 입력 받아 가장 큰 수)-다중 if문

(18)

{ int max, x, y, z;

scanf("%d%d%d", &x,&y,&z);

if (x > y && x > z) max=x;

else if (y > x && y > z) max=y;

else

max= z;

printf(“가장 큰수는 %d”,max);

return 0;

}

18

실습 ( 세 정수를 입력 받아 가장 큰 수)-다중 if문

max=x;

if(y>max) max=y;

if(z>max) max=z;

printf(“%d”, max);

return 0;

}

if(x>y) {

max=x;

if(x<z)

max=z;

}

else if(y>x) {

max=y;

if(y<z)

max=z;

}

printf(“%d”, max);

return 0;

. . .

. .

.

(19)

int x, y, z, max;

printf(" 수를 입력하세요>>> :");

scanf("%d %d %d" , &x, &y, &z);

max = (x>y) ? x : y ;

max = (max>z) ? max : z ;

printf("가장 큰수 : %d \n", max);

#define max(x, y) ((x>y) ? x : y) int main(void)

{

int i, j, k;

printf(“ 정수를 입력하세요>>> ");

scanf("%d %d %d", &i, &j, &k);

printf("입력한 세 정수 중 가장 큰 수는 %d입니다.\n", max(max(i, j), k));

int x, y, z, max;

printf(“ 수를 차례로 입력하세요>>> :");

scanf("%d %d %d",&a, &b, &c);

max=((x>y ? x : y)>z) ? ((x>y) ? x : y) : z ; printf("가장 큰 수는 %d 입니다\n", max);

실습 ( 세 정수를 입력 받아 가장 큰 수)-조건연산자

(20)

다중 if(2/2)

중첩된 if : if 안에 다른 if문을 사용

다중 if : 중첩된 if 중에서 if else if의 형태로 작성할 수 있는 if문

여러 가지 조건을 차례차례 검사할 때 유용

5장. 제어문

if

조건문

20

중첩된 if 다중 if

(21)

다중 if의 사용 예(1/2)

5장. 제어문

if

조건문

21

01: /* Ex05_03.c */

02: #include <stdio.h>

03: 04: int main(void) 05: {

06: int score;

07: char grade;

08: 09: printf("점수를 입력하세요 : ");

10: scanf("%d", &score);

11: 12: if( score >= 90 ) 13: grade = 'A';

14: else if( score >= 80 ) 15: grade = 'B';

16: else if( score >= 70 ) 17: grade = 'C';

18: else if( score >= 60 ) 19: grade = 'D';

20: else

21: grade = 'F‘;

다중 If

(22)

다중 if의 사용 예(2/2)

5장. 제어문

if

조건문

22

22: 23: printf("%c 학점입니다.\n", grade);

24: 25: return 0;

26: }

(23)

중첩된 if의 사용 예(1/2)

5장. 제어문

if

조건문

23

01: /* Ex05_04.c */

02: #include <stdio.h>

03: 04: int main(void) 05: {

06: int score;

07: char grade;

08: 09: printf("점수를 입력하세요 : ");

10: scanf("%d", &score);

11:

(24)

5장. 제어문

if

조건문

24

12: if ( score < 0 || score > 100 )

13: {

14: printf("잘못 입력하셨습니다.\n");

15: }

16: else

17: {

18: if ( score >= 90 ) 19: grade = 'A';

20: else if ( score >= 80 ) 21: grade = 'B';

22: else if ( score >= 70 ) 23: grade = 'C';

24: else if ( score >= 60 ) 25: grade = 'D';

26: else

27: grade = 'F';

28: 29: printf("%c 학점입니다.\n", grade);

30: }

31: 32: return 0;

33: }

중첩된 if

다중 if

중첩된 if의 사용 예(2/2)

(25)

중첩된 if와 다중 if

5장. 제어문

if

조건문

25

(26)

기본적인 switch

먼저 정수식의 값을 평가한다.

값이 같은 case문을 찾아서 해당 case문 다음에 나열된 문장들을 수행한다.

break를 만날 때까지 문장들을 수행하고, break를 만나면 switch문을 빠져나간다.

5장. 제어문

switch

조건문

26

(27)

switch

조건문

(28)

28

// 달의 일수 계산

#include <stdio.h>

int main(void)

{ int month, days;

printf(“일수를 알고 싶은 달을 입력하세요 : ");

scanf("%d ", &month);

switch( month ) {

case 2:

days=28;

break;

case 4:

case 6:

case 9:

case 11:

days=30;

break;

default:

days=31;

break;

}

printf(“%d월의 일수는 %d입니다.\n“, month, days);

return 0;

}

switch

조건문

(29)

switch를 이용한 사칙연산 계산기(1/2)

5장. 제어문

switch

조건문

29

01: /* Ex05_05.c */

02: #include <stdio.h>

03: 04: int main(void) 05: {

06: int a, b;

07: char op;

08: 09: printf("수식을 입력하세요 : ");

10: scanf("%d %c %d", &a, &op, &b);

11:

정수를 입력받을 int 변수 a, b 선언 연산자를 입력받을 char 변수 op 선언

(30)

switch를 이용한 사칙연산 계산기(2/2)

5장. 제어문

switch

조건문

30

12: switch ( op )

13: {

14: case '+':

15: printf("%d + %d = %d\n", a, b, a + b);

16: break;

17: case '-':

18: printf("%d - %d = %d\n", a, b, a - b);

19: break;

20: case '*':

21: printf("%d * %d = %d\n", a, b, a * b);

22: break;

23: case '/':

24: printf("%d / %d = %d\n", a, b, a / b);

25: break;

26: default:

27: printf("계산할 수 없습니다.\n");

28: break;

29: }

30: 31: return 0;

32: }

switch 사용

(31)

switch문의 수행 순서

5장. 제어문

switch

조건문

31

(32)

switch 대신 if else if를 사용하는 경우(1/3)

5장. 제어문

switch

조건문

32

01: /* Ex05_06.c */

02: #include <stdio.h>

03: 04: int main(void) 05: {

06: int a, b;

07: char op;

08: 09: printf("수식을 입력하세요 : ");

10: scanf("%d %c %d", &a, &op, &b);

11:

정수를 입력받을 int 변수 a, b 선언 연산자를 입력받을 char 변수 op 선언

(33)

switch 대신 if else if를 사용하는 경우(2/3)

5장. 제어문

switch

조건문

33

12: if ( op == '+' )

13: {

14: printf("%d + %d = %d\n", a, b, a + b);

15: }

16: else if ( op == '-' )

17: {

18: printf("%d - %d = %d\n", a, b, a - b);

19: }

20: else if ( op == '*' )

21: {

22: printf("%d * %d = %d\n", a, b, a * b);

23: }

24: else if ( op == '/' )

25: {

26: printf("%d / %d = %d\n", a, b, a / b);

27: }

28: else

29: {

30: printf("계산할 수 없습니다.\n");

31: }

if else if 사용

(34)

switch 대신 if else if를 사용하는 경우(3/3)

5장. 제어문

switch

조건문

34

32: 33: return 0;

34: }

(35)

switch와 if else if의 선택(1/2)

값을 비교하는 경우 조건식을 사용하는데, 비교할 값이 둘 이상이면 switch를 사 용하는 것이 더 좋다.

5장. 제어문

switch

조건문

35

(36)

switch와 if else if의 선택(2/2)

값의 범위를 비교하는 경우에는 if else if를 사용하는 것이 더 좋다.

5장. 제어문

switch

조건문

36

(37)

break를 사용하지 않은 경우의 예

5장. 제어문

switch

조건문

37

11: switch ( op )

12: {

13: case '+':

14: printf("%d + %d = %d\n", a, b, a + b);

15: case '-':

16: printf("%d - %d = %d\n", a, b, a - b);

17: case '*':

18: printf("%d * %d = %d\n", a, b, a * b);

19: case '/':

20: printf("%d / %d = %d\n", a, b, a / b);

21: default:

22: printf("계산할 수 없습니다.\n");

23: }

24: 25: return 0;

26: }

Break 생략한 경우

(38)

switch 사용 시 주의사항(1/3)

switch문에서 break를 생략하면, break를 만날 때까지 모든 문장들을 수행한다.

5장. 제어문

switch

조건문

38

(39)

switch 사용 시 주의사항(2/3)

switch문에서 사용되는 default도 생략할 수 있다.

default는 switch문 안에 어떤 위치에도 사용할 수 있다.

5장. 제어문

switch

조건문

39

(40)

switch 사용 시 주의사항(3/3)

switch의 ( ) 안에는 정수식만 사용할 수 있으며, 실수나 문자열은 사용할 수 없다.

5장. 제어문

switch

조건문

40

Referensi

Dokumen terkait

How were this research was limited on the theories of Rochaya Machali (2000) there were five translation procedures namely, transposition, modulation, adaptation,

Basic Science for Sustainable Marine Development | 143 Development of Integrated Poso Lake Tourism through Community Based Tabita R.. Matana, Gitit IP Wacana ABSTRACT The purpose