01 들어가며
이 장에서 다루는 내용
• 명령형 프로그래밍
• 코드 컴파일하고 실행하기
이 장에서는 C 언어의 다양한 구문으로 간단히 작성한 프로그램을 소개한다. 프로그래밍 경험이 있는 독자는 굳이 읽어야 하나 생각할 것이고, 처음 접하는 독자는 쏟아져 나오는 생소한 용어와 개념에 지레 겁먹을지도 모른다.
둘 중 어느 쪽에 해당하더라도 참고 읽어 주기 바란다. 프로그래밍 경험이 있는 사람도 여기서 소개할 예제를 통해 그동안 몰랐던 세부 기능이나 잘못 알고 있던 부분을 발견할 수 있다. 심지어 C 프로그래밍을 어느 정도 해 본 사람도 그럴 수 있다. 프로그래밍을 처음 접하는 독자라면 첫 열 페이지만 읽어도 상당히 많은 것을 배울 수 있고, 프로그래밍이 무엇인지 보다 확실히 이해할 수 있다.
프로그래밍 전반에 대해 특히 이 책을 읽는 자세와 관련하여 꼭 해 주고 싶은 말이 있는데, 더글러스 애덤스(Douglas Adams)가 1986년에 쓴 〈은하수를 여행하는 히치하이커를 위한 안내서(Hitchhiker’s Guide to the Galaxy)〉에 다음과 같이 잘 표현돼 있다.
TAKEAWAY B 겁내지 말자.
겁낼 이유가 전혀 없다. 이 책에서는 본문과 관련된 참고 자료와 링크를 충분히 제공한다. 게다가 맨 뒤에 색인도 마련해 뒀다. 책을 읽다가 궁금한 점이 있으면 이를 활용하기 바란다. 아니면 잠시 쉬어도 좋다.
C 프로그래밍은 원하는 작업을 컴퓨터로 처리하는 기법을 의미한다. C 언어는 명령을 내리는 방식으로 작업을 표현하는데, 이는 우리가 말로 명령하는 것과 상당히 비슷하다. 그래서 이러한 프로그래밍 방식을 명령형 프로그래밍(imperative programming)이라 부른다. 우리가 볼 첫 프로그램인 예제 1-1을 통해 구체적으로 살펴보자.
예제 1-1 첫 C 프로그램
1 /* 장난스런 문장 같지만 정식 C 표현이다. -*- mode: c -*- */
2 #include <stdlib.h>
3 #include <stdio.h>
4
5 /* 이 부분이 핵심이다. */
6 int main(void) {
7 // 선언문
8 double A[5] = {
9 [0] = 9.0,
10 [1] = 2.9,
11 [4] = 3.E+25,
12 [3] = .00007,
13 };
14
15 // 필요한 작업을 수행한다.
16 for (size_t i = 0; i < 5; ++i) {
17 printf("element %zu is %g, \tits square is %g\n",
18 i,
19 A[i],
20 A[i]*A[i]);
21 }
22
23 return EXIT_SUCCESS;
24 }