01강 정리: C 언어의 개요
1. 프로그래밍과 프로그래밍 언어
- 프로그래밍: 컴퓨터가 작업을 수행하기 위해 실행해야 하는 명령을 작성하는 행위.
- 프로그래밍 언어의 세대
- 1세대 (기계어): 0과 1로 구성된 명령, 하드웨어 직접 제어.
- 2세대 (어셈블리어): 기계어를 기억하기 쉽게 기호화, 어셈블러 필요.
- 3세대 (고급언어): 사람이 이해하기 쉬운 구조(C, C++, Java, Python 등).
→ 컴파일러 / 인터프리터를 통해 기계어로 변환.
2. C 언어의 등장과 발전
- 탄생: 1972년, 벨 연구소 Dennis Ritchie가 Unix 운영체제 개발을 위해 고안.
- 특징
- 범용 고급언어: 이식성 높고 표준 라이브러리 제공.
- 시스템 프로그래밍 적합: 하드웨어 제어 가능, 빠른 실행 속도.
- 간결한 문법 구조.
- 발전 과정
- ALGOL60 (1960) → CPL (1963) → BCPL (1967) → B 언어 (1970) → C 언어 (1972).
- 표준화: ANSI C(C89), ISO C(C90), C99, C11, C17, C23.
3. C 프로그램 개발 과정
- 목적 정의
- 설계
- 소스코드 작성
- 컴파일 → 목적파일 생성
- 링크 → 실행파일 생성
- 실행 및 테스트
- 유지보수
- 필요 도구: 소스 편집기, 컴파일러, 링커, 디버깅 도구, IDE(예: Dev-C++, Visual Studio).
4. C 프로그램의 기본 구조
// 도입부: 헤더파일 포함
#include <stdio.h> // 입출력 요소에 관련된 헤더 파일
int add(int x, int y); // 함수 선언
int main() { // main 함수: 프로그램의 시작점
int i=10, j=20, sum;
sum = add(i, j);
printf("%d+%d=%d", i, j, sum);
}
int add(int x, int y) { // 사용자 정의 함수
return x + y;
}
// 컴파일: make test make 설치가 안된 경우는 clang -o test test.c
// 실행: ./test
// 실행파일 삭제: rm ./test
- 규칙
- 반드시 main() 함수 포함.
- 함수 몸체는 { } 블록으로 구성.
- 명령문의 끝은 ;로 마무리.
- 주석은 /* */ 또는 // 사용.
5. C 프로그램의 구성 요소 (토큰)
- 예약어(keyword): int, if, for, return 등 미리 의미가 정해진 단어.
- 명칭(identifier): 변수/함수 이름. 규칙:
- 영문자, 숫자, _ 조합.
- 첫 글자는 영문자/_이어야 함.
- 공백/특수문자 불가.
- 예약어 사용 불가.
- 상수: 123, 'a', "KNOU".
- 연산자: + - * / % 등.
- 주석: 코드 설명용, 컴파일 시 무시됨.
6. 에러와 경고
- 에러(error): 문법 오류, 필수 요소 누락 → 빌드 실패 (실행 파일 생성 불가).
예) printf("Hello") 에서 ; 누락.
- 경고(warning): 빌드는 되지만 문제 가능성 있음.
예) 사용하지 않는 변수, 잘못된 함수 선언.
→ 가능하면 수정하여 경고 없는 코드 작성이 바람직함.
핵심 정리
- C 언어는 범용 고급언어이자 하드웨어 제어가 가능한 시스템 프로그래밍 언어.
- 프로그램은 소스 작성 → 컴파일 → 링크 → 실행 과정으로 만들어짐.
- C 프로그램은 main() 함수를 반드시 포함하며, 예약어·식별자·상수·연산자·주석 등 토큰의 조합으로 구성됨.
- 에러는 반드시 수정, 경고는 상황에 따라 무시 가능하지만 되도록 제거.