# Chapter 04. 흐름 제어 구문 : 코드의 활용성을 높여주는 도구들

&#x20;일반적으로 프로그래밍 과정에서 작성하는 소스 코드를 구문(Statement)이라고 합니다. 하나의 앱을 만들기 위해 여러분들이 작성해야할 코드는 적게는 수십 줄부터 많게는 수만 줄에 이르는데, 대부분이 구문으로 이루어 집니다.&#x20;

&#x20;구문은 크게 단순 구문과 흐름 제어 구문 두 가지로 나눌 수 있습니다. 단순 구문은 식이나 값 표현, 각종 객체의 선언이나 정의 등에 사용되는 구문입니다. 앞서 살펴본 변수나 상수 선언, 연산 처리 등은 모두 단순 구문에 속하며, 이후에 배우게 될 함수나 구조체, 클래스 및 열거형 등을 정의하는 구문 역시 단순 구문입니다.

&#x20;흐름 제어 구문은 말 그대로 프로그램의 실행 과정에서 실행 흐름을 능동적으로 제어하기 위한 목적으로 사용되는 구문을 말합니다. 흐름 제어 구문은 원래 순차적으로 실행되어야 할 일부 실행 과정을 건너뛰거나 되돌아오도록 흐름을 제어하며 경우에 따라서는 반복적으로 실행되도록 제어하기도 합니다. 이번 장에서는 흐름 제어 구문에 대해 집중적으로 학습하게 됩니다.&#x20;

&#x20;스위프트는 일반적으로 통용되는 흐름 제어 구문 대부분을 제공하는데, 성격에 따라 다음 세 가지 종류로 나눌 수 있습니다.

* 반복문(Loop Statements)
* 조건문(Conditional Statements)
* 제어 전달문(Control Transfer Statements)

&#x20; 반복문은 주어진 조건에 따라 특정 코드 블록을 반복적으로 실행하고, 조건문은 특정 조건이 성립할 경우 지정된 코드 블록이 실행되도록 제어합니다. 제어 전달문은 특정 지점의 코드로 실행 제어를 옮겨줌으로써 코드가 실행되는 순서를 제어할 수 있는 방법을 제공합니다. 각각의 구문에 관해서는 이어지는 페이지에서 자세히 알아볼 예정입니다.&#x20;

&#x20;단순 구문과 흐름 제어 구문 모두 선택적으로 세미콜론을 사용하여 구문의 끝을 표시해 줄 수 있습니다. 여기에서 선택적이란 말의 의미는 모든 구문의 끝에 반드시 세미콜론을 붙여야 하는 것은 아니라는 뜻입니다. 이는 구문의 끝에 반드시 세미콜론을 붙여야하는 C, C++, 자바 등의 언어와 대조되는 스위프트의 특성입니다.

&#x20;하지만 스위프트라고 해서 모든 경우에 세미콜론을 생략할 수 있는 것은 아닙니다. 컴파일러가 해석하기 어려운 구문에는 세미콜론이 필요합니다. 대표적으로 여러 줄로 작성해야 할 코드를 한 줄로 작성하는 경우가 이에 해당합니다.&#x20;

&#x20;흐름 제어 구문에서는 코드 블록을 지정해야 하는 경우가 많습니다. 대부분의 언어에서 코드 블록은 { }로 구성되는데 이 블록은 여러 줄에 걸쳐 작성된 코드를 블록 단위로 묶어주는 역할을 합니다. 스위프트에서도 흐름 제어 구문 대부분은 { }을 사용하여 적용할 코드 범위를 지정합니다.&#x20;

&#x20;각각의 흐름 제어 구문은 비슷한 성격의 기능을 하는 여러 구문들로 다시 나누어지기도 합니다. 가령 반복문만 하더라도 for와 while 문이 있죠. 이들은 비슷한 기능을 하기 때문에 문법을 학습하는 초기에는 어떤 것을 써야하는지 헷갈리기도 합니다. 하지만 각 구문들이 완전히 동일한 기능을 하는 것은 아니며, 각자 나름의 특성을 가지고 있기 때문에 그 특성을 제대로 이해하고 적절한 곳에 적절한 구문을 사용할 수 있도록 노력해야 합니다.&#x20;
