새내기를 위한 C 언어완성

Download Report

Transcript 새내기를 위한 C 언어완성

새내기를 위한 C 언어완성
CHAPTER 1. C언어의 개요
CHAPTER 2. C컴파일러 사용법
새내기를 위한 C 언어완성
Chapter 1. C언어의 개요
1.1 C언어의 역사
1.2 C언어의 특징
1.3 C 프로그램의 기본구조
새내기를 위한 C 언어완성
1.1
C 언어의 역사
1.1.1 C 언어의 탄생과 발전 과정
C 언어는 1972년에 미국 벨(Bell) 연구소의 연구원 데니스 리치(Dennis Ritchie)에 의해
개발된 프로그래밍 언어(programming language)이다.
먼저 C 언어의 탄생과 관련된 역사적 배경을 살펴보기로 하자. 1969년 벨 연구소에서는,
DEC사의 PDP-7이라는 대형 컴퓨터에 사용할 목적으로, UNIX라고 하는 새로운
운영체제(operating system)를 개발하는 역사적인 프로젝트에 착수하였다. 그러나,
초기의 UNIX는 특정 시스템의 하드웨어(hardware)에 의존하는 어셈블리 언어(assembly
language)로 작성되어 있어서, 다른 컴퓨터 기종에서는 사용할 수 없는 큰 단점을 가졌다.
비슷한 시기에 벨연구소의 연구원 켄 톰슨(Ken Thompson)은 BCPL이라는 기존의 시스템
프로그래밍 언어를 기본으로 하여 호환성(compatibility)이 높은 고급 언어인 B 언어를
개발하였다.
1972년 데니스 리치는 B 언어의 성능을 개선시켜 C 언어를 개발하였고, 어셈블리
언어로 작성되었던 초기의 UNIX를 C 언어로 다시 작성하였다. 그 결과로 UNIX는
프로그램의 개발과 연구에 유용한 환경을 제공하는 훌륭한 운영체제로 새롭게 탄생하게
되었다.
새내기를 위한 C 언어완성
이와 같이 UNIX라고 하는 운영체제를 개발하는 과정에서 만들어진 C 언어는 1970년대
를 지나면서 UNIX와 함께 점차 보급되기 시작하였고, 1980년대 이후로 개인용 컴퓨터
(PC : Personal Computer)의 대중화에 힘입어 MS-DOS 등에서도 광범위하게 사용되고
있다.
특히 최근에 와서는 C 언어의 기능에 객체 지향 프로그래밍(OOP, Object Oriented
Programming) 기법을 도입한 C++ 라는 새로운 언어가 주목을 받고 있다. C++ 는 새로운
언어이기는 하지만 C 언어를 기본으로 하기 때문에 대부분의 상용 제품들은 C++
환경에서 순수한 C 문법만으로도 프로그래밍이 가능하도록 배려하고 있음을 기억하기
바란다.
이상에서 언급한 바와 같이 C 언어는 정체되어 있는 언어가 아니고 계속 확장되어
나가는 언어이다. 아래의 그림 1.1에서 C 언어의 발전 과정을 간략하게 나타내었다.
ALGOL60 ⇒ CPL ⇒ BCPL ⇒ B ⇒ C ⇒ C++ ⇒ · · ·
▶ 그림 1.1 : C 언어의 발전 과정
새내기를 위한 C 언어완성
1.1.2 ANSI(American National Standards Institute)-C
UNIX를 개발하는 과정에서 탄생한 C 언어는 초기에는 운영체제와 같은 시스템
프로그램의 작성을 위하여 일부 전문가들만이 사용하였다.
그러나 시간이 지날수록 C 언어가 가지는 여러 가지 특징과 장점들이 대학과 연구
기관을 중심으로 일반 대중들에게 소개되기 시작하였고, 또한 하드웨어 기술의 발전으로
개인용 컴퓨터가 대중화되면서 UNIX 시스템에서만 수행될 수 있었던 여러 가지 복잡한
작업들이 개인용 컴퓨터에서도 충분히 수행될 수 있게 되었다.
따라서 많은 소프트웨어 개발 회사들은 개인용 컴퓨터에서도 C 언어를 쉽게 사용할 수
있도록 다양한 C 컴파일러를 개발하여 보급하기 시작했다.
이 과정에서 조금씩 다른 특징을 가지는 C 컴파일러들은 호환성에 관련된 많은
문제점들을 발생시켰다. 그래서 C 언어를 사용하는 많은 사용자들은 C 언어 표준안의
필요성을 절실히 느끼게 되었다.
새내기를 위한 C 언어완성
그러나, 그때까지만 하더라도 C 언어를 개발한 데니스 리치(Dennis Ritchie)
와 커니간(Kernighan)이 공동으로 저술한 “The C Programming Language” 가
C 언어를 정의한 유일한 책이었다. 이 책에서 정의된 C 구문을 저자의 이름을
따서 “K & R 2.1” 등과 같이 인용하면서 초기 C 언어의 표준으로 삼았으나, 이
책에서조차도 C 언어에 대하여 완전한 정의를 내리지는 못하였다.
이에 따라, 1983년 미국 표준 협회(ANSI : American National Standards
Institute, “ 앤 시 ” 라 고 읽 음 ) 는 ANSI-C 라 는 새 로 운 C 언 어 의 표 준 안 을
발표하였다. 이 표준안에서는 함수 원형(prototype) 등의 새로운 규칙들이
첨가되었으며, 표준 라이브러리(library) 함수가 정의되었다. 비로소 ANSI-C에
의해 혼란스러웠던 C 언어의 규칙들이 통일된 것이다.
새내기를 위한 C 언어완성
1.2
C 언어의 특징
1.2.1 높은 호환성을 가지는 언어
C 언어는 다른 프로그래밍 언어보다 높은 호환성을 가지고 있다. 그러므로 표준
함수(standard function)로만 작성된 C 프로그램은 모든 컴퓨터에서 실행가능하다.
1.2.2 양면성 기능을 가지는 언어
C 언어는 기존의 다른 고급 프로그래밍 언어의 기능을 가지면서도, 저급 프로그래밍
언어와 같이 컴퓨터의 하드웨어를 직접 제어할 수 있는 기능을 가진다. 이러한 이유로 C
언어를 양면성 기능을 가지는 언어 또는 중급 언어(medium level language)라고
부르기도 한다.
새내기를 위한 C 언어완성
1.2.3 범용 프로그래밍 언어
C 언어는 기존의 다른 프로그래밍 언어들이 어느 특정 용도로만 사용될 수 있었던 것과는
달리, 과학 계산/ 하드웨어 제어/ 일반 사무/ 시스템 개발 등의 모든 응용 분야에서 사용될
수 있는 범용(general purpose) 프로그래밍 언어이다.
1.2.4 영어 소문자를 기반으로 하는 언어
C 언어 프로그램은 영어 소문자를 기반으로 기술된다. 프로그램을 영어 소문자로
기술하면, 영어 대문자를 기반으로 하는 기존의 언어(BASIC, COBOL, FORTRAN, ...
등)에 비하여 프로그램의 작 성(coding) 과 이해가 쉬워질 뿐만 아니라, 표현력도
풍부해지게 된다. 다음의 영어 문장 중에 어느 것이 눈에 잘 띄고 이해가 쉬운지 비교해
보기 바란다.
비교
don't forget to remember me!
DON'T FORGET TO REMEMBER ME!
새내기를 위한 C 언어완성
1.2.5 다양한 연산자를 가지는 언어
C 언어는 다른 프로그래밍 언어에 비해 대단히 풍부한 연산자를 가지고 있다. 따라서 C
언어에서 제공되는 연산자들은 프로그래머가 처리하여야 할 연산을 보다 간결하게 표현할
수 있도록 해준다. 아직은 C 언어의 문법에 대하여 잘 모르겠지만, 다음의 표를 살펴보면
“아! 이래서 C 언어의 연산자가 다양하고 간결하다고 하는구나!” 라는 느낌을 가질 수 있을
것이다.
▷ 표 1.1 : 다양하고 간결한 C 언어의 문법
일반적인 연산식 표현
HAP = HAP + 1
CHO = CHO * 100
IF(I .EQ. 100) THEN N = 10
ELSE N = 30
C 언어의 연산식 표현
hap++;
cho *= 100;
n = (i==100) ? 10 : 30;
1.2.6 모듈러(modular) 프로그래밍 언어
C 언어에서는 프로그램의 내용을 기능별로 구분하여, 독립된 작은 프로그램으로
나누어서 작성한다. 이러한 방식으로 프로그램을 모듈화 시키면 복잡한 프로그램을 보다
쉽게 작성할 수 있으며, 프로그램의 유지보수(maintenance)가 쉬워진다.
새내기를 위한 C 언어완성
1.2.7 free format 코딩 형식을 가지는 언어
FORTRAN, COBOL과 같은 언어들은 미리 정해진 엄격한 코딩(coding) 형식에 의해서
프로그램이 작성되어야 한다. 그러나 C 언어에서는 프로그램을 작성할 때, free format
코딩 형식을 사용하므로 프로그래머 각자의 개성에 따라 편리한대로 프로그램을 작성할
수 있다.
다음은 엄격한 위치별 코딩 형식을 가진 FORTRAN 프로그램의 예이다. 상당히 딱딱하고
정형화된 모습에서 융통성을 찾아보기 어렵지 않은가?
C
F
O
R
T
R
A
N
R
E
A
D
(
5
,
F
O
R
M
A
T
T
O
T
=
V
A
V
E
=
W
R
I
F
O
R
C
O
1
0
)
(
F
3
.
A
L
1
+
T
O
T
/
T
E
(
6
M
A
T
(
D
I
N
G
E
X
A
M
P
V
A
L
1
,
V
A
L
2
0
,
F
3
.
0
)
V
A
L
2
2
.
0
,
2
0
)
T
O
T
,
A
V
E
1
H
1
,
1
0
X
,
F
5
.
1
,
1
0
X
,
F
5
.
1
)
L
E
C
1
2
0
0
+
S
T
O
E
N
D
P
또한 COBOL 프로그램은 예약어도 많고 정형화된 틀을 사용하여야 하므로 어떤 의미에
서는 FORTRAN 보다 더욱 융통성이 없다고 볼 수 있다.
새내기를 위한 C 언어완성
앞에서 기술된 FORTRAN 프로그램을 C 언어로 옮기면 다음과 같다.
#include <stdio.h>
main( )
{
float val1, val2, tot, ave;
scanf("%f %f", &val1, &val2);
tot = val1 + val2;
ave = tot / 2.0;
printf("
%5.1f
%5.1f", tot, ave);
1.2.8 전처리기(preprocessor)를 사용하는 언어
다른 언어와는 달리 C 언어에서는 원시 프로그램을 컴파일하기 전에 문법 외적인
처리를 먼저 수행하는데, 이 과정을 전처리(preprocessing)라고 한다. C 언어에서는
전처리기를 사용함으로써 프로그램을 보다 함축적으로 표현할 수 있고, 컴파일에 대한
다양한 제어가 가능하다.
새내기를 위한 C 언어완성
1.2.9 포인터(pointer)를 사용하는 언어
포인터란 주기억 장소에 저장된 자료의 위치를 가리키는 용도로 사용되는 특별한 의
미의 변수이다. C 언어에서는 포인터를 이용하여 임의의 자료가 저장되어 있는 주기
억 장소에 대한 직접 참조가 가능하므로, 고급 언어이지만 FORTRAN 이나 COBOL과
같은 기존의 언어들과는 달리 기계어 수준의 자료 처리가 가능하다.
C 언어는 이상에서 언급된 바와 같이 다른 프로그래밍 언어에 비하여 우수한 여러
가지 특징들을 가진다. 이러한 특징과 장점들로 인하여, C 언어는 현재 모든 컴퓨터
분야에서 가장 효용 가치가 높은 프로그래밍 언어로 자리잡고 있는 동시에 가장 널리
사용되고 있다.
새내기를 위한 C 언어완성
1.3
C 프로그램의 기본 구조
이제 C 언어로 작성된 간단한 프로그램을 살펴보면서 C 프로그램의 기본 구조와 구성
요소에 대하여 알아보기로 하자.
C 프로그램은 아래의 그림 1.2와 같이 전처리기 영역, 전역변수(global variable) 영역
그리고 함수(function) 영역과 같은 3가지 부분으로 구성된다. C 프로그램에서 전처리기
영역과 전역변수 영역은 경우에 따라 생략가능 하지만, 함수 영역에서 main이라는
이름의 함수는 반드시 존재하여야 한다.
#include <stdio.h>
/* 전처리기 영역 */
int su;
/* 전역변수 영역 */
main()
{
선언문;
...
실행문;
...
실행문;
...
}
▶ 그림 1.2 : C 프로그램의 기본 구조
그림 1.2에 나타난 바와 같이 함수 내부에서 사용되는 문장은 크게 선언문과 실행문으로
분류되는데, 일반적으로 선언문은 실행문보다 먼저 기술된다.
새내기를 위한 C 언어완성
예제1.1 두 수의 합을 구하는 프로그램의 예와 실행 결과
1:
2:
3:
4:
5:
6:
7:
8:
9:
10 :
11 :
12 :
/* filename : ch1-1.c */
#include <stdio.h>
main()
{
/* sample program */
①
②
③
④
int su1 = 10, su2 = 20, sum;
sum = su1 + su2;
⑥
printf("%d + %d = %d \n", su1, su2, sum);
}
10 + 20 = 30
⑤
⑦
새내기를 위한 C 언어완성
예제1.1 프로그램 설명
① C 프로그램을 작성할 때, 전처리기에게 프로그래머가 의도한 바를 전처리 지시어를
사용하여 전달할 수 있다. 전처리 지시어는 보통 '#'문자로 시작된다. 예제 1-1의
2행에서는 전처리 지시어 #include를 사용하여 표준 입출력 헤더 파일(header file)
stdio.h의 내용을 원시 프로그램에 포함시키는 작업을 지시하고 있다. 표준 입출력 헤더
파일에는 각종 표준 입출력 함수의 함수 원형(function prototype) 선언문들에 대한
정보가 포함되어 있다. 따라서 이 프로그램에서는 printf()와 같은 표준 입출력 함수에 대한
원형 선언을 생략해도 된다.
② C 프로그램은 함수의 집합으로 이루어져 있으며, 이 프로그램에서와 같이
main()이라는 함수가 반드시 필요하다. 이 함수는 전체 프로그램의 기본이 되는 중요한
부분이다.
그리고 C 프로그램의 실행은, 원시 프로그램에서 main() 함수가 기술되어 있는 위치에
상관없이, main() 함수의 처음을 의미하는 '{'에서 시작되고 main() 함수의 끝을 의미하는
'}'에서 종료된다.
③ C 프로그램의 함수는 “함수명()”을 시작으로 왼쪽 괄호 '{'와 오른쪽 괄호 '}'로
둘러싸인 본체로 이루어진다. 5행의 괄호 '{'는 함수를 이루는 본체의 시작을 의미하며,
12행의 괄호 '}'는 함수의 끝을 의미한다.
새내기를 위한 C 언어완성
④ 원시 프로그램에서 "/*"와 "*/" 사이에 기술된 문장은 프로그램 내용에 대한 주석문
(comment statement)이다. 주석문은 한 줄에 기술할 필요가 없으며, "/*"가 나오면 이
후에 "*/"가 나올 때까지 그 사이에 기술된 내용을 모두 주석문으로 간주한다. 주석문은
프로그램의 실행과는 아무런 관계가 없으며, 임의의 위치에 기술할 수 있다.
복잡하거나 개발 기간이 많이 소요되는 프로그램에서 주석문을 적절하게 사용하면 프
로그램의 이해와 관리에 큰 도움이 될 것이다.
⑤ 8행의 문장은 프로그램에서 사용할 자료를 저장하기 위한 변수 정의(선언) 부분이다.
프로그램에서 변수를 사용하기 위해서는, 그 변수를 참조하는 실행문 이전에 해당 변수
에 대한 정의(선언)문이 기술되어야 한다.
예제 프로그램에서 대다수 문장의 끝에는 “하나의 문장이 완료되었음을 나타내는” 세
미콜론 ';'이 붙어있다. C 언어에서는 줄(line)의 의미가 없으므로 한 줄에 여러 개의 문
장들이 동시에 기술될 수 있다. 이때 컴파일러는 한 줄에 기술된 문장의 수와는 무관하
게 세미콜론 ';'을 만날 때마다 하나의 문장이 끝났다고 간주한다.
⑥ 10행에서는 대입 연산자 '='의 우측에서 수행된 덧셈 결과를, 연산자 좌측에 있는 변
수 sum에 대입한다.
새내기를 위한 C 언어완성
⑦ 11행에서는 표준 출력 함수인 printf()를 사용하여 프로그램의 실행 결과를 모니터 화
면에 출력한다. 이 문장에서 기술된 바와 같이 printf() 함수는 이중 인용부호(" ")로 둘러싸
인 형식 지정 제어 문자열과 컴머(,)로 분리되어 나열된 인수들로 구성되어 있다.
예제 프로그램의 실행 결과에서와 같이 이중 인용부호 내에 기술되어 있는 일반 문자열은
출력 형식과 관계없이 그대로 모니터에 출력되고, 인수들은 이중 인용부호 내에서 지정한
형식에 의해 순서대로 출력된다. 이때 형식 지정 제어 문자와 인수의 숫자는 같아야 하며,
제어 문자와 인수는 기술되어 있는 순서대로 각각 대응된다. 그리고 이중 인용부호 "
"사이에서 문자 '\n'을 만나면 커서(cursor)는 다음 줄의 처음 위치로 이동된다.
그림 1.3은 형식 지정 제어 문자열과 인수들의 대응 관계를 나타낸 것이다.
printf("%d + %d = %d \n", su1 , su2 , sum);
▶ 그림 1.3 : printf() 함수의 형식 지정 제어 문자와 인수들의 대응 관계
새내기를 위한 C 언어완성
Chapter 2. C컴파일러 사용법
2.1 Turbo C
2.2 Visual C++
2.3 Boland C++
2.4 UNIX CC/GCC
새내기를 위한 C 언어완성
Turbo C
2.1
2.1.1 프로그램 작성
Turbo C에서의 프로그램 작성은 통합 환경(IDE : Integrated Develope Environment)에
포함되어 있는 에디터를 사용한다. 이제 “Edit” 메뉴를 선택한 다음, “변수 i에 7을
대입하고 출력하는” 프로그램을 그림과 같이 입력하여 보자.
File
Edit
Run
Compile
Project
Options
Debug
Break/Watch
Line 12 Col 1 Insert Indent Tab File Unindent C:NONAME.C
#include <stdio.h>
main()
{
int i;
i=7;
printf("i = %d\n", j);
}
_
Message
F1-Help F5-Zoom F6-Switch F7-Trace F8-Step F9-Make F10-Menu
새내기를 위한 C 언어완성
프로그램의 입력이 끝나면 화면 오른쪽 상단에 표시된 "C:NONAME.C"라는 파일 이름으
로 이 프로그램을 실행시킬 수 있지만, 의미있는 고유의 파일명을 지정하려면 그림 2.2와
같이 “File” 메뉴의 “Write to”를 선택한다. 그리고 원하는 파일명을 입력한 다음에 [Enter]
키를 누르면 된다.
파일명을 입력할 때 확장자를 생략하면 자동으로 ".C"가 붙으므로 확장자에 대해서는
신경쓸 필요가 없다. 그림 2.2의 예와 같이 원시 프로그램의 이름으로 "EXAMPLE"만
입력해도 "EXAMPLE.C"라는 파일명으로 저장된다는 의미이다.
File
Edit
Run
Compile
Project
Options
Debug
Break/Watch
Load F3 l 1 Insert Indent Tab File Unindent C:NONAME.C
Pick Ait-F3
New
Save F2
Write to
example_
Quit Alt-X
printf("i = %d\n", j);
}
F1-Help F5-Zoom F6-Switch F7-Trace F8-Step F9-Make F10-Menu
▶ 그림 2.2 : 새로운 파일명 입력
이미 파일명이 지정되어 있을 때, 수정된 프로그램을 저장하려면 “File” 메뉴의 “Save”
를 선택하고 [Enter] 키를 누르거나 단축키 [F2]를 누르면 된다.
새내기를 위한 C 언어완성
2.1.2 컴파일
지금부터는 앞에서 편집한 프로그램 "EXAMPLE.C"를 컴파일(compile)시키고 링크(link),
실행(run)시키는 전체 과정에 대하여 살펴보기로 하자. 물론 컴파일과 링크를 수행하는
과 정 에 서 에 러 (error,= bug) 나 경 고 (warning) 들 을 추 적 하 고 수 정 하 여 야 완 전 한
프로그램이 생성될 것이다. 일반적으로, 에러는 수정되지 않으면 프로그램이 수행되지
않으므로 반드시 수정하여야 하는 성질의 것이고, 경고는 일단 프로그램의 수행에는
문제가 없으나, 다양한 상황에서 문제를 일으킬 수 있는 시한폭탄과 같은 존재일 가능성이
있다는 의미이다. 완전한 프로그램의 작성을 위해서는 반드시 경고까지도 해결하는
버릇을 들여야 할 것이다.
컴 파 일 만 진 행 하 려 면 “ Compile” 메 뉴 의 첫 번 째 부 메 뉴 인 “ Compile to OBJ” 를
선택하거나 단축키 [Alt-F9] 키를 누르면 되고, 링크까지 수행하여 실행 파일을
생성하려면 [F9] 키를 누르면 된다. 여기에서는 [F9] 키를 눌러 실행 파일을 만들어
보 기 로 하 자 . 컴 파 일 이 성 공 적 으 로 끝 나 면 그 림 2.3 과 같 이
된다.
새내기를 위한 C 언어완성
File
Edit
Run
Compile
Project
Options
Debug
Break/Watch
Line 12 Col 1 Insert Indent Tab File Unindent C:NONAME.C
#include <stdio.h>
main()
{
int i;
i=7;
printf("i = %d\n", i);
}
*Compiling C:\TEMP\EXAMPLE.C:
F1-Help F5-Zoom F6-Switch F7-Trace F8-Step F9-Make F10-Menu
▶ 그림 2.3 : 에러/경고가 없는 메시지 화면
새내기를 위한 C 언어완성
2.1.3 실행
컴파일과 링크가 끝난 실행 파일은 DOS 프롬프트 상에서 실행시킬 수 있지만, “Run” 주
메뉴에 속한 “Run” 부메뉴를 선택해서 IDE 내에서 실행시킬 수도 있다. “Run” 부메뉴를
사용해서 실행시킬 경우에는 컴파일, 링크, 그리고 실행 과정이 한꺼번에 진행된다. “Run”
을 위한 단축키는 [Ctrl-F9] 키이다.
프로그램의 실행 결과를 눈으로 확인하려면 “Run” 주메뉴에 속한 “User screen” 부메뉴
를 선택하거나 단축키 [Alt-F5]를 누르면 된다. 실행 결과를 확인한 다음에 다시 Turbo
C IDE로 돌아오려면 임의의 키를 누르면 된다. 다른 방법으로 DOS 상태로 빠져나가서
실행 결과를 확인할 수도 있는데, 이렇게 하려면 “File” 주메뉴의 “OS Shell” 부메뉴를 선
택하면 된다. 이 경우에 다시 Turbo C IDE로 돌아오려면, 화면에 표시된 것처럼 DOS 프
롬프트 상태에서 "EXIT"를 입력하고 [Enter] 키를 누르면 된다.
새내기를 위한 C 언어완성
Turbo C IDE에서 “File” 주메뉴의 “OS Shell” 부메뉴를 선택한다.
C:\TEMP> tc
i=7
실행 결과
Type EXIT to return to Turbo C. . .
Microsoft(R) MS-DOS(R) Version 6.22
(C)Copyright Microsoft Corp 1981-1994
C:\TEMP> exitꏮ
다시 Turbo C IDE로 돌아온다.
[F9] 키나 [Ctrl-F9] 키에 의해 컴파일과 링크를 거쳐 생성된 실행 파일은 DOS
프롬프트 상에서 직접 실행시킬 수도 있다. 일반적으로 실행 파일의 이름은 사용자가
지정한 원시 프로그램의 이름에 확장자 ".EXE"가 붙은 형태이다. 앞에서 원시 프로그램의
이름을 "EXAMPLE.C"로 지정하였으므로, 실행 파일의 이름은 "EXAMPLE.EXE"가 될
것이다. DOS 프롬프트 상에서 실행 파일을 수행하려면 다음과 같이 파일 이름만 입력해
주면 된다.
C:\TEMP> example ꏮ
새내기를 위한 C 언어완성
2.2.1 프로그램 작성
Visual C++ 6.0을 시작하고 File 메뉴의 New 항목을 선택하면 다음과 같은 대화상자가
열린다. 먼저 Project 탭의 Win32 Console Application을 선택하고 Project name과
Location을 원하는 대로 설정한다. 여기에서 입력한 Project name에 따라 실행파일의
이름이 결정된다.
▶ 그림 2.4 : New 대화상자의 Project 설정
새내기를 위한 C 언어완성
OK 버턴을 누르면 다음과 같이 “An empty project”라는 항목이 선택된 대화상자가 열린
다. 다른 항목을 선택하면 C 실습과 관계없는 C++, MFC 등과 관련된 스켈레톤 파일들이
첨가되므로 주의해야 한다. Finish 버턴을 누르면 간단한 도움말이 표시되는데 여기에서
OK 버턴을 누른다.
▶ 그림 2.5 : Console Application의 생성
다시 Visual C++의 통합환경으로 돌아갈 것이다. 이제부터 작성하는 파일들은 위에서
설정한 Project name을 가진 폴더에 작성될 것이다. 여기에서 File 메뉴의 New 항목을
선택한다. 열린 대화상자에서 Files 탭의 Text File 항목을 선택하고 Add to project 체크
박스를 선택한 다음, File 난에 파일 이름을 설정하자. 이때 example.c와 같이 반드시
확장자까지 입력하여야 한다.
새내기를 위한 C 언어완성
▶ 그림 2.6 : New 대화상자의 Files 설정
이제 다음과 같이 원하는 프로그램의
내용을 입력한다.
▶ 그림 2.7 : Visual C++에서 원시 프로그램의 작성
새내기를 위한 C 언어완성
2.2.2 컴파일
프로그램 작성이 완료되었다면 Build 메뉴의 Build ... 항목을 선택하거나 F7 키를 누르면
프로그램이 컴파일, 링크되어 실행파일이 생성될 것이다. 이 과정에서 생기는 에러 및
경고의 해결은 여러분들의 몫이 된다.
▶ 그림 2.8 : Visual C++에서의 컴파일
새내기를 위한 C 언어완성
2.2.3 실행
생성된 결과를 실행하고 싶으면 Build 메뉴의 Execute ... 항목을 선택하거나 Ctrl+F5를
누르면 된다. 아래의 그림은 도스 창에 표시된 결과를 보인 것이다. 여기에서 아무 키나
누르면 다시 Visual C++ 개발 환경으로 되돌아오게 된다.
▶ 그림 2.9 : Visual C++에서의 프로그램 실행
개발 중인 프로그램을 재차 불러올 때는 File 메뉴의 Open Workspace 항목을 선택해야
한다는 것에 주의하기 바란다.
새내기를 위한 C 언어완성
2.3
Borland C++
2.3.1 프로그램 작성
볼랜드 C++ 5.0을 실행하면 아래 그림과 같은 통합개발환경(Integrated Development
Environment 이하 IDE라 약칭하기로 한다.)이 나타난다. 최초 실행 시에는 아래
그림에서와 같이 볼랜드 로고가 나타나고 OK 단추를 누르면 사라진다. 이 로고는 Help
메뉴의 About를 누르면 언제든지 볼 수 있다. 화면에 뭔가 열려있으면 Project 메뉴에서
Close Project를 눌러서 열린 프로젝트를 닫고 File 메뉴에서 Close를 눌러서 열린 파일을
닫고 처음부터 시작해보자.
▶ 그림 2.10 : Borland C++의 로고 화면
새내기를 위한 C 언어완성
아래 그림과 같이 File → New →
TextEdit를 실행하여 새로운 파일을 한
개 만들자.
▶ 그림 2.11 : Borland C++에서 새로운 파일의
생성
새로 시작하는 파일은 이름이
noname00.cpp 이 된다. 00자리의 숫자
는 볼랜드 C++이 자동으로 붙이는 숫자
로, 00에서 99까지 자동으로 붙는다.
▶ 그림 2.12 : Borland C++의 도구 및 상태표시선
새내기를 위한 C 언어완성
편집창(TextEdit Window)이 열리면 소스파일을 편집할 때에 사용할 수 있는 여러 가지
도구아이콘들이 IDE에 나타난다. 열려있는 편집창에서 Enter키를 한번 누르면 커서가 한
줄 아래로 내려간다. 이때 IDE의 맨 아래 줄에 있는 상태표시선(Status Line)을 보면 현재
커서의 위치가 2행1열로 표시되고 아직 저장하지 않았다는 의미의 Modified가 표시되고
키보드는 삽입모드라는 것을 나타내고 있다. 대부분의 윈도우즈 응용프로그램이 그러하듯
이 상태표시선에는 사용자가 작업하는데 있어서, 뭔가 도움되는 말들이 나타난다. 예를
들어 마우스를 툴바에 있는 어느 아이콘에 가지고 가면, 그 아이콘의 기능이 무엇인지를
말해주는 간단한 설명이 상태표시선에 나타난다. Modified는 이 편집창의 내용이 한번이
라도 바뀐 경우에 나타나는데 바뀐 내용을 디스크에 저장하면 이 단어는 사라지고 파일명
만 표시된다.
이제 최소의 C 프로그램이라 할 수 있는 “main(){}”을 편집창에 입력하고 File → Save를
누 르 면 NONAME00.CPP 이 라 는 기 본 파 일 이 름 을 수 정 할 기 회 가 주 어 진 다 . 이
프로그램을 Ex1.cpp 혹은 Ex1.c 라는 이름으로 저장하자.
▶ 그림 2.13 : Borland C++의 파일 저장 대화상자
새내기를 위한 C 언어완성
2.3.2 컴파일과 실행
아래 그림과 같이 Project → Make all 혹은 ꍧ를 눌러서 컴파일과 링크를 합친 Make를
하자.
▶ 그림 2.14 : Borland C++에서의 make
새내기를 위한 C 언어완성
에러가 없다면 아래 그림과 같은 메시지 윈도우가 나타난다. 내 컴퓨터에서 Work 디렉토
리를 살펴보면 그림과 같이 Ex1.cpp, Ex1,obj, Ex1.exe가 만들어져 있다. 이 Ex1.exe는
DOS용 실행파일이고 아무런 출력도 없기 때문에 실행해도 실행이 순간적으로 끝나게 된
다.
▶ 그림 2.15 : Borland C++의 make 메시지 윈도우
▶ 그 림 2.15 : Borland C++ 의
소스 파일과 make 결과 파일들
새내기를 위한 C 언어완성
2.4
UNIX CC/GCC
2.4.1 프로그램 작성
UNIX 환경에서 소스 프로그램을 작성하고 저장하려면 vi(visual)와 같은 시스템에서
제공되는 에디터를 사용하여야 한다. vi로 example.c라는 프로그램을 작성하려면
프롬프트 상에서 다음과 같이 입력하면 된다. 자세한 사용법은 관련 지침서를 참조하기
바란다.
$ vi example.c
2.4.2 컴파일과 실행
UNIX 환경에서의 대표적인 C 컴파일러로는 cc(c compiler)가 있다. 무료 프로그램으로
널리 알려진 GNU 그룹의 gcc 또한 사용법 및 성능이 유사하므로 구해서 쓰는 것도 좋은
방법이다. 가장 간편한 컴파일 방법은 파일 이름만 사용하는 것이다.
$ cc example.c
새내기를 위한 C 언어완성
만약 여러 개의 파일에 소스가 분산되어 있을 경우에는 다음과 같은 방법을 사용한다.
$ cc exam1.c exam2.c exam3.c
컴파일을 마친 다음 생성되는 실행파일(UNIX에서는 로드 모듈이라고도 한다)의 이름은
'a.out'이 된다. 이 파일을 실행시키려면 다음과 같이 파일 이름을 입력하면 된다.
$ a.out
컴파일과 실행을 동시에 진행시키려면 여러 개의 명령어를 나열할 때 사용하는 ; 기호를
사용하면 된다.
$ cc example.c ; a.out
실행파일의 이름을 변경하려면 -o 옵션을 사용한다. 예를 들어, example.c라는 소스 파
일을 컴파일하여 exam이라는 실행파일을 만들고 바로 실행하려면 다음과 같이 입력한
다.
$ cc example.c -o exam ; exam
자세한 사용법은 관련 지침서나 자체 도움말을 참조하기 바란다.
새내기를 위한 C 언어완성