Expression과 Statement

미분류

2020. 1. 20. 14:09

프로그래밍 언어도 결국엔 언어이고, 결국엔 어떠한 글(프로그램)을 작성하기 위해 사용된다. 이러한 글의 구성요소로서 식(Expression)과 문장(Statement) 2가지로 구분할 수 있다. 여기에서는 Expression과 Statement의 특징과 차이점 등에 대해서 알아본다.

 

1. 식(Expression)

Expression은 식 혹은 표현식 등으로 불리는데, 어떠한 값을 가지고 있으면 그 것을 표현식이라고 부를 수 있다. 아래의 예시를 보자. 위와 같이 그 자체가 어떠한 값을 내포하고 있으면 그것은 식으로 불릴 수 있다. 어렵게 생각 할 것 없이 뭔가 이 코드가 값을 가지고 있을 것 같으면 Expression이다. 이러한 Expression들은 함수의 매개변수로 사용될 수 있고, 함수의 반환값으로도 사용될 수 있다.

 

5 // 리터럴 (수)

"hello" // 리터럴 (문자열)

2 * 7 - 6; // 산술 식

sum(7, 4); // 함수 리턴값

myName;  // 변수

 

2. 문장(Statement)

Statement는 문장 혹은 상태 등으로 불리는데, 어떠한 작업을 수행하는 모든 문장을 Statement라고 한다. 함수바디에는 Statement로 구성된 코드들이 특정한 작업을 수행한다. 아래 몇가지 예시는 Statement가 무엇인지에 대해 보여준다.

 

int age; // 변수 선언

age = 7; // 변수에 값 할당

String name = "kim"; // 변수의 선언과 할당

if(age > 5){} // 조건문

for(int i = 0; i <10; i++){} // 반복문

 

때로는 Expression이 Statement가 될 수 있다. 아래 예시를 보자. age의 값을 1 증가시키기 위해 ++를 수행하였다. 이 age++;라는 구분은 Statement로서 평가될 수 있지만, 그 자체로 값이 리턴되기 때문에 Expression도 될 수 있다. 마찬가지로 sum(age, 1); 역시 Statement이면서 Expression으로 평가 될 수 있다.

 

int age = 14; // Statement

age++; // Statement 이면서 Expression

sum(age, 1); // Statement 이면서 Expression

 

3. Example (Java VS Python)

 

1) Java

 

[그림] Java 예시

 

Java의 경우 Statement가 아니면 코드 블럭 안에서 단독으로 쓰일 수 없다. 가장 윗 문장인 int age = 14;는 Statement이기 때문에 사용될 수 있지만, Statement는 함수의 매개변수 등으로 활용 될 수 없기 때문에 println()의 매개변수로 쓰일 수 없다. age++;는 Statement이면서 Expression이기 때문에 단독으로 쓰일 수 있고, 함수의 매개변수로도 활용할 수 있다. 그러나 age, 2+2와 같은 Expression은 Statement가 아니기 때문에 단독으로 사용될 수 없고, 컴파일 에러를 출력한다.

 

2) Python

 

 

Python의 경우 Expression도 단독으로 쓰일 수 있다. 위의 그림을 보면 50 + 40과 같은 Expression이 단독으로 사용되었음에도 불구하고 에러를 출력하지 않는다. 그러나 Statement를 함수의 인자로 넣을 수는 없다. 예를 들어 위의 코드와 같이 if name:과 같은 Statement는 print 함수의 파라미터로 들어갈 수 없다.

'미분류' 카테고리의 다른 글

보조 저장장치 (3) - 저장 용량  (0) 2020.01.30
보조 저장장치 (2) - 하드디스크 인터페이스  (0) 2020.01.30
보조 저장장치 (1) - 디스크 구조  (0) 2020.01.29
튜링 머신  (1) 2020.01.19
괴델의 불완전성 정리  (0) 2020.01.18
컴퓨터의 기원  (0) 2020.01.18
조건부 확률  (0) 2020.01.15