더북(TheBook)

첫 번째 for문은 i10부터 1까지 거꾸로 센다(경계값 포함). 조건문은 단순히 변수 i를 평가하기만(값을 가져오기만) 한다. 이때 값이 0인지 비교하는 문장을 굳이 적을 필요 없다. i 값이 0이 되면 조건은 false가 돼서 루프가 멈춘다. 두 번째 for문은 istop이라는 변수 두 개를 선언한다. 이번에도 i를 루프 변수로 사용한다. stop은 조건에서 다른 값과 비교하는데, istop보다 크거나 같으면 루프를 종료한다.

세 번째 for문은 끝없이 반복되는 것처럼 보이지만 실제로는 9부터 0까지 거꾸로 센다. 다음 장에서 설명하겠지만, C 언어에서 size_t 타입으로 된 숫자(크기와 관련된 숫자)는 절대 음수가 되지 않는다.Exs 2

for문 모두 변수를 i란 이름으로 똑같이 선언했다. 이름이 같아도 스코프가 다르면 서로 영향을 미치지 않고 나란히 둘 수 있다.

C 언어는 whiledo라는 반복문도 제공한다.

while (조건) 문장_or_블록
do 문장_or_블록 while(조건)

while문의 대표적인 예는 다음과 같다. 이 코드는 헤론의 근사 공식(Heron approximation)을 이용하여 숫자 x에 대한 곱셈 역원(곱셈에 대한 역수)인 icon_1_x을 계산한다.

#include <tgmath.h>

double const eps = 1E-9;           // 원하는 정밀도
...
double const a = 34.0;
double x 0.5;
while (fabs(1.0 - a*x) >= eps) {   // 기준에 근접할 때까지 반복한다.
  x *= (2.0 - a*x);                // 헤론의 근사 공식
}

 

 


Exs 2 i 값이 0인 상태에서 -- 연산자로 i 값을 감소시키면 어떻게 될까?

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.