if 문 활용과 switch ~ case문

2021. 5. 1. 12:15·코딩/c언어

if 문 중첩, switch ~ case문, break, defalut

 

일상 생활에서도 다양하고 복잡한 선택의 순간이 있듯이 프로그램도 마찬가지 입니다.

따라서 if 문을 자유롭게 응용하는 능력이 반드시 필요합니다.

if 문을 중접해서 사용하는 방법과 주의할 점을 살펴보고 다중 선택에 알맞은 switch ~ case문에 대해 살펴보자.

 

if 문 중첩

어떤 조건을 검사하기 전에 선행조건이 있다면 if문 안에 if문을 넣어 사용합니다.

#include<stdio.h>


int main(void)
{
	int a = 20;
	int b = 10;

	if (a > 10) // 
	{
		if (b >= 0)
		{
			b = 1;
		}
		else
		{
			b = -1;
		}

	}

	printf("b : %d\n", b); //대입이 수행되면 두 값이 같음
	return 0;
}

 

if 문을 중첩해서 쓰는 이유

이유1) 선행조건이 있으면 불필요한 조건 검사를 하지 않습니다.

이유2) 선행조건이 없어도 실행 효율을 위해 의도적으로 중첩해 사용할 수 있습니다.

 

분할 정복 기법 

비교 항목이 많은 경우 여러번 중첩해서 쓰면 실행 시간을 줄이는데 도움이됨

 

switch ~ case문 

등수에 따라 상금을 차등 지급하는 경우

1등 300만, 2드 200만, 3등 100만을 지급한다.

여기서 상금의 지급 조건은 등수이고 해당 등수는 상수 1,2,3 입니다.

이렇게 여러 개의 상수 중에서 조건에 해당하는 하나를 골라 실행하는 것이 swich~case문입니다.

#include<stdio.h>


int main(void)
{
	int rank = 2, m = 0;

	switch (rank)			//rank의 값이 얼마인지 확인
	{
	case 1:					//rank가 1이면
		m = 300;			//m= 300을 수행하고
		break;				//블록을 벗어남
	case 2:					//반복
		m = 200;
		break;
	case 3:
		m = 100;
		break;
	default:
		m = 10;
		break;
	}

	printf("m : %d\n", m);
	
	return 0;
	
}

규칙1) 조건식은 정수식만 사용합니다.

규칙2) 기본적으로 case는 break를 포함합니다.

 

break는 해당 블록을 탈출하는데 사용

 

하지만 break 생략이 가능

 

필요에 따라 생략할 수 있습니다. break를 사용하면 적절한 시점에 블록을 탈출하여 필요한

부분만 선택적으로 실행할 수 있습니다. 

그러나 반드시 사용해야 하는 것은 아닙니다.

 

하지만 웬만하면 안하는 게 좋은거 같다.

반응형

'코딩 > c언어' 카테고리의 다른 글

6-2 반복문 활용  (0) 2021.05.02
반복문 6-1 while 문 , for문 , do ~ while  (0) 2021.05.02
선택문 5-1 if 문  (0) 2021.05.01
4.2 그 외 유용한 연산자  (0) 2021.04.28
산술 연산자, 관계 연산자, 논리 연산자  (0) 2021.04.27
'코딩/c언어' 카테고리의 다른 글
  • 6-2 반복문 활용
  • 반복문 6-1 while 문 , for문 , do ~ while
  • 선택문 5-1 if 문
  • 4.2 그 외 유용한 연산자
코딩 코딩 코오딩
코딩 코딩 코오딩
  • 코딩 코딩 코오딩
    코딩하는 누누
    코딩 코딩 코오딩
  • 전체
    오늘
    어제
    • 분류 전체보기 (491)
      • 생산성 (2)
        • 인텔리제이 (2)
      • 프로젝트 기록 (14)
        • git (2)
        • spring (3)
        • TestCode (2)
        • spring security (3)
        • 기타 (2)
        • MySQL (0)
        • Cloud (2)
      • 회고 (4)
      • Spring (6)
      • JPA (0)
      • DB (4)
        • MySql (2)
        • Redis (1)
      • Java (7)
        • JSP (1)
      • 잡담 (1)
      • CS (30)
        • 컴퓨팅 사고 (0)
        • 배열 (4)
        • 알고리즘 (8)
        • 메모리 (7)
        • 자료구조 (9)
        • 암호학 (2)
      • opencv (14)
      • AI (56)
        • 머신러닝 (2)
        • 딥러닝 (7)
        • tensorflow (3)
        • 머신러닝(딥러닝) 정리 (21)
        • 강화학습 (7)
        • 논문 읽기 (1)
        • 잡동사니 (1)
        • python AI (13)
        • 선형대수 (1)
        • 확률론 (0)
      • 알고리즘 공부 (177)
        • 그래프 이론 (0)
        • 다익스트라 (4)
        • 위상정렬 (3)
        • 신장트리-크루스칼 알고리즘 (4)
        • 플로이드 워셜 (3)
        • 이진탐색 (9)
        • 백트래킹 (11)
        • 부르드포스 (9)
        • 다이나믹 프로그래밍 (20)
        • BFS & DFS (24)
        • 그리디 (6)
        • 구현 (15)
        • 정렬 (3)
        • 기타 (62)
        • 수학? (1)
      • 코딩 (173)
        • 파이썬(python) (15)
        • c언어 (13)
        • 프로그래머스 lv1 (46)
        • 프로그래머스 lv2 (41)
        • 백준 - c++ (49)
        • Softeer (9)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    n진법 변환
    큐
    C언어 기초
    코딩문제
    백준
    코딩테스트
    프로그래머스
    순차 탐색
    인접행렬
    인접리스트
    스택
    다이나믹 프로그래밍
    이미지처리
    코딩
    선택정렬
    캘리브레이션
    삽입 정렬
    c언어
    소수찾기
    코딩기초
    알고리즘
    BFS
    코딩기초스킬
    왜곡보정
    if문
    에라토슽네스의 체
    DFS
    그리디
    자료구조
    정렬
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
코딩 코딩 코오딩
if 문 활용과 switch ~ case문
상단으로

티스토리툴바