Page 16 - Do it! 자료구조와 함께 배우는 알고리즘(C 언어, 3쇄)
P. 16
프로그램의 흐름은 검은 선 을 따라 위에서 아래로 향하고, 그 과정에서 안에
작성한 처리 과정이 실행됩니다. 그리고 를 지날 때는 그 안에 작성된 ‘조건’을 평가
한 결과에 따라 Yes, No 중 하나를 따라 갑니다. 다시 말해 조건 b > max , c > max가 성립하
면(식 b > max와 식 c > max를 평가한 값이 1이면) Yes로 이동하고, 그렇지 않으면 No로 이동합
니다.
if문, while문 등에서 조건 판정을 위해 (b > max)처럼 괄호 안에 넣는 식을 제어식이라 합니다.
프로그램의 흐름은 두 갈래 중 어느 한쪽을 지나는데, if문에 의한 프로그램 흐름의 분기를
쌍기(양 갈래) 선택이라 합니다. 또한 안의 화살표 →는 값의 대입을 가리키는데, 예를
들어 ‘a → max’는 아래와 같은 의미입니다.
변수 a의 값을 변수 max에 대입하세요.
다음에 배울 실습 1-2에 나오는 선언 ‘int max = a;’는 변수를 만드는 시점에 값을 넣는 ‘초기화’이고, 이 프로그램의
‘max = a;’는 이미 만들어져 있는 변수에 값을 넣는 ‘대입’입니다. 초기화와 대입은 다르지만 이 책에서는 엄밀하게 구별할
필요가 없는 경우 ‘대입’이라고 표현합니다.
실습 1-2의 실행 결과와 같이 변수 a, b, c에 1, 3, 2를 입력하면 프로그램의 흐름은 순서도의
초록색 선 경로를 따라 갑니다. 이제 다른 값을 가지고 순서도를 따라가 보겠습니다.
변수 a, b, c의 값이 1, 2, 3 또는 3, 2, 1인 경우도 최댓값을 구할 수 있습니다. 또 세 값이 5, 5,
5로 모두 같거나 1, 3, 1로 2개만 같더라도 올바른 최댓값을 구할 수 있습니다.
■ a b c d e
a = 1 a = 1 a = 3 a = 5 a = 1
b = 3 b = 2 b = 2 b = 5 b = 3
c = 2 c = 3 c = 1 c = 5 c = 1
max max max max max
max = a; 1 1 3 5 1
if(b > max) max = b; ↓ ↓ ↓ ↓ ↓
if(c > max) max = c; 3 2 3 5 3
↓ ↓ ↓ ↓ ↓
3 3 3 5 3
[그림 1-2] 세 값의 최댓값을 구하는 과정에서 변수 max 값의 변화
세 변수 a, b, c의 값이 6, 10, 7이나 –10, 100, 10인 경우도 순서도의 초록색 선을 따라 갑
니다.
16 C 알고리즘