앞서 설명드린 수식, int y = x + 3
의 형태를 우린 Expression으로 말한다고 했습니다. 즉, 값을 가지는 하나의 수식을 표현식이라고 하는 것이죠. 말 그대로 '식'입니다. 값을 가지지 않는 선언은 표현식이 아닌 것이죠.
명령문은 식과 다르게 인간의 문자, 영어의 전치사 혹은 접속사의 형태로 선언됩니다.
우리가 12년 의무교육에서 대차게 배워온 if, else, else if, for, while, switch-case(예외) 등으로 상태를 나타낼 수 있는 하나의 문단구조입니다. 이것 외에도 그냥 작성한 코드 한 줄을 Statement라고 표현할 수 있습니다. 컴퓨터가 실행가능한 코드는 모두 Statement입니다. 이렇게 보면 굉장히 광범위한 개념이죠?
또한 Statement 코드 내에서도 다양한 Expression이 자리하고 있을 수 있습니다. 그러나, Expression의 형태로 Statement를 작성할 수는 없습니다.
int x = 2;
int y;
if(true){ //Statement
y = x + 3; //Expression
}
이러한 형태는 가능하겠지만,
int x = 2;
int y = if(true){}
이러한 선언은 불가능합니다. 좀 극단적 예시긴 하지만, 명령문에는 value가 없기 때문에 표현식과 동일한 방식으로 변수에 할당할 수 없다는 점이 포인트입니다.
즉, if문 내에 return 10;을 작성하더라도 그것은 반환일 뿐, Statement가 값을 가지는 것이 아닙니다.
그럼 우린 이러한 개념을 집합의 형태로 표현할 수 있습니다.
Expression ⊂ Statement 의 형태로 말입니다.
일상에서의 표현식은 수학과 밀접한 표현들이 있지만,
기본적으로 컴퓨터과학에서의 표현식(Expression)은 코드에서의 함수콜(function() 등), 변수 이름 등의 식별자, 배열 할당 연산자([]) 등의 개념들을 모두 포함하고 있습니다.
위 개념들은 차차 세부적으로 들어갈 예정입니다.