간단한 코드의 구조
지난 포스팅에서 살펴봤던 코드의 구조를 파악해보자.
#include <stdio.h>
int main(void)
{
printf("Hello World!");
return 0;
}
이렇게 특정 언어로 작성된 텍스트 파일을 소스 코드라고 한다.
다음과 같은 코드를 크게 세 부분으로 구분해보자.
1. 지시자
#include <stdio.h>
기억나실지 모르지만, 이전 포스팅에서 # 으로 시작하는 것은 전처리 지시문이라고 하였다.
# 이라는 특수 기호로 시작하는 문장은 지시자 라고 한다.
프로그램이 컴파일 되기 전에 처리되어야 할 작업들을 지정해준다고 보면 된다.
해당 코드 #include <stdio.h> 는 C언어의 표준 입출력 라이브러리를 가리키는 헤더 파일로 해당 라이브러리의 정보들을 포함하겠다 라는 의미이다. 웬만한 프로그래밍에는 항상 쓰이는 라이브러리이다.
헤더 파일이란 주로 외부 소스 파일에 미리 정의된 정보들을 가져다 쓰기위해 만들어진 파일이다. 확장자명은 (.h) 이다.
2. 함수
int main(void)
{
}
함수는 수학시간에 익히 들어본 개념일 것이다.
입력이 함수를 거쳐 특정한 출력이 나오도록 하는 것이 우리가 익히 알고있는 함수의 개념이다.
C언어에서는 함수를 이렇게 정의한다.
자료형에 대해 알아본 후에 더 자세히 다루겠다.
간단히 int 부분은 출력의 형태, main 부분은 함수명, 괄호에 씌여진 void 는 입력의 형태라고 보면 된다.
함수명은 중복되지 않게 여러 함수를 만들 수 있지만, main 이라는 이름을 가진 함수는 특별하다.
소스 파일에 무조건 하나만 존재할 수 있으며 소스 코드의 근간이 되는 함수라고 보면 된다.
따라서 우리가 작성할 코드는 모두 main 함수의 괄호 내에 작성된다.
우리는 이 때 main 함수를 정의하고 있다고 한다.
3. 구문
printf("Hello World!");
return 0;
마지막으로 구문이다.
우리가 주로 작성할 소스 코드들에 해당하는 부분이다.
참고로 중괄호 내에서 문장 앞 공백을 확인할 수 있는데 이는 Tab키로 통상적으로 띄어쓰기 4칸 정도이다.
두 줄에서 볼 수 있듯이 구문 부분에서 문장의 끝에는 세미콜론(;)이 붙어야 컴파일러가 문장이 끝났다고 인식한다.
우리는 printf ~ 부분이 Hello World 라고 출력되게끔 하는 문장임을 눈치챌 수 있다.
printf 부분 또한 괄호 안에있는 "Hello World!" 가 입력값으로 들어간 함수이다!!
printf() 라는 함수가 바로 지시문에 있던 <stdio.h> 라는 C언어 표준 입출력 라이브러리에 포함된 함수이다.
만약 처음의 지시문 없이 이 문장을 작성했다면, 오류가 발생할 것이다.
우린 이렇게 정의된 함수를 사용하는 것을 호출이라고 한다.
코드가 실행될 때 가장 먼저 main 함수가 호출되는 원리이다.
return 0; 의 return 은 말 그대로 반환을 뜻하는 키워드이다.
그대로 해석하면 '0 이라는 녀석을 반환해라' 라는 뜻이다.
각 문장이 끝났을 때 세미콜론(;)을 붙이는 것처럼 모든 함수는 마지막 부분에 return문을 통해 함수의 결괏값을 호출한 곳으로 반환한다.
간단한 도식화
이렇듯 C 프로그래밍은 다음과 같은 과정이 다중적으로 이루어진다고 보면 된다.
② 함수를 정의 -> ③ 함수를 호출 -> ⑤ 절차적 실행 -> ⑥ 함수의 결과 반환
우린 이렇게 함수를 정의하고 호출하며 재사용성을 늘려 효율적인 명령 수행을 시키도록 코딩 작업을 해야하는 것이다.
이러한 함수를 메소드(method), 루틴(routine), 서브루틴(subroutine) 이라고도 하며 이러한 작업 개념을 통틀어 프로시저(Procedure) 라고 한다.
C언어는 프로시저(Procedure) 를 활용하는 것이 본질이기에 C언어를 명령형 프로그래밍 패러다임(Procedural Programming Paradigm) 언어라고 하는 것이다.
[Lang] 프로그래밍 언어란?
프로그래밍 언어(Programming Langauge) 란?: 컴퓨터(기계)에게 명령하거나 의사소통을 할 수 있게 해주는 언어이자 도구 프로그래밍 언어는 다음과 같이 구분되며 보통 컴파일러(Compiler)나 인터프리
devcrl.tistory.com
C언어 소개 참고
깊다면 깊게 간단하다면 간단하게 설명한 것 같아요.
이해하기 힘든 부분도 많겠지만 매커니즘을 이해하는 것이 중요하다고 봅니다.
후에 다룰 내용도 유기적으로 이어질 것입니다~!
'언어 > C' 카테고리의 다른 글
[C-2] C 프로그램의 구조 (0) | 2025.02.20 |
---|---|
[C-1] 개발 환경 구축 (2) | 2025.01.20 |