Language Study/C

[C/C++] 03 - 제어 구조 기초 - 제어 구조(Control)와 조건문 기초

지미닝 2022. 10. 3. 01:15

Index


제어 구조(Control)와 조건문 기초

  1. Flow of Control, Control Construct
  2. if statement
  3. Comparison and Logical Operators
  4. if - else statement and Nested if statements

1. Flow of Control, Control Construct

✓ Flow of Control & Control Construct/Statement

① Flow of Control(제어 흐름)이란?

  • 프로그램에서 실행되는 문장들의 실행 순서
  • 특별히 지정하지 않으면, 프로그램 실행은 첫 번째 문장에서 시작하여 한 번에 한 문장씩 순차적으로 실행된다.

② Control Construct (제어 구조) / Control Statement (제어문)

  • 프로그램에서 실행되는 문장들의 실행 순서를 제어하는/변경할 수 있는 문장

✓ Control Construct

C 언어 제어 구조: 조건문, 반복문, 분기문, 함수 호출 등은 제어 흐름을 변경함

① 조건문 (Conditional Statement)

  • if 문, if-else 문, switch 문

② 반복문 (Repetition Statement) 혹은 루프 (Loop)

  • while 문, for 문, do-while 문

③ 분기문 (Branching Statement)

  • goto 문, return 문, break 문, continue 문

④ 함수 호출 (Funciton Call)

 


2. if statement

if-statement:
if (expression) statement_true
  • if-statement도 하나의 statement
  • statement_true는 Block이 될 수도 있음

 

제어 흐름

  • 조건식(expression)이 참(True)이면 statement_true를 실행하고 다음 문장으로 진행
  • 조건식(expression)이 거짓(False)이면 statement_true를 실행하지 않고 다음 문장으로 진행
  • if 문의 조건식(expression)에는 비교 연산자나 논리 연산자가 일반적으로 쓰인다

비교 연산자와 논리 연산자


✓ if 문의 개념 - 조건을 만족하여야 수행


3. Comparison and Logical Operators

 

✓ Comparison Operator (비교 연산자)

두 값의 크고 작음이나 같음을 비교한 결과진리값으로 나타내는 연산자

  • 진리값(Boolean)은 참(True) 또는 거짓(False)의 값을 가진다
  • C언어에서는 참을 1로 거짓을 0으로 표현
  • 관계 (Relational) 연산자로고도 불린다

비교연산자


✓ Logical Operator (논리 연산자)

진리 값에 대한 연산자

  • 산술 또는 비교 연산의 피연산자는 정수 또는 소수와 같은 수이나 논리 연산자의 피연산자는 참 또는 거짓의 진리값
  • 논리 연산에서 피연산자의 값이 0 이외의 값을 가질 경우 1이 아니어도 참으로 해석한다
  • 논리 연산의 의미 또는 결과는 진리표 (Truth Table)을 통해 표시

 


✓ 연산자 우선 순위

  1. 일반 법칙
    • 최고 우선순위 ()
    • 곱은 합보다 우선한다.
  2. 산술→관계→논리→대입
    • "계산하여 비교한 뒤, 판단하여 저장한다"


4. if - else statement and Nested if statements

✓ if 문과 Block

① if는 한 개의 문장에만 관여한다.

② 그 뒤에 따라오는 문장들에는 관여하지 않는다.

③ Block도 하나의 Statement

  • Block 시작, 즉 {의 위치는 선택의 문제; 문법적으로 둘다 가능
  • if와 같은 줄에 쓰는 예제가 많음 -> 간결한 소스 코드
  • if와 다른 줄에 사용할 경우 블록 구분이 명확해져 가독성이 좋고 오류 가능성이 낮아짐

 


✓ if-else statement

if-else-statement:
if (expression) statement_true
else statement_false
  • 조건에 따라 실행할 문장을 선택
  • 조건식(expression)이 참(True)이면 statement_true를 실행하고 거짓(False)이면 statement_false를 실행

✓ if-else문과 Block

if-else문에서 조건 별로 하나 이상의 문장을 수행하고자 할 때

  • Block의 적절한 사용이 필요, 독립적인 else문은 없음
  • { }으로 둘러 쌓인 하나 이상의 문장을 복합문(Compound Statement)이라고도 함


✓ 중첩 (Nested) if 문

if 문 내에 또 다른 if 문 포함 가능

  • 이미 확인한 조건에 기초하여 또 다른 조건을 확인할 수 있다.
  • 참고)
    • if 문의 statement_true, statement_false에 대해 줄바꿈을 꼭 해야하는 것은 아니다
    • 블록으로 구분되는 복합 문장이 아닌 경우, 즉 한 개 문장이고 그 길이가 길지 않은 경우 if, else 등과 같은 줄에 쓰는 것이 코드를 간결하게 할 수 있다.


요약