제어 흐름과 제어 구조

프로그램이 위에서 아래로만 실행된다면 무엇을 못 할까?

화면을 누르면 다음 장으로 넘어갑니다

제어 흐름

실행 순서는 세 수준에서 정해집니다

프로그램에서 실행이 옮겨 가는 길을 제어 흐름(control flow)이라고 합니다. 이번 강은 가운데 수준, 문장과 문장 사이의 순서를 다룹니다.

우선순위와 결합 규칙은 6강에서 본, 식 안에서 무엇을 먼저 계산할지 정하는 규칙입니다.

기본은 차례대로

문장은 적힌 순서대로 실행됩니다

따로 정하지 않으면 문장은 위에서 아래로 한 번씩 실행됩니다. 이것만으로는 조건에 따라 다른 일을 하거나, 같은 일을 되풀이할 수 없습니다.

제어문

제어문이 갈 길을 바꿉니다

if는 조건을 보고 한쪽 문장만 실행하게 합니다. 이렇게 실행 순서를 정하는 문장이 제어문(control statement)입니다. if와 while이 그 예입니다.

C 계열 언어는 C, C++, Java처럼 C의 문법을 이어받은 언어들입니다. 점수와 코드는 예시입니다.

제어문의 발전

제어문은 두 가지면 충분합니다

초기 Fortran(과학 계산용 언어, 1강)의 제어문은 당시 컴퓨터 IBM 704의 명령어를 그대로 옮긴 것이었습니다. 1960년대에, 이런 순서도로 그릴 수 있는 알고리즘은 이 둘만으로 모두 구현할 수 있음이 증명됐습니다.

순서도는 처리 순서를 상자와 화살표로 그린 그림입니다.

제어 구조

제어문과 딸린 문장들을 합쳐서 봅니다

제어문과, 그 제어문이 실행을 제어하는 문장들을 합친 것이 제어 구조(control structure)입니다. if 문이라면 if와 그 안의 문장들이 한 덩어리입니다.

1강에서는 제어 구조를 '실행 순서를 정하는 구문'이라고만 했습니다. 예시 코드입니다.

설계 쟁점

들어가는 곳은 하나여야 할까

제어 구조로 들어가는 곳이 진입점(entry)입니다. 진입점이 여럿이면 중간으로 바로 들어갈 수 있어 유연하지만, 읽고 고치기 어려워집니다. 그래서 대부분의 언어는 진입점을 하나로 둡니다.

다음 편

가장 먼저 볼 제어 구조는 선택문입니다. if 하나에도 언어마다 다르게 정한 것이 있습니다

2편if 하나에도 정할 것이 있을까? 7강 목록