관리 메뉴

hye-_

IF 문과 SWITCH 문 본문

CS/C언어1

IF 문과 SWITCH 문

hyehh 2023. 12. 6. 22:54
728x90
반응형
SMALL
728x90
SMALL
반응형

 

 

IF 문과 SWITCH 문

제어문 
(Control Statement)
● 문장들이 실행되는 순서를 제어하는 문장
● 순차문, 조건문, 반복문
선택문 ● [조건식]을 검사하여 결과에 따라 실행할 문장을 결정하는 제어문
● 조건문
● if문, switch문
goto 문 ● 조건없이 특정 위치로 점프하게 만드는 제어문
● goto 문은 사용하지 말 것 

01. IF문을 SWITCH 문으로 변경

1. IF 문

if - else if 문의 순서도

명령문 1, 2, 3, 4 중에 하나를 실행할 것인데, 

먼저 조건식1을 확인하고 맞으면 명령문1 실행, 아니면 다음 조건식2로 간다.

조건식2을 확인하고 맞으면 명령문2 실행, 아니면 다음 조건식3으로 간다. 

조건식3을 확인하고 맞으면 명령문3 실행, 아니면 명령문4 실행 

 

문제가 뭐냐면

보기에도 복잡하지만 경우에 따라서 조건식을 세번이나 계속 물어봐야 된다. (맞니? 틀리니?, 맞니? 틀리니?, 맞니? 틀리니?) 이렇게 물어보는 것도 짜증 나지만 컴퓨터 입장에서는 물어보느라 시간을 낭비한다는 단점도 있다. 


if - else if 문의 형식

어쨌뜬 위의 순서도에 입각해서 코딩한다면

이런 형식이 나온다.


if - else if 문의 순서도 - 블록구조

if - else if 문에서도 사용해야 될 명령문이 하나일 수도 있겠지만

2개, 3개, ... 등등 여러 개일 수도 있다. 


위의 순서도에 입각해서 코딩한다면 

이런 형식이 나온다.


2. SWITCH 문

switch 문 순서도

어떤값인지에 따라서 

명령문 1,2,3,4 중에 하나를 실행할 수 있다.


switch 문 기본 형식


3. 변경 예제

if 문을 switch 문으로 변경

여러 개의 다중 조건 처리를 해야 하는 경우에

if 문 대신 switch 문을 사용하면 좀 더 깔끔하게 코드를 정리할 수 있다. 

 

이것을 가독성 높다.라고 말할 수 있다. 

점점 프로그램이 가독성이 높아지는 게 유리해진다. 왜냐하면 컴퓨터 자체가 성능이 좋아져서 우리가 알고리즘을 조금 부실하게 짜도 컴퓨터가 알아서 빨리 해결해 준다. 근데, 가독성이 떨어지면 오류가 날 확률이 많아진다.

 



 

 

switch 문에서 default 문은 가능하면 사용하는 것이 좋다.

사용자의 예상되는 실수는 개발자가 막아줘야 한다.


02. SWITCH 문을 IF 문으로 변경 

1. 개요

if 문은 모두 switch 문으로 변경할 수 없다.

그러나 switch 문은 모두 if 문으로 변경할 수 있다.


2. 변경 예제

1~5까지 입력 받아 홀수/짝수를 출력하는 프로그램의 예

case 문은 : (콜론) 뒤에 아무것도 없어도 된다. 

 

그럼 어떻게 진행되느냐?

대신 break가 없기 때문에 다음 case로 내려간다.

 

만약 m이 3이다.

그러면 case 3으로 바로 간다. 근데 3 : 뒤에는 아무것도 없다. break도 없다. 그렇기에 다음 case 5로 내려간다.

명령문을 실행하여 "홀수"를 출력하고 break를 만나 switch문을 벗어난다.


예 ) 1~5까지 입력 받아 홀수/짝수를 출력하는 프로그램

 


예 ) 정수 하나를 받아 홀수/찍수를 출력하는 프로그램

이렇게 case 문 2개는 

switch 문 보다는 if 문이 조금 더 간단하다.


얘 ) 1 ~ 10 까지 정수 입력받아 5 초과/이하를 출력하는 프로그램


03. IF 문과 SWITCH 문 변경 시 주의할 점

1. 선택문 정리

조건문 ● [조건식]을 검사하여 결과에 따라 실행할 문장을 결정하는 제어문  
if문 [조건식]을 검사하여 결과에 따라 문장의 실행여부를 결정하는 제어문
조건식의 결과가 참과 거짓 두 가지 밖에 없다

경우의 수가 많아질 수록 else if () 를 계속 추가해야 하므로
조건식이 많아져 복잡해지고, 여러 개의 조건식 계산으로 처리시간도 많이 걸린다.
switch문 다중 if문을 간결하게 표현한 선택문
[조건값]을 검사하여 결과에 따라 실행할 문장을 결정하는 제어문  

 


2. 주의사항

switch( 조건값 )에서 조건값

반드시

정수상수로 계산되어야 한다.

 

가능한 예

정수상수, 문자상수, 수식의 결과로 나오는 정수상수

 

컴파일 오류의 예

실수상수, 문자열상수, 변수, 수식


정수의 범위에 대해서는 switch 문을 지정할 수 없다.

switch에서는 범위를 지정할 수 없기에

100, 99, 98로 case 값을 주었다. 

 

10으로 나눠서 사용하는 방법이 있다.

정수 나누기 정수는 정수가 나온다. 그러므로 조건값으로 사용할 수 있는 수식이다.


3. if 문과 switch 문 비교

if 문과 switch 문 

분기문이 많을 경우

switch문을 사용하는 것이 좋다. 왜냐하면 코드길이를 줄일 수 있고 가독성이 높아지기 떄문이다. 

 

모든 if문을 switch 문으로 변경 가능한 것은 아니다.

if 문은 복잡한 표현시기이 가능하다.

 

switch 문에만 있는 특성

break문 생략시 다음 case 문을 실행시킬 수 있다.


4. goto 문

조건없이

특정 위치로 점프하게 만드는 제어문이다.

 

goto 문은 사용하지 말 것 왜냐하면

1. 프로그램의 자연스러운 흐름을 방해한다.

2. 가독성을 낮춘다.

3. 디버깅이 어렵다. 

 


 

728x90
반응형
LIST

'CS > C언어1' 카테고리의 다른 글

FOR 문  (0) 2023.12.08
WHILE 문  (0) 2023.12.07
SWITCH 문  (2) 2023.12.06
다중 IF 문  (2) 2023.12.05
조건문 IF  (0) 2023.12.04