정신과 시간의 방
카테고리
작성일
2022. 9. 25. 22:27
작성자
risehyun

0. 제어문이란?

프로그램의 흐름(연산이 진행되는 순서)를 변경하는 구문들을 말한다.

 


1. if문

if문은 분기문(branching statement)라고도 하며, 조건식을 근거로 구문들의 절차상 흐름을 변경하는 역할을 한다.
또한 가장 기본적인 제어문으로 사용빈도가 가장 높으며, 다른 제어문들도 사실상 이 if문을 기본으로 하고 있다.


if문은 조건식을 근거로 구문을 선택하는 형식이기 때문에 삼항 연산자와 비슷하게 작동한다.
근본적으로 if문은 조건을 만족하는 경우 특정 연산을 추가로 더 수행하라는 의도를 전제로 한다.


2. 제어문과 스코프

if 문에서 조건식을 만족할 때 수행할 구문이 여러 개면, 반드시 스코프(정확히는 블록 스코프)로 묶어야 한다.
그렇지 않으면 컴파일러는 조건식 이후 첫 번째 구문만 if문으로 판단하게 된다.

 

3. if else문

조건을 만족하는 경우에만 처리하는 제어문인 if문과 달리,
if else문은 조건을 만족하는 경우와 그렇지 않은 경우 모두를 처리할 수 있는 제어문이다.

두 가지 경우에 대응하는 구문을 처리할 수 있다는 뜻이므로 두 경우에 해당하는 코드가 모두 실행됨을 뜻하는 것은 아니다.
즉, 상호 배타적으로 실행되기 때문에 삼항 조건 연산자와 일치한다.

if else문에서 else문의 오른쪽에는 조건식이 없으므로 이를 주의해야 한다.

 

4. switch-case문

switch(변수 혹은 식)
{
	case 정수1 :
        구문;
        break;
        
    case 정수2 :
        구문
        break;
    ....
    default:
        구문;
}

 

switch-case문은 다중 if문이나 중첩된 if문처럼 정보를 '분류'하는 데 사용하는 제어문이다.
switch-case문은 기존 if문과 달리 조건식을 단계별 혹은 중첩한 경우를 선택하지 않고,
단 한번의 연산(혹은 변수)로 특정한 경우 하나를 선택한다는 특징이 있다.
이때 제어문 break문을 사용하면 연산을 즉시 멈추고 자신이 속한 스코프를 벗어나도록 흐름을 변경할 수 있다.

5. goto문
goto문은 break문처럼 특정 위치로 프로그램의 흐름을 즉시 변경한다.
하지만 break문은 그 대상위치가 문법적으로 제한된 상태이며 변경 할 수도 없지만,

goto문은 사용자가 레이블(label)로 명시한 위치면 어디든 이동할 수 있다.

따라서 아무 제한 없이 코드의 흐름을 변경할 수 있다.

 

이 특징이 goto문의 장점이자 매우 심각한 단점이다.
코드의 흐름을 뒤죽박죽으로 만들기 때문에, 논리적으로 심각한 결함이 발생해도 해결하기 어려운 상태가 될 수 있다.
게다가 설계적으로 전혀 관련이 없어야할 두 대상을 goto문을 사용하면 하나로 묶을 수 있게 되므로 구조적 결함을 만들어 낼 가능성도 높아진다.

따라서 goto문은 사용하지 않는 것이 바람직한 제어문이다.

 

 

 

 

 

'C,C++' 카테고리의 다른 글

구조체 포인터  (0) 2023.01.20
문자, 문자열  (0) 2023.01.19
[C] 함수 응용  (0) 2022.10.01
[C] 입출력  (0) 2022.09.23
[C] C 프로그래밍의 기본 요소  (0) 2022.09.19