본문으로 바로가기

C :: Switch와 분기문

category Programing/C 2017. 3. 22. 22:45

해오름제때문에 대부분의 학생들이 수업을 못들었지만 과제는 나왔다.


1. Switch문 조사


2. 0~6 (또는 7가지 값)가지 조건에 따라 다른 문자열 출력(요일이 제일 무난)

   위 7가지 이외의 값 입력했을 때 오류 없게 할 것.


3. 분기문 조사


또 과제를 시작해보자 ^0^


Switch문?


if, else if 대신 다중선택을 하기 위해 switch문을 사용할 수 있다.


어떻게?


주어진 식의 값이 여러 경우(case) 중 같은 경우(case)가 있다면 연결되어있는 명령어를 실행하도록 제어한다.

이 때 switch문의 조건은 반드시 정수형 또는 정수형으로 변환되는 자료형이어야 한다는 제약이 있다.

switch문의 형태는 아래와 같다.


switch(정수형조건식)

{

case 상수식1 : 명령문 1;

   break;    //switch문을 빠져나가는 명령

case 상수식2 : 명령문 2;

   break;

:

:

case 상수식n : 명령문 n;

   break;

defult : 명령문;            //defult는 해당 case 상수가 없을 때 실행된다.

}


이를 이용해 2번 과제를 풀어보면 아래와 같다.


#include <stdio.h>


int main()

{

int choice;

printf("마동석닮은 옆집 아저씨 | 잘나가는 언니 | 아버지 | 어머니 | 시크한 남자친구 | 4차원 친한친구 | 말안듣는 남동생\n");

printf("7명의 용의자중 범인이 있다 누굴까?(1~7사이의 값을 입력하시오)\n: ");

scanf("%d",&choice);


switch(choice)

{   

case 1 : printf("그는 옆집 아저씨이며 사건당시 혼술을 즐긴 선량한 시민이다\n");

break;

case 2 : printf("그녀는 피해자의 언니이며 사건당시 클럽에서 바운스중이었다.\n");

break;

case 3 : printf("그는 피해자의 아버지이며 사건당시 회식중이셨다.\n");

break;

case 4 : printf("그녀는 피해자의 어머니이며 사건당시 찜질방에서 땀빼시는 중이셨다.\n");

break;

case 5 : printf("그는 피해자의 남자친구이며 최초의 발견자.....\n\n정답\n");

break;

case 6  : printf("그는 피해자의 친한 친구이며 사건당시 편의점 알바중이었다.\n");

break;

case 7 : printf("그는 피해자의 남동생이며 3살이다.\n");

break;

default : printf("당신은 이해능력이 부족하다. 다음 서적을 참고하자 \"말하기 듣기 쓰기6-1(교육부)\"\n");


}

return 0;

}


if문이 있는데 왜 switch를 사용할까?


switch는 정수형 상수, 문자상수에 대해서만 조건 검사를 할 수 있고, 같은 값의 상수만  판단한다. 그렇기 때문에 다양한 자료형의 데이터와

대소비교 등 다양한 조건을 묻기 위해서는 if문을 사용해야 하는것은 사실이다. 하지만 이러한 switch의 한계는 단점이 아니라 특징으로 볼 수

있다. 복잡한 조건을 쓸 수 없고 오직 값에 의한 분기만 가능하기 때문에 프로그램을 알아보기가 상당히 쉬워진다.

따라서 값에 다르느 분기에는 switch문을 사용하는것이 바람직하다.


이제 마지막 3번과제를 해보자


분기문이란 무엇일까?


분기문이란 프로그램의 제어를 다른 곳으로 점프(이동)하는 것을 말한다.

c 프로그램은 분기문으로 break, continue, goto를 제공한다. + return


break


break는 switch문에서 명령문을 수행하다가 블록을 벗어 나야 할 경우에 break문을 사용한다.

또한 반복문을 사용하고자 할 때 사용하기도 한다.


즉, 반복문 안에서 더이상 반복문을 수행할 필요가 없을 때 반복을 강제로 탈출할 수 있게 한다.


continue


continue문은 항상 반복문과 같이 쓰이며

continue문을 만나면 continue 이후의 명령은 무시되며 반복문의 조건위치로 이동하여 반복문의 시작에서부터 수행하게된다.


goto


c언어는 goto라는 무조건 분기명령을 제공한다. goto문을 만나면 프로그램의 실행위치는 goto문에서 지정하는 레이블이 있는 곳으로

무조건 이동하게 된다. break문이나 continue문은 프로그램의 실행이 정해진 특정 위치로 옮겨가게 되지만, goto문은 레이블이 있는 곳

어디로든 이동할 수 있다. goto문에서 사용한 레이블은 프로그램 함수의 어딘가에 반드시 존재하여야 한다.


return


return의 역할은 두 개가 있는데 그 첫번째는 현재의 함수에서 운영체제에 값이나 주소를 반환할 때 사용하는 것이다.

두 번째는 함수를 강제로 종료시키는 기능이 있다.

'Programing > C' 카테고리의 다른 글

C :: for문으로 다이아몬드 출력 및 응용  (0) 2017.03.28
C :: for문 별로 모양만들기  (0) 2017.03.28
C :: C언어 연산자  (0) 2017.03.18
C :: C언어 이스케이프 시퀀스  (0) 2017.03.18
C :: C언어의 기본  (0) 2017.03.18