Statement-Level (two-way selection)

2021. 12. 5. 01:45컴퓨터 공학/프로그래밍 언어론

반응형

이번 글에서는 Statement-level 그러니까 당한 '~문' 에 대해서 알아볼 것이다.

프로그래밍에서 '~문' 하면 떠오르는 것들이 몇 가지 있을 것이다.

대표적으로 for문, while문, if문, switch 문 등이 있다.

그럼 이 친구들을 포함하는 대분류는 무엇일까? 궁금하지 않은가? (나만 궁금해?)

 

우리는 위와 같은 '~문' 들을 이렇게 분류 할 수 있다.

  • Selection Statements(선택문)
  • Iterative Statements(반복문)
  • Unconditional Branching(무조건 분기)
  • Guarded Commands(보호 명령)

그럼 차근차근 알아가보자.

 

📕Selection Statements(선택문)


먼저 선택문에 대해서 알아보자.

(저는 선택한 적이 없는데요?)

선택문이라고 하면 프로그래밍 언어에서, if문을 써봤다면 다들 알 것이다.

바로 그 if문이 바로 선택문이다.

 

'이게 왜 선택문이냐?' 라는 질문이 있을 수 있다.

(나는 선택한 적이 없거든)

 

 

 

 

 

 

 

 

 

 

 

프로그램은 if문에 포함된 '조건'에 따라 값을 '선택'하는 것이기 때문에 선택문이다.

 

이 선택문은 정말 중요한데, 선택문의 중요성을 알게된 것은 1960년대이다.

FORTRAN I으로 코드를 작성하고, IBM 704f로 프로그램을 돌릴 시절, 

모든 알고리즘은 2-way 선택과, 논리적 loop로 표현될 수 있다는 것을 알게 되었다.

그렇다. 우리는 선택문과 반복문만 있으면 모든 문제를 해결할 수 있다!!! (물론 그 해결이 언제 끝날지 모름ㅋ)

 

선택문의 방식에는 앞서 잠시 언급한 이중 선택(two-way)과 다중 선택(multiple-way) 방식이 있다.

이중 선택 방식은 말 그대로 선택이 2개 밖에 안 되는 것이다.

다중 선택도 text 그대로 여러개 선택 할 수 있는 것을 말한다.

아래 코드를 보자.

 

// two-way(이중 선택)
if() {
...
} else{ 
	...
}

// multiple-way(다중 선택)
if() {
...
} else if() {
...
} else if() {
...
} else{ 
...
}

 

한 번에 이해가 갈 것이다. 

 

C/C++, python의 이중 선택문의 경우에는 Control expression에 연산식이 들어갈 수 있다.

가령 num--, a--, a - 10와 같이.

하지만 대부분의 언어에서는 오직 Boolean 값만을 지원한다.

 

그럼 종결은 어떻게 표시할까?

대부분의 언어에서는 종결을 괄호로 구분짓지만, 파이썬처럼 들여쓰기라는 다른 방식으로 구분짓기도 한다.

 

선택문의 종결이 중요한 이뉴는 바로 프로그래밍 언어의 동작 방식에 있다.

포함 선택문(Nesting Selectors)의 경우를 보자.

 

if(sum == 0)
	if(count == 0)
    	 result = 0;
else
	result = 1;

위의 코드는 자바로 작성되었다.

 

저 맨 마지막에 붙은 else는 어떤 if의 else일까?

 

뭔가 직감적으로 첫 번째 if의 else같지만, 자바에서는 두 번째 if 즉, 가장 가까운 if의 else가 된다.

왜 그럴까??

종결 지어지지 않았기 때문이다.

 

그럼 종결지으면 문제가 해결된다. 어떻게? 바로 중괄호를 이용해서.

 

C/C++,Java는 중괄호를 통해서 if문의 종결을 나타내고, Ruby는 end라는 명시적 표현을 이용하며,

Python은 들여쓰기를 사용해서 나타내고 있다.

 

 

 

 

반응형