자료출처: 핵심 길잡이 C 프로그래밍 언어
도서출판: 성안당
C 프로그램은 하나 이상의 함수로 구성된다. 이 때 main() 이라는 함수가 필수적으로
필요하며 나머지 함수는 필요에 따라 선택적으로 사용할 수 있다. 또한 각 함수는 머리
부(header)와 몸체부(body)로 구성된다.
머리부에서는 라이브러리 함수의 헤더 파일(header file)과 사용자가 정의한 메크로(macro)
및 사용자 정의 함수의 프로토타입(prototype)을 기술한다. 몸체부는 프로그램의 본체로서
C 언어의 명령어를 기술한다 C 언어상에서 기술하는 모든 문장은 반드시 문장의 끝을 명시
하는 의미에서 세미콜론(semicolon ;)으로 끝내야 한다.
C 프로그램의 기본 구조를 나타내면 [그림 1-2]와 같다.
|
|
|
|
|
|
[그림 1-2 ] C 언어의 기본 구조
예제 1.1
|
< C 언어의 구성 요소>
프로그램의 명령문을 작성하는 데 사용할 수 있는 문자는 다음과 같다.
1. 영문자: 소문자 (a~z), 대문자 (A~Z)
2. 숫자: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9
3. 특수문자: + = _ - ( ) * & % $ # ! | < > . , ; : " ' / ? { } [ ] ~ 등
4. 공백문자(white space) : 공백(blank)문자, 탭(tab), 개행문자(new line) 등
이와 같은 문자들은 컴파일러에 의해서 구문의 단위인 토큰(token)과 결합 된다
토큰에 포함되는 요소에는 식별자, 예약어, 문자열 상수, 연산자와 분리자 등이 있다.
< 주석문(Comments) >
주석문은 프로그램을 알기 쉽도록 설명하는 부분으로 프로그램의 실행과는 전혀
무관하며 프로그램의 어느 부분에나 사용할 수 있다. C 언어는 주석을 필요로 하는
부분에 /* 설명 내용 ~ */로 표시한다. 즉 /* 와 */ 사이에 설명할 내용을 적어 둔다.
또한 주석은 한 줄 또는 여러 줄에 걸쳐 쓸 수 있으나 중첩하여 쓸 수는 없다.
객체 지향 언어인 C++에서는 주석문을
// 설명 내용 ~( 이 줄 (line)의 끝까지)
로도 표시할 수 있다. 즉, // 이후부터 그 줄의 끝까지가 주석문이 된다.
|
< 블록 (Blocks) >
한 개 이상의 명령문들을 중괄호 ( brace, { } ) 로 묶어서 하나로 취급한다. 이와 같은
것을 블록 ( block ) 이라 한다. C 언어에서는 이러한 블록의 개념을 도입함으로써 문장의
계층화를 형성살 수가 있다.
블록은 국부적인 ( local ) 선언 명령문과 실행 명령문들로 이루어질 수 있으며, 단 하
나의 문장만을 묶어서 블록을 형성할 수도 있다. main( ) 함수를 포함한 모든 함수들은
블록으로 되어 있으며, 블록은 중첩할 수 있다. 다음 프로그램은 중첩된 블록 형태를
보여 주고 있다.
|
< 식별자 ( Identifiers )>
C 프로그램에서 변수와 함수, 배열 등에 부여된 이름, 즉 변수에, 함수명, 배열명
등을 명칭 ( name ) 또는 식별자 ( Identifier )라고 하며, 다음과 같은 규칙에 의하여 부
여된다.
1. 식별자는 영문자 ( A ~ Z, a ~ z)와 숫자 ( 0 ~ 9 ), 밑줄문자 ( _ )로 구성되며, 첫 글자는
반드시 영문자이거나 밑줄자이어야 한다.
2. C 언어에서는 대문자와 소문자를 반드시 구별하므로 명확하게 표기해야 한다.
3. 식별자 사이에는 공백문자를 사용해서는 안 된다.
4. 식별자의 길이는 컴퓨터의 기종에 따라 다르다. ANSI C 에서는 31자까지 사용할
수 있도록 허용되지만 보통은 8자까지 유효하다.
5. 일반적으로 예약어는 단독으로는 식별자로 사용할 수 없다.
옳은 예 | 잘못된 예 |
age, tax_rate, SQ_MILERS, text_12, abc, auto_case, if_else |
45rate, name#, 432, a+b, tax-rate, auto, if, else |
< 예약어 ( Keywords )>
예약어는 컴파일러 ( compiler )에 의해서 그 사용과 의미가 이미 정해진 것으로서 사
용자가 임의로 다른 목적으로 사용하거나 의미를 바꾸어 사용할 수 없다. 그러므로 이
들을 프로그램의 변수명이나 함수명 등으로 사용해서는 안 된다. [ 표 1 - 1 ]은 예약어를
나타낸다.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
★ C 프로그램 컴파일과 실행 ★
C 언어는 컴파일러 방식을 채택한 프로그래밍 언어이다. 따라서 먼저 원시 프로그램
( source program, *.c , *.cpp )을 작성한 후에 컴파일러는 번역기를 통해 원시 프로그램
문법적인 오류 ( syntax error )를 검사한다. 에러 ( error )가 있으면 컴파일러는 프로그래
머에게 이를 알려 준다. 그러면 프로그래머는 다시 프로그램을 수성 ( debugging ) 하여
번역 과정을 거친다. 만약 에러가 없으면 컴파일러는 C 프로그램을 기계어로 번역하여
목적 프로그램 ( object program, *.obj )을 생성한다.
작성된 목적 코드를 시스템 라이브러리나 다른 목적 코드와 연결하여 실행 가능한
코드를 생성하여 원하는 결과를 얻을 수 있다. 이 때 실행 결과가 맞지 않으면 원시 프
로그램을 수정하여 다시 번역 및 링크 ( link ), 실행 과정을 반족해야 한다. C 프로그램
의 실행 과정은 [ 그림 1 - 3 ]과 같다.
첫번째 -> 원시 프로그램 편집 ( editor ) | 프로그램 작성 단계 |
두번째 -> C 선행처리기 ( C preprocessor ) | 프로그램 컴파일 단계 |
세번째 -> C 컴파일러 ( C compiler ) | |
네번째 -> 어셈블러 ( assembler ) | |
다섯번째 -> 링커 ( linker ) | |
여섯번째 -> 실행 ( execution ) 파일 생성 ( * exe ) | 프로그램 실행 단계 |
일곱번째 -> 결과 확인 |
[ 그림 1 - 3 ] C 프로그램의 실행 과정