728x90

C를 활용하는 일곱 단계

지금까지 설명했듯이, C 언어는 컴파일하는 언어입니다. 만약 다른 컴파일 언어를 사용해본 경험이 있다면, C 프로그램을 활용하는 방법에 금방 적응할 수 있습니다. 하지만 인터프리터 언어만 알고 있거나, VB와 같은 그래픽 지향의 언어만 알고 있다면, 혹은 프로그래밍에 대한 지식이 전혀 없다면, 컴파일하는 방법을 배워야 합니다. 먼저 프로그래밍의 전체적인 윤곽을 설명하기 위해 C 프로그램을 작성하는 일곱 단계로 나누어서 설명하려 합니다.

1단계 : 프로그램의 목적 정의
먼저, 어떤 프로그램을 만들 것인지 결정해야 합니다. 프로그램이 요구하는 정보, 수행할 계산 및 조작, 사용자에게 제공할 정보 등에 대해 생각해야 합니다. 이 계획 단계에서는 C 언어와 같은 컴퓨터 언어가 아닌 우리가 사용하는 일상 언어로 생각하는 것이 좋습니다.

2단계 : 프로그램 설계
어떤 프로그램을 작성할 것인지 정해지면, 그 프로그램을 어떻게 만들지 결정해야 합니다. UI는 어떻게 구성하는지, 이용하는 대상은 누구인지 또, 시간이 얼마나 주어졌는지를 생각해야 합니다.

또한, 프로그램에서 데이터를 표현하는 방법과 그 데이터를 처리하는 방법에 대해서 고민해야 합니다. 데이터를 표현하는 방법을 적절히 선택한다면, 더욱 손쉽게 프로그램을 설계하고 데이터를 처리할 수 있습니다.

다시 강조하지만, 컴퓨터 언어가 아닌 일상 언어로 생각하는 것이 좋습니다. 하지만 사용하는 컴퓨터 언어의 일반적 특성에 기초를 두어야 합니다.

3단계 : 코드 작성
프로그램에 대한 설계가 이루어졌다면, 코드를 작성해서 설계한 프로그램의 실제 구현을 시작해야 합니다. 이 단계는 C에 대해 알고 있는 지식을 바탕으로 문서 편집기를 이용해서 소스 코드 파일을 작성하는 단계입니다. 소스 코드 파일을 작성하는 것은 프로그램의 설계를 C 언어로 다시 작성하는 것입니다.

#include <stdio.h>
 
int main(void) {
    printf("Hello, World");
 
    return 0;
}
cs

4단계 : 컴파일
코드 작성이 마무리되었다면 소스 코드를 컴파일할 차례입니다. 지금은 아래 내용을 개념적으로만 이해해두세요

컴파일러는 소스 코드를 컴퓨터가 이해할 수 있는 기계어 코드로 변환시키는 프로그램입니다. 기계어는 수치 코드로 표현된 명령어들로 이루어져 있으며, 컴파일한 결과물을 실행 파일이라 부릅니다. 컴퓨터마다 사용하는 기계어가 달라서 C 컴파일러는 라이브러리에 들어있는 코드를 불러와 최종 프로그램에 결합합니다. 라이브러리는 위 코드에서 'printf()'와 같은 표준화된 함수들을 사용자가 불러와 사용할 수 있도록 하나의 파일에 모아놓은 것입니다.

컴파일러는 프로그램에서 C 문법이 적절히 사용되었는지 검사합니다. 에러가 발생하면 에러 메시지를 표시하고, 실행 파일은 만들지 않습니다.

5단계 : 프로그램 실행
실행 파일은 사용자가 실행시킬 수 있는 프로그램입니다. Windows의 명령 프롬프트 모드, Unix/Linux 터미널 모드와 같은 환경에서 실행 파일의 이름을 입력하면 파일을 실행할 수 있습니다. VAX 시스템의 VMS에서는 실행 명령이나 그 외의 다른 절차가 필요하며, Windows와 Macintosh 환경에서 주로 제공되는 통합개발환경(IDE)에서는 C 프로그램을 작성하고 실행하는 작업을 한 번에 할 수 있습니다.

6단계 : 테스트, 디버깅
때로는 프로그램이 의도한 대로 동작하지 않을 수 있습니다. 그래서 프로그램이 정확하게 동작하고 있는지 확인하는 작업은 꼭 필요합니다. 프로그램에 에러가 숨어있을 때도 있으며, 그런 에러를 버그라 하고, 디버깅은 그런 버그를 찾아서 수정하는 작업입니다. 배울 때 실수하는 것은 자연스러운 것처럼 프로그래밍에서도 언제 에러가 발생할지 모르니 주의하면서 코딩해야 합니다.

프로그래머는 항상 에러를 낼 수 있습니다. 기초 설계부터 잘못되었을 수도 있고, 아이디어는 좋은데 그것을 부정확하게 구현할 수도 있습니다. 또한, 프로그램이 의도하지 않은 대로 동작할 수도 있습니다. 한 부분만 잘못되더라도 프로그램은 먹통이 될 수 있습니다.

7단계 : 유지보수
프로그램의 작성이 끝나더라도 수정해야 할 일이 생길 수 있습니다. 어떤 행위를 하면 나타나는 사소한 버그가 숨어있거나, 일을 처리하는 보다 더 좋은 방법이 떠오를 수도 있습니다. 또한, 새로운 기능들을 추가시켜야 할 수도 있고, 다른 기종의 컴퓨터에서 실행시켜야 할 수도 있습니다. 프로그램을 명확하게 문서로 정리하고, 설계 지침을 따른다면 이러한 작업을 모두 쉽게 처리할 수 있습니다.

마지막으로
프로그래밍이라는 것이 지금까지 설명한 일곱 단계를 항상 순서대로 따르는 것은 아닙니다. 때로는 단계들 사이를 앞뒤로 왔다 갔다 해야 합니다. 예를 들면, 코드를 작성하다가 계획을 수정해야 할 수도 있고, 프로그램을 실행해 보고 난 후 설계를 변경해야 할 수도 있습니다.

초보 프로그래머들은 1단계(프로그램 목적 정의)와 2단계(프로그램 설계)를 무시하고, 3단계(코드작성)로 곧바로 뛰어들기도 합니다. 처음 배울 때는 프로그램의 전체 과정을 머릿속으로 그릴 수 있을 만큼 매우 간단하고, 에러를 접하더라도 쉽게 찾아낼 수 있는 간단한 프로그램을 작성하지만, 프로그램이 복잡해지면 전체 과정을 머릿속으로 그리기가 쉽지 않으며 에러 또한 찾아내기가 어려워집니다.

1, 2단계를 무시할 시 난해한 프로그램을 작성하면서 시간을 낭비하고, 많은 에러 속에서 혼란이 발생할 수 있습니다. 작업이 크고 복잡할수록 더 많은 계획이 필요합니다.

코딩하기 전에 계획하고 설계하는 습관을 기르는 것은 중요합니다. 종이와 연필을 사용해서 프로그램의 목적을 간단하게 메모하고 설계의 윤곽을 그리면 시간을 상당히 절약할 수 있고, 프로그램의 만족도 또한 높아집니다.

728x90
728x90