5장 제어문1

You might also like

Download as pptx, pdf, or txt
Download as pptx, pdf, or txt
You are on page 1of 30

5 장 .

제어문
제어문
 제어문은 프로그램의 수행 순서를 제어
 특정 문장을 수행하거나 수행하지 않도록
선택하거나 , 특정 문장을 여러 번 반복 수행하게
만드는 것

2
제어문
종류 C 구문 설명
if 조건식이 참이면 문장을 수행한다 .
조건문
switch 정수식의 값에 따라 수행할 문장을 선택한다 .
for
반복문 while 조건식이 참인 동안 문장을 반복 수행한다 .
do while
break switch 나 반복문을 빠져나간다 .
continue 반복문의 처음이나 끝으로 이동한다 .
분기문
goto 지정된 레이블의 문장으로 이동한다 .
return 함수를 호출한 곳으로 돌아간다 .
3
조건문 : if
 if 문은 ( ) 안에 있는 조건식이 참이면 주어진 문장을
수행하고 , 거짓이면 수행하지 않는다 .

4
예제 5-1: if 의 사용 예
if 의 조건식이
참인 경우

if 의 조건식이
거짓인 경우

score < 70 인 경우에만 수행

if 문의 다음 문장에서
실행의 흐름이 다시
5 합쳐진다 .
조건문 : if
 복합문
 { } 으로 묶인 문장
 블록이라고도 한다 .
 if 의 조건식이 참일 때 수행할 문장이 여러 개면 , 수행할
문장들을 { } 로 묶어주어야 한다 .

6 if 에서 수행할 문장이 하나일 때도 { } 를 써주는 것이 좋다 .


조건문 : if else (1)
 if 의 조건식이 참이면 if 다음의 문장을 수행하고 ,
거짓이면 else 다음의 문장을 수행한다 .

7
조건문 : if else (2)
 else 는 if 의 조건식에 대하여 ‘그렇지 않으면’이라는
의미로 사용

그렇지 않으면

if else 를 사용하는 경우 2 개의 if 를 사용하는 경우

조건문을 2 번
수행하므로 비효율적이다 .
8
예제 5-2: if else 를 이용한 절대값 구하기 (1)

9
예제 5-2: if else 를 이용한 절대값 구하기 (2)
num 이 음수면

그렇지 않으면

10
if else 와 조건 연산자
 if else 대신 조건 연산자를 이용해서 같은 코드를 작성할
수 있다 .

11
조건문 : 다중 if 문 (if else if ….. else) (1)
 else 블록 안에 다른 문장 없이 또 다른 if 문만 들어있을
때 , else if 로 작성할 수 있다 .
 else if 는 여러 가지 조건을 순서대로 검사한다 .

12
조건문 : 다중 if 문 (2)

 else if 문은 여러 가지 중에서 한 가지를 선택할 때


유용하다 .
13
예제 5-3: else if 를 이용한 음수 , 양수 , 0 판단
(1)

14
예제 5-3: else if 를 이용한 음수 , 양수 , 0 판단
(2)

num < 0 이 거짓이고


num > 0 이 참이면
num < 0 과 num > 0 이
거짓이면

15
예제 5-4: else if 를 이용한 계산기 프로그램 (1)

double 형 변수를
입력받으려면 %lf
이용
1.2 * 0.5 형태로
입력 받는다 .

16
예제 5-4: else if 를 이용한 계산기 프로그램 (2)

op 가 +, -, *, / 가
아닌 경우
비정상 종료 시 0 이
아닌 값을 리턴

17
[ 실습문제 ] 학점 출력하기 ( 다중 if)
시험점수 (0~100) 점을 입력받아서 ,
90 점 이상은 A,
80 점이상은 B,
70 점 이상은 C,
60 점 이상은 D,
60 점 미만은 F 로
학점을 계산하는 프로그램을 작성하시오 .
[ 실습문제 ] 학점 출력하기 ( 다중 if)
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‘;
22:
23: printf("%c 학점입니다 .\n", grade);
24:
25: return 0;
26: }
조건문 : switch (1)
 ( ) 의 정수식의 값에 따라 여러 가지 case 중 하나를
선택하여 문장 수행
 switch 문의 ( ) 안에 써주는 수식의 값은 반드시 정수
 case 문에서 수행할 문장이 여러 개일 때도 , { } 를 써줄
필요가 없다 .
 case 에서 수행할 문장의 끝에는 break 를 써준다 .
 switch 안에서 break 를 만나면 switch 를 탈출한다 .
 일치하는 case 가 없을 때 수행할 문장은 default 다음에
써준다 .

20
조건문 : switch (2)

21
조건문 : switch (3)

22
예제 5-5: 텍스트 기반의 메뉴 처리 프로그램 (1)

텍스트 기반의 메뉴를


출력한다 .

선택된 메뉴 번호를
23
정수로 입력받는다 .
예제 5-5: 텍스트 기반의 메뉴 처리 프로그램 (2)
menu 의 값에 따라
case 를 선택한다 .

case, default 다음에


나열된 문장의 끝에
break 가 필요하다 .

1~3 이외의 메뉴 번호
입력 시

24
[ 실습문제 ] switch 문을 이용한 계산기 프로그램

01: /* Ex05_05.c */
02: #include <stdio.h>
03:
04: int main(void)
05: {
06: int a, b; 두 정수를 입력받을 int 형 변수 a, b 선언
07: char op; 연산자를 입력받을 char 형 변수 op 선언
08:
09: printf(" 수식을 입력하세요 : ");
10: scanf("%d %c %d", &a, &op, &b);
11:
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 와 else if
 switch 와 else if 중 어떤 것을 사용할지는 프로그래머가
결정

27
switch 사용 시 주의 사항 (1)
 switch 문에서 break 는 생략할 수 있다 .
 특정 case 에 대한 break 를 생략하면 break 나 switch 의 끝
(}) 를 만날 때까지 연속된 case 의 문장들을 모두 수행한다 .
 switch 문이 올바르게 수행되도록 하려면 case 마다 break 를
써주어야 하며 , default 에도 break 를 써주는 것이 좋다 .

28
switch 사용 시 주의 사항 (2)
 switch 문에서 default 도 생략할 수 있다 .
 switch 의 정수식과 값이 일치하는 case 가 없고 default 도
없으면 , 바로 switch 를 빠져나간다 .
 default 는 보통 switch 문의 끝부분에 써준다 .

29
[ 실습문제 ] SwitchYear.c
1 년의 각 달의 일수를 출력하는 프로그램을 작성하시오 .
즉 , 달을 입력 받으면 그 달의 일수를 출력한다 .
예 ) 3 입력 => 3 월의 일수는 31 일입니다 .
 2 월은 일수가 28 일로 가정

You might also like