프로그래밍 언어도 결국엔 언어이고, 결국엔 어떠한 글(프로그램)을 작성하기 위해 사용된다. 이러한 글의 구성요소로서 식(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의 경우 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 |