728x90

제어문

  1. 조건문 : 주어진 조건에 따라 어떤 일을 할 것인지 결정
  1. 반복문 : 주어진 조건에 따라 몇 번 할 것인지 결정

조건문

: 주어진 조건에 따라 특별한 작업 수행

3가지 제어구조

[순차구조, 선택구조, 반복구조]

if 

if(조건식) {
	실행문 // 조건식이 참인 경우 실행
}
if(number > 0)
	printf("양수입니다.\n");

if-else 

if(조건식) {
	실행문1 // 조건식이 참인 경우 실행
} 
else 
{
	실행문2 // 조건식이 거짓인 경우 실행
}
if(조건식1) {
	실행문1 // 조건식1이 참인 경우 실행
}
else if(조건식2)
{
	실행문2 // 조건식2가 참인 경우 실행
}

...

else
{
	실행문n // 앞의 모든 조건이 거짓인 경우 실행
}

💡 if-else 매칭
: else 절은 가장 가까운 if 절과 매칭된다.

 

if 문 Flow Chart

if (a > b) {
printf("a가 크다");
}

if (a > b) 
{
	 printf(" a가 크다");
}
else 
{
	 printf(" a가 크지 않다");
}

 

if (a > b) 
{ 
	 printf(" a가 크다");
}
else if (a < b) 
{
	 printf(" b가 크다');
}
else 
	 printf(" a와 b는 같다");

 

조건문의 비교/논리 연산자

if((ch == ' ') || (ch == '\n') || (ch == '\t'))
		white_space++;

 

💡 조건 연산자 chapter05 포스팅 확인!
condition ? expT : expF;

 

  • 정수값 판단 프로그램
#include <stdio.h>
int main(void)
{
	int num, sign;
	printf("정수값을 입력하시오. : ");
	scanf("%d", &num);

	if (num > 0) {
		sign = 1;
	}
	else {
		sign = -1;
	}
	if (num % 2 == 0) {
		if (num == 0) {
			printf("0은 홀수도 짝수도 아닙니다.\n");
		}
		else {
			printf("%d은(는) %s이자 짝수입니다.\n", num, sign > 0 ? "양수" : "음수");

		}
	}
	else {
		printf("%d은(는) %s이자 홀수입니다.\n", num, sign > 0 ? "양수" : "음수");
	}

	return 0;
}

 

  • 이항 연산 프로그램
#include <stdio.h>
int main(void)
{
	int num1, num2, value;
	char op;

	printf("※ 연산은 이항 연산만 가능합니다. (+ - * / %%)\n");
	printf("식을 입력하시오.(ex. 12 + 34) : ");
	scanf("%d %c %d", &num1, &op, &num2);
	switch (op)
	{
	case '+':
		value = num1 + num2;
		break;
	case '-':
		value = num1 - num2;
		break;
	case '*':
		value = num1 * num2;
		break;
	case '/':
		value = num1 / num2;
		break;
	case '%':
		value = num1 % num2;
		break;
	default:
		printf("\n이항 연산자(+ - * / %%) 중 하나를 입력해주세요.\n");

		return 0;
	}
	printf("\n%d %c %d = %d\n", num1, op, num2, value);
	
	return 0;
}

복합문 (compound statement)

: 중괄호를 사용하여 문장들을 그룹핑하는 것

  • 블록(block)이라고도 한다.
  • 단일문 대신 들어갈 수 있다.

 

중첩 if 

: if 문내에 다시 if 문을 포함

 

switch-case 

: 제어식의 값에 따라서 여러 경로 중 하나를 선택할 수 있는 제어 구조

(하나의 변수에 대해 여러 값에 대해 명령을 수행할 때 사용)

switch (제어식)
{
	 case c1: // 제어식의 값이 c1일 경우 실행
			문장1;
			break;
	 case c2: // 제어식의 값이 c2일 경우 실행
			문장2;
			break;
...
	 default: // 일치하는 값이 없으면 실행
			문장d;
			break;
}

 

  • 의도적인 default 문 생략
switch (number)
{
case 0:
	printf("없음\n");
	break;
case 1:
	printf("하나\n");
	break;
case 2:
case 3:
	printf("둘, 셋\n");
	break;
default:
	printf("많음\n");
	break;
}

 

📢 case 에서 변수, 실수, 문자열은 사용이 불가하다!

 

  • 학점 계산 프로그램
  • if 문 사용
#include <stdio.h>
int main(void)
{
    int score;
    char grade;

    printf("점수를 입력하시오. (100점 만점) : ");
    scanf("%d", &score);
    if ((score >= 0) && (score <= 100))
    {
        if (score >= 90)
        {
            grade = 'A';
        }
        else if (score >= 80)
        {
            grade = 'B';
        }
        else if (score >= 70)
        {
            grade = 'C';
        }
        else if (score >= 60)
        {
            grade = 'D';
        }
        else
        {
            grade = 'F';
        }
        printf("학점은 %c%c 입니다.\n", grade, ((score >= 60) && (score % 10 >= 5)) ? '+' : 0);
    }
    else
    {
        printf("0부터 100사이의 점수를 입력해주세요.\n");
    }
    return 0;
}
​

 

  • switch-case 문 사용
#include <stdio.h>
int main(void)
{
    int score;
    char grade;

    printf("점수를 입력하시오. (100점 만점) : ");
    scanf("%d", &score);
    switch (score / 10)
    {
    case 10:
    case 9:
        grade = 'A';
        break;
    case 8:
        grade = 'B';
        break;
    case 7:
        grade = 'C';
        break;
    case 6:
        grade = 'D';
        break;
    case 5:
    case 4:
    case 3:
    case 2:
    case 1:
    case 0:
        grade = 'F';
        break;
    default:
        printf("0부터 100사이의 점수를 입력해주세요.\n");
        return 0;
    }
    printf("학점은 %c%c 입니다.\n", grade, ((score >= 60) && (score % 10 >= 5)) ? '+' : 0);
    return 0;
}

 

goto 

: 조건 없이 어떤 위치로 점프

  • 구조적인 프로그램에서는 사용하지 않는 것이 좋다.
    └ 순서가 꼬일 수 있어, 권장되지 않음
  • 전향 참조
goto label;
	...
	...
	...

label:
	문장 #1;
	문장 #2;
	문장 #3;

 

  • 후향 참조
label:
	문장 #1;
	문장 #2;
	문장 #3;
	...
	...
	...

goto label;
​

 

 

 

 

728x90

 

 

 

 

조건문

제어문

www.notion.so

 

아래 노션 페이지에 C 공부 내용에 대해 업로드 합니다!

수정사항이나 질문사항의 경우 노션 댓글로 남겨주세요!(*•̀ᴗ•́*)و ̑̑

 

 

 

C 언어 이론 정리

조건문, 반복문 사용 시 중괄호로 명령문들 묶어주기 - 명령문 1개일 때 포함 (코드 수정 시 오류 방지)

www.notion.so

 


 

개발 환경

Visual Studio 2019
Visual Studio Code

작성 플랫폼

Notion

 

728x90

'🧑‍💻 Language > C·C++' 카테고리의 다른 글

[C 이론] 8. 함수  (0) 2021.05.06
[C 이론] 7. 반복문  (0) 2021.05.03
[C 이론] 5. 수식과 연산자  (0) 2021.05.03
[C 이론] 4. 변수와 자료형  (0) 2021.05.03
[C 이론] 3. C프로그램 구성요소  (0) 2021.05.03